From 72ba20fa5f077bab4286dd78f9944df15de3b3b4 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 31 Aug 2021 15:38:52 +1000 Subject: Introduce screen tabs This is a forward port (by nathans) of Hisham's original code. --- pcp/PCPProcessList.c | 26 +++++++++++++------------- pcp/Platform.c | 15 +++++++++++++++ pcp/Platform.h | 4 ++++ 3 files changed, 32 insertions(+), 13 deletions(-) (limited to 'pcp') diff --git a/pcp/PCPProcessList.c b/pcp/PCPProcessList.c index cae097fd..0664a162 100644 --- a/pcp/PCPProcessList.c +++ b/pcp/PCPProcessList.c @@ -384,12 +384,12 @@ static bool PCPProcessList_updateProcesses(PCPProcessList* this, double period, continue; } - if (settings->flags & PROCESS_FLAG_IO) + if (settings->ss->flags & PROCESS_FLAG_IO) PCPProcessList_updateIO(pp, pid, offset, now); PCPProcessList_updateMemory(pp, pid, offset); - if ((settings->flags & PROCESS_FLAG_LINUX_SMAPS) && + if ((settings->ss->flags & PROCESS_FLAG_LINUX_SMAPS) && (Process_isKernelThread(proc) == false)) { if (PCPMetric_enabled(PCP_PROC_SMAPS_PSS)) PCPProcessList_updateSmaps(pp, pid, offset); @@ -419,22 +419,22 @@ static bool PCPProcessList_updateProcesses(PCPProcessList* this, double period, PCPProcessList_updateCmdline(proc, pid, offset, command); } - if (settings->flags & PROCESS_FLAG_LINUX_CGROUP) + if (settings->ss->flags & PROCESS_FLAG_LINUX_CGROUP) PCPProcessList_readCGroups(pp, pid, offset); - if (settings->flags & PROCESS_FLAG_LINUX_OOM) + if (settings->ss->flags & PROCESS_FLAG_LINUX_OOM) PCPProcessList_readOomData(pp, pid, offset); - if (settings->flags & PROCESS_FLAG_LINUX_CTXT) + if (settings->ss->flags & PROCESS_FLAG_LINUX_CTXT) PCPProcessList_readCtxtData(pp, pid, offset); - if (settings->flags & PROCESS_FLAG_LINUX_SECATTR) + if (settings->ss->flags & PROCESS_FLAG_LINUX_SECATTR) PCPProcessList_readSecattrData(pp, pid, offset); - if (settings->flags & PROCESS_FLAG_CWD) + if (settings->ss->flags & PROCESS_FLAG_CWD) PCPProcessList_readCwd(pp, pid, offset); - if (settings->flags & PROCESS_FLAG_LINUX_AUTOGROUP) + if (settings->ss->flags & PROCESS_FLAG_LINUX_AUTOGROUP) PCPProcessList_readAutogroup(pp, pid, offset); if (proc->state == ZOMBIE && !proc->cmdline && command[0]) { @@ -676,16 +676,16 @@ void ProcessList_goThroughEntries(ProcessList* super, bool pauseProcessUpdate) { for (int metric = PCP_PROC_PID; metric < PCP_METRIC_COUNT; metric++) PCPMetric_enable(metric, enabled); - flagged = settings->flags & PROCESS_FLAG_LINUX_CGROUP; + flagged = settings->ss->flags & PROCESS_FLAG_LINUX_CGROUP; PCPMetric_enable(PCP_PROC_CGROUPS, flagged && enabled); - flagged = settings->flags & PROCESS_FLAG_LINUX_OOM; + flagged = settings->ss->flags & PROCESS_FLAG_LINUX_OOM; PCPMetric_enable(PCP_PROC_OOMSCORE, flagged && enabled); - flagged = settings->flags & PROCESS_FLAG_LINUX_CTXT; + flagged = settings->ss->flags & PROCESS_FLAG_LINUX_CTXT; PCPMetric_enable(PCP_PROC_VCTXSW, flagged && enabled); PCPMetric_enable(PCP_PROC_NVCTXSW, flagged && enabled); - flagged = settings->flags & PROCESS_FLAG_LINUX_SECATTR; + flagged = settings->ss->flags & PROCESS_FLAG_LINUX_SECATTR; PCPMetric_enable(PCP_PROC_LABELS, flagged && enabled); - flagged = settings->flags & PROCESS_FLAG_LINUX_AUTOGROUP; + flagged = settings->ss->flags & PROCESS_FLAG_LINUX_AUTOGROUP; PCPMetric_enable(PCP_PROC_AUTOGROUP_ID, flagged && enabled); PCPMetric_enable(PCP_PROC_AUTOGROUP_NICE, flagged && enabled); diff --git a/pcp/Platform.c b/pcp/Platform.c index 150660af..f6de7d9c 100644 --- a/pcp/Platform.c +++ b/pcp/Platform.c @@ -54,6 +54,21 @@ in the source distribution for its full text. Platform* pcp; +ScreenDefaults Platform_defaultScreens[] = { + { + .name = "Main", + .columns = "PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME COMM", + .sortKey = "PERCENT_CPU", + }, + { + .name = "I/O", + .columns = "PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY COMM", + .sortKey = "IO_RATE", + }, +}; + +const unsigned int Platform_numberOfDefaultScreens = ARRAYSIZE(Platform_defaultScreens); + ProcessField Platform_defaultFields[] = { PID, USER, PRIORITY, NICE, M_VIRT, M_RESIDENT, (int)M_SHARE, STATE, PERCENT_CPU, PERCENT_MEM, TIME, COMM, 0 }; int Platform_numberOfFields = LAST_PROCESSFIELD; diff --git a/pcp/Platform.h b/pcp/Platform.h index ad38cbbd..f080df28 100644 --- a/pcp/Platform.h +++ b/pcp/Platform.h @@ -58,6 +58,10 @@ typedef struct Platform_ { unsigned int ncpu; /* maximum processor count configured */ } Platform; +extern ScreenDefaults Platform_defaultScreens[]; + +extern const unsigned int Platform_numberOfDefaultScreens; + extern ProcessField Platform_defaultFields[]; extern int Platform_numberOfFields; -- cgit v1.2.3