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) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (cpu)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set this only if kvm_nlist () succeeded. */
|
||||
server->sysdeps.cpu = _glibtop_sysdeps_cpu;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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 (server->sysdeps.cpu == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||
&cpts, sizeof (cpts)) != sizeof (cpts)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (cp_time)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Get the clockrate data */
|
||||
length = sizeof (struct clockinfo);
|
||||
if (sysctl (mib, mib_length, &ci, &length, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* set user time */
|
||||
@@ -114,4 +116,6 @@ glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf)
|
||||
|
||||
/* Set the flags last. */
|
||||
buf->flags = _glibtop_sysdeps_cpu;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -36,6 +36,8 @@ int
|
||||
glibtop_init_loadavg_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.loadavg = _glibtop_sysdeps_loadavg;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Provides load averange. */
|
||||
@@ -57,4 +59,6 @@ glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf)
|
||||
for (i = 0; i < 3; i++) {
|
||||
buf->loadavg [i] = ldavg [i];
|
||||
} /* end for */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -94,7 +94,7 @@ glibtop_init_mem_p (glibtop *server)
|
||||
|
||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (mem)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get the page size with "getpagesize" and calculate pageshift
|
||||
@@ -110,6 +110,8 @@ glibtop_init_mem_p (glibtop *server)
|
||||
pageshift -= LOG1024;
|
||||
|
||||
server->sysdeps.mem = _glibtop_sysdeps_mem;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -133,7 +135,7 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
|
||||
memset (buf, 0, sizeof (glibtop_mem));
|
||||
|
||||
if (server->sysdeps.mem == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
/* [FIXME: On FreeBSD 2.2.6, sysctl () returns an incorrect
|
||||
* 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);
|
||||
if (sysctl (mib, 2, &vmt, &length_vmt, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (vmt)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
|
||||
length_uvmexp = sizeof (uvmexp);
|
||||
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (uvmexp)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
/* Get the data from kvm_* */
|
||||
if (kvm_read (server->machine.kd, nlst[1].n_value,
|
||||
&vmm, sizeof (vmm)) != sizeof (vmm)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (cnt)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (kvm_read (server->machine.kd, nlst[0].n_value,
|
||||
&bufspace, sizeof (bufspace)) != sizeof (bufspace)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (bufspace)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* convert memory stats to Kbytes */
|
||||
@@ -219,4 +221,6 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
|
||||
|
||||
/* Set the values to return */
|
||||
buf->flags = _glibtop_sysdeps_mem;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -32,7 +32,9 @@
|
||||
|
||||
int
|
||||
glibtop_init_msg_limits_p (glibtop *server)
|
||||
{ }
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
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);
|
||||
|
||||
memset (buf, 0, sizeof (glibtop_msg_limits));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -78,16 +82,18 @@ glibtop_init_msg_limits_p (glibtop *server)
|
||||
{
|
||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (msg_limits)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||
&_msginfo, sizeof (_msginfo)) != sizeof (_msginfo)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (msginfo)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
server->sysdeps.msg_limits = _glibtop_sysdeps_msg_limits;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
if (server->sysdeps.msg_limits == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
buf->msgmax = _msginfo.msgmax;
|
||||
buf->msgmni = _msginfo.msgmni;
|
||||
@@ -109,6 +115,8 @@ glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
|
||||
buf->msgssz = _msginfo.msgtql;
|
||||
|
||||
buf->flags = _glibtop_sysdeps_msg_limits;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#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)
|
||||
glibtop_error_io_r (server, "kvm_nlist");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Provides Network statistics. */
|
||||
@@ -191,7 +193,7 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
||||
|
||||
buf->collisions = ifnet.if_collisions;
|
||||
buf->flags = _glibtop_sysdeps_netload;
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#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;
|
||||
#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -84,6 +84,8 @@ glibtop_init_ppp_p (glibtop *server)
|
||||
|
||||
if (kvm_nlist (server->machine.kd, nlst) != 0)
|
||||
glibtop_error_io_r (server, "kvm_nlist");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
#endif
|
||||
#endif /* HAVE_I4B */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -41,6 +41,8 @@ int
|
||||
glibtop_init_proc_args_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_args = _glibtop_sysdeps_proc_args;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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 |
|
||||
_glibtop_sysdeps_proc_kernel_pcb |
|
||||
_glibtop_sysdeps_proc_kernel_wchan;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -91,10 +93,10 @@ glibtop_get_proc_kernel_p (glibtop *server,
|
||||
memset (buf, 0, sizeof (glibtop_proc_kernel));
|
||||
|
||||
if (server->sysdeps.proc_time == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
if (pid == 0) return -1;
|
||||
|
||||
/* Get the process information */
|
||||
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. */
|
||||
|
||||
sprintf (filename, "/proc/%d/mem", (int) pid);
|
||||
if (stat (filename, &statb)) return;
|
||||
if (stat (filename, &statb)) return -1;
|
||||
|
||||
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'. */
|
||||
|
||||
glibtop_suid_leave (server);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -56,6 +56,8 @@ int
|
||||
glibtop_init_proclist_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proclist = _glibtop_sysdeps_proclist;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned *
|
||||
|
@@ -71,6 +71,8 @@ int
|
||||
glibtop_init_proc_map_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_map = _glibtop_sysdeps_proc_map;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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 |
|
||||
_glibtop_sysdeps_proc_mem_share;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
if (server->sysdeps.proc_mem == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
if (pid == 0) return -1;
|
||||
|
||||
/* Get the process data */
|
||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||
if ((pinfo == NULL) || (count < 1)) {
|
||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd,
|
||||
(unsigned long) pinfo [0].kp_proc.p_limit,
|
||||
(char *) &plimit, sizeof (plimit)) != sizeof (plimit)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (plimit)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
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,
|
||||
(char *) &vmspace, sizeof (vmspace)) != sizeof (vmspace)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (vmspace)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
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,
|
||||
(char *) &entry, sizeof (entry)) != sizeof (entry)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (entry)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 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,
|
||||
&entry, sizeof (entry)) != sizeof (entry)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (entry)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
@@ -215,7 +217,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
||||
(unsigned long) entry.object.uvm_obj,
|
||||
&vnode, sizeof (vnode)) != sizeof (vnode)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (vnode)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
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,
|
||||
&object, sizeof (object)) != sizeof (object)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (object)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
/* 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 |
|
||||
_glibtop_sysdeps_proc_mem_share;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -39,6 +39,8 @@ int
|
||||
glibtop_init_proc_segment_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Provides detailed information about a process. */
|
||||
@@ -56,7 +58,7 @@ glibtop_get_proc_segment_p (glibtop *server,
|
||||
/* Get the process info from the kernel */
|
||||
kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, count);
|
||||
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
|
||||
@@ -78,5 +80,7 @@ glibtop_get_proc_segment_p (glibtop *server,
|
||||
/* start_stack: address of the bottom of stack segment
|
||||
*/
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -43,6 +43,8 @@ int
|
||||
glibtop_init_proc_signal_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -58,13 +60,13 @@ glibtop_get_proc_signal_p (glibtop *server,
|
||||
memset (buf, 0, sizeof (glibtop_proc_signal));
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
if (pid == 0) return -1;
|
||||
|
||||
/* Get the process information */
|
||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||
if ((pinfo == NULL) || (count != 1)) {
|
||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* signal: mask of pending signals.
|
||||
@@ -104,4 +106,6 @@ glibtop_get_proc_signal_p (glibtop *server,
|
||||
#endif
|
||||
|
||||
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 |
|
||||
_glibtop_sysdeps_proc_state_new;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Provides detailed information about a process. */
|
||||
@@ -67,13 +69,13 @@ glibtop_get_proc_state_p (glibtop *server,
|
||||
memset (buf, 0, sizeof (glibtop_proc_state));
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
if (pid == 0) return -1;
|
||||
|
||||
/* Get the process information */
|
||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||
if ((pinfo == NULL) || (count != 1)) {
|
||||
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);
|
||||
@@ -109,7 +111,7 @@ glibtop_get_proc_state_p (glibtop *server,
|
||||
buf->state = GLIBTOP_PROCESS_ZOMBIE;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
switch (pinfo [0].kp_proc.p_stat) {
|
||||
@@ -129,9 +131,11 @@ glibtop_get_proc_state_p (glibtop *server,
|
||||
buf->state = 'Z';
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
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 |
|
||||
_glibtop_sysdeps_proc_time_user;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
if (pid == 0) return -1;
|
||||
|
||||
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
|
||||
if (server->sysdeps.proc_time == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
#ifndef __bsdi__
|
||||
sprintf (filename, "/proc/%d/mem", (int) pid);
|
||||
if (stat (filename, &statb)) return;
|
||||
if (stat (filename, &statb)) return -1;
|
||||
#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,
|
||||
&pstats, sizeof (pstats)) != sizeof (pstats)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (pstats)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
glibtop_suid_leave (server);
|
||||
@@ -225,5 +227,7 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
|
||||
|
||||
glibtop_suid_leave (server);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -52,6 +52,8 @@ glibtop_init_proc_uid_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid |
|
||||
_glibtop_sysdeps_proc_uid_groups;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
if (pid == 0) return -1;
|
||||
|
||||
/* Get the process information */
|
||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||
if ((pinfo == NULL) || (count != 1)) {
|
||||
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -32,7 +32,10 @@
|
||||
|
||||
int
|
||||
glibtop_init_sem_limits_p (glibtop *server)
|
||||
{ }
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
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);
|
||||
|
||||
memset (buf, 0, sizeof (glibtop_sem_limits));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -80,16 +85,18 @@ glibtop_init_sem_limits_p (glibtop *server)
|
||||
{
|
||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (sem_limits)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||
&_seminfo, sizeof (_seminfo)) != sizeof (_seminfo)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (seminfo)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
if (server->sysdeps.sem_limits == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
buf->semmap = _seminfo.semmap;
|
||||
buf->semmni = _seminfo.semmni;
|
||||
@@ -114,6 +121,8 @@ glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
|
||||
buf->semaem = _seminfo.semaem;
|
||||
|
||||
buf->flags = _glibtop_sysdeps_sem_limits;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* either a newer BSDI or no BSDI at all. */
|
||||
|
@@ -32,7 +32,10 @@
|
||||
|
||||
int
|
||||
glibtop_init_shm_limits_p (glibtop *server)
|
||||
{ }
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
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);
|
||||
|
||||
memset (buf, 0, sizeof (glibtop_shm_limits));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -78,16 +83,18 @@ glibtop_init_shm_limits_p (glibtop *server)
|
||||
{
|
||||
if (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (shm_limits)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd, nlst [0].n_value,
|
||||
&_shminfo, sizeof (_shminfo)) != sizeof (_shminfo)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (shminfo)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
server->sysdeps.shm_limits = _glibtop_sysdeps_shm_limits;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
if (server->sysdeps.shm_limits == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
buf->shmmax = _shminfo.shmmax;
|
||||
buf->shmmin = _shminfo.shmmin;
|
||||
@@ -109,6 +116,8 @@ glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
|
||||
buf->shmall = _shminfo.shmall;
|
||||
|
||||
buf->flags = _glibtop_sysdeps_shm_limits;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#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 (kvm_nlist (server->machine.kd, nlst) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (swap)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
struct kvm_swap dummy;
|
||||
|
||||
if (kvm_getswapinfo (server->machine.kd, &dummy, 1, 0) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_swap (swap)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -114,11 +114,13 @@ glibtop_init_swap_p (glibtop *server)
|
||||
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
|
||||
if (kvm_nlist (server->machine.kd, nlst2) != 0) {
|
||||
glibtop_warn_io_r (server, "kvm_nlist (cnt)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
server->sysdeps.swap = _glibtop_sysdeps_swap;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Provides information about swap usage. */
|
||||
@@ -173,13 +175,13 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
||||
memset (buf, 0, sizeof (glibtop_swap));
|
||||
|
||||
if (server->sysdeps.swap == 0)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
|
||||
length_uvmexp = sizeof (uvmexp);
|
||||
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (uvmexp)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
/* 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,
|
||||
&vmm, sizeof (vmm)) != sizeof (vmm)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (cnt)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
#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,
|
||||
&nswap, sizeof (nswap)) != sizeof (nswap)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (nswap)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 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,
|
||||
&nswdev, sizeof (nswdev)) != sizeof (nswdev)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (nswdev)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 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,
|
||||
&dmmax, sizeof (dmmax)) != sizeof (dmmax)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (dmmax)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 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,
|
||||
&swaplist, sizeof (swaplist)) != sizeof (swaplist)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (swaplist)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 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,
|
||||
&ptr, sizeof (ptr)) != sizeof (ptr)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (swdevt)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 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) {
|
||||
glibtop_warn_io_r (server, "kvm_read (*swdevt)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
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,
|
||||
sizeof (struct rlist)) != sizeof (struct rlist)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (swapptr)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
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,
|
||||
&swap, sizeof (swap)) != sizeof (swap)) {
|
||||
glibtop_warn_io_r (server, "kvm_read (swap)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
buf->flags = _glibtop_sysdeps_swap;
|
||||
@@ -398,7 +400,7 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
||||
nswap = swapctl (SWAP_NSWAP, NULL, 0);
|
||||
if (nswap < 0) {
|
||||
glibtop_warn_io_r (server, "swapctl (SWAP_NSWAP)");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
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) {
|
||||
glibtop_warn_io_r (server, "swapctl (SWAP_STATS)");
|
||||
glibtop_free_r (server, swaplist);
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0; i < nswap; i++) {
|
||||
@@ -423,4 +425,6 @@ glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
|
||||
|
||||
buf->total = inuse + avail;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -42,6 +42,8 @@ int
|
||||
glibtop_init_uptime_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.uptime = _glibtop_sysdeps_uptime;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 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. */
|
||||
|
||||
if ((cpu.flags & _required_cpu_flags) != _required_cpu_flags)
|
||||
return;
|
||||
return -1;
|
||||
|
||||
/* Calculate values. */
|
||||
|
||||
@@ -70,4 +72,6 @@ glibtop_get_uptime_p (glibtop *server, glibtop_uptime *buf)
|
||||
buf->idletime = (double) cpu.idle / (double) cpu.frequency;
|
||||
|
||||
buf->flags = _glibtop_sysdeps_uptime;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user