diff --git a/sysdeps/linux/ChangeLog b/sysdeps/linux/ChangeLog index 1809cba0..f859891c 100644 --- a/sysdeps/linux/ChangeLog +++ b/sysdeps/linux/ChangeLog @@ -1,3 +1,9 @@ +2004-07-15 Benoît Dejean + + * procstate.c: (glibtop_get_proc_state_s): Wake, we're libgtop2.7.x, + lets get rid of old buf->state format. Now using bitfield instead + letters. + 2004-07-07 Benoît Dejean * procargs.c: (glibtop_get_proc_args_s): Fixed. error is now correctly diff --git a/sysdeps/linux/procstate.c b/sysdeps/linux/procstate.c index d348ebc7..cc171c0b 100644 --- a/sysdeps/linux/procstate.c +++ b/sysdeps/linux/procstate.c @@ -80,7 +80,37 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid) return; p = strrchr (buffer, ')'); *p = '\0'; - buf->state = p [2]; + + switch(p[2]) + { + case 'R': + buf->state = GLIBTOP_PROCESS_RUNNING; + break; + + case 'Z': + buf->state = GLIBTOP_PROCESS_ZOMBIE; + break; + + case 'S': + buf->state = GLIBTOP_PROCESS_INTERRUPTIBLE; + break; + + case 'T': + buf->state = GLIBTOP_PROCESS_STOPPED; + break; + + case 'D': + buf->state = GLIBTOP_PROCESS_UNINTERRUPTIBLE; + break; + + case 'W': + buf->state = GLIBTOP_PROCESS_SWAPPING; + break; + + case 'X': + buf->state = GLIBTOP_PROCESS_DEAD; + break; + } p = skip_token (buffer); p++; /* pid */ if (G_UNLIKELY(*p++ != '('))