From 0bdade1b6cb40c5bd374a93ac0489058a7421bb5 Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Tue, 2 May 2023 09:02:22 +1000 Subject: 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. --- ProcessList.h | 49 ++++--------------------------------------------- 1 file changed, 4 insertions(+), 45 deletions(-) (limited to 'ProcessList.h') 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 #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 -#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); -- cgit v1.2.3