From a0056665ae953147ef18a7d1f8ab11aa7c4fca82 Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Sat, 18 Dec 1999 18:11:27 +0000 Subject: [PATCH] Reflect latest interface changes. --- sysdeps/kernel/Makefile.am | 3 +- sysdeps/kernel/cpu.c | 11 ++- sysdeps/kernel/interfaces.c | 54 +++++++++++++ sysdeps/kernel/loadavg.c | 10 ++- sysdeps/kernel/mem.c | 10 ++- sysdeps/kernel/msg_limits.c | 7 +- sysdeps/kernel/netinfo.c | 150 +++++++++++++++++++++++++++++++++++ sysdeps/kernel/netload.c | 82 +++---------------- sysdeps/kernel/ppp.c | 4 + sysdeps/kernel/procargs.c | 2 + sysdeps/kernel/prockernel.c | 15 +++- sysdeps/kernel/proclist.c | 2 + sysdeps/kernel/procmap.c | 2 + sysdeps/kernel/procmem.c | 10 ++- sysdeps/kernel/procsegment.c | 15 +++- sysdeps/kernel/procsignal.c | 11 ++- sysdeps/kernel/procstate.c | 10 ++- sysdeps/kernel/proctime.c | 11 ++- sysdeps/kernel/procuid.c | 11 ++- sysdeps/kernel/sem_limits.c | 7 +- sysdeps/kernel/shm_limits.c | 7 +- sysdeps/kernel/swap.c | 15 +++- sysdeps/kernel/uptime.c | 10 ++- 23 files changed, 349 insertions(+), 110 deletions(-) create mode 100644 sysdeps/kernel/interfaces.c create mode 100644 sysdeps/kernel/netinfo.c diff --git a/sysdeps/kernel/Makefile.am b/sysdeps/kernel/Makefile.am index 19c53d43..597ce2ee 100644 --- a/sysdeps/kernel/Makefile.am +++ b/sysdeps/kernel/Makefile.am @@ -9,7 +9,8 @@ libgtop_sysdeps_la_SOURCES = open.c close.c siglist.c cpu.c mem.c swap.c \ sem_limits.c proclist.c procstate.c procuid.c \ proctime.c procmem.c procsignal.c prockernel.c \ procsegment.c procargs.c procmap.c netload.c \ - ppp.c procdata.c sysinfo.c + netinfo.c interfaces.c ppp.c procdata.c \ + sysinfo.c libgtop_sysdeps_la_LDFLAGS = $(LT_VERSION_INFO) diff --git a/sysdeps/kernel/cpu.c b/sysdeps/kernel/cpu.c index dce6fbb6..1c68a1bc 100644 --- a/sysdeps/kernel/cpu.c +++ b/sysdeps/kernel/cpu.c @@ -45,6 +45,8 @@ glibtop_init_cpu_s (glibtop *server) if (server->ncpu) server->sysdeps.cpu |= _glibtop_sysdeps_cpu_smp; + + return 0; } /* Provides information about cpu usage. */ @@ -53,12 +55,13 @@ int glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf) { libgtop_stat_t stat; - int i; + int retval, i; memset (buf, 0, sizeof (glibtop_cpu)); - if (glibtop_get_proc_data_stat_s (server, &stat)) - return; + retval = glibtop_get_proc_data_stat_s (server, &stat); + if (retval) + return retval; buf->user = stat.cpu.user; buf->nice = stat.cpu.nice; @@ -83,4 +86,6 @@ glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf) buf->flags |= _glibtop_sysdeps_cpu_smp; } + + return 0; } diff --git a/sysdeps/kernel/interfaces.c b/sysdeps/kernel/interfaces.c new file mode 100644 index 00000000..bf491632 --- /dev/null +++ b/sysdeps/kernel/interfaces.c @@ -0,0 +1,54 @@ +/* $Id$ */ + +/* Copyright (C) 1998-99 Martin Baulig + This file is part of LibGTop 1.0. + + Contributed by Martin Baulig , October 1998. + + LibGTop is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, + or (at your option) any later version. + + LibGTop is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with LibGTop; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include + +static const unsigned long _glibtop_sysdeps_interface_names = +(1L << GLIBTOP_INTERFACE_NAMES_NUMBER) + +(1L << GLIBTOP_INTERFACE_NAMES_SIZE); + +/* Init function. */ + +int +glibtop_init_interface_names_s (glibtop *server) +{ + server->sysdeps.interface_names = _glibtop_sysdeps_interface_names; + + return 0; +} + +/* Provides network statistics. */ + +glibtop_interface * +glibtop_get_interface_names_s (glibtop *server, glibtop_interface_names *buf, + u_int64_t interface, u_int64_t number, + u_int64_t instance, u_int64_t strategy) +{ + glibtop_init_s (&server, GLIBTOP_SYSDEPS_INTERFACE_NAMES, 0); + + memset (buf, 0, sizeof (glibtop_interface_names)); + + return NULL; +} diff --git a/sysdeps/kernel/loadavg.c b/sysdeps/kernel/loadavg.c index 535b485e..7566fe8c 100644 --- a/sysdeps/kernel/loadavg.c +++ b/sysdeps/kernel/loadavg.c @@ -35,6 +35,8 @@ int glibtop_init_loadavg_s (glibtop *server) { server->sysdeps.loadavg = _glibtop_sysdeps_loadavg; + + return 0; } /* Provides load averange. */ @@ -43,15 +45,19 @@ int glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf) { libgtop_stat_t stat; + int retval; memset (buf, 0, sizeof (glibtop_loadavg)); - if (glibtop_get_proc_data_stat_s (server, &stat)) - return; + retval = glibtop_get_proc_data_stat_s (server, &stat); + if (retval) + return retval; buf->loadavg [0] = stat.loadavg [0]; buf->loadavg [1] = stat.loadavg [1]; buf->loadavg [2] = stat.loadavg [2]; buf->flags = _glibtop_sysdeps_loadavg; + + return 0; } diff --git a/sysdeps/kernel/mem.c b/sysdeps/kernel/mem.c index 194dd8ab..bc408fbe 100644 --- a/sysdeps/kernel/mem.c +++ b/sysdeps/kernel/mem.c @@ -37,6 +37,8 @@ int glibtop_init_mem_s (glibtop *server) { server->sysdeps.mem = _glibtop_sysdeps_mem; + + return 0; } /* Provides information about memory usage. */ @@ -45,11 +47,13 @@ int glibtop_get_mem_s (glibtop *server, glibtop_mem *buf) { libgtop_mem_t mem; + int retval; memset (buf, 0, sizeof (glibtop_mem)); - if (glibtop_get_proc_data_mem_s (server, &mem)) - return; + retval = glibtop_get_proc_data_mem_s (server, &mem); + if (retval) + return retval; buf->total = mem.totalram; buf->used = mem.totalram - mem.freeram; @@ -59,4 +63,6 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf) buf->cached = mem.cachedram; buf->flags = _glibtop_sysdeps_mem; + + return 0; } diff --git a/sysdeps/kernel/msg_limits.c b/sysdeps/kernel/msg_limits.c index 5ed5fdad..b3c8e9bd 100644 --- a/sysdeps/kernel/msg_limits.c +++ b/sysdeps/kernel/msg_limits.c @@ -38,6 +38,8 @@ int glibtop_init_msg_limits_s (glibtop *server) { server->sysdeps.msg_limits = _glibtop_sysdeps_msg_limits; + + return 0; } /* Provides information about sysv ipc limits. */ @@ -53,7 +55,8 @@ glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf) buf->flags = _glibtop_sysdeps_msg_limits; - msgctl (0, IPC_INFO, (struct msqid_ds *) &msginfo); + if (msgctl (0, IPC_INFO, (struct msqid_ds *) &msginfo)) + return -1; buf->msgpool = msginfo.msgpool; buf->msgmap = msginfo.msgmap; @@ -62,4 +65,6 @@ glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf) buf->msgmni = msginfo.msgmni; buf->msgssz = msginfo.msgssz; buf->msgtql = msginfo.msgtql; + + return 0; } diff --git a/sysdeps/kernel/netinfo.c b/sysdeps/kernel/netinfo.c new file mode 100644 index 00000000..1d93578f --- /dev/null +++ b/sysdeps/kernel/netinfo.c @@ -0,0 +1,150 @@ +/* $Id$ */ + +/* Copyright (C) 1998-99 Martin Baulig + This file is part of LibGTop 1.0. + + Contributed by Martin Baulig , October 1998. + + LibGTop is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, + or (at your option) any later version. + + LibGTop is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with LibGTop; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 +/* GNU LibC */ +#include +#include +#include +#include +#include +#include +#include +#else /* Libc 5 */ +#include +#include +#include +#include +#include +#include +#endif + +static const unsigned long _glibtop_sysdeps_netinfo = +(1L << GLIBTOP_NETINFO_IF_FLAGS) + +(1L << GLIBTOP_NETINFO_ADDRESS) + +(1L << GLIBTOP_NETINFO_SUBNET) + +(1L << GLIBTOP_NETINFO_MTU); + +/* Init function. */ + +int +glibtop_init_netinfo_s (glibtop *server) +{ + server->sysdeps.netinfo = _glibtop_sysdeps_netinfo; + + return 0; +} + +/* Provides network statistics. */ + +int +glibtop_get_netinfo_s (glibtop *server, glibtop_netinfo *buf, + const char *interface, unsigned transport) +{ + int skfd; + + memset (buf, 0, sizeof (glibtop_netinfo)); + + skfd = socket (AF_INET, SOCK_DGRAM, 0); + + if (skfd) { + struct ifreq ifr; + unsigned flags; + + strcpy (ifr.ifr_name, interface); + if (!ioctl (skfd, SIOCGIFFLAGS, &ifr)) { + buf->flags |= (1L << GLIBTOP_NETINFO_IF_FLAGS); + flags = ifr.ifr_flags; + } else + flags = 0; + + if (flags & IFF_UP) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_UP); + + if (flags & IFF_BROADCAST) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_BROADCAST); + + if (flags & IFF_DEBUG) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_DEBUG); + + if (flags & IFF_LOOPBACK) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_LOOPBACK); + + if (flags & IFF_POINTOPOINT) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_POINTOPOINT); + + if (flags & IFF_RUNNING) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_RUNNING); + + if (flags & IFF_NOARP) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_NOARP); + + if (flags & IFF_PROMISC) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_PROMISC); + + if (flags & IFF_ALLMULTI) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_ALLMULTI); + + if (flags & IFF_MULTICAST) + buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_MULTICAST); + + strcpy (ifr.ifr_name, interface); + if (!ioctl (skfd, SIOCGIFADDR, &ifr)) { + struct sockaddr_in addr = + *(struct sockaddr_in *) &ifr.ifr_addr; + buf->address = addr.sin_addr.s_addr; + buf->flags |= (1L << GLIBTOP_NETINFO_ADDRESS); + } + + strcpy (ifr.ifr_name, interface); + if (!ioctl (skfd, SIOCGIFNETMASK, &ifr)) { + struct sockaddr_in addr = + *(struct sockaddr_in *) &ifr.ifr_addr; + buf->subnet = addr.sin_addr.s_addr; + buf->flags |= (1L << GLIBTOP_NETINFO_SUBNET); + } + + strcpy (ifr.ifr_name, interface); + if (!ioctl (skfd, SIOCGIFMTU, &ifr)) { + buf->mtu = ifr.ifr_mtu; + buf->flags |= (1L << GLIBTOP_NETINFO_MTU); + } + + close (skfd); + } + + return 0; +} diff --git a/sysdeps/kernel/netload.c b/sysdeps/kernel/netload.c index ea2f642a..31077827 100644 --- a/sysdeps/kernel/netload.c +++ b/sysdeps/kernel/netload.c @@ -71,89 +71,25 @@ int glibtop_init_netload_s (glibtop *server) { server->sysdeps.netload = _glibtop_sysdeps_netload; + + return 0; } /* Provides network statistics. */ int glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, - const char *interface) + const char *interface, unsigned transport, + unsigned protocol) { libgtop_netload_t netload; - int skfd; + int retval; memset (buf, 0, sizeof (glibtop_netload)); - skfd = socket (AF_INET, SOCK_DGRAM, 0); - - if (skfd) { - struct ifreq ifr; - unsigned flags; - - strcpy (ifr.ifr_name, interface); - if (!ioctl (skfd, SIOCGIFFLAGS, &ifr)) { - buf->flags |= (1L << GLIBTOP_NETLOAD_IF_FLAGS); - flags = ifr.ifr_flags; - } else - flags = 0; - - if (flags & IFF_UP) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_UP); - - if (flags & IFF_BROADCAST) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_BROADCAST); - - if (flags & IFF_DEBUG) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_DEBUG); - - if (flags & IFF_LOOPBACK) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_LOOPBACK); - - if (flags & IFF_POINTOPOINT) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_POINTOPOINT); - - if (flags & IFF_RUNNING) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_RUNNING); - - if (flags & IFF_NOARP) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_NOARP); - - if (flags & IFF_PROMISC) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_PROMISC); - - if (flags & IFF_ALLMULTI) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_ALLMULTI); - - if (flags & IFF_MULTICAST) - buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_MULTICAST); - - strcpy (ifr.ifr_name, interface); - if (!ioctl (skfd, SIOCGIFADDR, &ifr)) { - struct sockaddr_in addr = - *(struct sockaddr_in *) &ifr.ifr_addr; - buf->address = addr.sin_addr.s_addr; - buf->flags |= (1L << GLIBTOP_NETLOAD_ADDRESS); - } - - strcpy (ifr.ifr_name, interface); - if (!ioctl (skfd, SIOCGIFNETMASK, &ifr)) { - struct sockaddr_in addr = - *(struct sockaddr_in *) &ifr.ifr_addr; - buf->subnet = addr.sin_addr.s_addr; - buf->flags |= (1L << GLIBTOP_NETLOAD_SUBNET); - } - - strcpy (ifr.ifr_name, interface); - if (!ioctl (skfd, SIOCGIFMTU, &ifr)) { - buf->mtu = ifr.ifr_mtu; - buf->flags |= (1L << GLIBTOP_NETLOAD_MTU); - } - - close (skfd); - } - - if (glibtop_get_proc_data_netload_s (server, &netload, interface)) - return; + retval = glibtop_get_proc_data_netload_s (server, &netload, interface); + if (retval) + return retval; buf->bytes_in = netload.rx_bytes; buf->bytes_out = netload.tx_bytes; @@ -170,4 +106,6 @@ glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, buf->collisions = netload.collisions; buf->flags |= _glibtop_sysdeps_netload; + + return 0; } diff --git a/sysdeps/kernel/ppp.c b/sysdeps/kernel/ppp.c index 754f7486..b8e80dbb 100644 --- a/sysdeps/kernel/ppp.c +++ b/sysdeps/kernel/ppp.c @@ -45,6 +45,8 @@ int glibtop_init_ppp_s (glibtop *server) { server->sysdeps.ppp = _glibtop_sysdeps_ppp; + + return 0; } static int @@ -198,4 +200,6 @@ glibtop_get_ppp_s (glibtop *server, glibtop_ppp *buf, unsigned short device) buf->flags |= (1L << GLIBTOP_PPP_BYTES_IN) | (1L << GLIBTOP_PPP_BYTES_OUT); } + + return 0; } diff --git a/sysdeps/kernel/procargs.c b/sysdeps/kernel/procargs.c index 851dda15..3e20edcd 100644 --- a/sysdeps/kernel/procargs.c +++ b/sysdeps/kernel/procargs.c @@ -37,6 +37,8 @@ int glibtop_init_proc_args_s (glibtop *server) { server->sysdeps.proc_args = _glibtop_sysdeps_proc_args; + + return 0; } /* Provides detailed information about a process. */ diff --git a/sysdeps/kernel/prockernel.c b/sysdeps/kernel/prockernel.c index 8974915b..0e59a0dc 100644 --- a/sysdeps/kernel/prockernel.c +++ b/sysdeps/kernel/prockernel.c @@ -44,6 +44,8 @@ glibtop_init_proc_kernel_s (glibtop *server) { server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel | _glibtop_sysdeps_proc_kernel_kernel; + + return 0; } /* Provides detailed information about a process. */ @@ -54,11 +56,13 @@ glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, { libgtop_proc_state_t proc_state; libgtop_proc_kernel_t proc_kernel; + int retval; memset (buf, 0, sizeof (glibtop_proc_kernel)); - if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid)) - return; + retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid); + if (retval) + return retval; buf->min_flt = proc_state.min_flt; buf->maj_flt = proc_state.maj_flt; @@ -69,9 +73,12 @@ glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, buf->flags = _glibtop_sysdeps_proc_kernel; - if (glibtop_get_proc_data_proc_kernel_s (server, &proc_kernel, pid)) - return; + retval = glibtop_get_proc_data_proc_kernel_s (server, &proc_kernel, pid); + if (retval) + return retval; buf->nwchan = proc_kernel.wchan; buf->flags |= _glibtop_sysdeps_proc_kernel_kernel; + + return 0; } diff --git a/sysdeps/kernel/proclist.c b/sysdeps/kernel/proclist.c index 5bb26753..ec9be9ff 100644 --- a/sysdeps/kernel/proclist.c +++ b/sysdeps/kernel/proclist.c @@ -39,6 +39,8 @@ int glibtop_init_proclist_s (glibtop *server) { server->sysdeps.proclist = _glibtop_sysdeps_proclist; + + return 0; } /* Fetch list of currently running processes. diff --git a/sysdeps/kernel/procmap.c b/sysdeps/kernel/procmap.c index ac1fb7d8..ca4287d3 100644 --- a/sysdeps/kernel/procmap.c +++ b/sysdeps/kernel/procmap.c @@ -45,6 +45,8 @@ int glibtop_init_proc_map_s (glibtop *server) { server->sysdeps.proc_map = _glibtop_sysdeps_proc_map; + + return 0; } /* Provides detailed information about a process. */ diff --git a/sysdeps/kernel/procmem.c b/sysdeps/kernel/procmem.c index 66635a6b..8f9f54eb 100644 --- a/sysdeps/kernel/procmem.c +++ b/sysdeps/kernel/procmem.c @@ -57,6 +57,8 @@ glibtop_init_proc_mem_s (glibtop *server) pageshift++; pagesize >>= 1; } + + return 0; } /* Provides detailed information about a process. */ @@ -66,11 +68,13 @@ glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf, pid_t pid) { libgtop_proc_mem_t proc_mem; + int retval; memset (buf, 0, sizeof (glibtop_proc_mem)); - if (glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid)) - return; + retval = glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid); + if (retval) + return retval; buf->vsize = proc_mem.segment.vsize; @@ -88,4 +92,6 @@ glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf, buf->share <<= pageshift; buf->flags = _glibtop_sysdeps_proc_mem; + + return 0; } diff --git a/sysdeps/kernel/procsegment.c b/sysdeps/kernel/procsegment.c index c257deba..2bdeb0f1 100644 --- a/sysdeps/kernel/procsegment.c +++ b/sysdeps/kernel/procsegment.c @@ -65,6 +65,8 @@ glibtop_init_proc_segment_s (glibtop *server) pageshift++; pagesize >>= 1; } + + return 0; } /* Provides detailed information about a process. */ @@ -75,11 +77,13 @@ glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf, { libgtop_proc_mem_t proc_mem; libgtop_proc_state_t proc_state; + int retval; memset (buf, 0, sizeof (glibtop_proc_segment)); - if (glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid)) - return; + retval = glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid); + if (retval) + return retval; buf->text_rss = proc_mem.trs; buf->shlib_rss = proc_mem.lrs; @@ -95,8 +99,9 @@ glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf, buf->flags = _glibtop_sysdeps_proc_segment; - if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid)) - return; + retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid); + if (retval) + return retval; buf->start_code = proc_state.start_code; buf->end_code = proc_state.end_code; @@ -114,4 +119,6 @@ glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf, buf->env_end = proc_state.env_end; buf->flags |= _glibtop_sysdeps_proc_segment_state; + + return 0; } diff --git a/sysdeps/kernel/procsignal.c b/sysdeps/kernel/procsignal.c index 6e3f90b4..4626af5d 100644 --- a/sysdeps/kernel/procsignal.c +++ b/sysdeps/kernel/procsignal.c @@ -38,6 +38,8 @@ int glibtop_init_proc_signal_s (glibtop *server) { server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal; + + return 0; } /* Provides detailed information about a process. */ @@ -47,12 +49,13 @@ glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf, pid_t pid) { libgtop_proc_signal_t proc_signal; - int i; + int retval, i; memset (buf, 0, sizeof (glibtop_proc_signal)); - if (glibtop_get_proc_data_proc_signal_s (server, &proc_signal, pid)) - return; + retval = glibtop_get_proc_data_proc_signal_s (server, &proc_signal, pid); + if (retval) + return retval; for (i = 0; i < 1; i++) { buf->signal [i] = proc_signal.signal [i]; @@ -62,4 +65,6 @@ glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf, } buf->flags = _glibtop_sysdeps_proc_signal; + + return 0; } diff --git a/sysdeps/kernel/procstate.c b/sysdeps/kernel/procstate.c index ce229889..9a5b7483 100644 --- a/sysdeps/kernel/procstate.c +++ b/sysdeps/kernel/procstate.c @@ -39,6 +39,8 @@ int glibtop_init_proc_state_s (glibtop *server) { server->sysdeps.proc_state = _glibtop_sysdeps_proc_state; + + return 0; } /* Provides detailed information about a process. */ @@ -48,11 +50,13 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid) { libgtop_proc_state_t proc_state; + int retval; memset (buf, 0, sizeof (glibtop_proc_state)); - if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid)) - return; + retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid); + if (retval) + return retval; memcpy (buf->cmd, proc_state.comm, sizeof (buf->cmd)); @@ -79,4 +83,6 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, buf->last_processor = proc_state.last_processor; buf->flags = _glibtop_sysdeps_proc_state; + + return 0; } diff --git a/sysdeps/kernel/proctime.c b/sysdeps/kernel/proctime.c index d07e9420..15e3cb83 100644 --- a/sysdeps/kernel/proctime.c +++ b/sysdeps/kernel/proctime.c @@ -43,6 +43,8 @@ glibtop_init_proc_time_s (glibtop *server) if (server->ncpu) server->sysdeps.proc_time |= _glibtop_sysdeps_proc_time_smp; + + return 0; } /* Provides detailed information about a process. */ @@ -52,12 +54,13 @@ glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf, pid_t pid) { libgtop_proc_state_t proc_state; - int i; + int retval, i; memset (buf, 0, sizeof (glibtop_proc_time)); - if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid)) - return; + retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid); + if (retval) + return retval; buf->start_time = proc_state.start_time; buf->utime = proc_state.utime; @@ -76,4 +79,6 @@ glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf, if (server->ncpu) buf->flags |= _glibtop_sysdeps_proc_time_smp; + + return 0; } diff --git a/sysdeps/kernel/procuid.c b/sysdeps/kernel/procuid.c index 20a40a83..8d00eec5 100644 --- a/sysdeps/kernel/procuid.c +++ b/sysdeps/kernel/procuid.c @@ -47,6 +47,8 @@ int glibtop_init_proc_uid_s (glibtop *server) { server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid; + + return 0; } /* Provides detailed information about a process. */ @@ -57,12 +59,13 @@ glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf, { libgtop_proc_state_t proc_state; long priority, nice; - int i; + int retval, i; memset (buf, 0, sizeof (glibtop_proc_uid)); - if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid)) - return; + retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid); + if (retval) + return retval; buf->uid = proc_state.uid; buf->euid = proc_state.euid; @@ -97,4 +100,6 @@ glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf, buf->groups [i] = proc_state.groups [i]; buf->flags = _glibtop_sysdeps_proc_uid; + + return 0; } diff --git a/sysdeps/kernel/sem_limits.c b/sysdeps/kernel/sem_limits.c index b895c28b..0dfaa7ce 100644 --- a/sysdeps/kernel/sem_limits.c +++ b/sysdeps/kernel/sem_limits.c @@ -54,6 +54,8 @@ int glibtop_init_sem_limits_s (glibtop *server) { server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits; + + return 0; } /* Provides information about sysv ipc limits. */ @@ -71,7 +73,8 @@ glibtop_get_sem_limits_s (glibtop *server, glibtop_sem_limits *buf) buf->flags = _glibtop_sysdeps_sem_limits; arg.array = (ushort *) &seminfo; - semctl (0, 0, IPC_INFO, arg); + if (semctl (0, 0, IPC_INFO, arg)) + return -1; buf->semmap = seminfo.semmap; buf->semmni = seminfo.semmni; @@ -83,4 +86,6 @@ glibtop_get_sem_limits_s (glibtop *server, glibtop_sem_limits *buf) buf->semusz = seminfo.semusz; buf->semvmx = seminfo.semvmx; buf->semaem = seminfo.semaem; + + return 0; } diff --git a/sysdeps/kernel/shm_limits.c b/sysdeps/kernel/shm_limits.c index 061722c4..4dcf3338 100644 --- a/sysdeps/kernel/shm_limits.c +++ b/sysdeps/kernel/shm_limits.c @@ -37,6 +37,8 @@ int glibtop_init_shm_limits_s (glibtop *server) { server->sysdeps.shm_limits = _glibtop_sysdeps_shm_limits; + + return 0; } /* Provides information about sysv ipc limits. */ @@ -52,11 +54,14 @@ glibtop_get_shm_limits_s (glibtop *server, glibtop_shm_limits *buf) buf->flags = _glibtop_sysdeps_shm_limits; - shmctl (0, IPC_INFO, (struct shmid_ds *) &shminfo); + if (shmctl (0, IPC_INFO, (struct shmid_ds *) &shminfo)) + return -1; buf->shmmax = shminfo.shmmax; buf->shmmin = shminfo.shmmin; buf->shmmni = shminfo.shmmni; buf->shmseg = shminfo.shmseg; buf->shmall = shminfo.shmall; + + return 0; } diff --git a/sysdeps/kernel/swap.c b/sysdeps/kernel/swap.c index 4076383a..e5c64e4a 100644 --- a/sysdeps/kernel/swap.c +++ b/sysdeps/kernel/swap.c @@ -40,6 +40,8 @@ glibtop_init_swap_s (glibtop *server) { server->sysdeps.swap = _glibtop_sysdeps_swap | _glibtop_sysdeps_swap_stat; + + return 0; } /* Provides information about swap usage. */ @@ -49,11 +51,13 @@ glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) { libgtop_stat_t stat; libgtop_swap_t swap; + int retval; memset (buf, 0, sizeof (glibtop_swap)); - if (glibtop_get_proc_data_swap_s (server, &swap)) - return; + retval = glibtop_get_proc_data_swap_s (server, &swap); + if (retval) + return retval; buf->total = swap.totalswap; buf->free = swap.freeswap; @@ -61,11 +65,14 @@ glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) buf->flags = _glibtop_sysdeps_swap; - if (glibtop_get_proc_data_stat_s (server, &stat)) - return; + retval = glibtop_get_proc_data_stat_s (server, &stat); + if (retval) + return retval; buf->pagein = stat.pswpin; buf->pageout = stat.pswpout; buf->flags |= _glibtop_sysdeps_swap_stat; + + return 0; } diff --git a/sysdeps/kernel/uptime.c b/sysdeps/kernel/uptime.c index 7a696da1..463afc48 100644 --- a/sysdeps/kernel/uptime.c +++ b/sysdeps/kernel/uptime.c @@ -36,6 +36,8 @@ int glibtop_init_uptime_s (glibtop *server) { server->sysdeps.uptime = _glibtop_sysdeps_uptime; + + return 0; } /* Provides uptime and idle time. */ @@ -45,11 +47,13 @@ glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf) { libgtop_stat_t stat; unsigned long total; + int retval; memset (buf, 0, sizeof (glibtop_uptime)); - if (glibtop_get_proc_data_stat_s (server, &stat)) - return; + retval = glibtop_get_proc_data_stat_s (server, &stat); + if (retval) + return retval; total = stat.cpu.user + stat.cpu.nice + stat.cpu.sys + stat.cpu.idle; @@ -59,4 +63,6 @@ glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf) buf->boot_time = stat.boot_time; buf->flags = _glibtop_sysdeps_uptime; + + return 0; }