Some more work here.
This commit is contained in:
@@ -44,6 +44,9 @@ int glibtop_get_proc_data_proclist_s (glibtop *server,
|
|||||||
int glibtop_get_proc_data_proc_state_s (glibtop *server,
|
int glibtop_get_proc_data_proc_state_s (glibtop *server,
|
||||||
libgtop_proc_state_t *proc_state,
|
libgtop_proc_state_t *proc_state,
|
||||||
pid_t pid);
|
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
|
END_LIBGTOP_DECLS
|
||||||
|
@@ -98,3 +98,19 @@ glibtop_get_proc_data_proc_state_s (glibtop *server,
|
|||||||
|
|
||||||
return 0;
|
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;
|
||||||
|
}
|
||||||
|
@@ -34,12 +34,16 @@ static const unsigned long _glibtop_sysdeps_proc_kernel =
|
|||||||
(1 << GLIBTOP_PROC_KERNEL_KSTK_ESP) +
|
(1 << GLIBTOP_PROC_KERNEL_KSTK_ESP) +
|
||||||
(1 << GLIBTOP_PROC_KERNEL_KSTK_EIP);
|
(1 << GLIBTOP_PROC_KERNEL_KSTK_EIP);
|
||||||
|
|
||||||
|
static const unsigned long _glibtop_sysdeps_proc_kernel_kernel =
|
||||||
|
(1 << GLIBTOP_PROC_KERNEL_NWCHAN);
|
||||||
|
|
||||||
/* Init function. */
|
/* Init function. */
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_init_proc_kernel_s (glibtop *server)
|
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. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -49,6 +53,7 @@ glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf,
|
|||||||
pid_t pid)
|
pid_t pid)
|
||||||
{
|
{
|
||||||
libgtop_proc_state_t proc_state;
|
libgtop_proc_state_t proc_state;
|
||||||
|
libgtop_proc_kernel_t proc_kernel;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_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->kstk_eip = proc_state.keip;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_kernel;
|
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user