diff options
-rw-r--r-- | include/sysinfo.h | 2 | ||||
-rw-r--r-- | src/libs/zbxsysinfo/openbsd/proc.c | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/sysinfo.h b/include/sysinfo.h index 8943a3ac31a..1b481ba91d2 100644 --- a/include/sysinfo.h +++ b/include/sysinfo.h @@ -160,6 +160,8 @@ extern int CONFIG_UNSAFE_USER_PARAMETERS; #define ZBX_PROC_STAT_RUN 1 #define ZBX_PROC_STAT_SLEEP 2 #define ZBX_PROC_STAT_ZOMB 3 +#define ZBX_PROC_STAT_IOWAIT 4 +#define ZBX_PROC_STAT_TRACE 5 #define ZBX_DO_SUM 0 #define ZBX_DO_MAX 1 diff --git a/src/libs/zbxsysinfo/openbsd/proc.c b/src/libs/zbxsysinfo/openbsd/proc.c index d92dd1a6ae0..feed4404620 100644 --- a/src/libs/zbxsysinfo/openbsd/proc.c +++ b/src/libs/zbxsysinfo/openbsd/proc.c @@ -38,6 +38,7 @@ #ifdef KERN_PROC2 # define ZBX_P_COMM p_comm +# define ZBX_P_FLAG p_flag # define ZBX_P_PID p_pid # define ZBX_P_STAT p_stat # define ZBX_P_VM_TSIZE p_vm_tsize @@ -45,6 +46,7 @@ # define ZBX_P_VM_SSIZE p_vm_ssize #else # define ZBX_P_COMM kp_proc.p_comm +# define ZBX_P_FLAG kp_proc.p_flag # define ZBX_P_PID kp_proc.p_pid # define ZBX_P_STAT kp_proc.p_stat # define ZBX_P_VM_TSIZE kp_eproc.e_vm.vm_tsize @@ -340,6 +342,10 @@ int PROC_NUM(AGENT_REQUEST *request, AGENT_RESULT *result) zbx_proc_stat = ZBX_PROC_STAT_SLEEP; else if (0 == strcmp(param, "zomb")) zbx_proc_stat = ZBX_PROC_STAT_ZOMB; + else if (0 == strcmp(param, "disk")) + zbx_proc_stat = ZBX_PROC_STAT_IOWAIT; + else if (0 == strcmp(param, "trace")) + zbx_proc_stat = ZBX_PROC_STAT_TRACE; else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid third parameter.")); @@ -435,6 +441,14 @@ int PROC_NUM(AGENT_REQUEST *request, AGENT_RESULT *result) if (SZOMB == proc[i].ZBX_P_STAT || SDEAD == proc[i].ZBX_P_STAT) stat_ok = 1; break; + case ZBX_PROC_STAT_IOWAIT: + if (SSLEEP == proc[i].ZBX_P_STAT && !(proc[i].ZBX_P_FLAG & P_SINTR)) + stat_ok = 1; + break; + case ZBX_PROC_STAT_TRACE: + if (SSTOP == proc[i].ZBX_P_STAT) + stat_ok = 1; + break; } } else |