Reflect latest interface changes.

This commit is contained in:
Martin Baulig
1999-12-18 18:11:27 +00:00
parent 9b245d8113
commit a0056665ae
23 changed files with 349 additions and 110 deletions

View File

@@ -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)

View File

@@ -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;
}

View File

@@ -0,0 +1,54 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, 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 <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/interfaces.h>
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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

150
sysdeps/kernel/netinfo.c Normal file
View File

@@ -0,0 +1,150 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, 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 <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/netinfo.h>
#include <glibtop_private.h>
#include <glibtop.h>
#include <glibtop/error.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
/* GNU LibC */
#include <net/if.h>
#include <netinet/ip_icmp.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <net/if.h>
#else /* Libc 5 */
#include <linux/if.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/icmp.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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. */

View File

@@ -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;
}

View File

@@ -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.

View File

@@ -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. */

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}