Christian Göttsche
1f20c0fb3d
Linux: fall back to cpuinfo on slow scaling_cur_freq read
...
On some AMD and Intel CPUs read()ing scaling_cur_freq is quite slow
(> 1ms). This delay accumulates for every core.
If the read on CPU 0 takes longer than 500us bail out and fall back to
reading the frequencies from /proc/cpuinfo.
Once the condition has been met, bail out early for the next couple of
scans.
Closes : #471
2021-01-15 20:55:53 +01:00
Christian Göttsche
c865313e2d
Reset cache values when setting comm value
...
Maybe fixes #361
2021-01-12 16:43:06 +01:00
Christian Göttsche
2b62126aea
Mark several non-modified pointer variables const
2021-01-11 23:47:00 +01:00
Christian Göttsche
960f52b783
SELinuxMeter: hardcode SELINUX_MAGIC value
...
Avoid <linux/magic.h> include, not found by musl-gcc.
The value of SELINUX_MAGIC should really never change.
2021-01-11 23:45:47 +01:00
David Zarzycki
37e186fd66
Linux: Add SwapCached to the swap meter
...
According to the Linux kernel documentation, "SwapCached" tracks "memory
that once was swapped out, is swapped back in but still also is
in the swapfile (if memory is needed it doesn't need to be swapped out
AGAIN because it is already in the swapfile. This saves I/O)."
2021-01-11 20:27:47 +01:00
Christian Göttsche
d72b0a682e
Mark several non-modified pointer variables const
2021-01-11 20:12:34 +01:00
Christian Göttsche
1b2d48bc9a
Remove dead code
2021-01-11 20:12:34 +01:00
Christian Göttsche
d9240999e9
Process: drop commLen
...
It is only used on Linux to optimize memory handling in case the command
changes to a smaller-or-equal string.
This "optimization" however causes more code bloat and maintenance cost
on string handling issues than it gains.
2021-01-11 20:12:34 +01:00
Christian Göttsche
70f48f1f44
Add wrapper function for free and strdup
...
Reduces code in callers and helps avoiding memory leaks.
2021-01-11 20:12:34 +01:00
Christian Göttsche
3715301fe3
Drop always false condition
...
The previous if conditional branch would have been taken
in case this condition would be true,
2021-01-11 20:12:34 +01:00
Christian Göttsche
a5db139a0a
Linux: use correct column alignment for wide fields
...
This affects:
- PROC_COMM, PROC_EXE and CWD on Linux
- JAIL on FreeBSD and DragonFlyBSD
- ZONE on Solaris
2021-01-11 12:02:25 +01:00
Christian Göttsche
3bb731c645
RichString_setAttrn: refactor to take a length instead of a stop index
...
Fixes : #459
2021-01-10 16:51:25 +01:00
Christian Göttsche
8fe04b7494
Hashtable: use more distinct typename for key type
2021-01-06 16:59:28 +01:00
Matej Dian
43d5c61884
LibSensors: add support for Ryzen CPUs
2021-01-06 16:54:59 +01:00
Christian Göttsche
e103ec0317
Declare for loop variables inside the loop
2021-01-06 16:43:18 +01:00
Christian Göttsche
ce9e7fd14f
Panel_new: reorder arguments
...
Reorder owner and type so they match the order of Panel_init
2021-01-04 23:12:43 +01:00
Christian Göttsche
8c8149d146
XUtils: check for multiplication overflow in allocation size
2021-01-02 22:35:13 +01:00
Christian Göttsche
90ea3ac3c9
Object: return int on comparison
...
Comparisons do, due to the new introduced shaceship-comparisons,
only return -1, 0, 1 or the result of strcmp().
2021-01-02 00:00:17 +01:00
Christian Göttsche
293c16e22d
Only initialize and gather delay accounting data if a related column is enabled
...
Avoid creating and communicating over a netlink socket by default, which
triggers cap_net_admin checks as root.
2021-01-01 21:34:22 +01:00
Daniel Lange
ca9d7cd708
Also find libsensors.so.4 for Fedora and friends
2020-12-25 13:05:37 +01:00
Christian Göttsche
aa08279964
Linux: accept clock CPU frequency
...
processor : 0
cpu : POWER8 (architected), altivec supported
clock : 4024.000000MHz
revision : 2.0 (pvr 004d 0200)
Closes : #424
2020-12-23 19:58:10 +01:00
Nathan Scott
dfb9b82607
Resolve clang-analyzer signed/unsigned comparison CI failure
2020-12-22 16:58:17 +11:00
Benny Baumann
6502b02666
DiD: Ensure string offsets are inside string boundaries
2020-12-21 22:35:38 +01:00
Benny Baumann
10c6810bff
Avoid NULL dereference on zombie processes
...
Fixes #361
2020-12-21 22:29:18 +01:00
Benny Baumann
4a73e80338
Make remaining number literals use uppercase
2020-12-20 17:17:51 +01:00
Christian Göttsche
6b100b0cf4
Use upper case numeric literals
...
See https://rules.sonarsource.com/c/RSPEC-818
2020-12-20 16:58:17 +01:00
Christian Göttsche
f614b8a19f
Mark Platform_defaultFields const
2020-12-19 21:13:32 +01:00
Christian Göttsche
9f68c8d341
Merge Process_pidColumns into Process_fields and rework auto-fit for PID-like columns
2020-12-19 21:13:32 +01:00
Christian Göttsche
89473cc9ae
Rework enum ProcessField
...
Use only one enum instead of a global and a platform specific one.
Drop Platform_numberOfFields global variable.
Set known size of Process_fields array
2020-12-19 21:13:32 +01:00
Christian Göttsche
d872e36308
LinuxProcess: drop dead Process columns
2020-12-19 21:13:32 +01:00
Benny Baumann
77db240b48
Split boilerplate and platform-independent field comparison
...
This acheives two things:
- Allows for simple tie-breaking if values compare equal (needed to make sorting the tree-view stable)
- Allows for platform-dependent overriding of the sort-order for specific fields
Also fixes a small oversight on DragonFlyBSD when default-sorting.
2020-12-19 16:02:34 +01:00
Hisham Muhammad
3d1703f16f
Invert Process_compare resolution so that superclass matches run first
...
* This removes duplicated code that adjusts the sort direction from every
OS-specific folder.
* Most fields in a regular htop screen are OS-independent, so trying
Process_compare first and only falling back to the OS-specific
compareByKey function if it's an OS-specific field makes sense.
* This will allow us to override the sortKey in a global way without having
to edit each OS-specific file.
2020-12-19 16:02:34 +01:00
Christian Göttsche
0cb257586a
Move macro definitions close to usage
2020-12-16 19:13:56 +01:00
Christian Göttsche
1193c6e349
Use common naming for bare enum types
2020-12-16 19:13:56 +01:00
Christian Göttsche
4eeeb63647
LibSensors: fix unversioned libsensors library name
2020-12-15 13:54:32 +01:00
Christian Göttsche
eb36385a6b
LibSensors: restore temperature for Raspberry Pi
...
sensors output:
cpu_thermal-virtual-0
Adapter: Virtual device
temp1: +58.0 C (crit = +90.0 C)
2020-12-15 13:46:46 +01:00
Christian Göttsche
c9583c692d
Handle absence of package CPU temperature
...
Resolves : #389
2020-12-14 21:07:07 +01:00
Nathan Scott
b7836515e8
Harden the extraction of boot time for the Linux platform
...
There is a possible path - albeit theoretical really - through
the btime initialization code in Linux ProcessList_new(), when
String_startsWith() is always false, which can result in btime
not being initialized.
This commit refactors the code to remove that possibility.
2020-12-14 12:16:32 +11:00
Nathan Scott
a3db2da4a7
Cleanup initialization of jiffies on the Linux platform
...
Small cleanups - add error handling, remove a local static
variable and refactor LinuxProcess_adjustTime (also rename
it, as its in LinuxProcessList.c not LinuxProcess.c) - and
while there, move the related 'btime' global variable into
LinuxProcessList.c so it can be made static.
Resolves https://github.com/htop-dev/htop/issues/384
2020-12-14 11:56:13 +11:00
Nathan Scott
8d69a9a53e
Simplify initialization of the Linux haveSmapsRollup variable
2020-12-14 01:46:29 +01:00
Daniel Lange
f8a610e6e1
Merge branch 'fix-dlopen-libsensors-debian' of fasterit/htop
2020-12-13 20:09:06 +01:00
Chris Burr
8149823d56
Define O_PATH if not already defined
2020-12-13 00:55:50 +01:00
Daniel Lange
12421f460a
Fix dlopen issue for libsensors5 in Debian Buster, Bullseye
...
libsensors.so is provided only by the -dev package, so search for
libsensors.so.5 (installed from the libsensors5 package) explicitly
see: dpkg-query -S libsensors.so
2020-12-12 20:08:17 +01:00
Nathan Scott
75e9f9a8d9
Cull the definitions of pageSize and pageSizeKB from CRT.c
...
By storing the per-process m_resident and m_virt values in the form
htop wants to display them in (KB, not pages), we no longer need to
have definitions of pageSize and pageSizeKB in the common CRT code.
These variables were never really CRT (i.e. display) related in the
first place. It turns out the darwin platform code doesn't need to
use these at all (the process values are extracted from the kernel
in bytes not pages) and the other platforms can each use their own
local pagesize variables, in more appropriate locations.
Some platforms were actually already doing this, so this change is
removing duplication of logic and variables there.
2020-12-10 11:57:48 +11:00
Christian Göttsche
ded9c5d363
PSI Meter: use constant width and only print ten-duration as bar
2020-12-08 23:09:35 +01:00
Benny Baumann
f6613db5cd
Additional code simplification
...
Additional correction for #375
2020-12-08 21:24:19 +01:00
Christian Göttsche
157086e750
Split RichString_(append|appendn|write) into wide and ascii
...
RichString_writeFrom takes a top spot during performance analysis due to the
calls to mbstowcs() and iswprint().
Most of the time we know in advance that we are only going to print regular
ASCII characters.
2020-12-08 20:58:40 +01:00
Christian Göttsche
05969998c1
SELinuxMeter: silence comparison warning on 32-bit
...
linux/SELinuxMeter.c: In function ‘hasSELinuxMount’:
linux/SELinuxMeter.c:38:21: warning: comparison of integer expressions of different signedness: ‘__fsword_t’ {aka ‘int’} and ‘unsigned int’ [-Wsign-compare]
38 | if (sfbuf.f_type != SELINUX_MAGIC) {
| ^~
Origin: 7df27b78e9/libselinux/src/init.c (L40)
2020-12-07 16:05:12 +01:00
Christian Göttsche
ad764ff972
Introduce METER_BUFFER_CHECK and METER_BUFFER_APPEND_CHR to cleanup writing to bar buffers
...
Closes : #294
2020-12-06 16:03:44 +01:00
Christian Göttsche
77ec86aff4
Use size_t as type for buffer length in Process
2020-12-06 16:03:44 +01:00
Christian Göttsche
e1ce141bc3
Use size_t as len type for Meter_UpdateValues
...
Most of the time the parameter is passed to snprintf type functions
2020-12-06 16:03:44 +01:00
Christian Göttsche
7ba25aa3c4
IWYU update
2020-12-06 15:32:16 +01:00
Benny Baumann
22f8f8000c
Initialize buffer for retrieved path
...
This avoids a warning on GCC 11.
Fixes #369
2020-12-06 11:51:03 +01:00
Christian Göttsche
876194492f
LinuxProcessList: add underscore suffix for raw struct name
...
Fit the general coding style
2020-12-05 20:25:54 +01:00
Christian Göttsche
f61e74a4af
Resolve conversion from ssize_t to int for readlink return value
2020-12-05 19:58:32 +01:00
Christian Göttsche
bc16fa037f
Convert personal copyright authorship to team
2020-12-04 13:55:55 +01:00
Christian Göttsche
d1db9da936
Linux: avoid float division by 0 after system sleep
...
linux/LinuxProcessList.c:1403:63: runtime error: division by zero
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior linux/LinuxProcessList.c:1403:63 in
2020-12-03 13:25:17 +01:00
Christian Göttsche
fe84840314
Add Linux cwd process column
2020-12-03 09:21:28 +01:00
Christian Göttsche
b76eaf187a
Dynamically load libsensors at runtime
2020-12-02 21:03:24 +01:00
Christian Göttsche
f7a8952933
Add xReadfile wrapper for reading small to medium size files
...
Inspired by proposed Linux syscall
Avoid file descriptor leaks like 4af8c63f
2020-12-02 20:39:36 +01:00
Christian Göttsche
1d8192c10b
PressureStallMeter: improve display strings
...
- Shorten name for header setup menu
- Improve caption in bar mode
2020-12-02 19:51:43 +01:00
Christian Göttsche
c0b50164dd
Use String_eq for readability and consistency
2020-12-02 19:14:22 +01:00
Christian Göttsche
7975cd2ca3
Add cast to unsigned char to avoid signed char misuse
2020-12-02 19:14:22 +01:00
Christian Göttsche
9029cc83ad
Merge identical conditional branches
2020-12-02 19:14:22 +01:00
Christian Göttsche
43ee295c23
Drop redundant return statements
2020-12-02 19:14:22 +01:00
Christian Göttsche
9549ca8c88
Linux: fix process parsing for hidden pid directories
2020-11-29 12:46:25 +01:00
Christian Göttsche
5ee6875f73
Typo
2020-11-28 20:53:49 +01:00
Christian Göttsche
ea4f33409a
Update even more snprintfs
...
Use size of actual buffers instead of magic numbers
2020-11-28 19:33:07 +01:00
Benny Baumann
0b29e5074c
Use 'N/A' instead of 'no perm' for more consistency
2020-11-28 17:43:08 +01:00
Daniel Lange
6c306315c8
Fix reading of device nodes > 2 chars from memory maps
2020-11-28 17:06:06 +01:00
Christian Göttsche
2ff2859c23
Add compat mode for systems without openat(2)
2020-11-28 12:35:34 +01:00
Christian Göttsche
638207a2ff
LinuxProcessList: use openat instead of building path strings
...
openat() is available since Linux 2.6.16
2020-11-28 12:35:34 +01:00
Nathan Scott
f704baeb82
Drop unused global ProcessList memory fields
...
The global ProcessList structure contains a couple of unused
fields. 'sharedMem' has never been used by any Meter, since
its not been anything other than zero in Linux /proc/meminfo
for many, many years. The freeMem field is only used in the
usedMem calculation, so it can reside on the stack like some
other memory variables used within-calculations-only and not
exposed to the user via a Meter.
2020-11-27 07:55:58 +01:00
Benny Baumann
2c27f1d9ab
Randomly refresh M_LRS calculation, but latest after 2s
2020-11-26 22:58:34 +01:00
Benny Baumann
08d6e25301
Distinguish display of no permissions for reading M_LRS
2020-11-26 22:58:34 +01:00
Benny Baumann
31044d1729
Roll our own strtoull implementation specialized to handle the parsing requirements
2020-11-26 22:58:34 +01:00
Benny Baumann
cceab5f803
Hardcode actual conversions to read the maps file data
2020-11-26 22:58:34 +01:00
Benny Baumann
721d9112d9
Only calculate M_LRS size every 5 seconds
2020-11-26 22:58:34 +01:00
Fynn Wulf
7f18b352b0
Calculate library size (M_LRS column) from maps file
2020-11-26 22:58:34 +01:00
Christian Göttsche
46a2e8ac63
IOPriorityPanel: drop unnecessary buffer size decrement
...
xSnprintf guarantees null-termination within the passed size.
2020-11-26 20:42:38 +01:00
Christian Göttsche
d62c2e9cca
LinuxProcessList_recurseProcTree: compute time only once and mark parent const
2020-11-25 22:14:35 +01:00
Christian Göttsche
9b31ee5b63
Drop taskstats conditional
...
taskstats is only checked on runtime if the column RCHAR, WCHAR, SYSCR,
SYSCW, RBYTES, WBYTES, CNCLWB, IO_READ_RATE, IO_WRITE_RATE or IO_RATE is
selected.
taskstats is currently enabled by default.
Drop the taskstats configuration switch, to reduce the maintenance cost.
2020-11-25 20:49:39 +01:00
Christian Göttsche
c88c80e3bd
Drop cgroup conditional
...
cgroup is only checked on runtime if the column CGROUP is selected.
cgroup is currently disabled by default, but most distributions do
enable it.
Drop the cgroup configuration switch, to reduce the maintenance cost.
2020-11-25 20:49:39 +01:00
Christian Göttsche
c038326a70
LinuxProcessList: fix misspelling
2020-11-25 12:49:17 +01:00
Christian Göttsche
601ad61e7d
Unify naming of first argument of Platform_getBattery
...
Use percent throughout
2020-11-25 12:47:07 +01:00
Christian Göttsche
4af8c63f63
Fix file descriptor leak in LinuxProcessList_readCmdlineFile after xread failure
...
Found by Coverity
2020-11-24 19:54:25 +01:00
Benny Baumann
21e3063e2e
Include comm before cmdline if exe could not be read, but comm mismatches basename from cmdline
...
Also highlights entries where exe was marked deleted
2020-11-24 19:05:48 +01:00
Benny Baumann
46ee28e897
Refactor command string creation
...
Hopefully this patch makes it a bit more approachable how it's done.
2020-11-24 19:05:48 +01:00
Benny Baumann
27b36dab1a
Make kernel thread display for COMM/EXE columns less visible and more consistent
2020-11-24 19:05:48 +01:00
Benny Baumann
f0a232568f
Reduce visual noise to when comm and cmdline actually disagree on the program basename
2020-11-24 19:05:48 +01:00
Narendran Gopalakrishnan
dde2af1fdb
Assume full basename matches COMM when matching full COMM buffer
2020-11-24 19:05:48 +01:00
Narendran Gopalakrishnan
be60419630
Cleanup some documentation
2020-11-24 19:05:48 +01:00
Benny Baumann
fcda517a67
Add heuristic for space-separated cmdline
2020-11-24 19:05:48 +01:00
Benny Baumann
98fce1fb43
Compatibility function for faccessat
2020-11-24 19:05:48 +01:00
Narendran Gopalakrishnan
09fe94da18
Improving Command display/sort
2020-11-24 19:05:48 +01:00
Christian Göttsche
42c842c190
LinuxProcess_adjustTime: simplify by not using double
...
Does not work with -ffast-math else.
2020-11-24 17:30:21 +01:00
Christian Göttsche
952ee9cd77
LinuxProcessList: fix misspelling
2020-11-24 11:46:17 +01:00
Christian Göttsche
6c2849ec81
Linux: fix display of new thread for one cycle when hidden
2020-11-23 14:44:31 +01:00
Nathan Scott
003f2c06a4
Merge branch 'cleanup-init-done' into master
2020-11-23 17:34:44 +11:00
Christian Göttsche
17eeb7573a
LinuxProcessList: skip parsing threads if the kind of thread is disabled
2020-11-22 16:49:43 +01:00
Benny Baumann
03f9a86918
Reduce scope of local variables
2020-11-22 10:08:27 +01:00
Christian Göttsche
fa002c0ba9
Rename virtual memory column from M_SIZE to M_VIRT
...
Closes : #325
2020-11-21 19:39:45 +01:00
Christian Göttsche
3e5cba91ce
LinuxProcess: mark LinuxProcess_printDelay static
2020-11-21 19:26:55 +01:00
Christian Göttsche
7cf5277594
IWYU update (Linux)
2020-11-19 23:51:50 +01:00
Nathan Scott
5d50f43d5f
Add whitespace to improve Linux Platform_init readability
2020-11-19 19:00:00 +11:00
Nathan Scott
c75c5ef9c6
Minor cleanups to platform-specific init and done
...
Move platform-specific code out of the htop.c main function
and into the platform sub-directories - primarily this is
the Linux procfs path check and sensors setup/teardown; not
needed on any other platforms. No functional changes here.
2020-11-19 12:32:07 +11:00
Christian Göttsche
0a2105eb22
Spelling corrections
2020-11-18 13:59:55 +01:00
Nathan Scott
0eb3c7589d
Merge individual Battery.[ch] files into Platform.[ch]
...
Small changes from review - keep headers sorted and keep local
variable declarations at the top of source files.
2020-11-18 10:17:33 +11:00
Nathan Scott
ea9622b8c9
Merge individual Battery.[ch] files into Platform.[ch]
...
Consistent with everything else involving platform-specific
calls from core htop code.
2020-11-18 10:17:33 +11:00
Christian Göttsche
f38af725c2
Silence theoretical memory leak
...
In practice systemctl should never return multiple SystemState= lines.
2020-11-17 13:06:31 +01:00
Daniel Lange
fec9af4e6f
Merge branch 'temperature_v2' of cgzones/htop
...
Closes #111 , closes #49
Closes #93 - thank you for leading the way @DX37 (Maxim Kurnosenko)!
2020-11-17 11:05:15 +01:00
Christian Göttsche
15eab2012d
Add process column for normalized CPU usage
...
Shows the process CPU usage divided by the number of CPU cores
2020-11-16 18:14:06 +01:00
Christian Göttsche
1b225cd7a0
Show CPU temperature in CPU meter
...
Show the CPU temperature in the CPU meter, like CPU frequency, instead
of using an extra Meter.
2020-11-16 16:38:54 +01:00
Christian Göttsche
0411fdbcef
Use spaceship comparison for TTYs
2020-11-15 22:54:14 +01:00
Christian Göttsche
f856fe6463
Early skip non-directories when searching for process information
2020-11-15 22:54:14 +01:00
Christian Göttsche
ad72b747fa
Drop hideThreads Setting
...
It is only used to read process directories on RedHat beginning with a dot.
Unconditionally accept directories with a starting dot.
2020-11-15 22:54:14 +01:00
Christian Göttsche
9f67b95308
Mark local functions static
2020-11-15 18:35:30 +01:00
Christian Göttsche
397b5c4bd0
Introduce spaceship comparison for Processes
...
If currently two unsigned values are compared via `a - b`, in the case b
is actually bigger than a, the result will not be an negative number (as
-1 is expected) but a huge positive number as the subtraction is an
unsigned subtraction.
Avoid over-/underflow affected operations; use comparisons.
Modern compilers will generate sane code, like:
xor eax, eax
cmp rdi, rsi
seta al
sbb eax, 0
ret
2020-11-15 18:25:21 +01:00
Daniel Lange
f2b2735e07
Resolve merge conflicts, merge #229 "Add SystemdMeter" from @cgzones
2020-11-15 14:52:25 +01:00
Daniel Lange
bb908f3dc4
Resolve merge conflicts, merge #298 "Macro cleanup" from @BenBE
2020-11-15 14:33:09 +01:00
Daniel Lange
da2dcf9505
Remove duplicate test for NUL
...
Fixes #308 , thanks @qarmin (Rafał Mikrut)
2020-11-15 14:16:23 +01:00
Benny Baumann
d431786fca
Split data array for file lock information into separate fields
2020-11-14 15:51:26 +01:00
Benny Baumann
18763051a2
Split platform dependent parts for file locks screen
2020-11-14 15:51:26 +01:00
Benny Baumann
2d6da2e520
Add compat wrapper for readlinkat
2020-11-09 19:17:57 +01:00
Fynn Wulf
84dad4c38e
Implement screen for active file locks
2020-11-09 19:17:57 +01:00
Benny Baumann
e7b95feee4
Remove unnecessary braces
2020-11-02 22:15:01 +01:00
Benny Baumann
0e922d4085
Integrate NAN check into assignment
...
The check for NAN is kept to avoid relying on implementation details of the CLAMP macro/function
2020-11-02 22:15:01 +01:00
Benny Baumann
0d64ca9262
Wrap inline structure definitions
2020-11-02 22:15:01 +01:00
Benny Baumann
45869513bf
Embracing branches
2020-11-02 22:15:01 +01:00
Benny Baumann
61e14d4bb2
Spacing around operators
2020-11-02 22:15:01 +01:00
Benny Baumann
b23f8235e2
Whitespace and indentation issues
2020-11-02 22:15:01 +01:00
Benny Baumann
9a16b1079e
Make scope of match macro symmetric
2020-11-02 22:15:01 +01:00
Benny Baumann
493217e814
Fix indentation to 3 spaces
2020-11-02 22:15:01 +01:00
Benny Baumann
adf797c295
Spacing after keywords (for)
2020-11-02 22:15:01 +01:00
Benny Baumann
374edb9ed5
Spacing after keywords (if)
2020-11-02 22:14:59 +01:00
Benny Baumann
0a51eae11f
Spacing after keywords (while)
2020-11-02 22:14:26 +01:00
Benny Baumann
c790b6ae67
Remove accidental syntax collision
2020-11-02 22:14:26 +01:00
Benny Baumann
7ab0915a6c
Remove unnecessary trailing semicolon on macros
2020-11-02 22:14:26 +01:00
Christian Göttsche
15652e7b81
Enclose macro arguments in parentheses
2020-10-31 19:54:03 +01:00
Christian Göttsche
2a9e8ca074
Add SystemdMeter
2020-10-31 19:51:42 +01:00
Murloc Knight
ab17ef4dc0
Zram Meter feature
2020-10-31 18:51:53 +01:00
Christian Goettsche
c2fdfd99eb
FreeBSD: implement Platform_getDiskIO()
2020-10-29 22:21:42 +01:00
Christian Göttsche
76797f8d92
Implement Process_isUserlandThread as function
...
Make it more readable and fix unenclosed macro arguments
2020-10-28 19:57:10 +01:00
Christian Göttsche
d33b2be2ca
Implement LinuxProcess_effectiveIOPriority as function
...
Make it more readable and fix unenclosed macro arguments
2020-10-28 19:57:10 +01:00
Christian Göttsche
8c1f5c5a6f
Enclose macro arguments in parentheses
2020-10-28 19:57:10 +01:00
Benny Baumann
cf1a9ec180
Refactor LinuxProcessList_readSmapsFile to work line-oriented
2020-10-28 19:46:23 +01:00
Christian Göttsche
ac2b07eddd
Avoid some unnecessary casts and mark some not changing variables const
2020-10-27 18:00:43 +01:00
Christian Göttsche
27870bd4de
Drop unneeded variablw initialization and reduce scope
2020-10-27 18:00:43 +01:00
Benny Baumann
c98d4577c9
Refactor code for reading process environment from procfs
2020-10-27 17:54:37 +01:00
Christian Göttsche
a3bb7cbe64
Hold only a const version of Settings in ProcessList
2020-10-26 19:30:38 +01:00
Christian Göttsche
4eb443926f
Hold only a const version of Settings in Process
2020-10-26 19:30:38 +01:00
Christian Göttsche
7109172431
Mark process parameter of Process_writeField consistently const
2020-10-26 19:30:38 +01:00
Christian Göttsche
72103e9613
Hold only a const version of the ProcessList in Meters
2020-10-26 19:30:38 +01:00
Christian Göttsche
f757810f48
Improve handling of no data in Disk and Network IO Meters
2020-10-26 19:17:14 +01:00
Jan Palus
167adc0a2b
Parse POWER_SUPPLY_CAPACITY
...
If POWER_SUPPLY_{CHARGE,ENERGY}_NOW is missing then try to use
POWER_SUPPLY_CAPACITY to determine current charge level.
2020-10-26 19:03:09 +01:00
Christian Göttsche
e12d48a661
Fix wrong strncmp replacement
...
Fixes 4c66eb6d4c
2020-10-20 22:30:13 +02:00
Christian Göttsche
7429c22201
Drop unnecessary cast
2020-10-20 22:29:16 +02:00
Christian Göttsche
8a08a3209c
IWYU update
...
- Add Settings forward declaration in Process.h
- Add assert.h include in XUitls.c
- Add conditional stdbool.h include in Object.h
- Drop unneeded stddef.h include in Richstring.c
- Drop unneeded unistd.h include in Process.h
- Drop unneeded string.h include in linux/Platform.c
- Use String_eq to avoid string.h include in Action.c
- Improve script to run custom iwyu version
2020-10-20 21:44:25 +02:00
Daniel Lange
0ea18a6edb
Merge branch 'Xalloc_Cleanup' of cgzones/htop
2020-10-20 10:23:47 +02:00
Daniel Lange
9f1a9ab2c2
Merge branch 'header_pause' of cgzones/htop
...
Continue to update generic data in paused mode
2020-10-20 10:17:58 +02:00
Christian Göttsche
4c66eb6d4c
XUtils string related updates
...
- allow count out-parameter of String_split() to be NULL
- introduce xStrndup()
- do not allow NULL pointers passed to String_eq()
it is not used in any code
- implement String_startsWith(), String_contains_i() and String_eq()
as inline header functions
- adjust several conversion issues
2020-10-19 15:38:45 +02:00
Christian Göttsche
96e2a4259e
Continue to update generic data in paused mode
...
Generic data, as CPU and memory usage, are used by Meters.
In paused mode they would stop receiving updates and especially Graph
Meters would stop showing continuous data.
Improves: #214
Closes : #253
2020-10-19 14:45:39 +02:00
Christian Göttsche
361877454f
Cache PAGE_SIZE
...
man:sysconf(3) states:
The values obtained from these functions are system configuration constants.
They do not change during the lifetime of a process.
2020-10-19 14:42:35 +02:00
Benny Baumann
0f5262917f
Make all required includes explicit
...
Information as seen by IWYU 0.12 + clang 9 on Linux
2020-10-18 20:09:05 +02:00
Benny Baumann
81543253cf
Fix misaligned access inside taskstats structure
...
Reported by UB sanitizer (alongside several other messages):
linux/LinuxProcessList.c:782:25: runtime error: member access within misaligned address 0x614000000264 for type 'struct taskstats', which requires 8 byte alignment
0x614000000264: note: pointer points here
64 01 03 00 0a 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 4b c8 2e 00 00 00 00 00 3e 45 3c fd
^
The issue doesn't cause trouble on x86, but any architecture with stricter memory alignment requirements may inadvertedly break.
2020-10-18 17:20:34 +02:00
Benny Baumann
872e542f4e
Rename StringUtils.[ch] to XUtils.[ch]
2020-10-16 20:30:21 +02:00
Benny Baumann
c6f04a9c5d
Move xAsprintf, xSnprintf and xStrdup to StringUtils.h
2020-10-16 20:29:45 +02:00
Christian Göttsche
7cd093ce95
Add NetworkIOMeter
2020-10-16 20:00:14 +02:00
Christian Göttsche
a63cfc8b7c
Refactor generating starttime string into Process class
2020-10-16 19:23:40 +02:00
Christian Göttsche
783be7711d
Do not use extra starttime process field on Linux
2020-10-16 19:23:40 +02:00
Christian Göttsche
d744dac7ee
Add SELinuxMeter
2020-10-16 19:20:07 +02:00
Christian Göttsche
7af06659e2
Mark remaining classes const
2020-10-13 14:56:01 +02:00
Christian Göttsche
25022c219d
Read CPU count every cycle to avoid issues when HT/SMT mode changes
2020-10-12 13:15:23 +02:00
Benny Baumann
601480003f
Centralise fault handling
...
This should be done as all platforms essentially did the same anyway and there was nothing platform specific.
2020-10-12 13:06:12 +02:00
Christian Göttsche
79ad39c718
Mark Object pointer to _display function const
2020-10-10 11:25:19 +02:00
Christian Göttsche
41eea8a355
Mark process argument of Process_isThread const
2020-10-09 10:18:40 +02:00
Benny Baumann
2970cae543
Handle parsing envID & VPid from process status file
...
Fixes #55
Fixes #192
2020-10-07 13:14:39 +02:00
Christian Göttsche
ba282cfe19
Mark Object instances const
2020-10-07 13:01:53 +02:00
Christian Göttsche
08d85e6143
Mark Object classes and Object class fields const
2020-10-07 13:01:53 +02:00
Christian Göttsche
954d6c12f5
Simplify statm parsing and document unused fields
2020-10-06 18:59:02 +02:00
Christian Göttsche
ad3acfc847
Handle Panel_getSelected() returning NULL
...
Found by compiling with LTO:
ColumnsPanel.c: In function ‘ColumnsPanel_eventHandler’:
ColumnsPanel.c:46:59: error: potential null pointer dereference [-Werror=null-dereference]
46 | ((ListItem*)Panel_getSelected(super))->moving = this->moving;
| ^
AvailableColumnsPanel.c: In function ‘AvailableColumnsPanel_eventHandler’:
AvailableColumnsPanel.c:31:8: error: potential null pointer dereference [-Werror=null-dereference]
31 | int key = ((ListItem*) Panel_getSelected(super))->key;
| ^
AvailableMetersPanel.c: In function ‘AvailableMetersPanel_eventHandler’:
AvailableMetersPanel.c:40:24: error: potential null pointer dereference [-Werror=null-dereference]
40 | int param = selected->key & 0xff;
| ^
linux/IOPriorityPanel.c: In function ‘IOPriorityPanel_getIOPriority’:
linux/IOPriorityPanel.c:37:11: error: potential null pointer dereference [-Werror=null-dereference]
37 | return (IOPriority) ( ((ListItem*) Panel_getSelected(this))->key );
| ^
2020-10-06 11:17:23 +02:00
Nathan Scott
e9fa290019
Merge branch 'update-license-and-copyright-info'
2020-10-06 10:27:38 +11:00
Michael F. Schönitzer
d93cac12be
Add a date and datetime meter ( #159 )
...
Add a date meter and sort header and source files in Makefile
Change the lists of header and source files sorted alphabetical and one
file per line. This way diffs become better readable and merges easier.
2020-10-05 13:52:58 +02:00
Daniel Lange
079c2abf8e
Update License consistently to GPLv2 as per COPYING file
2020-10-05 10:13:12 +02:00
Christian Göttsche
42946ec113
Introduce ARRAYSIZE
2020-10-03 19:05:40 +02:00
Christian Göttsche
d69585b82a
Resolve DEBUG compilation issues
...
Use NDEBUG conditional instead of DEBUG.
Do not call static functions in extern inline ones.
Vector.c:67:11: error: static function 'Vector_isConsistent' is used in an inline function with external linkage [-Werror,-Wstatic-in-inline]
2020-10-03 19:04:27 +02:00
Christian Göttsche
e518459981
Add DiskIOMeter for IO read/write usage
2020-10-03 19:01:38 +02:00
Christian Göttsche
6f387008cb
Add security attribute process column
2020-10-03 18:51:17 +02:00
Christian Göttsche
241e4b3dbf
Drop redundant declarations
...
- `CRT_fatalError()` is declared twice in CRT.h
- `Process_pidFormat`, `Process_writeField()` and `Process_compare` are
declared twice in Process.h
- `btime` is defined in LinuxProcess.c and also declared in
LinuxProcess.h, so drop in LinuxProcessList.h
2020-09-29 10:44:42 +02:00
Christian Göttsche
7ae967a04b
Drop redundant return statements
2020-09-29 10:44:42 +02:00
Christian Göttsche
843949131a
Drop redundant casts to the same type
2020-09-29 10:44:42 +02:00
multi
9ee72568dc
CPUMeter: add octuple-column CPU meters.
...
This is a straightforward extension of the existing multi-column CPU meter
code, which now allows for up CPU meters to be displayed in up to 16 columns.
This also adds the meter declarations to all the platform-specific code.
2020-09-28 14:35:35 +02:00
Nathan Scott
400178a89b
Merge branch 'arc-is-not-cache' of https://github.com/multiplexd/htop into multiplexd-arc-is-not-cache
2020-09-28 14:44:12 +10:00
multi
dfa40ad0eb
Linux: consider the ZFS ARC to be cache.
...
This commit is based on a patch originally by @edef1c. The ZFS ARC is a cache
(it's in the name), which will be evicted by the kernel if memory pressure so
requires. Hence, the ARC should not be counted towards a system's total used
memory, and should instead be grouped with the other caches in the system.
Signed-off-by: edef <edef@edef.eu>
2020-09-24 23:27:27 +01:00
Christian Göttsche
18b1e9fba9
Do not drop qualifier in cast
...
ListItem.c:73:33: warning: cast from 'const void *' to 'struct ListItem_ *' drops const qualifier [-Wcast-qual]
ListItem* obj1 = (ListItem*) cast1;
^
ListItem.c:74:33: warning: cast from 'const void *' to 'struct ListItem_ *' drops const qualifier [-Wcast-qual]
ListItem* obj2 = (ListItem*) cast2;
^
Process.c:434:28: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
Process* p1 = (Process*)v1;
^
Process.c:435:28: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
Process* p2 = (Process*)v2;
^
Process.c:441:36: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
Settings *settings = ((Process*)v1)->settings;
^
Process.c:443:22: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
p1 = (Process*)v1;
^
Process.c:444:22: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
p2 = (Process*)v2;
^
Process.c:446:22: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
p2 = (Process*)v1;
^
Process.c:447:22: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
p1 = (Process*)v2;
^
AffinityPanel.c:37:16: warning: cast from 'const char *' to 'void *' drops const qualifier [-Wcast-qual]
free((void*)this->text);
^
AffinityPanel.c:39:19: warning: cast from 'const char *' to 'void *' drops const qualifier [-Wcast-qual]
free((void*)this->indent);
^
linux/LinuxProcess.c:294:36: warning: cast from 'const void *' to 'struct Process_ *' drops const qualifier [-Wcast-qual]
Settings *settings = ((Process*)v1)->settings;
^
linux/LinuxProcess.c:296:27: warning: cast from 'const void *' to 'struct LinuxProcess_ *' drops const qualifier [-Wcast-qual]
p1 = (LinuxProcess*)v1;
^
linux/LinuxProcess.c:297:27: warning: cast from 'const void *' to 'struct LinuxProcess_ *' drops const qualifier [-Wcast-qual]
p2 = (LinuxProcess*)v2;
^
linux/LinuxProcess.c:299:27: warning: cast from 'const void *' to 'struct LinuxProcess_ *' drops const qualifier [-Wcast-qual]
p2 = (LinuxProcess*)v1;
^
linux/LinuxProcess.c:300:27: warning: cast from 'const void *' to 'struct LinuxProcess_ *' drops const qualifier [-Wcast-qual]
p1 = (LinuxProcess*)v2;
^
linux/LinuxProcessList.c:62:32: warning: cast from 'const void *' to 'struct TtyDriver_ *' drops const qualifier [-Wcast-qual]
TtyDriver* a = (TtyDriver*) va;
^
linux/LinuxProcessList.c:63:32: warning: cast from 'const void *' to 'struct TtyDriver_ *' drops const qualifier [-Wcast-qual]
TtyDriver* b = (TtyDriver*) vb;
^
linux/Battery.c:130:21: warning: cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]
free((char *) isOnline);
^
linux/Battery.c:197:26: warning: cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/type", entryName);
^
linux/Battery.c:209:29: warning: cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/uevent", entryName);
^
linux/Battery.c:262:29: warning: cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/online", entryName);
^
2020-09-24 20:14:17 +02:00
Christian Göttsche
cd1ba1422b
Avoid bad function cast warning
...
linux/Platform.c:142:17: warning: cast from function call of type 'double' to non-matching type 'int' [-Wbad-function-cast]
return (int) floor(uptime);
^~~~~~~~~~~~~
2020-09-24 20:14:17 +02:00
Christian Göttsche
4296e74ada
Include prototype in Battery implementation
...
linux/Battery.c:291:6: warning: no previous prototype for function 'Battery_getData' [-Wmissing-prototypes]
void Battery_getData(double* level, ACPresence* isOnAC) {
^
2020-09-24 20:14:17 +02:00
Christian Göttsche
edf1b10d2c
Read CPU frequency from sysfs by default
...
Use the more portable sysfs node /sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq
to get the CPU frequency.
In case of an error fall back to /proc/cpuinfo .
Also use a fixed width of 4 for the frequency to avoid position jumps
in case the frequency moves in the range 900-1100 MHz.
2020-09-24 20:11:28 +02:00
Christian Göttsche
594409f299
Add DeepCode inline suppression
...
commsize is bounded by the allocated length passed in by commLen, saved
into commLenIn
2020-09-24 19:56:30 +02:00
Benny Baumann
7ecea3d485
Use return value of CLAMP function
2020-09-24 18:06:36 +02:00