Fynn Wulf
7f18b352b0
Calculate library size (M_LRS column) from maps file
2020-11-26 22:58:34 +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
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
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
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
0a2105eb22
Spelling corrections
2020-11-18 13:59:55 +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
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
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
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
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
Murloc Knight
ab17ef4dc0
Zram Meter feature
2020-10-31 18:51:53 +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
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
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
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
25022c219d
Read CPU count every cycle to avoid issues when HT/SMT mode changes
2020-10-12 13:15:23 +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
954d6c12f5
Simplify statm parsing and document unused fields
2020-10-06 18:59:02 +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
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
6f387008cb
Add security attribute process column
2020-10-03 18:51:17 +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
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
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
321960bd96
Update delay accounting to use NAN on error
2020-09-24 18:06:36 +02:00
Benny Baumann
3c65d78d77
Update CPU freq display to use NAN on error
2020-09-24 18:06:36 +02:00
Benny Baumann
d0d3deb73c
Properly query sysconf settting and use NAN if unavailable
...
This also fixes an issue with time returned negative if sysconf(_SC_CLK_TCK) returned an error.
2020-09-24 18:06:36 +02:00
Benny Baumann
29ec115143
Update IO rate display to use NAN on error
2020-09-24 18:06:36 +02:00
Christian Göttsche
f9966b5be3
Use checked allocation wrappers
2020-09-23 17:50:21 +02:00
Christian Göttsche
eb260af6bf
Fix memory leak on cgroup read failure
2020-09-21 13:55:29 +02:00
Christian Göttsche
00665e2a2b
Avoid unsigned integer overflow
...
unsigned overflow is well defined, but creates noise when using
sanitizers. unsigned overflow can be a symptom of logic issues of
counter, so its reasonable to use.
linux/LinuxProcessList.c:64:50: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior linux/LinuxProcessList.c:64:50 in
linux/LinuxProcessList.c:64:11: runtime error: implicit conversion from type 'unsigned int' of value 4294967295 (32-bit, unsigned) to type 'int' changed the value to -1 (32-bit, signed)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior linux/LinuxProcessList.c:64:11 in
linux/LinuxProcessList.c:64:78: runtime error: unsigned integer overflow: 4 - 136 cannot be represented in type 'unsigned int'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior linux/LinuxProcessList.c:64:78 in
2020-09-17 21:53:31 +02:00
Christian Göttsche
98ee833932
Add Linux process column for context switches
...
Displays the incremental sum of voluntary_ctxt_switches and nonvoluntary_ctxt_switches.
2020-09-17 21:53:15 +02:00
Christian Göttsche
37921382f4
Use PROCDIR throughout instead of /proc on Linux
2020-09-17 21:44:27 +02:00
Christian Göttsche
b096fdbfc0
Avoid potential buffer overflow in LinuxProcessList_readStatFile
...
Pass size of allocated command buffer and limit write.
2020-09-17 21:43:53 +02:00
Nathan Scott
4597332959
Switch variable/field naming from WhiteList to MatchList
2020-09-09 19:38:15 +10:00
Nathan Scott
c5808c56db
Consolidate repeated macro definitions into one header
...
The MIN, MAX, CLAMP, MINIMUM, and MAXIMUM macros appear
throughout the codebase with many re-definitions. Make
a single copy of each in a common header file, and use
the BSD variants of MINIMUM/MAXIMUM due to conflicts in
the system <sys/param.h> headers.
2020-09-09 16:56:04 +10:00
Zev Weiss
a1a027b9bd
Axe automated header generation.
...
Reasoning:
- implementation was unsound -- broke down when I added a fairly
basic macro definition expanding to a struct initializer in a *.c
file.
- made it way too easy (e.g. via otherwise totally innocuous git
commands) to end up with timestamps such that it always ran
MakeHeader.py but never used its output, leading to overbuild noise
when running what should be a null 'make'.
- but mostly: it's just an awkward way of dealing with C code.
2020-09-03 11:58:58 -05:00
Nathan Scott
47a7d0bd74
Merge branch 'configure' of https://github.com/cgzones/htop into cgzones-configure
2020-08-31 17:13:37 +10:00
Nathan Scott
b321177b08
Merge branch 'master' of github.com:htop-dev/htop
2020-08-31 16:57:46 +10:00
Christian Göttsche
5c99c6e942
Check btime sscanf parse from /proc/stat
...
Found by Coverity
2020-08-28 16:46:50 +02:00
Christian Göttsche
a850d81bf5
Avoid use of uninitialized variables
...
Found by Coverity
2020-08-28 16:46:50 +02:00
Christian Göttsche
05a5fdc47f
Ignore sscanf return value of /proc/stat
...
Found by Coverity
2020-08-28 16:46:50 +02:00
Christian Göttsche
af84d3dfa9
Fail on out-of-range CPU number
...
Found by Coverity
2020-08-28 16:46:50 +02:00
Christian Göttsche
d9a5dd4b91
Improve OOM output
...
* Fix sort by adding cast
* Shrink column size to 4
* Drop unnecessary maximum field width specifier in sscanf
2020-08-28 14:24:59 +02:00
Christian Göttsche
a48ce9d103
Really tell gcc to ignore return value of fscanf
2020-08-28 13:10:41 +02:00
Christian Göttsche
4e2b9f0965
Avoid shadowing warnings
2020-08-25 12:01:56 +02:00
Christian Göttsche
3856bf574b
Introduce xAsprintf as checked version of asprintf
2020-08-21 10:37:29 +02:00
Nathan Scott
9a55efc8b5
Merge branch 'hishamhm-pull-920'
2020-08-20 18:24:35 +10:00
Nathan Scott
fed14a584d
Merge branch 'hishamhm-pull-970'
2020-08-20 15:33:30 +10:00
Nathan Scott
6b443c5da9
Merge branch 'hishamhm-pull-932'
2020-08-20 14:47:07 +10:00
Nathan Scott
a82fd262d7
Merge branch 'hishamhm-pull-960'
2020-08-20 14:19:53 +10:00
Nathan Scott
45ae6191c1
Merge branch 'hishamhm-pull-866'
2020-08-20 12:29:25 +10:00
Nathan Scott
eef6bc447d
Correction to smaps buffer size passed to smaps path snprintf
2020-08-19 17:50:43 +10:00
Jure Oder
88c9ebb8f7
Properly identify zombie processes
...
This closes issue #930 .
2019-12-14 11:47:03 +01:00
Daniel Flanagan
dd33444f7e
Clean up existing whitespace
2019-10-31 11:39:12 -05:00
Ross Williams
a267003f2f
Linux fixes
2019-09-03 19:56:38 +00:00
Ross Williams
613556faeb
Support for ZFS Compressed ARC statistics
2019-09-03 18:44:19 +00:00
Arnavion
81b64691a7
Move sysfs-reading code to LinuxProcessList.c and add average frequency.
...
This way the frequency is read from sysfs only once per update cycle
instead of every time the UI is redrawn.
This also changes the code to read from /proc/cpuinfo instead. This is because
reading from scaling_cur_freq stalls for 10ms if the previous read for the file
was more than one second ago. [1] Since htop's update cycle is
longer than that, it would cause the read of each CPU's scaling_cur_freq file
to block the UI for 20ms. This easily led to a noticeable half-second lag on
a 20+ CPU machine.
/proc/cpuinfo also has a 10ms delay, but this applies for the whole file
so the delay does not scale with the number of CPUs. [2]
[1]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4815d3c56d1e10449a44089a47544d9ba84fad0d
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7d5905dc14a87805a59f3c5bf70173aac2bb18f8
2019-08-10 22:19:32 -07:00
Ross Williams
a88d2e313d
Refactor common OpenZFS sysctl access
...
Darwin and FreeBSD export zfs kstats through the
same APIs, so moving functions into a common file.
2019-07-07 23:10:54 -04:00
Ross Williams
070fe90461
ZFS arcstats for Linux
...
If no pools are imported (ARC size == 0) or the
ZFS module is not in the kernel (/proc/spl/kstat/zfs/arcstats
does not exist), then the Meter reports "Unavailable".
2019-07-07 22:57:15 -04:00
Alexander Schlarb
078c2ddde5
Linux: Use /proc/*/smaps_rollup for improved PSS parsing speed
2019-03-20 17:00:49 +01:00
Alexander Schlarb
fc0bf546c3
Linux: Add PSS (proportional set size), Swap and SwapPSS calculation
...
Original code was written by *Craig M. Brandenburg* for htop 1.0.2
Many performance improvements by GitHub user *linvinus*, ported to htop 2.0.2
2019-03-20 17:00:41 +01:00
Hisham Muhammad
402e46bb82
Linting changes
...
as reported by lgtm.com
2019-02-10 14:16:46 +01:00
Wataru Ashihara
41754e5632
Remove unnecessary HAVE_SYS_SYSMACROS_H check
...
HAVE_SYS_SYSMACROS_H is always true if MAJOR_IN_SYSMACROS.
This way of checking is recommended in autoconf 2.70 documentation:
https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blobdiff;f=doc/autoconf.texi;h=4f041bd4e;hp=9ad7dc1c5f02c8ba25b2fe1218bf931c7113a5d5;hb=e17a30e987d7ee695fb4294a82d987ec3dc9b974;hpb=565a6dc50cfa01cec2fb4db894026689cdf4970c
NOTE: currently
https://www.gnu.org/software/autoconf/manual/autoconf.html is the
doc for autoconf 2.69.
2018-12-15 22:10:06 +09:00
Hisham Muhammad
bae27054e6
Linux: fix CPU count
2018-08-24 18:38:06 -03:00
Hisham Muhammad
8d01ae2054
Linux: remove warnings of unused variables
2018-08-24 18:38:06 -03:00
Shawn Landden
bd1d719a61
Linux: add process->starttime and use it for STARTTIME column ( #700 )
...
this way a remount of /proc will not reset starttimes
and we can also see startup times for processes started before the mount
of /proc
also record btime (boot time in seconds since epoch) as Linux semi-global
2018-08-19 01:29:03 -03:00
Score_Under
d74b6dc8e0
Fix process name updates for shorter strings ( #812 )
...
When a process name changes from a long string to a short string,
truncate instead of just overwriting the beginning.
2018-07-28 00:08:40 -03:00
Hisham Muhammad
47cf1532b0
Linux: change how kernel threads are detected
...
Use the same method that ps and top use to determine if a
process is a kernel thread on Linux: check if cmdline is empty.
Thanks to @wangqr's investigation reported here:
https://github.com/hishamhm/htop/issues/761#issuecomment-375306069
Fixes #761 .
2018-03-25 15:26:05 -03:00
Kang-Che Sung (宋岡哲)
c01f40eb3e
Fix build failure ('major' undefined) in glibc 2.28. ( #746 )
...
glibc 2.28 no longer defines 'major' and 'minor' in <sys/types.h> and
requires us to include <sys/sysmacros.h>. (glibc 2.25 starts
deprecating the macros in <sys/types.h>.) Now do include the latter if
found on the system.
At the moment, let's also utilize AC_HEADER_MAJOR in configure script.
However as Autoconf 2.69 has not yet updated the AC_HEADER_MAJOR macro
to reflect the glibc change [1], so add a workaround code.
Fixes #663 . Supersedes pull request #729 .
Reference:
[1] https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=e17a30e987d7ee695fb4294a82d987ec3dc9b974
Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
2018-02-26 10:15:05 -03:00
Hisham Muhammad
6dda8d2586
linux/LinuxProcessList.c: Fix indentation.
2018-02-17 20:52:46 -02:00
Marc Kleine-Budde
70ed51a303
linux/LinuxProcessList: fix reading of number of read syscalls of process
...
The "if" tests if the character at index "5" is 'r', as a first quick
check. However at index "5" will always be a colon ":". This patch fixes
the off-by-one error. htop now shows proper values in the RD_SYSC
column.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2018-02-17 16:14:34 -02:00
André Carvalho
b7b66b76a5
Adds support for linux delay accounting ( #667 )
...
Adds support for showing columns with linux delay accounting.
This information can be read from the netlink interface, and thus we set up a socket to read from that when initializing the LinuxProcessList (LinuxProcessList_initNetlinkSocket). After that, for each process we call LinuxProcessList_readDelayAcctData, which sends a message thru the socket after setting up a callback to get the answer from the Kernel. That callback sets the process total delay time attribute. We then set the delay percent as the percentage of time process cpu time since last scan.
2017-12-04 00:15:29 -02:00
Hisham Muhammad
9487bda330
Do not use xSnprintf when the result is used. Fixes #662 .
2017-08-01 15:48:43 -07:00
Hisham Muhammad
09e241fb12
Security review: check results of snprintf.
...
Calls marked with xSnprintf shouldn't fail.
Abort program cleanly if any of them does.
2017-07-27 16:07:50 -03:00
Hisham Muhammad
e940aecfb9
Add "no perm" status when other fields fail due to lack of permission.
...
Thanks @Sworddragon for the heads up.
See #88 .
2017-07-10 20:57:34 -03:00
Hisham
8af4d9f453
Interpret TTY_NR column on Linux,
...
translate dev_t to major:minor on other platforms.
Closes #316 .
2016-10-01 03:09:04 -03:00
Hisham
bd5d37f297
Return when reading cmdline fails (e.g. zombie process)
2016-08-24 18:11:10 -03:00
Hisham
1a13b4d0f4
Don't store invisible trailing whitespace
2016-06-15 12:41:50 -03:00
Hisham
e77811e99b
any of these values may wrap
2016-02-29 21:57:03 -03:00
Hisham
baec4bdcb0
Try to retain last full name of a zombie process.
...
Once a process goes zombie on Linux, /proc/PID/cmdline
gets empty. So, when we detect it is a zombie we stop
reading this file.
For processes that were zombies before htop started,
there's no way to get the full name.
Closes #49 .
2016-02-19 20:51:57 -02:00
Hisham
e0c364b9cc
Fix reading of io_syscr and io_syscw.
...
Issue noticed by GCC6 -Wmisleading-indentation.
Thanks @JIghtuse and @Explorer09!
Closes #409 .
2016-02-16 14:34:25 -02:00
Hisham
0b70439316
Fix buffer reuse.
2016-02-13 02:18:28 -02:00
Hisham
b2c2b2bfb3
Merge branch 'reuse-comm'
2016-02-02 15:58:50 +01:00
Hisham
1cfcc42a8f
Reuse comm object if possible, avoid useless repetitions of free+strdup.
2016-02-02 15:56:52 +01:00
Hisham
b54d2dde40
Check for failure in allocations.
2016-02-02 15:53:02 +01:00
Explorer09
6dae8108f8
Introduce CLAMP macro. Unify all MIN(MAX(a,b),c) uses.
...
With the CLAMP macro replacing the combination of MIN and MAX, we will
have at least two advantages:
1. It's more obvious semantically.
2. There are no more mixes of confusing uses like MIN(MAX(a,b),c) and
MAX(MIN(a,b),c) and MIN(a,MAX(b,c)) appearing everywhere. We unify
the 'clamping' with a single macro.
Note that the behavior of this CLAMP macro is different from
the combination `MAX(low,MIN(x,high))`.
* This CLAMP macro expands to two comparisons instead of three from
MAX and MIN combination. In theory, this makes the code slightly
smaller, in case that (low) or (high) or both are computed at
runtime, so that compilers cannot optimize them. (The third
comparison will matter if (low)>(high); see below.)
* CLAMP has a side effect, that if (low)>(high) it will produce weird
results. Unlike MIN & MAX which will force either (low) or (high) to
win. No assertion of ((low)<=(high)) is done in this macro, for now.
This CLAMP macro is implemented like described in glib
<http://developer.gnome.org/glib/stable/glib-Standard-Macros.html >
and does not handle weird uses like CLAMP(a++, low++, high--) .
2016-01-15 20:26:01 +08:00
Hisham Muhammad
802e216870
Extend buffer for reading lines from /proc.
...
Apparently a line longer than 255 chars was spotted in the wild:
http://serverfault.com/questions/577939/linux-ps-htop-show-processes-running-for-hundreds-or-thousands-of-days-though-h#comment676098_577939
2015-12-14 13:27:11 -02:00
Hisham Muhammad
a84aa2e782
Cached memory calculations, take 2.
...
Thanks to @OmegaPhil for discussion and reviewing.
2015-11-29 23:55:31 -02:00
Hisham Muhammad
5bc1f5ed04
Account unreclaimable slab and shmem as used memory,
...
reclaimable slab as cached memory.
Hopefully this presents a more truthful representation of
available vs. used memory on Linux.
See brndnmtthws/conky#82, #242 , #67 , #263 .
2015-11-28 22:22:00 -02:00
Patrick Marlier
b37d4f172f
Fix a case where the usertime calculation can overflow (see issue #202 )
2015-09-14 22:51:14 +02:00
Hisham Muhammad
5e4f1e46cc
Reduce scope of variables.
2015-08-20 01:12:34 -03:00
David Hunt
5e602f18d5
Rename String to StringUtils.
...
Fixes building on case-insensitive filesystems where String.h gets confused with <string.h>.
From d734dacea0a10d0465dad4e95b3421511e7da112 Mon Sep 17 00:00:00 2001
From: David Hunt <dhunt@iolanthe.attlocal.net>
Date: Sat, 11 Jul 2015 20:56:31 -0500
Subject: [PATCH 1/8] Rename String to StringUtils
2015-08-19 13:45:20 -03:00
peter-warhzner
6f6f0e36ad
Fix typo in comment
2015-08-04 18:48:34 +05:00
Christian Hesse
08829cbc3b
fix compiler warnings
...
gcc gives warnings like this:
warning: ignoring return value of ‘fscanf’, declared with attribute
warn_unused_result
Assign value to a variable, cast to (void) to discard it.
2015-05-15 11:33:25 +02:00
Hisham Muhammad
f4f6d54ffd
Fix compilation of OpenVZ support.
...
Closes #185 .
Closes #190 .
2015-05-13 15:00:58 -03:00
Hisham Muhammad
2f45008477
Enable OOM support unconditionally on Linux.
...
Read OOM data only if column is enabled.
Make sort ordering more consistent. Closes #182 .
2015-04-09 15:41:21 -03:00
Hisham Muhammad
b291fba02b
Fixes to use platform-specific compare routines.
2015-04-09 15:40:46 -03:00
Hisham Muhammad
d880def0e9
Merge branch 'master' into wip
...
Conflicts:
Process.c
Process.h
htop.c
linux/LinuxProcess.c
linux/LinuxProcess.h
test_spec.lua
2015-04-02 01:57:37 -03:00
Hisham Muhammad
4e064e0db7
Build fixes to resync with FreeBSD changes.
2015-03-16 23:03:40 -03:00
Hisham Muhammad
272e2d9b34
Major advances in FreeBSD port.
2015-03-16 23:02:03 -03:00
Hisham Muhammad
7fd4af80ff
Linux build fixes.
2015-03-16 03:25:43 -03:00
Hisham Muhammad
5c8b83405b
Merge branch 'master' into wip
...
Conflicts:
Process.c
Process.h
linux/LinuxProcess.c
linux/LinuxProcess.h
linux/LinuxProcessList.c
unsupported/Platform.c
unsupported/Platform.h
2015-03-16 03:22:33 -03:00
Hisham Muhammad
adbfe3c3f1
Get FreeBSD tree to compile again with latest changes.
2015-03-16 03:14:20 -03:00
Hisham Muhammad
be1700cf94
Isolate portable and Linux-specific process fields.
2015-03-16 01:43:04 -03:00
Hisham Muhammad
e3fe3962cb
Move more Linux-specific code into Linux subdir.
2015-03-15 20:29:13 -03:00
Hisham Muhammad
a4b03e8875
Improve reading of cgroups.
2015-03-08 19:47:49 -03:00
Hisham Muhammad
0a184b769f
Merge fixes
2015-02-23 03:53:36 -03:00
Hisham Muhammad
50000d808e
Silence warnings reported in #70 .
2015-02-23 03:34:06 -03:00
Hisham Muhammad
9780c312f4
Fix allocation of processes. Closes #166 .
...
Conflicts:
Process.c
Process.h
ProcessList.c
ScreenManager.c
linux/LinuxProcessList.c
2015-02-23 01:13:40 -03:00
Hisham Muhammad
6f868b00c0
Fix allocation of processes. Closes #166 .
2015-02-20 14:52:10 -02:00