summaryrefslogtreecommitdiffstats
path: root/linux/LinuxProcess.h
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2015-03-16 01:43:04 -0300
committerHisham Muhammad <hisham@gobolinux.org>2015-03-16 01:43:04 -0300
commitbe1700cf9479f4199bb3810db831da943691b8f7 (patch)
treea4b6689f58ea8abe6db455aa8976bd6cc5377fd8 /linux/LinuxProcess.h
parentbc928d7f47f787514d2eb58d4f1083e0160ad167 (diff)
Isolate portable and Linux-specific process fields.
Diffstat (limited to 'linux/LinuxProcess.h')
-rw-r--r--linux/LinuxProcess.h111
1 files changed, 98 insertions, 13 deletions
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

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