Reflect latest interface changes.
This commit is contained in:
@@ -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 \
|
sem_limits.c proclist.c procstate.c procuid.c \
|
||||||
proctime.c procmem.c procsignal.c prockernel.c \
|
proctime.c procmem.c procsignal.c prockernel.c \
|
||||||
procsegment.c procargs.c procmap.c netload.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)
|
libgtop_sysdeps_la_LDFLAGS = $(LT_VERSION_INFO)
|
||||||
|
|
||||||
|
@@ -45,6 +45,8 @@ glibtop_init_cpu_s (glibtop *server)
|
|||||||
|
|
||||||
if (server->ncpu)
|
if (server->ncpu)
|
||||||
server->sysdeps.cpu |= _glibtop_sysdeps_cpu_smp;
|
server->sysdeps.cpu |= _glibtop_sysdeps_cpu_smp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about cpu usage. */
|
/* Provides information about cpu usage. */
|
||||||
@@ -53,12 +55,13 @@ int
|
|||||||
glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf)
|
glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf)
|
||||||
{
|
{
|
||||||
libgtop_stat_t stat;
|
libgtop_stat_t stat;
|
||||||
int i;
|
int retval, i;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_cpu));
|
memset (buf, 0, sizeof (glibtop_cpu));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_stat_s (server, &stat))
|
retval = glibtop_get_proc_data_stat_s (server, &stat);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->user = stat.cpu.user;
|
buf->user = stat.cpu.user;
|
||||||
buf->nice = stat.cpu.nice;
|
buf->nice = stat.cpu.nice;
|
||||||
@@ -83,4 +86,6 @@ glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf)
|
|||||||
|
|
||||||
buf->flags |= _glibtop_sysdeps_cpu_smp;
|
buf->flags |= _glibtop_sysdeps_cpu_smp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
54
sysdeps/kernel/interfaces.c
Normal file
54
sysdeps/kernel/interfaces.c
Normal 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;
|
||||||
|
}
|
@@ -35,6 +35,8 @@ int
|
|||||||
glibtop_init_loadavg_s (glibtop *server)
|
glibtop_init_loadavg_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.loadavg = _glibtop_sysdeps_loadavg;
|
server->sysdeps.loadavg = _glibtop_sysdeps_loadavg;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides load averange. */
|
/* Provides load averange. */
|
||||||
@@ -43,15 +45,19 @@ int
|
|||||||
glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf)
|
glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf)
|
||||||
{
|
{
|
||||||
libgtop_stat_t stat;
|
libgtop_stat_t stat;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_loadavg));
|
memset (buf, 0, sizeof (glibtop_loadavg));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_stat_s (server, &stat))
|
retval = glibtop_get_proc_data_stat_s (server, &stat);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->loadavg [0] = stat.loadavg [0];
|
buf->loadavg [0] = stat.loadavg [0];
|
||||||
buf->loadavg [1] = stat.loadavg [1];
|
buf->loadavg [1] = stat.loadavg [1];
|
||||||
buf->loadavg [2] = stat.loadavg [2];
|
buf->loadavg [2] = stat.loadavg [2];
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_loadavg;
|
buf->flags = _glibtop_sysdeps_loadavg;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,8 @@ int
|
|||||||
glibtop_init_mem_s (glibtop *server)
|
glibtop_init_mem_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.mem = _glibtop_sysdeps_mem;
|
server->sysdeps.mem = _glibtop_sysdeps_mem;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about memory usage. */
|
/* Provides information about memory usage. */
|
||||||
@@ -45,11 +47,13 @@ int
|
|||||||
glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
||||||
{
|
{
|
||||||
libgtop_mem_t mem;
|
libgtop_mem_t mem;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_mem));
|
memset (buf, 0, sizeof (glibtop_mem));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_mem_s (server, &mem))
|
retval = glibtop_get_proc_data_mem_s (server, &mem);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->total = mem.totalram;
|
buf->total = mem.totalram;
|
||||||
buf->used = mem.totalram - mem.freeram;
|
buf->used = mem.totalram - mem.freeram;
|
||||||
@@ -59,4 +63,6 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
|||||||
buf->cached = mem.cachedram;
|
buf->cached = mem.cachedram;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_mem;
|
buf->flags = _glibtop_sysdeps_mem;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -38,6 +38,8 @@ int
|
|||||||
glibtop_init_msg_limits_s (glibtop *server)
|
glibtop_init_msg_limits_s (glibtop *server)
|
||||||
{
|
{
|
||||||
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. */
|
||||||
@@ -53,7 +55,8 @@ glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf)
|
|||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_msg_limits;
|
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->msgpool = msginfo.msgpool;
|
||||||
buf->msgmap = msginfo.msgmap;
|
buf->msgmap = msginfo.msgmap;
|
||||||
@@ -62,4 +65,6 @@ glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf)
|
|||||||
buf->msgmni = msginfo.msgmni;
|
buf->msgmni = msginfo.msgmni;
|
||||||
buf->msgssz = msginfo.msgssz;
|
buf->msgssz = msginfo.msgssz;
|
||||||
buf->msgtql = msginfo.msgtql;
|
buf->msgtql = msginfo.msgtql;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
150
sysdeps/kernel/netinfo.c
Normal file
150
sysdeps/kernel/netinfo.c
Normal 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;
|
||||||
|
}
|
@@ -71,89 +71,25 @@ int
|
|||||||
glibtop_init_netload_s (glibtop *server)
|
glibtop_init_netload_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.netload = _glibtop_sysdeps_netload;
|
server->sysdeps.netload = _glibtop_sysdeps_netload;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides network statistics. */
|
/* Provides network statistics. */
|
||||||
|
|
||||||
int
|
int
|
||||||
glibtop_get_netload_s (glibtop *server, glibtop_netload *buf,
|
glibtop_get_netload_s (glibtop *server, glibtop_netload *buf,
|
||||||
const char *interface)
|
const char *interface, unsigned transport,
|
||||||
|
unsigned protocol)
|
||||||
{
|
{
|
||||||
libgtop_netload_t netload;
|
libgtop_netload_t netload;
|
||||||
int skfd;
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_netload));
|
memset (buf, 0, sizeof (glibtop_netload));
|
||||||
|
|
||||||
skfd = socket (AF_INET, SOCK_DGRAM, 0);
|
retval = glibtop_get_proc_data_netload_s (server, &netload, interface);
|
||||||
|
if (retval)
|
||||||
if (skfd) {
|
return retval;
|
||||||
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;
|
|
||||||
|
|
||||||
buf->bytes_in = netload.rx_bytes;
|
buf->bytes_in = netload.rx_bytes;
|
||||||
buf->bytes_out = netload.tx_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->collisions = netload.collisions;
|
||||||
|
|
||||||
buf->flags |= _glibtop_sysdeps_netload;
|
buf->flags |= _glibtop_sysdeps_netload;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -45,6 +45,8 @@ int
|
|||||||
glibtop_init_ppp_s (glibtop *server)
|
glibtop_init_ppp_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.ppp = _glibtop_sysdeps_ppp;
|
server->sysdeps.ppp = _glibtop_sysdeps_ppp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
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) |
|
buf->flags |= (1L << GLIBTOP_PPP_BYTES_IN) |
|
||||||
(1L << GLIBTOP_PPP_BYTES_OUT);
|
(1L << GLIBTOP_PPP_BYTES_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,8 @@ int
|
|||||||
glibtop_init_proc_args_s (glibtop *server)
|
glibtop_init_proc_args_s (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. */
|
||||||
|
@@ -44,6 +44,8 @@ glibtop_init_proc_kernel_s (glibtop *server)
|
|||||||
{
|
{
|
||||||
server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel |
|
server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel |
|
||||||
_glibtop_sysdeps_proc_kernel_kernel;
|
_glibtop_sysdeps_proc_kernel_kernel;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* 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_state_t proc_state;
|
||||||
libgtop_proc_kernel_t proc_kernel;
|
libgtop_proc_kernel_t proc_kernel;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_kernel));
|
memset (buf, 0, sizeof (glibtop_proc_kernel));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid))
|
retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->min_flt = proc_state.min_flt;
|
buf->min_flt = proc_state.min_flt;
|
||||||
buf->maj_flt = proc_state.maj_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;
|
buf->flags = _glibtop_sysdeps_proc_kernel;
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_kernel_s (server, &proc_kernel, pid))
|
retval = glibtop_get_proc_data_proc_kernel_s (server, &proc_kernel, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->nwchan = proc_kernel.wchan;
|
buf->nwchan = proc_kernel.wchan;
|
||||||
buf->flags |= _glibtop_sysdeps_proc_kernel_kernel;
|
buf->flags |= _glibtop_sysdeps_proc_kernel_kernel;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,8 @@ int
|
|||||||
glibtop_init_proclist_s (glibtop *server)
|
glibtop_init_proclist_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proclist = _glibtop_sysdeps_proclist;
|
server->sysdeps.proclist = _glibtop_sysdeps_proclist;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fetch list of currently running processes.
|
/* Fetch list of currently running processes.
|
||||||
|
@@ -45,6 +45,8 @@ int
|
|||||||
glibtop_init_proc_map_s (glibtop *server)
|
glibtop_init_proc_map_s (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. */
|
||||||
|
@@ -57,6 +57,8 @@ glibtop_init_proc_mem_s (glibtop *server)
|
|||||||
pageshift++;
|
pageshift++;
|
||||||
pagesize >>= 1;
|
pagesize >>= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -66,11 +68,13 @@ glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf,
|
|||||||
pid_t pid)
|
pid_t pid)
|
||||||
{
|
{
|
||||||
libgtop_proc_mem_t proc_mem;
|
libgtop_proc_mem_t proc_mem;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_mem));
|
memset (buf, 0, sizeof (glibtop_proc_mem));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid))
|
retval = glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->vsize = proc_mem.segment.vsize;
|
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->share <<= pageshift;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_mem;
|
buf->flags = _glibtop_sysdeps_proc_mem;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -65,6 +65,8 @@ glibtop_init_proc_segment_s (glibtop *server)
|
|||||||
pageshift++;
|
pageshift++;
|
||||||
pagesize >>= 1;
|
pagesize >>= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* 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_mem_t proc_mem;
|
||||||
libgtop_proc_state_t proc_state;
|
libgtop_proc_state_t proc_state;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_segment));
|
memset (buf, 0, sizeof (glibtop_proc_segment));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid))
|
retval = glibtop_get_proc_data_proc_mem_s (server, &proc_mem, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->text_rss = proc_mem.trs;
|
buf->text_rss = proc_mem.trs;
|
||||||
buf->shlib_rss = proc_mem.lrs;
|
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;
|
buf->flags = _glibtop_sysdeps_proc_segment;
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid))
|
retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->start_code = proc_state.start_code;
|
buf->start_code = proc_state.start_code;
|
||||||
buf->end_code = proc_state.end_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->env_end = proc_state.env_end;
|
||||||
|
|
||||||
buf->flags |= _glibtop_sysdeps_proc_segment_state;
|
buf->flags |= _glibtop_sysdeps_proc_segment_state;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -38,6 +38,8 @@ int
|
|||||||
glibtop_init_proc_signal_s (glibtop *server)
|
glibtop_init_proc_signal_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -47,12 +49,13 @@ glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf,
|
|||||||
pid_t pid)
|
pid_t pid)
|
||||||
{
|
{
|
||||||
libgtop_proc_signal_t proc_signal;
|
libgtop_proc_signal_t proc_signal;
|
||||||
int i;
|
int retval, i;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_signal));
|
memset (buf, 0, sizeof (glibtop_proc_signal));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_signal_s (server, &proc_signal, pid))
|
retval = glibtop_get_proc_data_proc_signal_s (server, &proc_signal, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
for (i = 0; i < 1; i++) {
|
for (i = 0; i < 1; i++) {
|
||||||
buf->signal [i] = proc_signal.signal [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;
|
buf->flags = _glibtop_sysdeps_proc_signal;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,8 @@ int
|
|||||||
glibtop_init_proc_state_s (glibtop *server)
|
glibtop_init_proc_state_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_state = _glibtop_sysdeps_proc_state;
|
server->sysdeps.proc_state = _glibtop_sysdeps_proc_state;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -48,11 +50,13 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf,
|
|||||||
pid_t pid)
|
pid_t pid)
|
||||||
{
|
{
|
||||||
libgtop_proc_state_t proc_state;
|
libgtop_proc_state_t proc_state;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_state));
|
memset (buf, 0, sizeof (glibtop_proc_state));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid))
|
retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
memcpy (buf->cmd, proc_state.comm, sizeof (buf->cmd));
|
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->last_processor = proc_state.last_processor;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_state;
|
buf->flags = _glibtop_sysdeps_proc_state;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -43,6 +43,8 @@ glibtop_init_proc_time_s (glibtop *server)
|
|||||||
|
|
||||||
if (server->ncpu)
|
if (server->ncpu)
|
||||||
server->sysdeps.proc_time |= _glibtop_sysdeps_proc_time_smp;
|
server->sysdeps.proc_time |= _glibtop_sysdeps_proc_time_smp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -52,12 +54,13 @@ glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf,
|
|||||||
pid_t pid)
|
pid_t pid)
|
||||||
{
|
{
|
||||||
libgtop_proc_state_t proc_state;
|
libgtop_proc_state_t proc_state;
|
||||||
int i;
|
int retval, i;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_time));
|
memset (buf, 0, sizeof (glibtop_proc_time));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid))
|
retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->start_time = proc_state.start_time;
|
buf->start_time = proc_state.start_time;
|
||||||
buf->utime = proc_state.utime;
|
buf->utime = proc_state.utime;
|
||||||
@@ -76,4 +79,6 @@ glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf,
|
|||||||
|
|
||||||
if (server->ncpu)
|
if (server->ncpu)
|
||||||
buf->flags |= _glibtop_sysdeps_proc_time_smp;
|
buf->flags |= _glibtop_sysdeps_proc_time_smp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -47,6 +47,8 @@ int
|
|||||||
glibtop_init_proc_uid_s (glibtop *server)
|
glibtop_init_proc_uid_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid;
|
server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* 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;
|
libgtop_proc_state_t proc_state;
|
||||||
long priority, nice;
|
long priority, nice;
|
||||||
int i;
|
int retval, i;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_proc_uid));
|
memset (buf, 0, sizeof (glibtop_proc_uid));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_proc_state_s (server, &proc_state, pid))
|
retval = glibtop_get_proc_data_proc_state_s (server, &proc_state, pid);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->uid = proc_state.uid;
|
buf->uid = proc_state.uid;
|
||||||
buf->euid = proc_state.euid;
|
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->groups [i] = proc_state.groups [i];
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_uid;
|
buf->flags = _glibtop_sysdeps_proc_uid;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -54,6 +54,8 @@ int
|
|||||||
glibtop_init_sem_limits_s (glibtop *server)
|
glibtop_init_sem_limits_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits;
|
server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about sysv ipc limits. */
|
/* 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;
|
buf->flags = _glibtop_sysdeps_sem_limits;
|
||||||
|
|
||||||
arg.array = (ushort *) &seminfo;
|
arg.array = (ushort *) &seminfo;
|
||||||
semctl (0, 0, IPC_INFO, arg);
|
if (semctl (0, 0, IPC_INFO, arg))
|
||||||
|
return -1;
|
||||||
|
|
||||||
buf->semmap = seminfo.semmap;
|
buf->semmap = seminfo.semmap;
|
||||||
buf->semmni = seminfo.semmni;
|
buf->semmni = seminfo.semmni;
|
||||||
@@ -83,4 +86,6 @@ glibtop_get_sem_limits_s (glibtop *server, glibtop_sem_limits *buf)
|
|||||||
buf->semusz = seminfo.semusz;
|
buf->semusz = seminfo.semusz;
|
||||||
buf->semvmx = seminfo.semvmx;
|
buf->semvmx = seminfo.semvmx;
|
||||||
buf->semaem = seminfo.semaem;
|
buf->semaem = seminfo.semaem;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,8 @@ int
|
|||||||
glibtop_init_shm_limits_s (glibtop *server)
|
glibtop_init_shm_limits_s (glibtop *server)
|
||||||
{
|
{
|
||||||
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. */
|
||||||
@@ -52,11 +54,14 @@ glibtop_get_shm_limits_s (glibtop *server, glibtop_shm_limits *buf)
|
|||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_shm_limits;
|
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->shmmax = shminfo.shmmax;
|
||||||
buf->shmmin = shminfo.shmmin;
|
buf->shmmin = shminfo.shmmin;
|
||||||
buf->shmmni = shminfo.shmmni;
|
buf->shmmni = shminfo.shmmni;
|
||||||
buf->shmseg = shminfo.shmseg;
|
buf->shmseg = shminfo.shmseg;
|
||||||
buf->shmall = shminfo.shmall;
|
buf->shmall = shminfo.shmall;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -40,6 +40,8 @@ glibtop_init_swap_s (glibtop *server)
|
|||||||
{
|
{
|
||||||
server->sysdeps.swap = _glibtop_sysdeps_swap |
|
server->sysdeps.swap = _glibtop_sysdeps_swap |
|
||||||
_glibtop_sysdeps_swap_stat;
|
_glibtop_sysdeps_swap_stat;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides information about swap usage. */
|
/* Provides information about swap usage. */
|
||||||
@@ -49,11 +51,13 @@ glibtop_get_swap_s (glibtop *server, glibtop_swap *buf)
|
|||||||
{
|
{
|
||||||
libgtop_stat_t stat;
|
libgtop_stat_t stat;
|
||||||
libgtop_swap_t swap;
|
libgtop_swap_t swap;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_swap));
|
memset (buf, 0, sizeof (glibtop_swap));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_swap_s (server, &swap))
|
retval = glibtop_get_proc_data_swap_s (server, &swap);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->total = swap.totalswap;
|
buf->total = swap.totalswap;
|
||||||
buf->free = swap.freeswap;
|
buf->free = swap.freeswap;
|
||||||
@@ -61,11 +65,14 @@ glibtop_get_swap_s (glibtop *server, glibtop_swap *buf)
|
|||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_swap;
|
buf->flags = _glibtop_sysdeps_swap;
|
||||||
|
|
||||||
if (glibtop_get_proc_data_stat_s (server, &stat))
|
retval = glibtop_get_proc_data_stat_s (server, &stat);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
buf->pagein = stat.pswpin;
|
buf->pagein = stat.pswpin;
|
||||||
buf->pageout = stat.pswpout;
|
buf->pageout = stat.pswpout;
|
||||||
|
|
||||||
buf->flags |= _glibtop_sysdeps_swap_stat;
|
buf->flags |= _glibtop_sysdeps_swap_stat;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -36,6 +36,8 @@ int
|
|||||||
glibtop_init_uptime_s (glibtop *server)
|
glibtop_init_uptime_s (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. */
|
||||||
@@ -45,11 +47,13 @@ glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf)
|
|||||||
{
|
{
|
||||||
libgtop_stat_t stat;
|
libgtop_stat_t stat;
|
||||||
unsigned long total;
|
unsigned long total;
|
||||||
|
int retval;
|
||||||
|
|
||||||
memset (buf, 0, sizeof (glibtop_uptime));
|
memset (buf, 0, sizeof (glibtop_uptime));
|
||||||
|
|
||||||
if (glibtop_get_proc_data_stat_s (server, &stat))
|
retval = glibtop_get_proc_data_stat_s (server, &stat);
|
||||||
return;
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
total = stat.cpu.user + stat.cpu.nice + stat.cpu.sys + stat.cpu.idle;
|
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->boot_time = stat.boot_time;
|
||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_uptime;
|
buf->flags = _glibtop_sysdeps_uptime;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user