diff options
author | Nathan Scott <nathans@redhat.com> | 2023-05-02 09:02:22 +1000 |
---|---|---|
committer | Nathan Scott <nathans@redhat.com> | 2023-05-08 13:06:07 +1000 |
commit | 0bdade1b6cb40c5bd374a93ac0489058a7421bb5 (patch) | |
tree | 0e0225f7dbf6867402c5ed3481a705d01941f42e /ProcessList.h | |
parent | e4ebe18b67c366d367231a1123b057c82018cf5b (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.h | 49 |
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); |