Some more work here.

This commit is contained in:
Martin Baulig
1999-03-23 18:42:32 +00:00
parent 1f93237ee3
commit aa5c5c4553
5 changed files with 35 additions and 5 deletions

View File

@@ -44,6 +44,9 @@ int glibtop_get_proc_data_proclist_s (glibtop *server,
int glibtop_get_proc_data_proc_state_s (glibtop *server,
libgtop_proc_state_t *proc_state,
pid_t pid);
int glibtop_get_proc_data_proc_kernel_s (glibtop *server,
libgtop_proc_kernel_t *proc_kernel,
pid_t pid);
END_LIBGTOP_DECLS

View File

@@ -98,3 +98,19 @@ glibtop_get_proc_data_proc_state_s (glibtop *server,
return 0;
}
int
glibtop_get_proc_data_proc_kernel_s (glibtop *server,
libgtop_proc_kernel_t *proc_kernel,
pid_t pid)
{
int name [3] = { CTL_LIBGTOP, LIBGTOP_PROC_KERNEL, pid };
size_t size = sizeof (libgtop_proc_kernel_t);
if (sysctl (name, 3, proc_kernel, &size, NULL, 0)) {
glibtop_warn_io_r (server, "sysctl (libgtop/proc_kernel)");
return -1;
}
return 0;
}

View File

@@ -34,12 +34,16 @@ static const unsigned long _glibtop_sysdeps_proc_kernel =
(1 << GLIBTOP_PROC_KERNEL_KSTK_ESP) +
(1 << GLIBTOP_PROC_KERNEL_KSTK_EIP);
static const unsigned long _glibtop_sysdeps_proc_kernel_kernel =
(1 << GLIBTOP_PROC_KERNEL_NWCHAN);
/* Init function. */
void
glibtop_init_proc_kernel_s (glibtop *server)
{
server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel;
server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel |
_glibtop_sysdeps_proc_kernel_kernel;
}
/* Provides detailed information about a process. */
@@ -49,6 +53,7 @@ glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf,
pid_t pid)
{
libgtop_proc_state_t proc_state;
libgtop_proc_kernel_t proc_kernel;
memset (buf, 0, sizeof (glibtop_proc_kernel));
@@ -63,4 +68,10 @@ glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf,
buf->kstk_eip = proc_state.keip;
buf->flags = _glibtop_sysdeps_proc_kernel;
if (glibtop_get_proc_data_proc_kernel_s (server, &proc_kernel, pid))
return;
buf->nwchan = proc_kernel.wchan;
buf->flags |= _glibtop_sysdeps_proc_kernel_kernel;
}

View File

@@ -31,7 +31,7 @@ static const unsigned long _glibtop_sysdeps_proc_mem = 0;
void
glibtop_init_proc_mem_s (glibtop *server)
{
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem;
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem;
}
/* Provides detailed information about a process. */
@@ -40,5 +40,5 @@ void
glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf,
pid_t pid)
{
memset (buf, 0, sizeof (glibtop_proc_mem));
memset (buf, 0, sizeof (glibtop_proc_mem));
}

View File

@@ -31,7 +31,7 @@ static const unsigned long _glibtop_sysdeps_proc_segment = 0;
void
glibtop_init_proc_segment_s (glibtop *server)
{
server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
}
/* Provides detailed information about a process. */
@@ -40,5 +40,5 @@ void
glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf,
pid_t pid)
{
memset (buf, 0, sizeof (glibtop_proc_segment));
memset (buf, 0, sizeof (glibtop_proc_segment));
}