summaryrefslogtreecommitdiffstats
path: root/pcp/PCPDynamicColumn.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix code styleBenny Baumann2023-12-261-2/+4
|
* Rename ProcessList to ProcessTable throughoutNathan Scott2023-08-311-1/+1
| | | | | | | | | | | | Following up with some discusson from a few months back, where it was proposed that ProcessTable is a better name. This data structure is definitely not a list ... if it was one-dimensional it'd be a set, but in practice it has much more in common with a two-dimensional table. The Process table is a familiar operating system concept for many people too so it resonates a little in that way as well.
* Rename PCPMetric files, structures and related internal functionsNathan Scott2023-08-301-11/+10
| | | | | Simplify names to just Metric in this case as it is not mirroring core htop naming (which is the norm for that naming convention).
* Support dynamic screens with 'top-most' entities beyond processesSohaib Mohamed2023-08-301-42/+207
| | | | | | | | | | | | | | | | | | | | | | This implements our concept of 'dynamic screens' in htop, with a first use-case of pcp-htop displaying things like top-filesystem and top-cgroups under new screen tabs. However the idea is more general than use in pcp-htop and we've paved the way here for us to collectively build mroe general tabular screens in core htop, as well. From the pcp-htop side of things, dynamic screens are configured using text-based configuration files that define the mapping for PCP metrics to columns (and metric instances to rows). Metrics are defined either directly (via metric names) or indirectly via PCP derived metric specifications. Value scaling and the units displayed is automatic based on PCP metric units and data types. This commit represents a collaborative effort of several months, primarily between myself, Nathan and BenBE. Signed-off-by: Sohaib Mohamed <sohaib.amhmd@gmail.com> Signed-off-by: Nathan Scott <nathans@redhat.com>
* Introduce Row and Table classes for screens beyond top-processesNathan Scott2023-08-301-5/+7
| | | | | | | | | This commit refactors the Process and ProcessList structures such they each have a new parent - Row and Table, respectively. These new classes handle screen updates relating to anything that could be represented in tabular format, e.g. cgroups, filesystems, etc, without us having to reimplement the display logic repeatedly for each new entity.
* Compare all percentage fields with compareRealNumbers()Explorer092023-08-181-2/+2
| | | | | | | | The SPACESHIP_NUMBER() macro does not work well with floating point values that are possible to be NaNs. Change the compare logic of all percentage fields of Process entries to use compareRealNumbers(). Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
* Introduce Machine class for host-specific info (split from ProcessList)Nathan Scott2023-05-081-1/+1
| | | | | | | | | | | First stage in sanitizing the process list structure so that htop can support other types of lists too (cgroups, filesystems, ...), in the not-too-distant future. This introduces struct Machine for system-wide information while keeping process-list information in ProcessList (now much less). Next step is to propogate this separation into each platform, to match these core changes.
* Refactor and consolidate dynamic meters/columns pointersNathan Scott2023-04-061-1/+1
| | | | | | | | This removes the duplication of dynamic meter/column hashtable pointers that has come in between the Settings and ProcessList structures - only one copy of these is needed. With the future planned dynamic screens feature adding another pointer, let us first clean this up before any further duplication happens.
* Add fallback for HOME environment variableChristian Göttsche2022-08-221-0/+7
| | | | | If the environment variable HOME is not set, try to get the home directory from the systems password database.
* Update license headers to explicitly say GPLv2+Daniel Lange2021-09-221-1/+1
|
* Add completion handling for dynamic meters and columnsNathan Scott2021-09-031-0/+12
| | | | | | | Be sure to free dynamic memory allocated for meters and columns strings, no-op on platforms other than pcp. Closes #774
* Apply suggestions from code reviewNathan Scott2021-08-171-1/+1
| | | Co-authored-by: BenBE <BenBE@geshi.org>
* Ensure DynamicColumn hash lookups never see NULL pointersNathan Scott2021-08-171-0/+3
| | | | | | This cannot happen in these code locations, but for the purposes of static checkers like Coverity scan (and for future proofing), add two more guards on NULL hash table entry pointers.
* PCP: PCPMetric.[ch] MdouleSohaib2021-08-161-7/+7
| | | | | Split the PCP Metric API (functions `Metric_*`) into their own module. as @BenBE suggested.
* PCP: support for 'dynamic columns' added at runtimeSohaib Mohamed2021-08-131-0/+326
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.

© 2014-2024 Faster IT GmbH | imprint | privacy policy