summaryrefslogtreecommitdiffstats
path: root/ProcessList.h
diff options
context:
space:
mode:
authorNathan Scott <nathans@redhat.com>2023-05-02 09:02:22 +1000
committerNathan Scott <nathans@redhat.com>2023-05-08 13:06:07 +1000
commit0bdade1b6cb40c5bd374a93ac0489058a7421bb5 (patch)
tree0e0225f7dbf6867402c5ed3481a705d01941f42e /ProcessList.h
parente4ebe18b67c366d367231a1123b057c82018cf5b (diff)
Introduce Machine class for host-specific info (split from ProcessList)
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.
Diffstat (limited to 'ProcessList.h')
-rw-r--r--ProcessList.h49
1 files changed, 4 insertions, 45 deletions
diff --git a/ProcessList.h b/ProcessList.h
index eab122a3..d09cc072 100644
--- a/ProcessList.h
+++ b/ProcessList.h
@@ -16,6 +16,7 @@ in the source distribution for its full text.
#include <sys/types.h>
#include "Hashtable.h"
+#include "Machine.h"
#include "Object.h"
#include "Panel.h"
#include "Process.h"
@@ -24,76 +25,34 @@ in the source distribution for its full text.
#include "UsersTable.h"
#include "Vector.h"
-#ifdef HAVE_LIBHWLOC
-#include <hwloc.h>
-#endif
-
-
-#ifndef MAX_NAME
-#define MAX_NAME 128
-#endif
-
-#ifndef MAX_READ
-#define MAX_READ 2048
-#endif
-
-typedef unsigned long long int memory_t;
-#define MEMORY_MAX ULLONG_MAX
typedef struct ProcessList_ {
- const Settings* settings;
+ struct Machine_* host;
Vector* processes; /* all known processes; sort order can vary and differ from display order */
Vector* displayList; /* process tree flattened in display order (borrowed);
updated in ProcessList_updateDisplayList when rebuilding panel */
Hashtable* processTable; /* fast known process lookup by PID */
- UsersTable* usersTable;
bool needsSort;
- struct timeval realtime; /* time of the current sample */
- uint64_t realtimeMs; /* current time in milliseconds */
- uint64_t monotonicMs; /* same, but from monotonic clock */
-
Panel* panel;
int following;
- uid_t userId;
const char* incFilter;
Hashtable* pidMatchList;
- #ifdef HAVE_LIBHWLOC
- hwloc_topology_t topology;
- bool topologyOk;
- #endif
-
unsigned int totalTasks;
unsigned int runningTasks;
unsigned int userlandThreads;
unsigned int kernelThreads;
-
- memory_t totalMem;
- memory_t usedMem;
- memory_t buffersMem;
- memory_t cachedMem;
- memory_t sharedMem;
- memory_t availableMem;
-
- memory_t totalSwap;
- memory_t usedSwap;
- memory_t cachedSwap;
-
- unsigned int activeCPUs;
- unsigned int existingCPUs;
} ProcessList;
/* Implemented by platforms */
-ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidMatchList, uid_t userId);
+ProcessList* ProcessList_new(Machine* host, Hashtable* pidMatchList);
void ProcessList_delete(ProcessList* pl);
void ProcessList_goThroughEntries(ProcessList* super, bool pauseProcessUpdate);
-bool ProcessList_isCPUonline(const ProcessList* super, unsigned int id);
-
-ProcessList* ProcessList_init(ProcessList* this, const ObjectClass* klass, UsersTable* usersTable, Hashtable* pidMatchList, uid_t userId);
+void ProcessList_init(ProcessList* this, const ObjectClass* klass, Machine* host, Hashtable* pidMatchList);
void ProcessList_done(ProcessList* this);

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