From be1700cf9479f4199bb3810db831da943691b8f7 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Mon, 16 Mar 2015 01:43:04 -0300 Subject: Isolate portable and Linux-specific process fields. --- linux/LinuxProcess.h | 111 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 98 insertions(+), 13 deletions(-) (limited to 'linux/LinuxProcess.h') diff --git a/linux/LinuxProcess.h b/linux/LinuxProcess.h index 34007185..2db1a924 100644 --- a/linux/LinuxProcess.h +++ b/linux/LinuxProcess.h @@ -15,28 +15,66 @@ in the source distribution for its full text. #define PROCESS_FLAG_LINUX_VSERVER 0x0400 #define PROCESS_FLAG_LINUX_CGROUP 0x0800 +typedef enum UnsupportedProcessFields { + FLAGS = 9, + ITREALVALUE = 20, + VSIZE = 22, + RSS = 23, + RLIM = 24, + STARTCODE = 25, + ENDCODE = 26, + STARTSTACK = 27, + KSTKESP = 28, + KSTKEIP = 29, + SIGNAL = 30, + BLOCKED = 31, + SSIGIGNORE = 32, + SIGCATCH = 33, + WCHAN = 34, + NSWAP = 35, + CNSWAP = 36, + EXIT_SIGNAL = 37, +} UnsupportedProcessField; + typedef enum LinuxProcessFields { - PID = 1, COMM, STATE, PPID, PGRP, SESSION, TTY_NR, TPGID, FLAGS, MINFLT, CMINFLT, MAJFLT, CMAJFLT, UTIME, - STIME, CUTIME, CSTIME, PRIORITY, NICE, ITREALVALUE, STARTTIME, VSIZE, RSS, RLIM, STARTCODE, ENDCODE, - STARTSTACK, KSTKESP, KSTKEIP, SIGNAL, BLOCKED, SSIGIGNORE, SIGCATCH, WCHAN, NSWAP, CNSWAP, EXIT_SIGNAL, - PROCESSOR, M_SIZE, M_RESIDENT, M_SHARE, M_TRS, M_DRS, M_LRS, M_DT, ST_UID, PERCENT_CPU, PERCENT_MEM, - USER, TIME, NLWP, TGID, + CMINFLT = 11, + CMAJFLT = 13, + UTIME = 14, + STIME = 15, + CUTIME = 16, + CSTIME = 17, + PROCESSOR = 38, + M_SHARE = 41, + M_TRS = 42, + M_DRS = 43, + M_LRS = 44, + M_DT = 45, #ifdef HAVE_OPENVZ - CTID, VPID, + CTID = 100, + VPID = 101, #endif #ifdef HAVE_VSERVER - VXID, + VXID = 102, #endif #ifdef HAVE_TASKSTATS - RCHAR, WCHAR, SYSCR, SYSCW, RBYTES, WBYTES, CNCLWB, IO_READ_RATE, IO_WRITE_RATE, IO_RATE, + RCHAR = 103, + WCHAR = 104, + SYSCR = 105, + SYSCW = 106, + RBYTES = 107, + WBYTES = 108, + CNCLWB = 109, + IO_READ_RATE = 110, + IO_WRITE_RATE = 111, + IO_RATE = 112, #endif #ifdef HAVE_CGROUP - CGROUP, + CGROUP = 113, #endif #ifdef HAVE_OOM - OOM, + OOM = 114, #endif - IO_PRIORITY, + IO_PRIORITY = 115, LAST_PROCESSFIELD } LinuxProcessField; @@ -45,9 +83,53 @@ typedef enum LinuxProcessFields { typedef struct LinuxProcess_ { Process super; IOPriority ioPriority; + unsigned long int cminflt; + unsigned long int cmajflt; + unsigned long long int utime; + unsigned long long int stime; + unsigned long long int cutime; + unsigned long long int cstime; + int processor; + long m_share; + long m_trs; + long m_drs; + long m_lrs; + long m_dt; + #ifdef HAVE_TASKSTATS + unsigned long long io_rchar; + unsigned long long io_wchar; + unsigned long long io_syscr; + unsigned long long io_syscw; + unsigned long long io_read_bytes; + unsigned long long io_write_bytes; + unsigned long long io_cancelled_write_bytes; + unsigned long long io_rate_read_time; + unsigned long long io_rate_write_time; + double io_rate_read_bps; + double io_rate_write_bps; + #endif + #ifdef HAVE_OPENVZ + unsigned int ctid; + unsigned int vpid; + #endif + #ifdef HAVE_VSERVER + unsigned int vxid; + #endif + #ifdef HAVE_CGROUP + char* cgroup; + #endif + #ifdef HAVE_OOM + unsigned int oom; + #endif } LinuxProcess; -#define Process_delete LinuxProcess_delete +#ifndef Process_isKernelThread +#define Process_isKernelThread(_process) (_process->pgrp == 0) +#endif + +#ifndef Process_isUserlandThread +#define Process_isUserlandThread(_process) (_process->pid != _process->tgid) +#endif extern ProcessFieldData Process_fields[]; @@ -59,7 +141,7 @@ void Process_setupColumnWidths(); LinuxProcess* LinuxProcess_new(Settings* settings); -void LinuxProcess_delete(Object* cast); +void Process_delete(Object* cast); /* [1] Note that before kernel 2.6.26 a process that has not asked for @@ -79,4 +161,7 @@ void Process_writeField(Process* this, RichString* str, ProcessField field); long Process_compare(const void* v1, const void* v2); +bool Process_isThread(Process* this); + + #endif -- cgit v1.2.3