Added implementation for the newly added features.

This commit is contained in:
Martin Baulig
1999-03-31 17:40:36 +00:00
parent 84407de2aa
commit 868e1677e3
3 changed files with 48 additions and 5 deletions

View File

@@ -28,7 +28,10 @@
static const unsigned long _glibtop_sysdeps_proc_state = static const unsigned long _glibtop_sysdeps_proc_state =
(1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID) + (1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID) +
(1 << GLIBTOP_PROC_STATE_CMD); (1 << GLIBTOP_PROC_STATE_RUID) + (1 << GLIBTOP_PROC_STATE_RGID) +
(1 << GLIBTOP_PROC_STATE_CMD) + (1 << GLIBTOP_PROC_STATE_STATE) +
(1 << GLIBTOP_PROC_STATE_HAS_CPU) + (1 << GLIBTOP_PROC_STATE_PROCESSOR) +
(1 << GLIBTOP_PROC_STATE_LAST_PROCESSOR);
/* Init function. */ /* Init function. */
@@ -52,8 +55,28 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf,
return; return;
memcpy (buf->cmd, proc_state.comm, sizeof (buf->cmd)); memcpy (buf->cmd, proc_state.comm, sizeof (buf->cmd));
buf->uid = proc_state.uid;
buf->gid = proc_state.gid; if (proc_state.state & LIBGTOP_TASK_RUNNING)
buf->state |= GLIBTOP_PROCESS_RUNNING;
if (proc_state.state & LIBGTOP_TASK_INTERRUPTIBLE)
buf->state |= GLIBTOP_PROCESS_INTERRUPTIBLE;
if (proc_state.state & LIBGTOP_TASK_UNINTERRUPTIBLE)
buf->state |= GLIBTOP_PROCESS_UNINTERRUPTIBLE;
if (proc_state.state & LIBGTOP_TASK_ZOMBIE)
buf->state |= GLIBTOP_PROCESS_ZOMBIE;
if (proc_state.state & LIBGTOP_TASK_STOPPED)
buf->state |= GLIBTOP_PROCESS_STOPPED;
if (proc_state.state & LIBGTOP_TASK_SWAPPING)
buf->state |= GLIBTOP_PROCESS_SWAPPING;
buf->uid = proc_state.euid;
buf->gid = proc_state.egid;
buf->ruid = proc_state.uid;
buf->rgid = proc_state.gid;
buf->has_cpu = proc_state.has_cpu;
buf->processor = proc_state.processor;
buf->last_processor = proc_state.last_processor;
buf->flags = _glibtop_sysdeps_proc_state; buf->flags = _glibtop_sysdeps_proc_state;
} }

View File

@@ -29,10 +29,17 @@
static const unsigned long _glibtop_sysdeps_proc_uid = static const unsigned long _glibtop_sysdeps_proc_uid =
(1 << GLIBTOP_PROC_UID_UID) + (1 << GLIBTOP_PROC_UID_EUID) + (1 << GLIBTOP_PROC_UID_UID) + (1 << GLIBTOP_PROC_UID_EUID) +
(1 << GLIBTOP_PROC_UID_GID) + (1 << GLIBTOP_PROC_UID_EGID) + (1 << GLIBTOP_PROC_UID_GID) + (1 << GLIBTOP_PROC_UID_EGID) +
(1 << GLIBTOP_PROC_UID_SUID) + (1 << GLIBTOP_PROC_UID_SGID) +
(1 << GLIBTOP_PROC_UID_FSUID) + (1 << GLIBTOP_PROC_UID_FSGID) +
(1 << GLIBTOP_PROC_UID_PID) + (1 << GLIBTOP_PROC_UID_PPID) + (1 << GLIBTOP_PROC_UID_PID) + (1 << GLIBTOP_PROC_UID_PPID) +
(1 << GLIBTOP_PROC_UID_PGRP) + (1 << GLIBTOP_PROC_UID_SESSION) + (1 << GLIBTOP_PROC_UID_PGRP) + (1 << GLIBTOP_PROC_UID_SESSION) +
(1 << GLIBTOP_PROC_UID_TTY) + (1 << GLIBTOP_PROC_UID_TPGID) + (1 << GLIBTOP_PROC_UID_TTY) + (1 << GLIBTOP_PROC_UID_TPGID) +
(1 << GLIBTOP_PROC_UID_PRIORITY) + (1 << GLIBTOP_PROC_UID_NICE); (1 << GLIBTOP_PROC_UID_PRIORITY) + (1 << GLIBTOP_PROC_UID_NICE) +
(1 << GLIBTOP_PROC_UID_NGROUPS) + (1 << GLIBTOP_PROC_UID_GROUPS);
#ifndef min
#define min(a,b) ((a < b) ? a : b)
#endif
/* Init function. */ /* Init function. */
@@ -50,6 +57,7 @@ glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf,
{ {
libgtop_proc_state_t proc_state; libgtop_proc_state_t proc_state;
long priority, nice; long priority, nice;
int i;
memset (buf, 0, sizeof (glibtop_proc_uid)); memset (buf, 0, sizeof (glibtop_proc_uid));
@@ -61,6 +69,11 @@ glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf,
buf->gid = proc_state.gid; buf->gid = proc_state.gid;
buf->egid = proc_state.egid; buf->egid = proc_state.egid;
buf->suid = proc_state.suid;
buf->sgid = proc_state.sgid;
buf->fsuid = proc_state.fsuid;
buf->fsgid = proc_state.fsgid;
buf->pid = proc_state.pid; buf->pid = proc_state.pid;
buf->ppid = proc_state.ppid; buf->ppid = proc_state.ppid;
buf->pgrp = proc_state.pgrp; buf->pgrp = proc_state.pgrp;
@@ -79,5 +92,9 @@ glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf,
buf->priority = priority; buf->priority = priority;
buf->nice = nice; buf->nice = nice;
buf->ngroups = min (proc_state.ngroups, GLIBTOP_MAX_GROUPS);
for (i = 0; i < buf->ngroups; i++)
buf->groups [i] = proc_state.groups [i];
buf->flags = _glibtop_sysdeps_proc_uid; buf->flags = _glibtop_sysdeps_proc_uid;
} }

View File

@@ -27,7 +27,8 @@
#include <glibtop_private.h> #include <glibtop_private.h>
static unsigned long _glibtop_sysdeps_uptime = static unsigned long _glibtop_sysdeps_uptime =
(1 << GLIBTOP_UPTIME_UPTIME) + (1 << GLIBTOP_UPTIME_IDLETIME); (1 << GLIBTOP_UPTIME_UPTIME) + (1 << GLIBTOP_UPTIME_IDLETIME) +
(1 << GLIBTOP_UPTIME_BOOT_TIME);
/* Init function. */ /* Init function. */
@@ -55,5 +56,7 @@ glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf)
buf->uptime = (double) total / (double) stat.frequency; buf->uptime = (double) total / (double) stat.frequency;
buf->idletime = (double) stat.cpu.idle / (double) stat.frequency; buf->idletime = (double) stat.cpu.idle / (double) stat.frequency;
buf->boot_time = stat.boot_time;
buf->flags = _glibtop_sysdeps_uptime; buf->flags = _glibtop_sysdeps_uptime;
} }