Return 0 on success and -1 on error.
This commit is contained in:
@@ -53,11 +53,13 @@ glibtop_init_cpu_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (cpu)");
|
glibtop_warn_io_r (server, "kvm_nlist (cpu)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set this only if kvm_nlist () succeeded. */
|
/* Set this only if kvm_nlist () succeeded. */
|
||||||
server->sysdeps.cpu = _glibtop_sysdeps_cpu;
|
server->sysdeps.cpu = _glibtop_sysdeps_cpu;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about cpu usage. */
|
/* Provides information about cpu usage. */
|
||||||
@@ -76,19 +78,19 @@ glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf)
|
|||||||
|
|
||||||
/* If this fails, the nlist may not be valid. */
|
/* If this fails, the nlist may not be valid. */
|
||||||
if (server->sysdeps.cpu == 0)
|
if (server->sysdeps.cpu == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||||
&cpts, sizeof (cpts)) != sizeof (cpts)) {
|
&cpts, sizeof (cpts)) != sizeof (cpts)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (cp_time)");
|
glibtop_warn_io_r (server, "kvm_read (cp_time)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the clockrate data */
|
/* Get the clockrate data */
|
||||||
length = sizeof (struct clockinfo);
|
length = sizeof (struct clockinfo);
|
||||||
if (sysctl (mib, mib_length, &ci, &length, NULL, 0)) {
|
if (sysctl (mib, mib_length, &ci, &length, NULL, 0)) {
|
||||||
glibtop_warn_io_r (server, "sysctl");
|
glibtop_warn_io_r (server, "sysctl");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set user time */
|
/* set user time */
|
||||||
@@ -114,4 +116,6 @@ glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf)
|
|||||||
|
|
||||||
/* Set the flags last. */
|
/* Set the flags last. */
|
||||||
buf->flags = _glibtop_sysdeps_cpu;
|
buf->flags = _glibtop_sysdeps_cpu;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -36,6 +36,8 @@ int
|
|||||||
glibtop_init_loadavg_p (glibtop *server)
|
glibtop_init_loadavg_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.loadavg = _glibtop_sysdeps_loadavg;
|
server->sysdeps.loadavg = _glibtop_sysdeps_loadavg;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides load averange. */
|
/* Provides load averange. */
|
||||||
@@ -57,4 +59,6 @@ glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf)
|
|||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
buf->loadavg [i] = ldavg [i];
|
buf->loadavg [i] = ldavg [i];
|
||||||
} /* end for */
|
} /* end for */
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -94,7 +94,7 @@ glibtop_init_mem_p (glibtop *server)
|
|||||||
|
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (mem)");
|
glibtop_warn_io_r (server, "kvm_nlist (mem)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get the page size with "getpagesize" and calculate pageshift
|
/* get the page size with "getpagesize" and calculate pageshift
|
||||||
@@ -110,6 +110,8 @@ glibtop_init_mem_p (glibtop *server)
|
|||||||
pageshift -= LOG1024;
|
pageshift -= LOG1024;
|
||||||
|
|
||||||
server->sysdeps.mem = _glibtop_sysdeps_mem;
|
server->sysdeps.mem = _glibtop_sysdeps_mem;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -133,7 +135,7 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
|
|||||||
memset (buf, 0, sizeof (glibtop_mem));
|
memset (buf, 0, sizeof (glibtop_mem));
|
||||||
|
|
||||||
if (server->sysdeps.mem == 0)
|
if (server->sysdeps.mem == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
/* [FIXME: On FreeBSD 2.2.6, sysctl () returns an incorrect
|
/* [FIXME: On FreeBSD 2.2.6, sysctl () returns an incorrect
|
||||||
* value for `vmt.vm'. We use some code from Unix top
|
* value for `vmt.vm'. We use some code from Unix top
|
||||||
@@ -143,28 +145,28 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
|
|||||||
length_vmt = sizeof (vmt);
|
length_vmt = sizeof (vmt);
|
||||||
if (sysctl (mib, 2, &vmt, &length_vmt, NULL, 0)) {
|
if (sysctl (mib, 2, &vmt, &length_vmt, NULL, 0)) {
|
||||||
glibtop_warn_io_r (server, "sysctl (vmt)");
|
glibtop_warn_io_r (server, "sysctl (vmt)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
|
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
|
||||||
length_uvmexp = sizeof (uvmexp);
|
length_uvmexp = sizeof (uvmexp);
|
||||||
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
|
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
|
||||||
glibtop_warn_io_r (server, "sysctl (uvmexp)");
|
glibtop_warn_io_r (server, "sysctl (uvmexp)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* Get the data from kvm_* */
|
/* Get the data from kvm_* */
|
||||||
if (kvm_read (server->machine.kd, nlst[1].n_value,
|
if (kvm_read (server->machine.kd, nlst[1].n_value,
|
||||||
&vmm, sizeof (vmm)) != sizeof (vmm)) {
|
&vmm, sizeof (vmm)) != sizeof (vmm)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (cnt)");
|
glibtop_warn_io_r (server, "kvm_read (cnt)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (kvm_read (server->machine.kd, nlst[0].n_value,
|
if (kvm_read (server->machine.kd, nlst[0].n_value,
|
||||||
&bufspace, sizeof (bufspace)) != sizeof (bufspace)) {
|
&bufspace, sizeof (bufspace)) != sizeof (bufspace)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (bufspace)");
|
glibtop_warn_io_r (server, "kvm_read (bufspace)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* convert memory stats to Kbytes */
|
/* convert memory stats to Kbytes */
|
||||||
@@ -219,4 +221,6 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
|
|||||||
|
|
||||||
/* Set the values to return */
|
/* Set the values to return */
|
||||||
buf->flags = _glibtop_sysdeps_mem;
|
buf->flags = _glibtop_sysdeps_mem;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -32,7 +32,9 @@
|
|||||||
|
|
||||||
int
|
int
|
||||||
glibtop_init_msg_limits_p (glibtop *server)
|
glibtop_init_msg_limits_p (glibtop *server)
|
||||||
{ }
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
|
glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
|
||||||
@@ -40,6 +42,8 @@ glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
|
|||||||
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_MSG_LIMITS), 0);
|
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_MSG_LIMITS), 0);
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_msg_limits));
|
memset (buf, 0, sizeof (glibtop_msg_limits));
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -78,16 +82,18 @@ glibtop_init_msg_limits_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (msg_limits)");
|
glibtop_warn_io_r (server, "kvm_nlist (msg_limits)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||||
&_msginfo, sizeof (_msginfo)) != sizeof (_msginfo)) {
|
&_msginfo, sizeof (_msginfo)) != sizeof (_msginfo)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (msginfo)");
|
glibtop_warn_io_r (server, "kvm_read (msginfo)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
server->sysdeps.msg_limits = _glibtop_sysdeps_msg_limits;
|
server->sysdeps.msg_limits = _glibtop_sysdeps_msg_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about sysv ipc limits. */
|
/* Provides information about sysv ipc limits. */
|
||||||
@@ -100,7 +106,7 @@ glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
|
|||||||
memset (buf, 0, sizeof (glibtop_msg_limits));
|
memset (buf, 0, sizeof (glibtop_msg_limits));
|
||||||
|
|
||||||
if (server->sysdeps.msg_limits == 0)
|
if (server->sysdeps.msg_limits == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
buf->msgmax = _msginfo.msgmax;
|
buf->msgmax = _msginfo.msgmax;
|
||||||
buf->msgmni = _msginfo.msgmni;
|
buf->msgmni = _msginfo.msgmni;
|
||||||
@@ -109,6 +115,8 @@ glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
|
|||||||
buf->msgssz = _msginfo.msgtql;
|
buf->msgssz = _msginfo.msgtql;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_msg_limits;
|
buf->flags = _glibtop_sysdeps_msg_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* either a newer BSDI or no BSDI at all. */
|
#endif /* either a newer BSDI or no BSDI at all. */
|
||||||
|
@@ -69,6 +69,8 @@ glibtop_init_netload_p (glibtop *server)
|
|||||||
|
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0)
|
if (kvm_nlist (server->machine.kd, nlst) != 0)
|
||||||
glibtop_error_io_r (server, "kvm_nlist");
|
glibtop_error_io_r (server, "kvm_nlist");
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides Network statistics. */
|
/* Provides Network statistics. */
|
||||||
@@ -191,7 +193,7 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
|||||||
|
|
||||||
buf->collisions = ifnet.if_collisions;
|
buf->collisions = ifnet.if_collisions;
|
||||||
buf->flags = _glibtop_sysdeps_netload;
|
buf->flags = _glibtop_sysdeps_netload;
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__FreeBSD__) && (__FreeBSD_version >= 300000)
|
#if defined(__FreeBSD__) && (__FreeBSD_version >= 300000)
|
||||||
@@ -211,4 +213,6 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
|||||||
ifnetaddr = (u_long) ifnet.if_list.tqe_next;
|
ifnetaddr = (u_long) ifnet.if_list.tqe_next;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -84,6 +84,8 @@ glibtop_init_ppp_p (glibtop *server)
|
|||||||
|
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0)
|
if (kvm_nlist (server->machine.kd, nlst) != 0)
|
||||||
glibtop_error_io_r (server, "kvm_nlist");
|
glibtop_error_io_r (server, "kvm_nlist");
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about ppp usage. */
|
/* Provides information about ppp usage. */
|
||||||
@@ -141,4 +143,6 @@ glibtop_get_ppp_p (glibtop *server, glibtop_ppp *buf, unsigned short device)
|
|||||||
buf->flags |= _glibtop_sysdeps_ppp_acct;
|
buf->flags |= _glibtop_sysdeps_ppp_acct;
|
||||||
#endif
|
#endif
|
||||||
#endif /* HAVE_I4B */
|
#endif /* HAVE_I4B */
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -41,6 +41,8 @@ int
|
|||||||
glibtop_init_proc_args_p (glibtop *server)
|
glibtop_init_proc_args_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_args = _glibtop_sysdeps_proc_args;
|
server->sysdeps.proc_args = _glibtop_sysdeps_proc_args;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
|
@@ -70,6 +70,8 @@ glibtop_init_proc_kernel_p (glibtop *server)
|
|||||||
server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel_pstats |
|
server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel_pstats |
|
||||||
_glibtop_sysdeps_proc_kernel_pcb |
|
_glibtop_sysdeps_proc_kernel_pcb |
|
||||||
_glibtop_sysdeps_proc_kernel_wchan;
|
_glibtop_sysdeps_proc_kernel_wchan;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -91,10 +93,10 @@ glibtop_get_proc_kernel_p (glibtop *server,
|
|||||||
memset (buf, 0, sizeof (glibtop_proc_kernel));
|
memset (buf, 0, sizeof (glibtop_proc_kernel));
|
||||||
|
|
||||||
if (server->sysdeps.proc_time == 0)
|
if (server->sysdeps.proc_time == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
/* It does not work for the swapper task. */
|
/* It does not work for the swapper task. */
|
||||||
if (pid == 0) return;
|
if (pid == 0) return -1;
|
||||||
|
|
||||||
/* Get the process information */
|
/* Get the process information */
|
||||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||||
@@ -125,7 +127,7 @@ glibtop_get_proc_kernel_p (glibtop *server,
|
|||||||
* `kvm_uread' work. */
|
* `kvm_uread' work. */
|
||||||
|
|
||||||
sprintf (filename, "/proc/%d/mem", (int) pid);
|
sprintf (filename, "/proc/%d/mem", (int) pid);
|
||||||
if (stat (filename, &statb)) return;
|
if (stat (filename, &statb)) return -1;
|
||||||
|
|
||||||
glibtop_suid_enter (server);
|
glibtop_suid_enter (server);
|
||||||
|
|
||||||
@@ -181,4 +183,6 @@ glibtop_get_proc_kernel_p (glibtop *server,
|
|||||||
/* Taken from `wchan ()' in `/usr/src/bin/ps/print.c'. */
|
/* Taken from `wchan ()' in `/usr/src/bin/ps/print.c'. */
|
||||||
|
|
||||||
glibtop_suid_leave (server);
|
glibtop_suid_leave (server);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -56,6 +56,8 @@ int
|
|||||||
glibtop_init_proclist_p (glibtop *server)
|
glibtop_init_proclist_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proclist = _glibtop_sysdeps_proclist;
|
server->sysdeps.proclist = _glibtop_sysdeps_proclist;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned *
|
unsigned *
|
||||||
|
@@ -71,6 +71,8 @@ int
|
|||||||
glibtop_init_proc_map_p (glibtop *server)
|
glibtop_init_proc_map_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_map = _glibtop_sysdeps_proc_map;
|
server->sysdeps.proc_map = _glibtop_sysdeps_proc_map;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
|
@@ -100,6 +100,8 @@ glibtop_init_proc_mem_p (glibtop *server)
|
|||||||
|
|
||||||
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem |
|
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem |
|
||||||
_glibtop_sysdeps_proc_mem_share;
|
_glibtop_sysdeps_proc_mem_share;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -125,23 +127,23 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
memset (buf, 0, sizeof (glibtop_proc_mem));
|
memset (buf, 0, sizeof (glibtop_proc_mem));
|
||||||
|
|
||||||
if (server->sysdeps.proc_mem == 0)
|
if (server->sysdeps.proc_mem == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
/* It does not work for the swapper task. */
|
/* It does not work for the swapper task. */
|
||||||
if (pid == 0) return;
|
if (pid == 0) return -1;
|
||||||
|
|
||||||
/* Get the process data */
|
/* Get the process data */
|
||||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||||
if ((pinfo == NULL) || (count < 1)) {
|
if ((pinfo == NULL) || (count < 1)) {
|
||||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kvm_read (server->machine.kd,
|
if (kvm_read (server->machine.kd,
|
||||||
(unsigned long) pinfo [0].kp_proc.p_limit,
|
(unsigned long) pinfo [0].kp_proc.p_limit,
|
||||||
(char *) &plimit, sizeof (plimit)) != sizeof (plimit)) {
|
(char *) &plimit, sizeof (plimit)) != sizeof (plimit)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (plimit)");
|
glibtop_warn_io_r (server, "kvm_read (plimit)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf->rss_rlim = (u_int64_t)
|
buf->rss_rlim = (u_int64_t)
|
||||||
@@ -161,7 +163,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
(unsigned long) pinfo [0].kp_proc.p_vmspace,
|
(unsigned long) pinfo [0].kp_proc.p_vmspace,
|
||||||
(char *) &vmspace, sizeof (vmspace)) != sizeof (vmspace)) {
|
(char *) &vmspace, sizeof (vmspace)) != sizeof (vmspace)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (vmspace)");
|
glibtop_warn_io_r (server, "kvm_read (vmspace)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
first = vmspace.vm_map.header.next;
|
first = vmspace.vm_map.header.next;
|
||||||
@@ -170,7 +172,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
(unsigned long) vmspace.vm_map.header.next,
|
(unsigned long) vmspace.vm_map.header.next,
|
||||||
(char *) &entry, sizeof (entry)) != sizeof (entry)) {
|
(char *) &entry, sizeof (entry)) != sizeof (entry)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (entry)");
|
glibtop_warn_io_r (server, "kvm_read (entry)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Walk through the `vm_map_entry' list ... */
|
/* Walk through the `vm_map_entry' list ... */
|
||||||
@@ -184,7 +186,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
(unsigned long) entry.next,
|
(unsigned long) entry.next,
|
||||||
&entry, sizeof (entry)) != sizeof (entry)) {
|
&entry, sizeof (entry)) != sizeof (entry)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (entry)");
|
glibtop_warn_io_r (server, "kvm_read (entry)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
@@ -215,7 +217,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
(unsigned long) entry.object.uvm_obj,
|
(unsigned long) entry.object.uvm_obj,
|
||||||
&vnode, sizeof (vnode)) != sizeof (vnode)) {
|
&vnode, sizeof (vnode)) != sizeof (vnode)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (vnode)");
|
glibtop_warn_io_r (server, "kvm_read (vnode)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (!entry.object.vm_object)
|
if (!entry.object.vm_object)
|
||||||
@@ -227,7 +229,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
(unsigned long) entry.object.vm_object,
|
(unsigned long) entry.object.vm_object,
|
||||||
&object, sizeof (object)) != sizeof (object)) {
|
&object, sizeof (object)) != sizeof (object)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (object)");
|
glibtop_warn_io_r (server, "kvm_read (object)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* If the object is of type vnode, add its size */
|
/* If the object is of type vnode, add its size */
|
||||||
@@ -256,4 +258,6 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_mem |
|
buf->flags = _glibtop_sysdeps_proc_mem |
|
||||||
_glibtop_sysdeps_proc_mem_share;
|
_glibtop_sysdeps_proc_mem_share;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,8 @@ int
|
|||||||
glibtop_init_proc_segment_p (glibtop *server)
|
glibtop_init_proc_segment_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
|
server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -56,7 +58,7 @@ glibtop_get_proc_segment_p (glibtop *server,
|
|||||||
/* Get the process info from the kernel */
|
/* Get the process info from the kernel */
|
||||||
kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, count);
|
kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, count);
|
||||||
if (*count != 1) {
|
if (*count != 1) {
|
||||||
return; /* the zeroed-out buffer indicating no data */
|
return -1; /* the zeroed-out buffer indicating no data */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* trs: text resident set size
|
/* trs: text resident set size
|
||||||
@@ -78,5 +80,7 @@ glibtop_get_proc_segment_p (glibtop *server,
|
|||||||
/* start_stack: address of the bottom of stack segment
|
/* start_stack: address of the bottom of stack segment
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,6 +43,8 @@ int
|
|||||||
glibtop_init_proc_signal_p (glibtop *server)
|
glibtop_init_proc_signal_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -58,13 +60,13 @@ glibtop_get_proc_signal_p (glibtop *server,
|
|||||||
memset (buf, 0, sizeof (glibtop_proc_signal));
|
memset (buf, 0, sizeof (glibtop_proc_signal));
|
||||||
|
|
||||||
/* It does not work for the swapper task. */
|
/* It does not work for the swapper task. */
|
||||||
if (pid == 0) return;
|
if (pid == 0) return -1;
|
||||||
|
|
||||||
/* Get the process information */
|
/* Get the process information */
|
||||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||||
if ((pinfo == NULL) || (count != 1)) {
|
if ((pinfo == NULL) || (count != 1)) {
|
||||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* signal: mask of pending signals.
|
/* signal: mask of pending signals.
|
||||||
@@ -104,4 +106,6 @@ glibtop_get_proc_signal_p (glibtop *server,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_signal;
|
buf->flags = _glibtop_sysdeps_proc_signal;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,8 @@ glibtop_init_proc_state_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
server->sysdeps.proc_state = _glibtop_sysdeps_proc_state |
|
server->sysdeps.proc_state = _glibtop_sysdeps_proc_state |
|
||||||
_glibtop_sysdeps_proc_state_new;
|
_glibtop_sysdeps_proc_state_new;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -67,13 +69,13 @@ glibtop_get_proc_state_p (glibtop *server,
|
|||||||
memset (buf, 0, sizeof (glibtop_proc_state));
|
memset (buf, 0, sizeof (glibtop_proc_state));
|
||||||
|
|
||||||
/* It does not work for the swapper task. */
|
/* It does not work for the swapper task. */
|
||||||
if (pid == 0) return;
|
if (pid == 0) return -1;
|
||||||
|
|
||||||
/* Get the process information */
|
/* Get the process information */
|
||||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||||
if ((pinfo == NULL) || (count != 1)) {
|
if ((pinfo == NULL) || (count != 1)) {
|
||||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy (buf->cmd, pinfo [0].kp_proc.p_comm, sizeof (buf->cmd)-1);
|
strncpy (buf->cmd, pinfo [0].kp_proc.p_comm, sizeof (buf->cmd)-1);
|
||||||
@@ -109,7 +111,7 @@ glibtop_get_proc_state_p (glibtop *server,
|
|||||||
buf->state = GLIBTOP_PROCESS_ZOMBIE;
|
buf->state = GLIBTOP_PROCESS_ZOMBIE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
switch (pinfo [0].kp_proc.p_stat) {
|
switch (pinfo [0].kp_proc.p_stat) {
|
||||||
@@ -129,9 +131,11 @@ glibtop_get_proc_state_p (glibtop *server,
|
|||||||
buf->state = 'Z';
|
buf->state = 'Z';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
buf->flags |= (1L << GLIBTOP_PROC_STATE_STATE);
|
buf->flags |= (1L << GLIBTOP_PROC_STATE_STATE);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -48,6 +48,8 @@ glibtop_init_proc_time_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
server->sysdeps.proc_time = _glibtop_sysdeps_proc_time |
|
server->sysdeps.proc_time = _glibtop_sysdeps_proc_time |
|
||||||
_glibtop_sysdeps_proc_time_user;
|
_glibtop_sysdeps_proc_time_user;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Taken from /usr/src/sys/kern/kern_resource.c */
|
/* Taken from /usr/src/sys/kern/kern_resource.c */
|
||||||
@@ -140,15 +142,15 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
|
|||||||
memset (buf, 0, sizeof (glibtop_proc_time));
|
memset (buf, 0, sizeof (glibtop_proc_time));
|
||||||
|
|
||||||
/* It does not work for the swapper task. */
|
/* It does not work for the swapper task. */
|
||||||
if (pid == 0) return;
|
if (pid == 0) return -1;
|
||||||
|
|
||||||
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
|
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
|
||||||
if (server->sysdeps.proc_time == 0)
|
if (server->sysdeps.proc_time == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
#ifndef __bsdi__
|
#ifndef __bsdi__
|
||||||
sprintf (filename, "/proc/%d/mem", (int) pid);
|
sprintf (filename, "/proc/%d/mem", (int) pid);
|
||||||
if (stat (filename, &statb)) return;
|
if (stat (filename, &statb)) return -1;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -173,7 +175,7 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
|
|||||||
(unsigned long) pinfo [0].kp_proc.p_stats,
|
(unsigned long) pinfo [0].kp_proc.p_stats,
|
||||||
&pstats, sizeof (pstats)) != sizeof (pstats)) {
|
&pstats, sizeof (pstats)) != sizeof (pstats)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (pstats)");
|
glibtop_warn_io_r (server, "kvm_read (pstats)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
glibtop_suid_leave (server);
|
glibtop_suid_leave (server);
|
||||||
@@ -225,5 +227,7 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
|
|||||||
|
|
||||||
glibtop_suid_leave (server);
|
glibtop_suid_leave (server);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -52,6 +52,8 @@ glibtop_init_proc_uid_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid |
|
server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid |
|
||||||
_glibtop_sysdeps_proc_uid_groups;
|
_glibtop_sysdeps_proc_uid_groups;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -75,13 +77,13 @@ glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_uid *buf,
|
|||||||
memset (buf, 0, sizeof (glibtop_proc_uid));
|
memset (buf, 0, sizeof (glibtop_proc_uid));
|
||||||
|
|
||||||
/* It does not work for the swapper task. */
|
/* It does not work for the swapper task. */
|
||||||
if (pid == 0) return;
|
if (pid == 0) return -1;
|
||||||
|
|
||||||
/* Get the process information */
|
/* Get the process information */
|
||||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||||
if ((pinfo == NULL) || (count != 1)) {
|
if ((pinfo == NULL) || (count != 1)) {
|
||||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf->uid = pinfo [0].kp_eproc.e_pcred.p_ruid;
|
buf->uid = pinfo [0].kp_eproc.e_pcred.p_ruid;
|
||||||
@@ -125,4 +127,6 @@ glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_uid *buf,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -32,7 +32,10 @@
|
|||||||
|
|
||||||
int
|
int
|
||||||
glibtop_init_sem_limits_p (glibtop *server)
|
glibtop_init_sem_limits_p (glibtop *server)
|
||||||
{ }
|
{
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
|
glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
|
||||||
@@ -40,6 +43,8 @@ glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
|
|||||||
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SEM_LIMITS), 0);
|
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SEM_LIMITS), 0);
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_sem_limits));
|
memset (buf, 0, sizeof (glibtop_sem_limits));
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -80,16 +85,18 @@ glibtop_init_sem_limits_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (sem_limits)");
|
glibtop_warn_io_r (server, "kvm_nlist (sem_limits)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||||
&_seminfo, sizeof (_seminfo)) != sizeof (_seminfo)) {
|
&_seminfo, sizeof (_seminfo)) != sizeof (_seminfo)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (seminfo)");
|
glibtop_warn_io_r (server, "kvm_read (seminfo)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits;
|
server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about sysv sem limits. */
|
/* Provides information about sysv sem limits. */
|
||||||
@@ -102,7 +109,7 @@ glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
|
|||||||
memset (buf, 0, sizeof (glibtop_sem_limits));
|
memset (buf, 0, sizeof (glibtop_sem_limits));
|
||||||
|
|
||||||
if (server->sysdeps.sem_limits == 0)
|
if (server->sysdeps.sem_limits == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
buf->semmap = _seminfo.semmap;
|
buf->semmap = _seminfo.semmap;
|
||||||
buf->semmni = _seminfo.semmni;
|
buf->semmni = _seminfo.semmni;
|
||||||
@@ -114,6 +121,8 @@ glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
|
|||||||
buf->semaem = _seminfo.semaem;
|
buf->semaem = _seminfo.semaem;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_sem_limits;
|
buf->flags = _glibtop_sysdeps_sem_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* either a newer BSDI or no BSDI at all. */
|
#endif /* either a newer BSDI or no BSDI at all. */
|
||||||
|
@@ -32,7 +32,10 @@
|
|||||||
|
|
||||||
int
|
int
|
||||||
glibtop_init_shm_limits_p (glibtop *server)
|
glibtop_init_shm_limits_p (glibtop *server)
|
||||||
{ }
|
{
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
|
glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
|
||||||
@@ -40,6 +43,8 @@ glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
|
|||||||
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SHM_LIMITS), 0);
|
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SHM_LIMITS), 0);
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_shm_limits));
|
memset (buf, 0, sizeof (glibtop_shm_limits));
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -78,16 +83,18 @@ glibtop_init_shm_limits_p (glibtop *server)
|
|||||||
{
|
{
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (shm_limits)");
|
glibtop_warn_io_r (server, "kvm_nlist (shm_limits)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||||
&_shminfo, sizeof (_shminfo)) != sizeof (_shminfo)) {
|
&_shminfo, sizeof (_shminfo)) != sizeof (_shminfo)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (shminfo)");
|
glibtop_warn_io_r (server, "kvm_read (shminfo)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
server->sysdeps.shm_limits = _glibtop_sysdeps_shm_limits;
|
server->sysdeps.shm_limits = _glibtop_sysdeps_shm_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about sysv ipc limits. */
|
/* Provides information about sysv ipc limits. */
|
||||||
@@ -100,7 +107,7 @@ glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
|
|||||||
memset (buf, 0, sizeof (glibtop_shm_limits));
|
memset (buf, 0, sizeof (glibtop_shm_limits));
|
||||||
|
|
||||||
if (server->sysdeps.shm_limits == 0)
|
if (server->sysdeps.shm_limits == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
buf->shmmax = _shminfo.shmmax;
|
buf->shmmax = _shminfo.shmmax;
|
||||||
buf->shmmin = _shminfo.shmmin;
|
buf->shmmin = _shminfo.shmmin;
|
||||||
@@ -109,6 +116,8 @@ glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
|
|||||||
buf->shmall = _shminfo.shmall;
|
buf->shmall = _shminfo.shmall;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_shm_limits;
|
buf->flags = _glibtop_sysdeps_shm_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* either a newer BSDI or no BSDI at all. */
|
#endif /* either a newer BSDI or no BSDI at all. */
|
||||||
|
@@ -99,14 +99,14 @@ glibtop_init_swap_p (glibtop *server)
|
|||||||
#if __FreeBSD__ < 4 || defined(__bsdi__)
|
#if __FreeBSD__ < 4 || defined(__bsdi__)
|
||||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (swap)");
|
glibtop_warn_io_r (server, "kvm_nlist (swap)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
struct kvm_swap dummy;
|
struct kvm_swap dummy;
|
||||||
|
|
||||||
if (kvm_getswapinfo (server->machine.kd, &dummy, 1, 0) != 0) {
|
if (kvm_getswapinfo (server->machine.kd, &dummy, 1, 0) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_swap (swap)");
|
glibtop_warn_io_r (server, "kvm_swap (swap)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -114,11 +114,13 @@ glibtop_init_swap_p (glibtop *server)
|
|||||||
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
|
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
|
||||||
if (kvm_nlist (server->machine.kd, nlst2) != 0) {
|
if (kvm_nlist (server->machine.kd, nlst2) != 0) {
|
||||||
glibtop_warn_io_r (server, "kvm_nlist (cnt)");
|
glibtop_warn_io_r (server, "kvm_nlist (cnt)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
server->sysdeps.swap = _glibtop_sysdeps_swap;
|
server->sysdeps.swap = _glibtop_sysdeps_swap;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about swap usage. */
|
/* Provides information about swap usage. */
|
||||||
@@ -173,13 +175,13 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
memset (buf, 0, sizeof (glibtop_swap));
|
memset (buf, 0, sizeof (glibtop_swap));
|
||||||
|
|
||||||
if (server->sysdeps.swap == 0)
|
if (server->sysdeps.swap == 0)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
|
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
|
||||||
length_uvmexp = sizeof (uvmexp);
|
length_uvmexp = sizeof (uvmexp);
|
||||||
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
|
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
|
||||||
glibtop_warn_io_r (server, "sysctl (uvmexp)");
|
glibtop_warn_io_r (server, "sysctl (uvmexp)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* This is used to get the `pagein' and `pageout' members. */
|
/* This is used to get the `pagein' and `pageout' members. */
|
||||||
@@ -187,7 +189,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst2[0].n_value,
|
if (kvm_read (server->machine.kd, nlst2[0].n_value,
|
||||||
&vmm, sizeof (vmm)) != sizeof (vmm)) {
|
&vmm, sizeof (vmm)) != sizeof (vmm)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (cnt)");
|
glibtop_warn_io_r (server, "kvm_read (cnt)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -231,7 +233,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst[VM_NSWAP].n_value,
|
if (kvm_read (server->machine.kd, nlst[VM_NSWAP].n_value,
|
||||||
&nswap, sizeof (nswap)) != sizeof (nswap)) {
|
&nswap, sizeof (nswap)) != sizeof (nswap)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (nswap)");
|
glibtop_warn_io_r (server, "kvm_read (nswap)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Number of swap devices. */
|
/* Number of swap devices. */
|
||||||
@@ -239,7 +241,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst[VM_NSWDEV].n_value,
|
if (kvm_read (server->machine.kd, nlst[VM_NSWDEV].n_value,
|
||||||
&nswdev, sizeof (nswdev)) != sizeof (nswdev)) {
|
&nswdev, sizeof (nswdev)) != sizeof (nswdev)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (nswdev)");
|
glibtop_warn_io_r (server, "kvm_read (nswdev)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Maximum size of a swap block. */
|
/* Maximum size of a swap block. */
|
||||||
@@ -247,7 +249,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst[VM_DMMAX].n_value,
|
if (kvm_read (server->machine.kd, nlst[VM_DMMAX].n_value,
|
||||||
&dmmax, sizeof (dmmax)) != sizeof (dmmax)) {
|
&dmmax, sizeof (dmmax)) != sizeof (dmmax)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (dmmax)");
|
glibtop_warn_io_r (server, "kvm_read (dmmax)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* List of free swap areas. */
|
/* List of free swap areas. */
|
||||||
@@ -255,7 +257,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst[VM_SWAPLIST].n_value,
|
if (kvm_read (server->machine.kd, nlst[VM_SWAPLIST].n_value,
|
||||||
&swaplist, sizeof (swaplist)) != sizeof (swaplist)) {
|
&swaplist, sizeof (swaplist)) != sizeof (swaplist)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (swaplist)");
|
glibtop_warn_io_r (server, "kvm_read (swaplist)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Kernel offset of list of swap devices and sizes. */
|
/* Kernel offset of list of swap devices and sizes. */
|
||||||
@@ -263,7 +265,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst[VM_SWDEVT].n_value,
|
if (kvm_read (server->machine.kd, nlst[VM_SWDEVT].n_value,
|
||||||
&ptr, sizeof (ptr)) != sizeof (ptr)) {
|
&ptr, sizeof (ptr)) != sizeof (ptr)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (swdevt)");
|
glibtop_warn_io_r (server, "kvm_read (swdevt)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* List of swap devices and sizes. */
|
/* List of swap devices and sizes. */
|
||||||
@@ -273,7 +275,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
|
|
||||||
if (kvm_read (server->machine.kd, ptr, sw, sw_size) != (ssize_t)sw_size) {
|
if (kvm_read (server->machine.kd, ptr, sw, sw_size) != (ssize_t)sw_size) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (*swdevt)");
|
glibtop_warn_io_r (server, "kvm_read (*swdevt)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
perdev = glibtop_malloc (nswdev * sizeof (*perdev));
|
perdev = glibtop_malloc (nswdev * sizeof (*perdev));
|
||||||
@@ -291,7 +293,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, (int) swapptr, &head,
|
if (kvm_read (server->machine.kd, (int) swapptr, &head,
|
||||||
sizeof (struct rlist)) != sizeof (struct rlist)) {
|
sizeof (struct rlist)) != sizeof (struct rlist)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (swapptr)");
|
glibtop_warn_io_r (server, "kvm_read (swapptr)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
top = head.rl_end;
|
top = head.rl_end;
|
||||||
@@ -383,7 +385,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (kvm_read (server->machine.kd, nlst[0].n_value,
|
if (kvm_read (server->machine.kd, nlst[0].n_value,
|
||||||
&swap, sizeof (swap)) != sizeof (swap)) {
|
&swap, sizeof (swap)) != sizeof (swap)) {
|
||||||
glibtop_warn_io_r (server, "kvm_read (swap)");
|
glibtop_warn_io_r (server, "kvm_read (swap)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_swap;
|
buf->flags = _glibtop_sysdeps_swap;
|
||||||
@@ -398,7 +400,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
nswap = swapctl (SWAP_NSWAP, NULL, 0);
|
nswap = swapctl (SWAP_NSWAP, NULL, 0);
|
||||||
if (nswap < 0) {
|
if (nswap < 0) {
|
||||||
glibtop_warn_io_r (server, "swapctl (SWAP_NSWAP)");
|
glibtop_warn_io_r (server, "swapctl (SWAP_NSWAP)");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
swaplist = glibtop_calloc_r (server, nswap, sizeof (struct swapent));
|
swaplist = glibtop_calloc_r (server, nswap, sizeof (struct swapent));
|
||||||
@@ -406,7 +408,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
if (swapctl (SWAP_STATS, swaplist, nswap) != nswap) {
|
if (swapctl (SWAP_STATS, swaplist, nswap) != nswap) {
|
||||||
glibtop_warn_io_r (server, "swapctl (SWAP_STATS)");
|
glibtop_warn_io_r (server, "swapctl (SWAP_STATS)");
|
||||||
glibtop_free_r (server, swaplist);
|
glibtop_free_r (server, swaplist);
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < nswap; i++) {
|
for (i = 0; i < nswap; i++) {
|
||||||
@@ -423,4 +425,6 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
|||||||
|
|
||||||
buf->total = inuse + avail;
|
buf->total = inuse + avail;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -42,6 +42,8 @@ int
|
|||||||
glibtop_init_uptime_p (glibtop *server)
|
glibtop_init_uptime_p (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.uptime = _glibtop_sysdeps_uptime;
|
server->sysdeps.uptime = _glibtop_sysdeps_uptime;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides uptime and idle time. */
|
/* Provides uptime and idle time. */
|
||||||
@@ -62,7 +64,7 @@ glibtop_get_uptime_p (glibtop *server, glibtop_uptime *buf)
|
|||||||
/* Make sure all required fields are present. */
|
/* Make sure all required fields are present. */
|
||||||
|
|
||||||
if ((cpu.flags & _required_cpu_flags) != _required_cpu_flags)
|
if ((cpu.flags & _required_cpu_flags) != _required_cpu_flags)
|
||||||
return;
|
return -1;
|
||||||
|
|
||||||
/* Calculate values. */
|
/* Calculate values. */
|
||||||
|
|
||||||
@@ -70,4 +72,6 @@ glibtop_get_uptime_p (glibtop *server, glibtop_uptime *buf)
|
|||||||
buf->idletime = (double) cpu.idle / (double) cpu.frequency;
|
buf->idletime = (double) cpu.idle / (double) cpu.frequency;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_uptime;
|
buf->flags = _glibtop_sysdeps_uptime;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user