Reflect latest `proc_state.state' changes.
This commit is contained in:
@@ -32,8 +32,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const unsigned long _glibtop_sysdeps_proc_state =
|
static const unsigned long _glibtop_sysdeps_proc_state =
|
||||||
(1 << GLIBTOP_PROC_STATE_CMD) + (1 << GLIBTOP_PROC_STATE_STATE) +
|
(1 << GLIBTOP_PROC_STATE_CMD) + (1 << GLIBTOP_PROC_STATE_UID) +
|
||||||
(1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID);
|
(1 << GLIBTOP_PROC_STATE_GID);
|
||||||
|
|
||||||
/* Init function. */
|
/* Init function. */
|
||||||
|
|
||||||
@@ -73,27 +73,28 @@ glibtop_get_proc_state_p (glibtop *server,
|
|||||||
buf->uid = pinfo [0].kp_eproc.e_pcred.p_svuid;
|
buf->uid = pinfo [0].kp_eproc.e_pcred.p_svuid;
|
||||||
buf->gid = pinfo [0].kp_eproc.e_pcred.p_svgid;
|
buf->gid = pinfo [0].kp_eproc.e_pcred.p_svgid;
|
||||||
|
|
||||||
switch (pinfo [0].kp_proc.p_stat) {
|
|
||||||
case SIDL:
|
|
||||||
buf->state = 'I';
|
|
||||||
break;
|
|
||||||
case SRUN:
|
|
||||||
buf->state = 'R';
|
|
||||||
break;
|
|
||||||
case SSLEEP:
|
|
||||||
buf->state = 'S';
|
|
||||||
break;
|
|
||||||
case SSTOP:
|
|
||||||
buf->state = 'T';
|
|
||||||
break;
|
|
||||||
case SZOMB:
|
|
||||||
buf->state = 'Z';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
buf->state = '?';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the flags for the data we're about to return*/
|
/* Set the flags for the data we're about to return*/
|
||||||
buf->flags = _glibtop_sysdeps_proc_state;
|
buf->flags = _glibtop_sysdeps_proc_state;
|
||||||
|
|
||||||
|
switch (pinfo [0].kp_proc.p_stat) {
|
||||||
|
case SIDL:
|
||||||
|
buf->state = 0;
|
||||||
|
break;
|
||||||
|
case SRUN:
|
||||||
|
buf->state = GLIBTOP_PROCESS_RUNNING;
|
||||||
|
break;
|
||||||
|
case SSLEEP:
|
||||||
|
buf->state = GLIBTOP_PROCESS_INTERRUPTIBLE;
|
||||||
|
break;
|
||||||
|
case SSTOP:
|
||||||
|
buf->state = GLIBTOP_PROCESS_STOPPED;
|
||||||
|
break;
|
||||||
|
case SZOMB:
|
||||||
|
buf->state = GLIBTOP_PROCESS_ZOMBIE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf->flags |= (1 << GLIBTOP_PROC_STATE_STATE);
|
||||||
}
|
}
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
static const unsigned long _glibtop_sysdeps_proc_state =
|
static const unsigned long _glibtop_sysdeps_proc_state =
|
||||||
(1 << GLIBTOP_PROC_STATE_CMD) + (1 << GLIBTOP_PROC_STATE_STATE);
|
(1 << GLIBTOP_PROC_STATE_CMD);
|
||||||
|
|
||||||
static const unsigned long _glibtop_sysdeps_proc_state_uid =
|
static const unsigned long _glibtop_sysdeps_proc_state_uid =
|
||||||
(1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID);
|
(1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID);
|
||||||
@@ -47,7 +47,7 @@ glibtop_init_proc_state_s (glibtop *server)
|
|||||||
void
|
void
|
||||||
glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid)
|
glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid)
|
||||||
{
|
{
|
||||||
char buffer [BUFSIZ], *p;
|
char buffer [BUFSIZ], state, *p;
|
||||||
struct stat statb;
|
struct stat statb;
|
||||||
|
|
||||||
glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_STATE, 0);
|
glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_STATE, 0);
|
||||||
@@ -78,7 +78,7 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
p = strrchr (buffer, ')'); *p = '\0';
|
p = strrchr (buffer, ')'); *p = '\0';
|
||||||
buf->state = p [2];
|
state = p [2];
|
||||||
|
|
||||||
p = skip_token (buffer); p++; /* pid */
|
p = skip_token (buffer); p++; /* pid */
|
||||||
if (*p++ != '(')
|
if (*p++ != '(')
|
||||||
@@ -88,4 +88,29 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid)
|
|||||||
buf->cmd [sizeof (buf->cmd)-1] = 0;
|
buf->cmd [sizeof (buf->cmd)-1] = 0;
|
||||||
|
|
||||||
buf->flags |= _glibtop_sysdeps_proc_state;
|
buf->flags |= _glibtop_sysdeps_proc_state;
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
|
case 'R':
|
||||||
|
buf->state = GLIBTOP_PROCESS_RUNNING;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
buf->state = GLIBTOP_PROCESS_INTERRUPTIBLE;
|
||||||
|
break;
|
||||||
|
case 'D':
|
||||||
|
buf->state = GLIBTOP_PROCESS_UNINTERRUPTIBLE;
|
||||||
|
break;
|
||||||
|
case 'Z':
|
||||||
|
buf->state = GLIBTOP_PROCESS_ZOMBIE;
|
||||||
|
break;
|
||||||
|
case 'T':
|
||||||
|
buf->state = GLIBTOP_PROCESS_STOPPED;
|
||||||
|
break;
|
||||||
|
case 'W':
|
||||||
|
buf->state = GLIBTOP_PROCESS_SWAPPING;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf->flags |= (1 << GLIBTOP_PROC_STATE_STATE);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user