summaryrefslogtreecommitdiffstats
path: root/ProcessList.c
AgeCommit message (Collapse)Author
2021-08-13PCP: support for 'dynamic columns' added at runtimeSohaib Mohamed
Implements support for arbitrary Performance Co-Pilot metrics with per-process instance domains to form new htop columns. The column-to-metric mappings are setup using configuration files which will be documented via man pages as part of a follow-up commit. We provide an initial set of column configurations so as to provide new capabilities to pcp-htop: including configs for containers, open fd counts, scheduler run queue time, tcp/udp bytes/calls sent/recv, delay acct, virtual machine guests, detailed virtual memory, swap. Note there is a change to the configuration file path resolution algorithm introduced for 'dynamic meters'. First, look in any custom PCP_HTOP_DIR location. Then iterate, in priority order, users home directory, then local sysadmins files in /etc/pcp/htop, then readonly configuration files below /usr/share/pcp/htop. This final location becomes the preferred place for our own shipped meter and column files. The Settings file (htoprc) writing code is updated to not using the numeric identifier for dynamic columns. The same strategy used for dynamic meters is used here where we write Dynamic(name) so the name can be setup once more at start. Regular (static) columns writing to htoprc - i.e. numerically indexed - is unchanged.
2021-07-18Rework CPU countingChristian Göttsche
Currently htop does not support offline CPUs and hot-swapping, e.g. via echo 0 > /sys/devices/system/cpu/cpu2/online Split the current single cpuCount variable into activeCPUs and existingCPUs. Supersedes: #650 Related: #580
2021-07-15Pointer indication aligned to typenameBenny Baumann
2021-07-07Add a new DynamicMeter class for runtime Meter extensionNathan Scott
This commit is based on exploratory work by Sohaib Mohamed. The end goal is two-fold - to support addition of Meters we build via configuration files for both the PCP platform and for scripts ( https://github.com/htop-dev/htop/issues/526 ) Here, we focus on generic code and the PCP support. A new class DynamicMeter is introduced - it uses the special case 'param' field handling that previously was used only by the CPUMeter, such that every runtime-configured Meter is given a unique identifier. Unlike with the CPUMeter this is used internally only. When reading/writing to htoprc instead of CPU(N) - where N is an integer param (CPU number) - we use the string name for each meter. For example, if we have a configuration for a DynamicMeter for some Redis metrics, we might read and write "Dynamic(redis)". This identifier is subsequently matched (back) up to the configuration file so we're able to re-create arbitrary user configurations. The PCP platform configuration file format is fairly simple. We expand configs from several directories, including the users homedir alongside htoprc (below htop/meters/) and also /etc/pcp/htop/meters. The format will be described via a new pcp-htop(5) man page, but its basically ini-style and each Meter has one or more metric expressions associated, as well as specifications for labels, color and so on via a dot separated notation for individual metrics within the Meter. A few initial sample configuration files are provided below ./pcp/meters that give the general idea. The PCP "derived" metric specification - see pmRegisterDerived(3) - is used as the syntax for specifying metrics in PCP DynamicMeters.
2021-05-23Call makeCommandStr on all platformsBenny Baumann
2021-05-23Rename command line field from comm to cmdlineBenny Baumann
2021-05-10cleaned up includes with iwyumayurdahibhate
2021-04-21Avoid implicit pointer to bool conversion in assignmentChristian Göttsche
Improve readability
2021-04-21Drop ProcessList_get and ProcessList_sizeChristian Göttsche
Only used inside ProcessList.c and only once each.
2021-04-09Update timestamps for the special process scans at startup alsoNathan Scott
Resolves https://github.com/htop-dev/htop/issues/592
2021-04-05Request the realtime and monotonic clock times once per sampleNathan Scott
Refactor the sample time code to make one call to gettimeofday (aka the realtime clock in clock_gettime, when available) and one to the monotonic clock. Stores each in more appropriately named ProcessList fields for ready access when needed. Every platform gets the opportunity to provide their own clock code, and the existing Mac OS X specific code is moved below darwin instead of in Compat. A couple of leftover time(2) calls are converted to use these ProcessList fields as well, instead of yet again sampling the system clock. Related to https://github.com/htop-dev/htop/pull/574
2021-03-20ProcessList: fix treeview on OpenBSD when hiding kernel threadsChristian Göttsche
Currently the tree-view is empty on OpenBSD when kernel threads are hidden, cause the kernel thread 'swapper' has pid 0 and gets treated as root of the tree and parent of 'init'. Do not build any tree with a pid 0 root node.
2021-03-17RichString: do not unnecessarily clean whole bufferChristian Göttsche
The local stack buffer does not need to be cleaned to zeros when - just initialized, cause the length is set to 0 and the first character is set to '\0', so all printing functions will safely stop - no further used, i.e. the variable goes out of scope
2021-03-14Improve process followingChristian Göttsche
- stay in follow mode on sort inversion (I) - stay in follow mode after viewing help screen (h) - select parent process (where available) when having followed a thread and hiding these (H) Closes: #560
2021-03-12InfoScreen/ProcessList: do not access Vector internalsChristian Göttsche
Use wrapper function to encapsulate the Vector structure
2021-03-03Follow followed process when switching thread visibilitiesChristian Göttsche
Do not stop following a process when switching the visibility of userland or kernel threads. Related: #557
2021-02-28Make the first tree item stable on expand / collapse againDaniel Lange
Regression introduced with 06b1674
2021-02-13Option and key ("*") to collapse / expand all branches under PID 1Daniel Lange
(and PID 2 if kernel threads are shown) Based on hishamhm/htop#510 by Krishna Chaitanya, B Closes #68
2021-01-31Improve handling when selected last process entryChristian Göttsche
If the last process entry is selected and the process dies, stay at the end of the list and do not jump to the start. Also if the last entry is selected keep, after rebuilding the process list due to a new scan, the last entry selected.
2021-01-21Sort out the mess around column sorting that had accumulated over timeDaniel Lange
2021-01-15RichString: implement safe rewindChristian Göttsche
The current rewind logic causes issues when rewinding over the short string optimization boundary.
2021-01-11Mark several non-modified pointer variables constChristian Göttsche
2021-01-10Exit follow mode cleanly after followed process diesChristian Göttsche
2021-01-07Show arrow indicating order of sorted process columnChristian Göttsche
2021-01-02Object: return int on comparisonChristian Göttsche
Comparisons do, due to the new introduced shaceship-comparisons, only return -1, 0, 1 or the result of strcmp().
2020-12-19Merge Process_pidColumns into Process_fields and rework auto-fit for ↵Christian Göttsche
PID-like columns
2020-12-19Separate tree and list sort ordersHisham Muhammad
Implements the suggestion from https://github.com/htop-dev/htop/issues/399#issuecomment-747861013 Thanks to the refactors from 0bd5c8fb5da and 6393baa74e5, this was really easy and clean to do. It maintains the "Tree view always by PID" option in the Settings, which results in some specific behaviors such as "clicking on the column header to exit tree view" and "picking a new sort order to exit tree view", for the sake of the muscle memory of long time htop users. :)
2020-12-19Add "Tree view is always sorted by PID" option to mimic htop 2 behaviorHisham Muhammad
2020-12-18Fix typoChristian Göttsche
2020-12-18ProcessList: save scan time in millisecondChristian Göttsche
The delay is saved in deciseconds, use a bigger resolution to avoid timing irregularities.
2020-12-18Support clock_gettime() on OSX El Capitan and earlierChristian Göttsche
2020-12-08Additional code simplificationBenny Baumann
Additional correction for #375
2020-12-08Split RichString_(append|appendn|write) into wide and asciiChristian Göttsche
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-06IWYU updateChristian Göttsche
2020-12-03Silence possible NULL dereferenceChristian Göttsche
Found by compiling with LTO ProcessList.c: In function ‘ProcessList_updateTreeSetLayer’: ProcessList.c:195:15: error: potential null pointer dereference [-Werror=null-dereference] 195 | if (proc->tree_depth == deep && proc->tree_left > left && proc->tree_right < right) { | ^ ProcessList.c:195:15: error: potential null pointer dereference [-Werror=null-dereference] ProcessList.c:195:15: error: potential null pointer dereference [-Werror=null-dereference]
2020-12-02Minor code streamliningBenny Baumann
2020-12-02Some minor spelling issuesBenny Baumann
2020-12-02Avoid expensive build of tree when not using itBenny Baumann
2020-12-02Avoid useless search for pid 0Benny Baumann
2020-12-02Reorder field initialization to group fields by taskBenny Baumann
2020-12-02Code style cleanup and documentation/commentsBenny Baumann
2020-12-02Use common values for initial size estimates for HashtablesBenny Baumann
2020-12-02Fix issue with inconsistent displayTreeSetMaxim Zhiburt
2020-12-02Implement sorting in tree modeMaxim Zhiburt
2020-11-24Include merge status with column title when enabledNarendran Gopalakrishnan
2020-11-24Improving Command display/sortNarendran Gopalakrishnan
2020-11-21fix indentChristian Göttsche
2020-11-16Apply patch from BenBE as per ↵Daniel Lange
https://github.com/htop-dev/htop/pull/241#issuecomment-720081138
2020-11-16Merge branch 'hili-new-old' of adsr/htop into highlight-new-old-processesDaniel Lange
2020-11-15Mark ProcessList_keyAt argument constChristian Göttsche