summaryrefslogtreecommitdiffstats
path: root/linux/LinuxProcessList.c
AgeCommit message (Collapse)Author
2019-08-10Move sysfs-reading code to LinuxProcessList.c and add average frequency.Arnavion
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-02-10Linting changesHisham Muhammad
as reported by lgtm.com
2018-08-24Linux: fix CPU countHisham Muhammad
2018-08-24Linux: remove warnings of unused variablesHisham Muhammad
2018-08-19Linux: add process->starttime and use it for STARTTIME column (#700)Shawn Landden
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-07-28Fix process name updates for shorter strings (#812)Score_Under
When a process name changes from a long string to a short string, truncate instead of just overwriting the beginning.
2018-03-25Linux: change how kernel threads are detectedHisham Muhammad
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-02-26Fix build failure ('major' undefined) in glibc 2.28. (#746)Kang-Che Sung (宋岡哲)
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-17linux/LinuxProcessList.c: Fix indentation.Hisham Muhammad
2018-02-17linux/LinuxProcessList: fix reading of number of read syscalls of processMarc Kleine-Budde
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>
2017-12-04Adds support for linux delay accounting (#667)André Carvalho
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-08-01Do not use xSnprintf when the result is used. Fixes #662.Hisham Muhammad
2017-07-27Security review: check results of snprintf.Hisham Muhammad
Calls marked with xSnprintf shouldn't fail. Abort program cleanly if any of them does.
2017-07-10Add "no perm" status when other fields fail due to lack of permission.Hisham Muhammad
Thanks @Sworddragon for the heads up. See #88.
2016-10-01Interpret TTY_NR column on Linux,Hisham
translate dev_t to major:minor on other platforms. Closes #316.
2016-08-24Return when reading cmdline fails (e.g. zombie process)Hisham
2016-06-15Don't store invisible trailing whitespaceHisham
2016-02-29any of these values may wrapHisham
2016-02-19Try to retain last full name of a zombie process.Hisham
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-16Fix reading of io_syscr and io_syscw.Hisham
Issue noticed by GCC6 -Wmisleading-indentation. Thanks @JIghtuse and @Explorer09! Closes #409.
2016-02-13Fix buffer reuse.Hisham
2016-02-02Merge branch 'reuse-comm'Hisham
2016-02-02Reuse comm object if possible, avoid useless repetitions of free+strdup.Hisham
2016-02-02Check for failure in allocations.Hisham
2016-01-15Introduce CLAMP macro. Unify all MIN(MAX(a,b),c) uses.Explorer09
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--) .
2015-12-14Extend buffer for reading lines from /proc.Hisham Muhammad
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-11-29Cached memory calculations, take 2.Hisham Muhammad
Thanks to @OmegaPhil for discussion and reviewing.
2015-11-28Account unreclaimable slab and shmem as used memory,Hisham Muhammad
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-09-14Fix a case where the usertime calculation can overflow (see issue #202)Patrick Marlier
2015-08-20Reduce scope of variables.Hisham Muhammad
2015-08-19Rename String to StringUtils.David Hunt
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-04Fix typo in commentpeter-warhzner
2015-05-15fix compiler warningsChristian Hesse
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-13Fix compilation of OpenVZ support.Hisham Muhammad
Closes #185. Closes #190.
2015-04-09Enable OOM support unconditionally on Linux.Hisham Muhammad
Read OOM data only if column is enabled. Make sort ordering more consistent. Closes #182.
2015-04-09Fixes to use platform-specific compare routines.Hisham Muhammad
2015-04-02Merge branch 'master' into wipHisham Muhammad
Conflicts: Process.c Process.h htop.c linux/LinuxProcess.c linux/LinuxProcess.h test_spec.lua
2015-03-16Build fixes to resync with FreeBSD changes.Hisham Muhammad
2015-03-16Major advances in FreeBSD port.Hisham Muhammad
2015-03-16Linux build fixes.Hisham Muhammad
2015-03-16Merge branch 'master' into wipHisham Muhammad
Conflicts: Process.c Process.h linux/LinuxProcess.c linux/LinuxProcess.h linux/LinuxProcessList.c unsupported/Platform.c unsupported/Platform.h
2015-03-16Get FreeBSD tree to compile again with latest changes.Hisham Muhammad
2015-03-16Isolate portable and Linux-specific process fields.Hisham Muhammad
2015-03-15Move more Linux-specific code into Linux subdir.Hisham Muhammad
2015-03-08Improve reading of cgroups.Hisham Muhammad
2015-02-23Merge fixesHisham Muhammad
2015-02-23Silence warnings reported in #70.Hisham Muhammad
2015-02-23Fix allocation of processes. Closes #166.Hisham Muhammad
Conflicts: Process.c Process.h ProcessList.c ScreenManager.c linux/LinuxProcessList.c
2015-02-20Fix allocation of processes. Closes #166.Hisham Muhammad
2015-01-23Remove bogus assertion. Closes #159.Hisham Muhammad