Compare commits

..

47 Commits

Author SHA1 Message Date
Martin Baulig
2408a0731c Kernel stuff: We use a new system call `table ()' instead of the /proc
filesystem to fetch data.
1998-06-11 22:42:11 +00:00
Martin Baulig
a3c345e79e Initial revision 1998-06-11 22:42:11 +00:00
Martin Baulig
b2950457ce *** empty log message *** 1998-06-08 00:50:25 +00:00
Martin Baulig
9ce768bc4b Forgot to checkin. 1998-06-08 00:43:32 +00:00
Martin Baulig
c9e7e3a862 Added again.
1998-06-08  Martin Baulig  <martin@home-of-linux.org>

	* support: Added again.

	* Makefile.am (SUBDIRS): Added `support' again.

	* configure.in: First, we check for gnome. If it is not
	found, we run GNOME_SUPPORT_CHECKS; otherwise use
	`$GNOME_LIBDIR -lgnomesupport'.
1998-06-08 00:40:51 +00:00
Martin Baulig
33eefd46c7 Minor fixes for SunOS. 1998-06-08 00:25:47 +00:00
Martin Baulig
be91463190 More profiling stuff. 1998-06-07 21:14:30 +00:00
Martin Baulig
28324c38cc Disable optimize.
1998-06-07  Martin Baulig  <martin@home-of-linux.org>

	* Makefile.am (CFLAGS): Disable optimize.

	* first.c (PROFILE_COUNT): Number of times each function
	should be called. Defaults to 1; to profile the code, you
	can increase this when compiling.
1998-06-07 20:46:21 +00:00
Martin Baulig
4cb95e1477 New file.
1998-06-07  Martin Baulig  <martin@home-of-linux.org>

	* examples/ChangeLog: New file.
1998-06-07 20:46:05 +00:00
Martin Baulig
691cd81192 Bug fix. 1998-06-07 20:42:53 +00:00
Martin Baulig
9c9ad03d60 New file.
1998-06-07  Martin Baulig  <martin@home-of-linux.org>

	* sysdeps/linux/glibtop_machine.h: New file.

	* sysdeps/linux/*.c: Performance optimizations. We now use
	`open' and `read' instead of `fopen' and `fscanf'.
1998-06-07 20:38:02 +00:00
Martin Baulig
c84923132a Using single underscore instead of two underscores for function prefixes
1998-06-07  Martin Baulig  <martin@home-of-linux.org>

	* *.[ch]: Using single underscore instead of two underscores
	for function prefixes (regexp: ``s,__([rspl])\b,_$1,g'') to
	avoid ambiguity with mangled C++ names.
1998-06-07 13:57:45 +00:00
Martin Baulig
85f31a1707 removed that directory.
1998-06-05  Martin Baulig  <baulig@taurus.uni-trier.de>

        * support: removed that directory.

        * configure.in: we check whether '-lgnomesupport' is
        included in $GNOME_LIBS and add it together with
        $GNOME_LIBDIR to LIBSUPPORT in this case.

        Gnome (gnome-libs) is now required to build libgtop,
        added short comment to configure.in how to revert this
        change.

        * Makefile.am: removed `support' subdir.

1998-06-03  Martin Baulig  <baulig@merkur.uni-trier.de>

        * libgtop.spec: New file.

        * Makefile.am (EXTRA_DIST): Added `autogen.sh' and
        `libgtop.spec'.

        * configure.in (LIBGTOP_INCS): is now identically to
        `LIBGTOP_GUILE_INCS'.

        * include/glibtop/global.h: only including intl headers
        while compiling libgtop.

Merging changes from LIBGTOP_STABLE_0_20 into the main trunk.
1998-06-06 22:26:40 +00:00
Martin Baulig
92ec7c6d33 Forgot to checkin the ChangeLog on last three commits. 1998-06-06 18:49:07 +00:00
Martin Baulig
0a323e5080 New file.
1998-06-06  Martin Baulig  <martin@home-of-linux.org>

        * sysdeps/osf1/glibtop_server.h: New file.

        * sysdeps/osf1/*.c: renamed all functions implementing
        features that don't need to be suid to '__s'.
1998-06-06 18:48:17 +00:00
Martin Baulig
222df2c7d6 Removed that file.
1998-06-06  Martin Baulig  <martin@home-of-linux.org>

        * sysdeps/names/procdata.c: Removed that file.

	* sysdeps/names/*.c: Fixed declaration of `glibtop_types_*'.
1998-06-06 18:42:14 +00:00
Martin Baulig
f92d7f9ee7 Changed declaration.
1998-06-06  Martin Baulig  <martin@home-of-linux.org>

        * include/glibtop/*.h (glibtop_types_*): Changed declaration.
1998-06-06 18:41:08 +00:00
Martin Baulig
de5cf356c9 Added `#include <types.h>'.
1998-06-06  Martin Baulig  <martin@home-of-linux.org>

        * glibtop.h: Added `#include <types.h>'.

        * include/glibtop/types.h: New file - numeric constants
        for `glibtop_types_<feature>'.

        * sysdeps/names/*.c (glibtop_types_*): Using numeric
        constants from `types.h' instead of string constants.
1998-06-06 18:19:16 +00:00
rhlabs
d3f9cb80d7 For now just remove the gnomesupport stuff libgtop builds after
its installed and before we make the package

These files are really supposed to be created by gnome-libs

Dr Mike <msf@redhat.com>
1998-06-04 20:55:18 +00:00
rhlabs
fb61de47a0 More file list fun
Dr Mike <msf@redhat.com>
1998-06-04 20:20:00 +00:00
rhlabs
0727d0911c Fixed file list
Dr Mike <msf@redhat.com>
1998-06-04 20:13:51 +00:00
rhlabs
fbb3070abe This file mysteriously disappeared from CVS, I'm putting it back.
Dr Mike <msf@redhat.com>
1998-06-04 19:34:17 +00:00
Arturo Espinosa
402c96e473 #include <locale.h> for several files - Federico 1998-06-03 04:33:37 +00:00
Federico Mena Quintero
44f28a486b #include <locale.h>
1998-06-02  Federico Mena Quintero  <federico@nuclecu.unam.mx>

	* src/server/main.c: #include <locale.h>
1998-06-03 04:30:15 +00:00
Martin Baulig
4aeb33b2b9 Removed this file.
* examples/third.scm: Removed this file.
1998-06-02 22:48:32 +00:00
Martin Baulig
3728e4c34e renamed all functions implementing features to '__p' (since they need to
*  sysdeps/sun4/*.c: renamed all functions implementing
   features to '__p' (since they need to be SGID kmem on SunOS).
1998-06-02 22:23:45 +00:00
Martin Baulig
e71eb0e75b *** empty log message *** 1998-06-02 19:42:53 +00:00
Martin Baulig
f233a1673f renamed to `glibtop_open__r'.
* sysdeps/linux/open.c (glibtop_open): renamed to
`glibtop_open__r'.
1998-06-02 19:41:29 +00:00
Martin Baulig
b96843a960 renamed to `glibtop_open__l'.
* lib/open.c (glibtop_open): renamed to `glibtop_open__l'.
1998-06-02 19:40:53 +00:00
Martin Baulig
eb69a5547f *** empty log message *** 1998-06-02 16:26:07 +00:00
Martin Baulig
7f39d62371 tells `glibtop_open' to use the default server and not to check the
* include/glibtop/open.h (GLIBTOP_OPEN_NO_OVERRIDE):
tells `glibtop_open' to use the default server and not
to check the environment variables.

* include/glibtop/sysdeps.h (_glibtop_sysdeps):
renamed 'dummy' member to 'features'.

* include/glibtop/command.h (GLIBTOP_CMND_SYSDEPS):
added definition here.
1998-06-02 16:20:15 +00:00
Martin Baulig
6f179a3141 swapped lib and src directories. 1998-06-02 16:14:49 +00:00
Martin Baulig
cad4b8f2f5 new directory - proxy server.
* src/proxy/*: new directory - proxy server.
1998-06-02 16:13:31 +00:00
Martin Baulig
beb68e2fc4 new command to get glibtop_server_features.
* src/server/main.c (GLIBTOP_CMND_SYSDEPS): new
command to get glibtop_server_features.
1998-06-02 16:12:28 +00:00
Martin Baulig
b4a16ccd89 If someone needs a stable version of libgtop, please fetch the one from May 27,
stuff is _really_ unstable and under development at the moment and only works
under Linux. Please look in the ChangeLog and NEWS for a more detailed description
of the latest changes.

I'm going to town now. Have fun,

Martin
1998-06-01 15:54:49 +00:00
Martin Baulig
15e73d9b7d *** empty log message *** 1998-06-01 15:25:11 +00:00
Martin Baulig
344bdd330f now using '__r' functions, they are #defined either as the '__p' or the
* sysdeps/common/sysdeps.c: now using '__r' functions,
they are #defined either as the '__p' or the '__s' ones.
1998-06-01 15:22:00 +00:00
Martin Baulig
2546fa37eb changed call of 'glibtop_init__r', it now takes two additional arguments.
* sysdeps/linux/*.c: changed call of 'glibtop_init__r',
it now takes two additional arguments.
1998-06-01 15:21:19 +00:00
Martin Baulig
080dd0850b now using 'glibtop_init' instead of 'glibtop_init__r'.
* examples/{first.c, second.c}: now using 'glibtop_init'
instead of 'glibtop_init__r'.
1998-06-01 15:15:56 +00:00
Martin Baulig
b7be9a7141 added 'dummy' member so 'GLIBTOP_SYSDEPS_<feature>' now start with 1.
* include/glibtop/sysdeps.h: added 'dummy' member so
'GLIBTOP_SYSDEPS_<feature>' now start with 1.

* include/glibtop/*.h: we now #define 'glibtop_get_<feature>'
as 'glibtop_get_<feature>__l' and 'glibtop_get_<feature>__r'
either as the '__p' or the '__s' function.
1998-06-01 15:14:50 +00:00
Martin Baulig
67798e0d7d removed #if's - we now decide at runtime whether to use the server or to
* lib/*.c: removed #if's - we now decide at runtime
whether to use the server or to call the appropriate
function for the sysdeps directory.
1998-06-01 15:09:03 +00:00
Vincent Renardias
6de9ad750b Sun, 31 May 1998 22:52:48 +0200 [Vincent]
* Yet more .FR translations. (and fixed a typo in gxsnmp ;)
1998-05-31 20:54:43 +00:00
Martin Baulig
68162783dc always use `-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no longer
* configure.in (@machine_incs@): always use
`-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no
longer conditional.

* examples/Makefile.am: removed the '_linux' examples.

* src/server/main.c: we now use the '__p' functions,
but only if the appropriate 'GLIBTOP_SUID_<feature>'
has a non-zero value.
1998-05-28 19:29:29 +00:00
Martin Baulig
95b9d824ea renamed all functions implementing features to '__s'.
* sysdeps/linux/*.c: renamed all functions implementing
features to '__s'.
1998-05-28 19:24:24 +00:00
Martin Baulig
7dd0c2eac3 renamed all functions that implementing features to '__l'; we only emit
* lib/*.c: renamed all functions that implementing features
to '__l'; we only emit code for those functions if the
corresponding 'GLIBTOP_SUID_<feature>' has a positive value.
1998-05-28 19:22:48 +00:00
Martin Baulig
62dda3b782 added some new function suffixes: '__l' is a function defined in the
* sysdeps/linux/*.h: added some new function suffixes:
'__l' is a function defined in the client part;
'__s' is a function defined in the sysdeps part and
'__p' is a function that needs special priviledges.
'__r' is mapped either on '__l' or on '__s'.

* sysdeps/linux/glibtop_server.h: New file -
defines system dependent constants 'GLIBTOP_SUID_<feature>'
being either 'GLIBTOP_SYSDEPS_<feature>'+1 depending upon
whether or not this feature requires using the server.

Things may now temporarily get instable; I'm currently implementing some
suggestions Sebastian Wilhelmi has made.
1998-05-28 19:19:49 +00:00
Martin Baulig
4e1e1ccb9f removed that file; it is no longer needed.
* lib/sysdeps.c: removed that file; it is no longer
needed.
1998-05-28 19:08:35 +00:00
192 changed files with 3212 additions and 1042 deletions

139
ChangeLog
View File

@@ -1,9 +1,47 @@
1998-06-12 Martin Baulig <baulig@taurus.uni-trier.de> 1998-06-08 Martin Baulig <martin@home-of-linux.org>
* sysdeps/guile/proclist.c: Replaced call to * support: Added again.
`gh_append2 ()' with `gh_append ()'.
* sysdeps/guile/names/*.c: dito. * Makefile.am (SUBDIRS): Added `support' again.
* configure.in: First, we check for gnome. If it is not
found, we run GNOME_SUPPORT_CHECKS; otherwise use
`$GNOME_LIBDIR -lgnomesupport'.
1998-06-07 Martin Baulig <martin@home-of-linux.org>
* examples/ChangeLog: New file.
* macros/gnome-libgtop-sysdeps.m4: Include
`glibtop_machine.h' for Linux.
* sysdeps/linux/glibtop_machine.h: New file.
* sysdeps/linux/*.c: Performance optimizations. We now use
`open' and `read' instead of `fopen' and `fscanf'.
* *.[ch]: Using single underscore instead of two underscores
for function prefixes (regexp: ``s,__([rspl])\b,_$1,g'') to
avoid ambiguity with mangled C++ names.
1998-06-06 Martin Baulig <martin@home-of-linux.org>
* sysdeps/osf1/glibtop_server.h: New file.
* sysdeps/osf1/*.c: renamed all functions implementing
features that don't need to be suid to '__s'.
* sysdeps/names/procdata.c: Removed that file.
* include/glibtop/*.h (glibtop_types_*): Changed declaration.
* glibtop.h: Added `#include <types.h>'.
* include/glibtop/types.h: New file - numeric constants
for `glibtop_types_<feature>'.
* sysdeps/names/*.c (glibtop_types_*): Using numeric
constants from `types.h' instead of string constants.
1998-06-05 Martin Baulig <baulig@taurus.uni-trier.de> 1998-06-05 Martin Baulig <baulig@taurus.uni-trier.de>
@@ -36,6 +74,99 @@
* src/server/main.c: #include <locale.h> * src/server/main.c: #include <locale.h>
1998-06-02 Martin Baulig <baulig@merkur.uni-trier.de>
* lib/open.c (glibtop_open): renamed to `glibtop_open__l'.
* sysdeps/linux/open.c (glibtop_open): renamed to
`glibtop_open__r'.
* include/glibtop/open.h (GLIBTOP_OPEN_NO_OVERRIDE):
tells `glibtop_open' to use the default server and not
to check the environment variables.
* include/glibtop/sysdeps.h (_glibtop_sysdeps):
renamed 'dummy' member to 'features'.
* src/proxy/*: new directory - proxy server.
* include/glibtop/command.h (GLIBTOP_CMND_SYSDEPS):
added definition here.
* src/server/main.c (GLIBTOP_CMND_SYSDEPS): new
command to get glibtop_server_features.
1998-06-01 Martin Baulig <martin@home-of-linux.org>
* NEWS: added more detailed description of today's and
yesterday's changes.
* include/glibtop/*.h: to use the ChangeLog entry from May 28:
'__l' is a function defined in the client part;
'__s' is a function defined in the sysdeps part and
'__p' is a function that needs special priviledges.
'__r' is mapped either on '__p' or on '__s'.
the function without suffix is mapped on '__l'.
* sysdeps/common/sysdeps.c: now using '__r' functions,
they are #defined either as the '__p' or the '__s' ones.
* sysdeps/linux/*.c: changed call of 'glibtop_init__r',
it now takes two additional arguments.
* examples/{first.c, second.c}: now using 'glibtop_init'
instead of 'glibtop_init__r'.
* include/glibtop/sysdeps.h: added 'dummy' member so
'GLIBTOP_SYSDEPS_<feature>' now start with 1.
* include/glibtop/*.h: we now #define 'glibtop_get_<feature>'
as 'glibtop_get_<feature>__l' and 'glibtop_get_<feature>__r'
either as the '__p' or the '__s' function.
* lib/*.c: removed #if's - we now decide at runtime
whether to use the server or to call the appropriate
function for the sysdeps directory.
1998-05-28 Martin Baulig <baulig@merkur.uni-trier.de>
* src/server/main.c: we now use the '__p' functions,
but only if the appropriate 'GLIBTOP_SUID_<feature>'
has a non-zero value.
* configure.in (@machine_incs@): always use
`-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no
longer conditional.
* examples/Makefile.am: removed the '_linux' examples.
* sysdeps/linux/*.c: renamed all functions implementing
features to '__s'.
* lib/*.c: renamed all functions implementing features
to '__l'; we only emit code for those functions if the
corresponding 'GLIBTOP_SUID_<feature>' has a positive value.
* include/glibtop/*.h: added some new function suffixes:
'__l' is a function defined in the client part;
'__s' is a function defined in the sysdeps part and
'__p' is a function that needs special priviledges.
'__r' is mapped either on '__l' or on '__s'.
* sysdeps/linux/glibtop_server.h: New file -
defines system dependent constants 'GLIBTOP_SUID_<feature>'
being either 'GLIBTOP_SYSDEPS_<feature>'+1 depending upon
whether or not this feature requires using the server.
* lib/sysdeps.c: removed that file; it is no longer
needed.
1998-05-25 Martin Baulig <baulig@merkur.uni-trier.de>
* src/server/main.c: Fixed `broken pipe' error when server
is running SUID; accidentally uses setreuid () instead of
setregid ().
1998-05-24 Martin Baulig <martin@home-of-linux.org> 1998-05-24 Martin Baulig <martin@home-of-linux.org>
* sysdeps/sun4/{open.c, mem.c, glibtop_machine.h}: added * sysdeps/sun4/{open.c, mem.c, glibtop_machine.h}: added

View File

@@ -4,9 +4,9 @@ if GLIBTOP_EXAMPLES
examples_SUBDIRS = examples examples_SUBDIRS = examples
endif endif
built_SUBDIRS = include sysdeps src lib built_SUBDIRS = include sysdeps lib src
SUBDIRS = po intl macros $(built_SUBDIRS) $(examples_SUBDIRS) SUBDIRS = po intl support macros $(built_SUBDIRS) $(examples_SUBDIRS)
DIST_SUBDIRS = po intl macros include sysdeps src lib examples DIST_SUBDIRS = po intl macros include sysdeps src lib examples

111
NEWS
View File

@@ -1,5 +1,116 @@
$Id$ $Id$
Jun/01/1998
===========
* We have some new ``suffix rules'':
'__l' is a function defined in the client part;
'__s' is a function defined in the sysdeps part and
'__p' is a function that needs special priviledges.
'__r' is mapped either on '__p' or on '__s'.
the function without suffix is mapped on '__l'.
* We now decide at runtime whether or not using the server
is required for a particular function. All user programs
now call the '__l' function defined in '-lgtop' (in the lib
subdir). These functions either use 'glibtop_call__l' to
call the server or call the '__r' function.
* A function in the sysdeps directory now has the '__s' suffix
if it do not need any priviledges (and thus can be called directly
from client code) and the '__p' suffix otherwise (when it has to
be called from the server).
* If you call one of these functions:
-> use the '__p' suffix to be sure to get the SUID-safe one
(used in the server).
-> use the '__s' suffix to be sure to get a function that
doesn't need any priviledges.
-> use the '__r' suffix otherwise (it is mapped either on the
'__p' or on the '__s' one).
Only use the '__p' and '__s' functions in a 'GLIBTOP_SUID_<feature>'
conditional, otherwise you'll get undefined symbols !
* The server is now started from 'glibtop_init__r', but only when
it's really needed; for instance on DEC OSF/1 you only need it
for the proc* features - if you program only fetches the CPU usage,
now server will be started.
* Sorry, at the moment everything is a little bit unstable, I'm doing
heavy changes. I've just some great ideas which still need some work:
-> I want to have a SUID server that only implements those features
that need to be SUID; everything else uses the sysdeps code directly.
-> If a program only uses stuff that do not need the server, the
server will not be started at all.
-> I'm working on some kind of proxy server that can be used on a remote
host; in feature one can then use the MDI stuff from ghex in gtop to
have notebook pages displaying processes from different hosts.
* Well it is as much unstable that it only works under Linux at the moment.
1998-06-01 Martin Baulig <martin@home-of-linux.org>
* sysdeps/common/sysdeps.c: now using '__r' functions,
they are #defined either as the '__p' or the '__s' ones.
* sysdeps/linux/*.c: changed call of 'glibtop_init__r',
it now takes two additional arguments.
* examples/{first.c, second.c}: now using 'glibtop_init'
instead of 'glibtop_init__r'.
* include/glibtop/sysdeps.h: added 'dummy' member so
'GLIBTOP_SYSDEPS_<feature>' now start with 1.
* include/glibtop/*.h: we now #define 'glibtop_get_<feature>'
as 'glibtop_get_<feature>__l' and 'glibtop_get_<feature>__r'
either as the '__p' or the '__s' function.
* lib/*.c: removed #if's - we now decide at runtime
whether to use the server or to call the appropriate
function for the sysdeps directory.
1998-05-28 Martin Baulig <baulig@merkur.uni-trier.de>
* src/server/main.c: we now use the '__p' functions,
but only if the appropriate 'GLIBTOP_SUID_<feature>'
has a non-zero value.
* configure.in (@machine_incs@): always use
`-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no
longer conditional.
* examples/Makefile.am: removed the '_linux' examples.
* sysdeps/linux/*.c: renamed all functions implementing
features to '__s'.
* lib/*.c: renamed all functions implementing features
to '__l'; we only emit code for those functions if the
corresponding 'GLIBTOP_SUID_<feature>' has a positive value.
* include/glibtop/*.h: added some new function suffixes:
'__l' is a function defined in the client part;
'__s' is a function defined in the sysdeps part and
'__p' is a function that needs special priviledges.
'__r' is mapped either on '__l' or on '__s'.
* sysdeps/linux/glibtop_server.h: New file -
defines system dependent constants 'GLIBTOP_SUID_<feature>'
being either 'GLIBTOP_SYSDEPS_<feature>'+1 depending upon
whether or not this feature requires using the server.
* lib/sysdeps.c: removed that file; it is no longer
needed.
May/21/1998 May/21/1998
=========== ===========

View File

@@ -4,19 +4,28 @@ dnl
AC_INIT(copyright.txt) AC_INIT(copyright.txt)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(libgtop, 0.01)
AM_MAINTAINER_MODE
AM_ACLOCAL_INCLUDE(macros) AM_ACLOCAL_INCLUDE(macros)
AC_CANONICAL_HOST dnl This is necessary for cross-compiling for programs
dnl that need to run on the build host.
AC_CHECK_PROG(build_CC, gcc, gcc)
if test -z "$build_CC" ; then
AC_CHECK_PROG(build_CC, cc, cc, , , /usr/ucb/cc)
test -z "$build_CC" && \
AC_MSG_ERROR([no acceptable cc found in \$PATH])
fi
AC_CHECK_TOOL(CC,gcc) AC_CHECK_TOOL(CC,gcc)
AC_CHECK_TOOL(CXX,g++)
AC_ISC_POSIX
AC_PROG_CC
AC_STDC_HEADERS
AC_ARG_PROGRAM
AC_CHECK_TOOL(RANLIB,ranlib) AC_CHECK_TOOL(RANLIB,ranlib)
AC_CHECK_TOOL(LD,ld)
AC_CHECK_TOOL(AS,as) AC_CHECK_TOOL(AS,as)
AC_CHECK_TOOL(AR,ar) AC_CHECK_TOOL(AR,ar)
AC_CHECK_TOOL(NM,nm) AC_CHECK_TOOL(NM,nm)
@@ -24,8 +33,25 @@ AC_CHECK_TOOL(NM,nm)
NM=`which $NM` NM=`which $NM`
export CC CXX RANLIB LD AS AR NM export CC CXX RANLIB LD AS AR NM
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
export cross_compiling
AM_PROG_LIBTOOL
AM_INIT_AUTOMAKE(libgtop, 0.01)
dnl If you want to use libgtop without gnome, comment the following line out. dnl If you want to use libgtop without gnome, comment the following line out.
GNOME_INIT GNOME_INIT_HOOK(gnome_found=yes)
if test "x$gnome_found" != xyes; then
GNOME_SUPPORT_CHECKS
else
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
fi
AC_LC_SYSDEPS AC_LC_SYSDEPS
@@ -35,7 +61,7 @@ if test x$libgtop_want_guile = xyes ; then
if test x$libgtop_want_names = xyes ; then if test x$libgtop_want_names = xyes ; then
AC_DEFINE(GLIBTOP_GUILE_NAMES) AC_DEFINE(GLIBTOP_GUILE_NAMES)
fi fi
guile_examples='third third_static third_linux' guile_examples='third third_static'
guile_subdirs='guile' guile_subdirs='guile'
else else
guile_examples= guile_examples=
@@ -49,18 +75,6 @@ fi
AC_SUBST(guile_examples) AC_SUBST(guile_examples)
AC_SUBST(guile_subdirs) AC_SUBST(guile_subdirs)
AC_ISC_POSIX
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_STDC_HEADERS
AC_ARG_PROGRAM
AM_PROG_LEX
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
export cross_compiling
AM_PROG_LIBTOOL AM_PROG_LIBTOOL
dnl You need to uncomment the following line if you want to use libgtop without Gnome. dnl You need to uncomment the following line if you want to use libgtop without Gnome.
@@ -94,7 +108,7 @@ AC_TYPE_SIGNAL
AC_FUNC_STRFTIME AC_FUNC_STRFTIME
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
ALL_LINGUAS="" ALL_LINGUAS="fr"
AM_GNU_GETTEXT AM_GNU_GETTEXT
CFLAGS="$CFLAGS -D_IN_LIBGTOP" CFLAGS="$CFLAGS -D_IN_LIBGTOP"
@@ -174,9 +188,7 @@ if test "x$ac_cv_guile_found" = "xyes" ; then
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS" LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
fi fi
if test "x$libgtop_use_machine_h" = "xyes" ; then machine_incs='-I$(top_srcdir)/sysdeps/@sysdeps_dir@'
machine_incs='-I$(top_srcdir)/sysdeps/@sysdeps_dir@'
fi
AC_SUBST(machine_incs) AC_SUBST(machine_incs)
@@ -187,6 +199,18 @@ AC_SUBST(LIBGTOP_GUILE_INCS)
AC_SUBST(LIBGTOP_BINDIR) AC_SUBST(LIBGTOP_BINDIR)
AC_SUBST(LIBGTOP_SERVER) AC_SUBST(LIBGTOP_SERVER)
LIBSUPPORT=
SUPPORTINCS=
if test "$need_gnome_support" = yes; then
if test "x$gnome_found" = xyes ; then
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
SUPPORTINCS="$GNOME_INCLUDEDIR"
else
LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la'
SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
fi
fi
AC_OUTPUT([ AC_OUTPUT([
Makefile Makefile
po/Makefile.in po/Makefile.in
@@ -204,6 +228,8 @@ sysdeps/osf1/Makefile
sysdeps/linux/Makefile sysdeps/linux/Makefile
src/Makefile src/Makefile
src/server/Makefile src/server/Makefile
src/proxy/Makefile
lib/Makefile lib/Makefile
examples/Makefile examples/Makefile
support/Makefile
macros/Makefile],[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile]) macros/Makefile],[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])

7
examples/ChangeLog Normal file
View File

@@ -0,0 +1,7 @@
1998-06-07 Martin Baulig <martin@home-of-linux.org>
* Makefile.am (CFLAGS): Disable optimize.
* first.c (PROFILE_COUNT): Number of times each function
should be called. Defaults to 1; to profile the code, you
can increase this when compiling.

View File

@@ -6,46 +6,35 @@ INCLUDES = -I$(top_builddir) -I$(top_srcdir) @machine_incs@ \
-I$(top_srcdir)/include -I$(top_srcdir)/intl @GUILE_INCS@ \ -I$(top_srcdir)/include -I$(top_srcdir)/intl @GUILE_INCS@ \
-DGTOPLOCALEDIR=\"$(datadir)/locale\" -D_GNU_SOURCE -DGTOPLOCALEDIR=\"$(datadir)/locale\" -D_GNU_SOURCE
CFLAGS = -Wall -W @CFLAGS@ CFLAGS = -Wall -W @CFLAGS@ -O0
DEFS = @DEFS@ DEFS = @DEFS@
bin_PROGRAMS = first first_static first_linux \ bin_PROGRAMS = first first_static second second_static \
second second_static second_linux \
@guile_examples@ @guile_examples@
EXTRA_PROGRAMS = third third_static third_linux EXTRA_PROGRAMS = third third_static
first_SOURCES = first.c first_SOURCES = first.c
first_LDADD = $(top_builddir)/sysdeps/common/libgtop_common.la \ first_LDADD = $(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/lib/libgtop.la \ $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@INTLLIBS@ @LIBSUPPORT@ @INTLLIBS@ @LIBSUPPORT@
first_static_SOURCES = $(first_SOURCES) first_static_SOURCES = $(first_SOURCES)
first_static_LDADD = $(first_LDADD) first_static_LDADD = $(first_LDADD)
first_static_LDFLAGS = -static first_static_LDFLAGS = -static
first_linux_SOURCES = $(first_SOURCES)
first_linux_LDADD = $(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@INTLLIBS@ @LIBSUPPORT@
first_linux_LDFLAGS = -static
second_SOURCES = second.c second_SOURCES = second.c
second_LDADD = $(top_builddir)/sysdeps/common/libgtop_common.la \ second_LDADD = $(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/lib/libgtop.la \ $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@INTLLIBS@ @LIBSUPPORT@ @INTLLIBS@ @LIBSUPPORT@
second_static_SOURCES = $(second_SOURCES) second_static_SOURCES = $(second_SOURCES)
second_static_LDADD = $(second_LDADD) second_static_LDADD = $(second_LDADD)
second_static_LDFLAGS = -static second_static_LDFLAGS = -static
second_linux_SOURCES = $(second_SOURCES)
second_linux_LDADD = $(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@INTLLIBS@ @LIBSUPPORT@
second_linux_LDFLAGS = -static
if GLIBTOP_NAMES if GLIBTOP_NAMES
third_guile_names_LIBS = $(top_builddir)/sysdeps/guile/names/libgtop_guile_names.la third_guile_names_LIBS = $(top_builddir)/sysdeps/guile/names/libgtop_guile_names.la
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names.la third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names.la
@@ -54,18 +43,11 @@ endif
third_SOURCES = third.c third_SOURCES = third.c
third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile.la \ third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile.la \
$(third_guile_names_LIBS) $(third_names_LIBS) \ $(third_guile_names_LIBS) $(third_names_LIBS) \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/lib/libgtop.la \ $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@GUILE_LIBS@ @INTLLIBS@ @LIBSUPPORT@ @GUILE_LIBS@ @INTLLIBS@ @LIBSUPPORT@
third_static_SOURCES = $(third_SOURCES) third_static_SOURCES = $(third_SOURCES)
third_static_LDADD = $(third_LDADD) third_static_LDADD = $(third_LDADD)
third_static_LDFLAGS = -static third_static_LDFLAGS = -static
third_linux_SOURCES = $(third_SOURCES)
third_linux_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile.la \
$(third_guile_names_LIBS) $(third_names_LIBS) \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@GUILE_LIBS@ @INTLLIBS@ @LIBSUPPORT@
third_linux_LDFLAGS = -static

View File

@@ -29,57 +29,70 @@
#include <glibtop/union.h> #include <glibtop/union.h>
#include <glibtop/sysdeps.h> #include <glibtop/sysdeps.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int int
main (int argc, char *argv []) main (int argc, char *argv [])
{ {
glibtop_union data; glibtop_union data;
glibtop_sysdeps sysdeps; glibtop_sysdeps sysdeps;
unsigned i, *ptr; unsigned c, count, i, *ptr;
pid_t pid, ppid; pid_t pid, ppid;
count = PROFILE_COUNT;
setlocale (LC_ALL, ""); setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR); bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE); textdomain (PACKAGE);
glibtop_init__r (&glibtop_global_server); glibtop_init ();
glibtop_get_cpu (&data.cpu); for (c = 0; c < count; c++)
glibtop_get_cpu (&data.cpu);
fprintf (stderr, "CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n", fprintf (stderr, "CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n",
data.cpu.flags, data.cpu.total, data.cpu.user, data.cpu.nice, data.cpu.flags, data.cpu.total, data.cpu.user, data.cpu.nice,
data.cpu.sys, data.cpu.idle, data.cpu.frequency); data.cpu.sys, data.cpu.idle, data.cpu.frequency);
glibtop_get_mem (&data.mem); for (c = 0; c < count; c++)
glibtop_get_mem (&data.mem);
fprintf (stderr, "Memory (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", fprintf (stderr, "Memory (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
data.mem.flags, data.mem.total, data.mem.used, data.mem.free, data.mem.flags, data.mem.total, data.mem.used, data.mem.free,
data.mem.shared, data.mem.buffer, data.mem.cached, data.mem.shared, data.mem.buffer, data.mem.cached,
data.mem.user, data.mem.locked); data.mem.user, data.mem.locked);
glibtop_get_swap (&data.swap); for (c = 0; c < count; c++)
glibtop_get_swap (&data.swap);
fprintf (stderr, "Swap (0x%08lx): %lu, %lu, %lu\n", data.swap.flags, fprintf (stderr, "Swap (0x%08lx): %lu, %lu, %lu\n", data.swap.flags,
data.swap.total, data.swap.used, data.swap.free); data.swap.total, data.swap.used, data.swap.free);
glibtop_get_uptime (&data.uptime); for (c = 0; c < count; c++)
glibtop_get_uptime (&data.uptime);
fprintf (stderr, "Uptime (0x%08lx): %f, %f\n", data.uptime.flags, fprintf (stderr, "Uptime (0x%08lx): %f, %f\n", data.uptime.flags,
data.uptime.uptime, data.uptime.idletime); data.uptime.uptime, data.uptime.idletime);
glibtop_get_loadavg (&data.loadavg); for (c = 0; c < count; c++)
glibtop_get_loadavg (&data.loadavg);
fprintf (stderr, "Loadavg (0x%08lx): %f, %f, %f\n", data.loadavg.flags, fprintf (stderr, "Loadavg (0x%08lx): %f, %f, %f\n", data.loadavg.flags,
data.loadavg.loadavg [0], data.loadavg.loadavg [1], data.loadavg.loadavg [0], data.loadavg.loadavg [1],
data.loadavg.loadavg [2]); data.loadavg.loadavg [2]);
glibtop_get_shm_limits (&data.shm_limits); for (c = 0; c < count; c++)
glibtop_get_shm_limits (&data.shm_limits);
fprintf (stderr, "Shm Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld\n", fprintf (stderr, "Shm Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld\n",
data.shm_limits.flags, data.shm_limits.shmmax, data.shm_limits.flags, data.shm_limits.shmmax,
data.shm_limits.shmmin, data.shm_limits.shmmni, data.shm_limits.shmmin, data.shm_limits.shmmni,
data.shm_limits.shmseg, data.shm_limits.shmall); data.shm_limits.shmseg, data.shm_limits.shmall);
glibtop_get_msg_limits (&data.msg_limits); for (c = 0; c < count; c++)
glibtop_get_msg_limits (&data.msg_limits);
fprintf (stderr, "Msg Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld, %ld, %ld\n", fprintf (stderr, "Msg Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
data.msg_limits.flags, data.msg_limits.msgpool, data.msg_limits.flags, data.msg_limits.msgpool,
@@ -87,7 +100,8 @@ main (int argc, char *argv [])
data.msg_limits.msgmnb, data.msg_limits.msgmni, data.msg_limits.msgmnb, data.msg_limits.msgmni,
data.msg_limits.msgssz, data.msg_limits.msgtql); data.msg_limits.msgssz, data.msg_limits.msgtql);
glibtop_get_sem_limits (&data.sem_limits); for (c = 0; c < count; c++)
glibtop_get_sem_limits (&data.sem_limits);
fprintf (stderr, "Sem Limits (0x%08lx): " fprintf (stderr, "Sem Limits (0x%08lx): "
"%ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n", "%ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
@@ -134,14 +148,16 @@ main (int argc, char *argv [])
fprintf (stderr, "\n"); fprintf (stderr, "\n");
glibtop_get_proc_state (&data.proc_state, pid); for (c = 0; c < count; c++)
glibtop_get_proc_state (&data.proc_state, pid);
fprintf (stderr, "Proc_State PID %5u (0x%08lx): '%s', %c, %u, %u\n", fprintf (stderr, "Proc_State PID %5u (0x%08lx): '%s', %c, %u, %u\n",
pid, data.proc_state.flags, data.proc_state.cmd, pid, data.proc_state.flags, data.proc_state.cmd,
data.proc_state.state, data.proc_state.uid, data.proc_state.state, data.proc_state.uid,
data.proc_state.gid); data.proc_state.gid);
glibtop_get_proc_uid (&data.proc_uid, pid); for (c = 0; c < count; c++)
glibtop_get_proc_uid (&data.proc_uid, pid);
fprintf (stderr, "Proc_Uid PID %5u (0x%08lx): " fprintf (stderr, "Proc_Uid PID %5u (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", "%d %d %d %d %d %d %d %d %d %d %d %d\n",
@@ -153,7 +169,8 @@ main (int argc, char *argv [])
data.proc_uid.tpgid, data.proc_uid.priority, data.proc_uid.tpgid, data.proc_uid.priority,
data.proc_uid.nice); data.proc_uid.nice);
glibtop_get_proc_mem (&data.proc_mem, pid); for (c = 0; c < count; c++)
glibtop_get_proc_mem (&data.proc_mem, pid);
fprintf (stderr, "Proc_Mem PID %5u (0x%08lx): " fprintf (stderr, "Proc_Mem PID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld\n", pid, data.proc_mem.flags, "%ld %ld %ld %ld %ld %ld\n", pid, data.proc_mem.flags,
@@ -161,7 +178,8 @@ main (int argc, char *argv [])
data.proc_mem.resident, data.proc_mem.share, data.proc_mem.resident, data.proc_mem.share,
data.proc_mem.rss, data.proc_mem.rss_rlim); data.proc_mem.rss, data.proc_mem.rss_rlim);
glibtop_get_proc_time (&data.proc_time, pid); for (c = 0; c < count; c++)
glibtop_get_proc_time (&data.proc_time, pid);
fprintf (stderr, "Proc_Time PID %5u (0x%08lx): " fprintf (stderr, "Proc_Time PID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld %ld\n", pid, data.proc_time.flags, "%ld %ld %ld %ld %ld %ld %ld\n", pid, data.proc_time.flags,
@@ -170,14 +188,16 @@ main (int argc, char *argv [])
data.proc_time.cstime, data.proc_time.timeout, data.proc_time.cstime, data.proc_time.timeout,
data.proc_time.it_real_value); data.proc_time.it_real_value);
glibtop_get_proc_signal (&data.proc_signal, pid); for (c = 0; c < count; c++)
glibtop_get_proc_signal (&data.proc_signal, pid);
fprintf (stderr, "Proc_Signal PID %5u (0x%08lx): " fprintf (stderr, "Proc_Signal PID %5u (0x%08lx): "
"%d %d %d %d\n", pid, data.proc_signal.flags, "%d %d %d %d\n", pid, data.proc_signal.flags,
data.proc_signal.signal, data.proc_signal.blocked, data.proc_signal.signal, data.proc_signal.blocked,
data.proc_signal.sigignore, data.proc_signal.sigcatch); data.proc_signal.sigignore, data.proc_signal.sigcatch);
glibtop_get_proc_kernel (&data.proc_kernel, pid); for (c = 0; c < count; c++)
glibtop_get_proc_kernel (&data.proc_kernel, pid);
fprintf (stderr, "Proc_Kernel PID %5u (0x%08lx): " fprintf (stderr, "Proc_Kernel PID %5u (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", pid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", pid,
@@ -187,7 +207,8 @@ main (int argc, char *argv [])
data.proc_kernel.kstk_esp, data.proc_kernel.kstk_eip, data.proc_kernel.kstk_esp, data.proc_kernel.kstk_eip,
data.proc_kernel.wchan); data.proc_kernel.wchan);
glibtop_get_proc_segment (&data.proc_segment, pid); for (c = 0; c < count; c++)
glibtop_get_proc_segment (&data.proc_segment, pid);
fprintf (stderr, "Proc_Segment PID %5u (0x%08lx): " fprintf (stderr, "Proc_Segment PID %5u (0x%08lx): "
"%ld %ld %ld %ld %lu %lu %lu\n", pid, data.proc_segment.flags, "%ld %ld %ld %ld %lu %lu %lu\n", pid, data.proc_segment.flags,
@@ -198,14 +219,16 @@ main (int argc, char *argv [])
fprintf (stderr, "\n"); fprintf (stderr, "\n");
glibtop_get_proc_state (&data.proc_state, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_state (&data.proc_state, ppid);
fprintf (stderr, "Proc_State PPID %5u (0x%08lx): '%s', %c, %u, %u\n", fprintf (stderr, "Proc_State PPID %5u (0x%08lx): '%s', %c, %u, %u\n",
ppid, data.proc_state.flags, data.proc_state.cmd, ppid, data.proc_state.flags, data.proc_state.cmd,
data.proc_state.state, data.proc_state.uid, data.proc_state.state, data.proc_state.uid,
data.proc_state.gid); data.proc_state.gid);
glibtop_get_proc_uid (&data.proc_uid, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_uid (&data.proc_uid, ppid);
fprintf (stderr, "Proc_Uid PPID %5u (0x%08lx): " fprintf (stderr, "Proc_Uid PPID %5u (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", "%d %d %d %d %d %d %d %d %d %d %d %d\n",
@@ -217,7 +240,8 @@ main (int argc, char *argv [])
data.proc_uid.tpgid, data.proc_uid.priority, data.proc_uid.tpgid, data.proc_uid.priority,
data.proc_uid.nice); data.proc_uid.nice);
glibtop_get_proc_mem (&data.proc_mem, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_mem (&data.proc_mem, ppid);
fprintf (stderr, "Proc_Mem PPID %5u (0x%08lx): " fprintf (stderr, "Proc_Mem PPID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld\n", ppid, data.proc_mem.flags, "%ld %ld %ld %ld %ld %ld\n", ppid, data.proc_mem.flags,
@@ -225,7 +249,8 @@ main (int argc, char *argv [])
data.proc_mem.resident, data.proc_mem.share, data.proc_mem.resident, data.proc_mem.share,
data.proc_mem.rss, data.proc_mem.rss_rlim); data.proc_mem.rss, data.proc_mem.rss_rlim);
glibtop_get_proc_time (&data.proc_time, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_time (&data.proc_time, ppid);
fprintf (stderr, "Proc_Time PPID %5u (0x%08lx): " fprintf (stderr, "Proc_Time PPID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld %ld\n", ppid, data.proc_time.flags, "%ld %ld %ld %ld %ld %ld %ld\n", ppid, data.proc_time.flags,
@@ -234,14 +259,16 @@ main (int argc, char *argv [])
data.proc_time.cstime, data.proc_time.timeout, data.proc_time.cstime, data.proc_time.timeout,
data.proc_time.it_real_value); data.proc_time.it_real_value);
glibtop_get_proc_signal (&data.proc_signal, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_signal (&data.proc_signal, ppid);
fprintf (stderr, "Proc_Signal PPID %5u (0x%08lx): " fprintf (stderr, "Proc_Signal PPID %5u (0x%08lx): "
"%d %d %d %d\n", ppid, data.proc_signal.flags, "%d %d %d %d\n", ppid, data.proc_signal.flags,
data.proc_signal.signal, data.proc_signal.blocked, data.proc_signal.signal, data.proc_signal.blocked,
data.proc_signal.sigignore, data.proc_signal.sigcatch); data.proc_signal.sigignore, data.proc_signal.sigcatch);
glibtop_get_proc_kernel (&data.proc_kernel, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
fprintf (stderr, "Proc_Kernel PPID %5u (0x%08lx): " fprintf (stderr, "Proc_Kernel PPID %5u (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", ppid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", ppid,
@@ -251,7 +278,8 @@ main (int argc, char *argv [])
data.proc_kernel.kstk_esp, data.proc_kernel.kstk_eip, data.proc_kernel.kstk_esp, data.proc_kernel.kstk_eip,
data.proc_kernel.wchan); data.proc_kernel.wchan);
glibtop_get_proc_segment (&data.proc_segment, ppid); for (c = 0; c < count; c++)
glibtop_get_proc_segment (&data.proc_segment, ppid);
fprintf (stderr, "Proc_Segment PPID %5u (0x%08lx): " fprintf (stderr, "Proc_Segment PPID %5u (0x%08lx): "
"%ld %ld %ld %ld %lu %lu %lu\n", ppid, data.proc_segment.flags, "%ld %ld %ld %ld %lu %lu %lu\n", ppid, data.proc_segment.flags,
@@ -262,14 +290,16 @@ main (int argc, char *argv [])
fprintf (stderr, "\n"); fprintf (stderr, "\n");
glibtop_get_proc_state (&data.proc_state, 1); for (c = 0; c < count; c++)
glibtop_get_proc_state (&data.proc_state, 1);
fprintf (stderr, "Proc_State INIT %5u (0x%08lx): '%s', %c, %u, %u\n", fprintf (stderr, "Proc_State INIT %5u (0x%08lx): '%s', %c, %u, %u\n",
1, data.proc_state.flags, data.proc_state.cmd, 1, data.proc_state.flags, data.proc_state.cmd,
data.proc_state.state, data.proc_state.uid, data.proc_state.state, data.proc_state.uid,
data.proc_state.gid); data.proc_state.gid);
glibtop_get_proc_uid (&data.proc_uid, 1); for (c = 0; c < count; c++)
glibtop_get_proc_uid (&data.proc_uid, 1);
fprintf (stderr, "Proc_Uid INIT %5u (0x%08lx): " fprintf (stderr, "Proc_Uid INIT %5u (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", "%d %d %d %d %d %d %d %d %d %d %d %d\n",
@@ -281,7 +311,8 @@ main (int argc, char *argv [])
data.proc_uid.tpgid, data.proc_uid.priority, data.proc_uid.tpgid, data.proc_uid.priority,
data.proc_uid.nice); data.proc_uid.nice);
glibtop_get_proc_mem (&data.proc_mem, 1); for (c = 0; c < count; c++)
glibtop_get_proc_mem (&data.proc_mem, 1);
fprintf (stderr, "Proc_Mem INIT %5u (0x%08lx): " fprintf (stderr, "Proc_Mem INIT %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld\n", 1, data.proc_mem.flags, "%ld %ld %ld %ld %ld %ld\n", 1, data.proc_mem.flags,
@@ -289,7 +320,8 @@ main (int argc, char *argv [])
data.proc_mem.resident, data.proc_mem.share, data.proc_mem.resident, data.proc_mem.share,
data.proc_mem.rss, data.proc_mem.rss_rlim); data.proc_mem.rss, data.proc_mem.rss_rlim);
glibtop_get_proc_time (&data.proc_time, 1); for (c = 0; c < count; c++)
glibtop_get_proc_time (&data.proc_time, 1);
fprintf (stderr, "Proc_Time INIT %5u (0x%08lx): " fprintf (stderr, "Proc_Time INIT %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld %ld\n", 1, data.proc_time.flags, "%ld %ld %ld %ld %ld %ld %ld\n", 1, data.proc_time.flags,
@@ -298,14 +330,16 @@ main (int argc, char *argv [])
data.proc_time.cstime, data.proc_time.timeout, data.proc_time.cstime, data.proc_time.timeout,
data.proc_time.it_real_value); data.proc_time.it_real_value);
glibtop_get_proc_signal (&data.proc_signal, 1); for (c = 0; c < count; c++)
glibtop_get_proc_signal (&data.proc_signal, 1);
fprintf (stderr, "Proc_Signal INIT %5u (0x%08lx): " fprintf (stderr, "Proc_Signal INIT %5u (0x%08lx): "
"%d %d %d %d\n", 1, data.proc_signal.flags, "%d %d %d %d\n", 1, data.proc_signal.flags,
data.proc_signal.signal, data.proc_signal.blocked, data.proc_signal.signal, data.proc_signal.blocked,
data.proc_signal.sigignore, data.proc_signal.sigcatch); data.proc_signal.sigignore, data.proc_signal.sigcatch);
glibtop_get_proc_kernel (&data.proc_kernel, 1); for (c = 0; c < count; c++)
glibtop_get_proc_kernel (&data.proc_kernel, 1);
fprintf (stderr, "Proc_Kernel INIT %5u (0x%08lx): " fprintf (stderr, "Proc_Kernel INIT %5u (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1, "%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
@@ -315,7 +349,8 @@ main (int argc, char *argv [])
data.proc_kernel.kstk_esp, data.proc_kernel.kstk_eip, data.proc_kernel.kstk_esp, data.proc_kernel.kstk_eip,
data.proc_kernel.wchan); data.proc_kernel.wchan);
glibtop_get_proc_segment (&data.proc_segment, 1); for (c = 0; c < count; c++)
glibtop_get_proc_segment (&data.proc_segment, 1);
fprintf (stderr, "Proc_Segment INIT %5u (0x%08lx): " fprintf (stderr, "Proc_Segment INIT %5u (0x%08lx): "
"%ld %ld %ld %ld %lu %lu %lu\n", 1, data.proc_segment.flags, "%ld %ld %ld %ld %lu %lu %lu\n", 1, data.proc_segment.flags,

View File

@@ -41,7 +41,7 @@ main (int argc, char *argv [])
bindtextdomain (PACKAGE, GTOPLOCALEDIR); bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE); textdomain (PACKAGE);
glibtop_init__r (&glibtop_global_server); glibtop_init ();
glibtop_get_sysdeps (&sysdeps); glibtop_get_sysdeps (&sysdeps);

View File

@@ -24,6 +24,9 @@
#include <glibtop/global.h> #include <glibtop/global.h>
#include <glibtop_server.h>
#include <glibtop/types.h>
#ifdef HAVE_GLIBTOP_MACHINE_H #ifdef HAVE_GLIBTOP_MACHINE_H
#include <glibtop_machine.h> #include <glibtop_machine.h>
#endif #endif
@@ -40,14 +43,23 @@ struct _glibtop
int output [2]; /* Pipe client -> server */ int output [2]; /* Pipe client -> server */
unsigned long os_version_code; /* Version code of the operating system */ unsigned long os_version_code; /* Version code of the operating system */
const char *name; /* Program name for error messages */ const char *name; /* Program name for error messages */
const char *server_command; /* Command used to invoke server */
const char *server_host; /* Host the server should run on */
const char *server_user; /* Name of the user on the target host */
const char *server_rsh; /* Command used to connect to the target host */
unsigned long features; /* Server is required for this features */
pid_t pid; /* PID of the server */ pid_t pid; /* PID of the server */
}; };
extern glibtop *glibtop_global_server; extern glibtop *glibtop_global_server;
#define glibtop_init() glibtop_init__r(&glibtop_global_server); extern const unsigned long glibtop_server_features;
extern glibtop *glibtop_init__r __P((glibtop **)); #define glibtop_init() glibtop_init_r(&glibtop_global_server, 0, 0);
#define glibtop_close() glibtop_close_r(&glibtop_global_server);
extern glibtop *glibtop_init_r __P((glibtop **, const unsigned long, const unsigned));
#ifdef HAVE_GUILE #ifdef HAVE_GUILE

View File

@@ -26,7 +26,7 @@
__BEGIN_DECLS __BEGIN_DECLS
extern void glibtop_close __P((glibtop *)); extern void glibtop_close_r __P((glibtop *));
__END_DECLS __END_DECLS

View File

@@ -29,6 +29,7 @@ __BEGIN_DECLS
#define GLIBTOP_CMND_QUIT 0 #define GLIBTOP_CMND_QUIT 0
#define GLIBTOP_CMND_SYSDEPS 1 #define GLIBTOP_CMND_SYSDEPS 1
#define GLIBTOP_CMND_CPU 2 #define GLIBTOP_CMND_CPU 2
#define GLIBTOP_CMND_MEM 3 #define GLIBTOP_CMND_MEM 3
#define GLIBTOP_CMND_SWAP 4 #define GLIBTOP_CMND_SWAP 4
@@ -58,9 +59,10 @@ struct _glibtop_command
size_t size; size_t size;
}; };
#define glibtop_call(p1, p2, p3, p4) glibtop_call__r(glibtop_global_server, p1, p2, p3, p4) #define glibtop_call(p1, p2, p3, p4) glibtop_call_r(glibtop_global_server, p1, p2, p3, p4)
extern void *glibtop_call__r __P((glibtop *, unsigned, size_t, void *, size_t, void *)); extern void *glibtop_call_l __P((glibtop *, unsigned, size_t, void *, size_t, void *));
extern void *glibtop_call_s __P((glibtop *, unsigned, size_t, void *, size_t, void *));
__END_DECLS __END_DECLS

View File

@@ -49,9 +49,21 @@ struct _glibtop_cpu
frequency; /* GLIBTOP_CPU_FREQUENCY */ frequency; /* GLIBTOP_CPU_FREQUENCY */
}; };
#define glibtop_get_cpu(cpu) glibtop_get_cpu__r(glibtop_global_server, cpu) #define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
extern void glibtop_get_cpu__r __P((glibtop *, glibtop_cpu *)); #if GLIBTOP_SUID_CPU
#define glibtop_get_cpu_r glibtop_get_cpu_p
#else
#define glibtop_get_cpu_r glibtop_get_cpu_s
#endif
extern void glibtop_get_cpu_l __P((glibtop *, glibtop_cpu *));
#if GLIBTOP_SUID_CPU
extern void glibtop_get_cpu_p __P((glibtop *, glibtop_cpu *));
#else
extern void glibtop_get_cpu_s __P((glibtop *, glibtop_cpu *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -77,7 +89,7 @@ extern SCM glibtop_guile_descriptions_cpu __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_cpu []; extern const char *glibtop_names_cpu [];
extern const char *glibtop_types_cpu []; extern const unsigned glibtop_types_cpu [];
extern const char *glibtop_labels_cpu []; extern const char *glibtop_labels_cpu [];
extern const char *glibtop_descriptions_cpu []; extern const char *glibtop_descriptions_cpu [];

View File

@@ -26,9 +26,9 @@
__BEGIN_DECLS __BEGIN_DECLS
#define glibtop_error(p1, args...) glibtop_error__r(glibtop_global_server , p1 , ## args) #define glibtop_error(p1, args...) glibtop_error_r(glibtop_global_server , p1 , ## args)
extern void glibtop_error__r __P((glibtop *, char *, ...)); extern void glibtop_error_r __P((glibtop *, char *, ...));
__END_DECLS __END_DECLS

View File

@@ -39,9 +39,21 @@ struct _glibtop_loadavg
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */ double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
}; };
#define glibtop_get_loadavg(loadavg) glibtop_get_loadavg__r(glibtop_global_server, loadavg) #define glibtop_get_loadavg(loadavg) glibtop_get_loadavg_l(glibtop_global_server, loadavg)
extern void glibtop_get_loadavg__r __P((glibtop *, glibtop_loadavg *)); #if GLIBTOP_SUID_LOADAVG
#define glibtop_get_loadavg_r glibtop_get_loadavg_p
#else
#define glibtop_get_loadavg_r glibtop_get_loadavg_s
#endif
extern void glibtop_get_loadavg_l __P((glibtop *, glibtop_loadavg *));
#if GLIBTOP_SUID_LOADAVG
extern void glibtop_get_loadavg_p __P((glibtop *, glibtop_loadavg *));
#else
extern void glibtop_get_loadavg_s __P((glibtop *, glibtop_loadavg *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE

View File

@@ -53,9 +53,21 @@ struct _glibtop_mem
locked; /* GLIBTOP_MEM_LOCKED */ locked; /* GLIBTOP_MEM_LOCKED */
}; };
#define glibtop_get_mem(mem) glibtop_get_mem__r(glibtop_global_server, mem) #define glibtop_get_mem(mem) glibtop_get_mem_l(glibtop_global_server, mem)
extern void glibtop_get_mem__r __P((glibtop *, glibtop_mem *)); #if GLIBTOP_SUID_MEM
#define glibtop_get_mem_r glibtop_get_mem_p
#else
#define glibtop_get_mem_r glibtop_get_mem_s
#endif
extern void glibtop_get_mem_l __P((glibtop *, glibtop_mem *));
#if GLIBTOP_SUID_MEM
extern void glibtop_get_mem_p __P((glibtop *, glibtop_mem *));
#else
extern void glibtop_get_mem_s __P((glibtop *, glibtop_mem *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -81,7 +93,7 @@ extern SCM glibtop_guile_descriptions_mem __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_mem []; extern const char *glibtop_names_mem [];
extern const char *glibtop_types_mem []; extern const unsigned glibtop_types_mem [];
extern const char *glibtop_labels_mem []; extern const char *glibtop_labels_mem [];
extern const char *glibtop_descriptions_mem []; extern const char *glibtop_descriptions_mem [];

View File

@@ -51,9 +51,21 @@ struct _glibtop_msg_limits
msgtql; /* GLIBTOP_IPC_MSGTQL */ msgtql; /* GLIBTOP_IPC_MSGTQL */
}; };
#define glibtop_get_msg_limits(msg) glibtop_get_msg_limits__r(glibtop_global_server, msg) #define glibtop_get_msg_limits(msg) glibtop_get_msg_limits_l(glibtop_global_server, msg)
extern void glibtop_get_msg_limits__r __P((glibtop *, glibtop_msg_limits *)); #if GLIBTOP_SUID_MSG_LIMITS
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_p
#else
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_s
#endif
extern void glibtop_get_msg_limits_l __P((glibtop *, glibtop_msg_limits *));
#if GLIBTOP_SUID_MSG_LIMITS
extern void glibtop_get_msg_limits_p __P((glibtop *, glibtop_msg_limits *));
#else
extern void glibtop_get_msg_limits_s __P((glibtop *, glibtop_msg_limits *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -79,7 +91,7 @@ extern SCM glibtop_guile_descriptions_msg_limits __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_msg_limits []; extern const char *glibtop_names_msg_limits [];
extern const char *glibtop_types_msg_limits []; extern const unsigned glibtop_types_msg_limits [];
extern const char *glibtop_labels_msg_limits []; extern const char *glibtop_labels_msg_limits [];
extern const char *glibtop_descriptions_msg_limits []; extern const char *glibtop_descriptions_msg_limits [];

View File

@@ -26,7 +26,11 @@
__BEGIN_DECLS __BEGIN_DECLS
extern void glibtop_open __P((glibtop *, const char *)); #define GLIBTOP_OPEN_NO_OVERRIDE 1
extern void glibtop_open_l __P((glibtop *, const char *, const unsigned long, const unsigned));
extern void glibtop_open_r __P((glibtop *, const char *, const unsigned long, const unsigned));
__END_DECLS __END_DECLS

View File

@@ -60,9 +60,21 @@ struct _glibtop_proc_kernel
* proc is sleeping in */ * proc is sleeping in */
}; };
#define glibtop_get_proc_kernel(p1, p2) glibtop_get_proc_kernel__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_kernel(p1, p2) glibtop_get_proc_kernel_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_kernel__r __P((glibtop *, glibtop_proc_kernel *, pid_t)); #if GLIBTOP_SUID_PROC_KERNEL
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_p
#else
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_s
#endif
extern void glibtop_get_proc_kernel_l __P((glibtop *, glibtop_proc_kernel *, pid_t));
#if GLIBTOP_SUID_PROC_KERNEL
extern void glibtop_get_proc_kernel_p __P((glibtop *, glibtop_proc_kernel *, pid_t));
#else
extern void glibtop_get_proc_kernel_s __P((glibtop *, glibtop_proc_kernel *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -87,8 +99,8 @@ extern SCM glibtop_guile_descriptions_proc_kernel __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_types_proc_kernel [];
extern const char *glibtop_names_proc_kernel []; extern const char *glibtop_names_proc_kernel [];
extern const unsigned glibtop_types_proc_kernel [];
extern const char *glibtop_labels_proc_kernel []; extern const char *glibtop_labels_proc_kernel [];
extern const char *glibtop_descriptions_proc_kernel []; extern const char *glibtop_descriptions_proc_kernel [];

View File

@@ -43,9 +43,21 @@ struct _glibtop_proclist
size; /* GLIBTOP_PROCLIST_SIZE */ size; /* GLIBTOP_PROCLIST_SIZE */
}; };
#define glibtop_get_proclist(proclist) glibtop_get_proclist__r(glibtop_global_server, proclist) #define glibtop_get_proclist(proclist) glibtop_get_proclist_l(glibtop_global_server, proclist)
extern unsigned *glibtop_get_proclist__r __P((glibtop *, glibtop_proclist *)); #if GLIBTOP_SUID_PROCLIST
#define glibtop_get_proclist_r glibtop_get_proclist_p
#else
#define glibtop_get_proclist_r glibtop_get_proclist_s
#endif
extern unsigned *glibtop_get_proclist_l __P((glibtop *, glibtop_proclist *));
#if GLIBTOP_SUID_PROCLIST
extern unsigned *glibtop_get_proclist_p __P((glibtop *, glibtop_proclist *));
#else
extern unsigned *glibtop_get_proclist_s __P((glibtop *, glibtop_proclist *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -71,7 +83,7 @@ extern SCM glibtop_guile_descriptions_proclist __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_proclist []; extern const char *glibtop_names_proclist [];
extern const char *glibtop_types_proclist []; extern const unsigned glibtop_types_proclist [];
extern const char *glibtop_labels_proclist []; extern const char *glibtop_labels_proclist [];
extern const char *glibtop_descriptions_proclist []; extern const char *glibtop_descriptions_proclist [];

View File

@@ -53,9 +53,21 @@ struct _glibtop_proc_mem
* of the process; usually 2,147,483,647 */ * of the process; usually 2,147,483,647 */
}; };
#define glibtop_get_proc_mem(p1, p2) glibtop_get_proc_mem__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_mem(p1, p2) glibtop_get_proc_mem_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_mem__r __P((glibtop *, glibtop_proc_mem *, pid_t)); #if GLIBTOP_SUID_PROC_MEM
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_p
#else
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_s
#endif
extern void glibtop_get_proc_mem_l __P((glibtop *, glibtop_proc_mem *, pid_t));
#if GLIBTOP_SUID_PROC_MEM
extern void glibtop_get_proc_mem_p __P((glibtop *, glibtop_proc_mem *, pid_t));
#else
extern void glibtop_get_proc_mem_s __P((glibtop *, glibtop_proc_mem *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -81,7 +93,7 @@ extern SCM glibtop_guile_descriptions_proc_mem __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_proc_mem []; extern const char *glibtop_names_proc_mem [];
extern const char *glibtop_types_proc_mem []; extern const unsigned glibtop_types_proc_mem [];
extern const char *glibtop_labels_proc_mem []; extern const char *glibtop_labels_proc_mem [];
extern const char *glibtop_descriptions_proc_mem []; extern const char *glibtop_descriptions_proc_mem [];

View File

@@ -54,9 +54,21 @@ struct _glibtop_proc_segment
start_stack; /* address of the bottom of stack segment */ start_stack; /* address of the bottom of stack segment */
}; };
#define glibtop_get_proc_segment(p1, p2) glibtop_get_proc_segment__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_segment(p1, p2) glibtop_get_proc_segment_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_segment__r __P((glibtop *, glibtop_proc_segment *, pid_t)); #if GLIBTOP_SUID_PROC_SEGMENT
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_p
#else
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_s
#endif
extern void glibtop_get_proc_segment_l __P((glibtop *, glibtop_proc_segment *, pid_t));
#if GLIBTOP_SUID_PROC_SEGMENT
extern void glibtop_get_proc_segment_p __P((glibtop *, glibtop_proc_segment *, pid_t));
#else
extern void glibtop_get_proc_segment_s __P((glibtop *, glibtop_proc_segment *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -81,8 +93,8 @@ extern SCM glibtop_guile_descriptions_proc_segment __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_types_proc_segment [];
extern const char *glibtop_names_proc_segment []; extern const char *glibtop_names_proc_segment [];
extern const unsigned glibtop_types_proc_segment [];
extern const char *glibtop_labels_proc_segment []; extern const char *glibtop_labels_proc_segment [];
extern const char *glibtop_descriptions_proc_segment []; extern const char *glibtop_descriptions_proc_segment [];

View File

@@ -47,9 +47,21 @@ struct _glibtop_proc_signal
sigcatch; /* mask of caught signals */ sigcatch; /* mask of caught signals */
}; };
#define glibtop_get_proc_signal(p1, p2) glibtop_get_proc_signal__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_signal(p1, p2) glibtop_get_proc_signal_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_signal__r __P((glibtop *, glibtop_proc_signal *, pid_t)); #if GLIBTOP_SUID_PROC_SIGNAL
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_p
#else
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_s
#endif
extern void glibtop_get_proc_signal_l __P((glibtop *, glibtop_proc_signal *, pid_t));
#if GLIBTOP_SUID_PROC_SIGNAL
extern void glibtop_get_proc_signal_p __P((glibtop *, glibtop_proc_signal *, pid_t));
#else
extern void glibtop_get_proc_signal_s __P((glibtop *, glibtop_proc_signal *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -75,7 +87,7 @@ extern SCM glibtop_guile_descriptions_proc_signal __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_proc_signal []; extern const char *glibtop_names_proc_signal [];
extern const char *glibtop_types_proc_signal []; extern const unsigned glibtop_types_proc_signal [];
extern const char *glibtop_labels_proc_signal []; extern const char *glibtop_labels_proc_signal [];
extern const char *glibtop_descriptions_proc_signal []; extern const char *glibtop_descriptions_proc_signal [];

View File

@@ -54,9 +54,21 @@ struct _glibtop_proc_state
gid; /* GID of process */ gid; /* GID of process */
}; };
#define glibtop_get_proc_state(p1, p2) glibtop_get_proc_state__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_state(p1, p2) glibtop_get_proc_state_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_state__r __P((glibtop *, glibtop_proc_state *, pid_t)); #if GLIBTOP_SUID_PROC_STATE
#define glibtop_get_proc_state_r glibtop_get_proc_state_p
#else
#define glibtop_get_proc_state_r glibtop_get_proc_state_s
#endif
extern void glibtop_get_proc_state_l __P((glibtop *, glibtop_proc_state *, pid_t));
#if GLIBTOP_SUID_PROC_STATE
extern void glibtop_get_proc_state_p __P((glibtop *, glibtop_proc_state *, pid_t));
#else
extern void glibtop_get_proc_state_s __P((glibtop *, glibtop_proc_state *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -82,7 +94,7 @@ extern SCM glibtop_guile_descriptions_proc_state __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_proc_state []; extern const char *glibtop_names_proc_state [];
extern const char *glibtop_types_proc_state []; extern const unsigned glibtop_types_proc_state [];
extern const char *glibtop_labels_proc_state []; extern const char *glibtop_labels_proc_state [];
extern const char *glibtop_descriptions_proc_state []; extern const char *glibtop_descriptions_proc_state [];

View File

@@ -59,9 +59,21 @@ struct _glibtop_proc_time
* due to an interval timer. */ * due to an interval timer. */
}; };
#define glibtop_get_proc_time(p1, p2) glibtop_get_proc_time__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_time(p1, p2) glibtop_get_proc_time_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_time__r __P((glibtop *, glibtop_proc_time *, pid_t)); #if GLIBTOP_SUID_PROC_TIME
#define glibtop_get_proc_time_r glibtop_get_proc_time_p
#else
#define glibtop_get_proc_time_r glibtop_get_proc_time_s
#endif
extern void glibtop_get_proc_time_l __P((glibtop *, glibtop_proc_time *, pid_t));
#if GLIBTOP_SUID_PROC_TIME
extern void glibtop_get_proc_time_p __P((glibtop *, glibtop_proc_time *, pid_t));
#else
extern void glibtop_get_proc_time_s __P((glibtop *, glibtop_proc_time *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -87,7 +99,7 @@ extern SCM glibtop_guile_descriptions_proc_time __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_proc_time []; extern const char *glibtop_names_proc_time [];
extern const char *glibtop_types_proc_time []; extern const unsigned glibtop_types_proc_time [];
extern const char *glibtop_labels_proc_time []; extern const char *glibtop_labels_proc_time [];
extern const char *glibtop_descriptions_proc_time []; extern const char *glibtop_descriptions_proc_time [];

View File

@@ -63,9 +63,21 @@ struct _glibtop_proc_uid
nice; /* standard unix nice level of process */ nice; /* standard unix nice level of process */
}; };
#define glibtop_get_proc_uid(p1, p2) glibtop_get_proc_uid__r(glibtop_global_server, p1, p2) #define glibtop_get_proc_uid(p1, p2) glibtop_get_proc_uid_l(glibtop_global_server, p1, p2)
extern void glibtop_get_proc_uid__r __P((glibtop *, glibtop_proc_uid *, pid_t)); #if GLIBTOP_SUID_PROC_UID
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_p
#else
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_s
#endif
extern void glibtop_get_proc_uid_l __P((glibtop *, glibtop_proc_uid *, pid_t));
#if GLIBTOP_SUID_PROC_UID
extern void glibtop_get_proc_uid_p __P((glibtop *, glibtop_proc_uid *, pid_t));
#else
extern void glibtop_get_proc_uid_s __P((glibtop *, glibtop_proc_uid *, pid_t));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -91,7 +103,7 @@ extern SCM glibtop_guile_descriptions_proc_uid __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_proc_uid []; extern const char *glibtop_names_proc_uid [];
extern const char *glibtop_types_proc_uid []; extern const unsigned glibtop_types_proc_uid [];
extern const char *glibtop_labels_proc_uid []; extern const char *glibtop_labels_proc_uid [];
extern const char *glibtop_descriptions_proc_uid []; extern const char *glibtop_descriptions_proc_uid [];

View File

@@ -29,7 +29,8 @@ __BEGIN_DECLS
#define glibtop_read(p1, p2) glibtop_read(glibtop_global_server, p1, p2) #define glibtop_read(p1, p2) glibtop_read(glibtop_global_server, p1, p2)
extern void glibtop_read__r __P((glibtop *, size_t, void *)); extern void glibtop_read_l __P((glibtop *, size_t, void *));
extern void glibtop_read_s __P((glibtop *, size_t, void *));
__END_DECLS __END_DECLS

View File

@@ -27,9 +27,10 @@
__BEGIN_DECLS __BEGIN_DECLS
#define glibtop_read_data() glibtop_read_data__r(glibtop_global_server) #define glibtop_read_data() glibtop_read_data_r(glibtop_global_server)
extern void *glibtop_read_data__r __P((glibtop *)); extern void *glibtop_read_data_l __P((glibtop *));
extern void *glibtop_read_data_s __P((glibtop *));
__END_DECLS __END_DECLS

View File

@@ -57,9 +57,21 @@ struct _glibtop_sem_limits
semaem; /* GLIBTOP_IPC_SEMAEM */ semaem; /* GLIBTOP_IPC_SEMAEM */
}; };
#define glibtop_get_sem_limits(sem) glibtop_get_sem_limits__r(glibtop_global_server, sem) #define glibtop_get_sem_limits(sem) glibtop_get_sem_limits_l(glibtop_global_server, sem)
extern void glibtop_get_sem_limits__r __P((glibtop *, glibtop_sem_limits *)); #if GLIBTOP_SUID_SEM_LIMITS
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_p
#else
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_s
#endif
extern void glibtop_get_sem_limits_l __P((glibtop *, glibtop_sem_limits *));
#if GLIBTOP_SUID_SEM_LIMITS
extern void glibtop_get_sem_limits_p __P((glibtop *, glibtop_sem_limits *));
#else
extern void glibtop_get_sem_limits_s __P((glibtop *, glibtop_sem_limits *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -85,7 +97,7 @@ extern SCM glibtop_guile_descriptions_sem_limits __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_sem_limits []; extern const char *glibtop_names_sem_limits [];
extern const char *glibtop_types_sem_limits []; extern const unsigned glibtop_types_sem_limits [];
extern const char *glibtop_labels_sem_limits []; extern const char *glibtop_labels_sem_limits [];
extern const char *glibtop_descriptions_sem_limits []; extern const char *glibtop_descriptions_sem_limits [];

View File

@@ -47,9 +47,21 @@ struct _glibtop_shm_limits
shmall; /* GLIBTOP_IPC_SHMALL */ shmall; /* GLIBTOP_IPC_SHMALL */
}; };
#define glibtop_get_shm_limits(shm) glibtop_get_shm_limits__r(glibtop_global_server, shm) #define glibtop_get_shm_limits(shm) glibtop_get_shm_limits_l(glibtop_global_server, shm)
extern void glibtop_get_shm_limits__r __P((glibtop *, glibtop_shm_limits *)); #if GLIBTOP_SUID_SHM_LIMITS
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_p
#else
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_s
#endif
extern void glibtop_get_shm_limits_l __P((glibtop *, glibtop_shm_limits *));
#if GLIBTOP_SUID_SHM_LIMITS
extern void glibtop_get_shm_limits_p __P((glibtop *, glibtop_shm_limits *));
#else
extern void glibtop_get_shm_limits_s __P((glibtop *, glibtop_shm_limits *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -75,7 +87,7 @@ extern SCM glibtop_guile_descriptions_shm_limits __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_shm_limits []; extern const char *glibtop_names_shm_limits [];
extern const char *glibtop_types_shm_limits []; extern const unsigned glibtop_types_shm_limits [];
extern const char *glibtop_labels_shm_limits []; extern const char *glibtop_labels_shm_limits [];
extern const char *glibtop_descriptions_shm_limits []; extern const char *glibtop_descriptions_shm_limits [];

View File

@@ -43,9 +43,21 @@ struct _glibtop_swap
free; /* GLIBTOP_SWAP_FREE */ free; /* GLIBTOP_SWAP_FREE */
}; };
#define glibtop_get_swap(swap) glibtop_get_swap__r(glibtop_global_server, swap) #define glibtop_get_swap(swap) glibtop_get_swap_l(glibtop_global_server, swap)
extern void glibtop_get_swap__r __P((glibtop *, glibtop_swap *)); #if GLIBTOP_SUID_SWAP
#define glibtop_get_swap_r glibtop_get_swap_p
#else
#define glibtop_get_swap_r glibtop_get_swap_s
#endif
extern void glibtop_get_swap_l __P((glibtop *, glibtop_swap *));
#if GLIBTOP_SUID_SWAP
extern void glibtop_get_swap_p __P((glibtop *, glibtop_swap *));
#else
extern void glibtop_get_swap_s __P((glibtop *, glibtop_swap *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -71,7 +83,7 @@ extern SCM glibtop_guile_descriptions_swap __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_swap []; extern const char *glibtop_names_swap [];
extern const char *glibtop_types_swap []; extern const unsigned glibtop_types_swap [];
extern const char *glibtop_labels_swap []; extern const char *glibtop_labels_swap [];
extern const char *glibtop_descriptions_swap []; extern const char *glibtop_descriptions_swap [];

View File

@@ -27,30 +27,34 @@
__BEGIN_DECLS __BEGIN_DECLS
#define GLIBTOP_SYSDEPS_CPU 0 #define GLIBTOP_SYSDEPS_DUMMY 0
#define GLIBTOP_SYSDEPS_MEM 1 #define GLIBTOP_SYSDEPS_CPU 1
#define GLIBTOP_SYSDEPS_SWAP 2 #define GLIBTOP_SYSDEPS_MEM 2
#define GLIBTOP_SYSDEPS_UPTIME 3 #define GLIBTOP_SYSDEPS_SWAP 3
#define GLIBTOP_SYSDEPS_LOADAVG 4 #define GLIBTOP_SYSDEPS_UPTIME 4
#define GLIBTOP_SYSDEPS_SHM_LIMITS 5 #define GLIBTOP_SYSDEPS_LOADAVG 5
#define GLIBTOP_SYSDEPS_MSG_LIMITS 6 #define GLIBTOP_SYSDEPS_SHM_LIMITS 6
#define GLIBTOP_SYSDEPS_SEM_LIMITS 7 #define GLIBTOP_SYSDEPS_MSG_LIMITS 7
#define GLIBTOP_SYSDEPS_PROCLIST 8 #define GLIBTOP_SYSDEPS_SEM_LIMITS 8
#define GLIBTOP_SYSDEPS_PROC_STATE 9 #define GLIBTOP_SYSDEPS_PROCLIST 9
#define GLIBTOP_SYSDEPS_PROC_UID 10 #define GLIBTOP_SYSDEPS_PROC_STATE 10
#define GLIBTOP_SYSDEPS_PROC_MEM 11 #define GLIBTOP_SYSDEPS_PROC_UID 11
#define GLIBTOP_SYSDEPS_PROC_TIME 12 #define GLIBTOP_SYSDEPS_PROC_MEM 12
#define GLIBTOP_SYSDEPS_PROC_SIGNAL 13 #define GLIBTOP_SYSDEPS_PROC_TIME 13
#define GLIBTOP_SYSDEPS_PROC_KERNEL 14 #define GLIBTOP_SYSDEPS_PROC_SIGNAL 14
#define GLIBTOP_SYSDEPS_PROC_SEGMENT 15 #define GLIBTOP_SYSDEPS_PROC_KERNEL 15
#define GLIBTOP_SYSDEPS_PROC_SEGMENT 16
#define GLIBTOP_MAX_SYSDEPS 16 #define GLIBTOP_MAX_SYSDEPS 17
#define GLIBTOP_SYSDEPS_ALL ((1 << GLIBTOP_MAX_SYSDEPS) - 1)
typedef struct _glibtop_sysdeps glibtop_sysdeps; typedef struct _glibtop_sysdeps glibtop_sysdeps;
struct _glibtop_sysdeps struct _glibtop_sysdeps
{ {
unsigned long flags, unsigned long flags,
features, /* server features */
cpu, /* glibtop_cpu */ cpu, /* glibtop_cpu */
mem, /* glibtop_mem */ mem, /* glibtop_mem */
swap, /* glibtop_swap */ swap, /* glibtop_swap */
@@ -69,9 +73,9 @@ struct _glibtop_sysdeps
proc_segment; /* glibtop_proc_segment */ proc_segment; /* glibtop_proc_segment */
}; };
#define glibtop_get_sysdeps(sysdeps) glibtop_get_sysdeps__r(glibtop_global_server,sysdeps) #define glibtop_get_sysdeps(sysdeps) glibtop_get_sysdeps_r(glibtop_global_server,sysdeps)
extern void glibtop_get_sysdeps__r __P((glibtop *, glibtop_sysdeps *)); extern void glibtop_get_sysdeps_r __P((glibtop *, glibtop_sysdeps *));
#ifdef HAVE_GUILE #ifdef HAVE_GUILE

36
include/glibtop/types.h Normal file
View File

@@ -0,0 +1,36 @@
/* $Id$ */
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the Gnome Top Library.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
The Gnome Top Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Top Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef __GLIBTOP_TYPES_H__
#define __GLIBTOP_TYPES_H__
__BEGIN_DECLS
#define GLIBTOP_TYPE_LONG 1
#define GLIBTOP_TYPE_ULONG 2
#define GLIBTOP_TYPE_DOUBLE 3
#define GLIBTOP_TYPE_INT 4
#define GLIBTOP_TYPE_CHAR 5
#define GLIBTOP_TYPE_STRING 6
__END_DECLS
#endif

View File

@@ -41,9 +41,21 @@ struct _glibtop_uptime
idletime; /* GLIBTOP_UPTIME_IDLETIME */ idletime; /* GLIBTOP_UPTIME_IDLETIME */
}; };
#define glibtop_get_uptime(uptime) glibtop_get_uptime__r(glibtop_global_server, uptime) #define glibtop_get_uptime(uptime) glibtop_get_uptime_l(glibtop_global_server, uptime)
extern void glibtop_get_uptime__r __P((glibtop *, glibtop_uptime *)); #if GLIBTOP_SUID_UPTIME
#define glibtop_get_uptime_r glibtop_get_uptime_p
#else
#define glibtop_get_uptime_r glibtop_get_uptime_s
#endif
extern void glibtop_get_uptime_l __P((glibtop *, glibtop_uptime *));
#if GLIBTOP_SUID_UPTIME
extern void glibtop_get_uptime_p __P((glibtop *, glibtop_uptime *));
#else
extern void glibtop_get_uptime_s __P((glibtop *, glibtop_uptime *));
#endif
#ifdef HAVE_GUILE #ifdef HAVE_GUILE
@@ -69,7 +81,7 @@ extern SCM glibtop_guile_descriptions_uptime __P((void));
/* You need to link with -lgtop_names to get this stuff here. */ /* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_uptime []; extern const char *glibtop_names_uptime [];
extern const char *glibtop_types_uptime []; extern const unsigned glibtop_types_uptime [];
extern const char *glibtop_labels_uptime []; extern const char *glibtop_labels_uptime [];
extern const char *glibtop_descriptions_uptime []; extern const char *glibtop_descriptions_uptime [];

View File

@@ -29,7 +29,8 @@ __BEGIN_DECLS
#define glibtop_write(p1, p2) glibtop_write(glibtop_global_server, p1, p2) #define glibtop_write(p1, p2) glibtop_write(glibtop_global_server, p1, p2)
extern void glibtop_write__r __P((glibtop *, size_t, void *)); extern void glibtop_write_l __P((glibtop *, size_t, void *));
extern void glibtop_write_s __P((glibtop *, size_t, void *));
__END_DECLS __END_DECLS

View File

@@ -27,15 +27,15 @@
__BEGIN_DECLS __BEGIN_DECLS
#define glibtop_malloc(p1) glibtop_malloc__r(glibtop_global_server, p1) #define glibtop_malloc(p1) glibtop_malloc_r(glibtop_global_server, p1)
#define glibtop_calloc(p1, p2) glibtop_calloc__r(glibtop_global_server, p1, p2) #define glibtop_calloc(p1, p2) glibtop_calloc_r(glibtop_global_server, p1, p2)
#define glibtop_realloc(p1, p2) glibtop_realloc__r(glibtop_global_server, p1, p2) #define glibtop_realloc(p1, p2) glibtop_realloc_r(glibtop_global_server, p1, p2)
#define glibtop_free(p1) glibtop_free__r(glibtop_global_server, p1) #define glibtop_free(p1) glibtop_free_r(glibtop_global_server, p1)
extern void *glibtop_malloc__r __P((glibtop *, size_t)); extern void *glibtop_malloc_r __P((glibtop *, size_t));
extern void *glibtop_calloc__r __P((glibtop *, size_t, size_t)); extern void *glibtop_calloc_r __P((glibtop *, size_t, size_t));
extern void *glibtop_realloc__r __P((glibtop *, void *, size_t)); extern void *glibtop_realloc_r __P((glibtop *, void *, size_t));
extern void glibtop_free__r __P((glibtop *, void *)); extern void glibtop_free_r __P((glibtop *, void *));
__END_DECLS __END_DECLS

13
kernel/Makefile Normal file
View File

@@ -0,0 +1,13 @@
#
# Makefile for the linux system information tables.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# Note 2! The CFLAGS definition is now in the main makefile...
O_TARGET := table.o
O_OBJS := main.o
include $(TOPDIR)/Rules.make

90
kernel/main.c Normal file
View File

@@ -0,0 +1,90 @@
/*
* linux/table/table_impl.c
* Copyright (C) 1998 Martin Baulig
*/
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/kernel_stat.h>
#include <linux/tty.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/string.h>
#include <linux/mman.h>
#include <linux/proc_fs.h>
#include <linux/ioport.h>
#include <linux/config.h>
#include <linux/mm.h>
#include <linux/pagemap.h>
#include <linux/swap.h>
#include <asm/segment.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <linux/table.h>
#include "version.h"
asmlinkage int
sys_table (int type, union table *buf)
{
union table tbl;
struct sysinfo i;
int err;
if (type == TABLE_VERSION)
return _TABLE_VERSION;
if (!buf)
return -EFAULT;
switch (type) {
case TABLE_CPU:
tbl.cpu.total = jiffies;
tbl.cpu.user = kstat.cpu_user;
tbl.cpu.nice = kstat.cpu_nice;
tbl.cpu.sys = kstat.cpu_system;
tbl.cpu.idle = tbl.cpu.total - (tbl.cpu.user + tbl.cpu.nice + tbl.cpu.sys);
tbl.cpu.frequency = HZ;
break;
case TABLE_MEM:
si_meminfo (&i);
tbl.mem.total = i.totalram;
tbl.mem.used = i.totalram - i.freeram;
tbl.mem.free = i.freeram;
tbl.mem.shared = i.sharedram;
tbl.mem.buffer = i.bufferram;
tbl.mem.cached = page_cache_size << PAGE_SHIFT;
break;
case TABLE_SWAP:
si_swapinfo (&i);
tbl.swap.total = i.totalswap;
tbl.swap.used = i.totalswap - i.freeswap;
tbl.swap.free = i.freeswap;
break;
case TABLE_LOADAVG:
tbl.loadavg.loadavg [0] = avenrun [0];
tbl.loadavg.loadavg [1] = avenrun [1];
tbl.loadavg.loadavg [2] = avenrun [2];
tbl.loadavg.nr_running = nr_running;
tbl.loadavg.nr_tasks = nr_tasks;
tbl.loadavg.last_pid = last_pid;
break;
case TABLE_UPTIME:
tbl.uptime.uptime = jiffies;
tbl.uptime.idle = task[0]->utime + task[0]->stime;
break;
default:
return -EINVAL;
}
err = verify_area (VERIFY_WRITE, buf, sizeof (struct table));
if (err)
return err;
memcpy_tofs (buf, &tbl, sizeof (union table));
return 0;
}

80
kernel/table.h Normal file
View File

@@ -0,0 +1,80 @@
#ifndef _LINUX_TABLE_H
#define _LINUX_TABLE_H
#include <linux/types.h>
#define TABLE_VERSION 0
#define TABLE_CPU 1
#define TABLE_MEM 2
#define TABLE_SWAP 3
#define TABLE_LOADAVG 4
#define TABLE_UPTIME 5
/* CPU Usage (in jiffies = 1/100th seconds) */
struct table_cpu
{
unsigned long total; /* Total CPU Time */
unsigned long user; /* CPU Time in User Mode */
unsigned long nice; /* CPU Time in User Mode (nice) */
unsigned long sys; /* CPU Time in System Mode */
unsigned long idle; /* CPU Time in the Idle Task */
unsigned long frequency; /* Tick frequency */
};
/* Memory Usage (in bytes) */
struct table_mem
{
unsigned long total; /* Total physical memory */
unsigned long used; /* Used memory size */
unsigned long free; /* Free memory size */
unsigned long shared; /* Shared memory size */
unsigned long buffer; /* Size of buffers */
unsigned long cached; /* Size of cached memory */
};
/* Swap Space (in bytes) */
struct table_swap
{
unsigned long total; /* Total swap space */
unsigned long used; /* Used swap space */
unsigned long free; /* Free swap space */
};
/* Load average */
struct table_loadavg
{
unsigned long loadavg [3];
unsigned nr_running;
unsigned nr_tasks;
unsigned last_pid;
};
/* Uptime */
struct table_uptime
{
unsigned long uptime;
unsigned long idle;
};
/* Union */
union table
{
struct table_cpu cpu;
struct table_mem mem;
struct table_swap swap;
struct table_loadavg loadavg;
struct table_uptime uptime;
};
#ifdef __KERNEL__
#endif /* __KERNEL__ */
#endif /* _LINUX_IPC_H */

82
kernel/test.c Normal file
View File

@@ -0,0 +1,82 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/unistd.h>
#include <linux/table.h>
#include <syscall.h>
static inline _syscall2 (int, table, int, type, union table *, tbl);
int
main (void)
{
union table tbl;
int ret;
ret = table (TABLE_VERSION, NULL);
if (ret == -1) {
fprintf (stderr, "table(%u): %s\n", TABLE_VERSION, sys_errlist [errno]);
exit (-errno);
}
fprintf (stderr, "Table (%u) = %u\n", TABLE_VERSION, ret);
ret = table (TABLE_CPU, &tbl);
if (ret == -1) {
fprintf (stderr, "table(%u): %s\n", TABLE_CPU, sys_errlist [errno]);
exit (-errno);
}
fprintf (stderr, "Table (%u) = %lu, %lu, %lu, %lu, %lu, %lu\n",
TABLE_CPU, tbl.cpu.total, tbl.cpu.user, tbl.cpu.nice,
tbl.cpu.sys, tbl.cpu.idle, tbl.cpu.frequency);
ret = table (TABLE_MEM, &tbl);
if (ret == -1) {
fprintf (stderr, "table(%u): %s\n", TABLE_MEM, sys_errlist [errno]);
exit (-errno);
}
fprintf (stderr, "Table (%u) = %lu, %lu, %lu, %lu, %lu, %lu\n",
TABLE_MEM, tbl.mem.total, tbl.mem.used, tbl.mem.free,
tbl.mem.shared, tbl.mem.buffer, tbl.mem.cached);
ret = table (TABLE_SWAP, &tbl);
if (ret == -1) {
fprintf (stderr, "table(%u): %s\n", TABLE_SWAP, sys_errlist [errno]);
exit (-errno);
}
fprintf (stderr, "Table (%u) = %lu, %lu, %lu\n",
TABLE_SWAP, tbl.swap.total, tbl.swap.used, tbl.swap.free);
ret = table (TABLE_LOADAVG, &tbl);
if (ret == -1) {
fprintf (stderr, "table(%u): %s\n", TABLE_LOADAVG, sys_errlist [errno]);
exit (-errno);
}
fprintf (stderr, "Table (%u) = (%lu, %lu, %lu) - %u, %u, %u\n",
TABLE_LOADAVG, tbl.loadavg.loadavg [0], tbl.loadavg.loadavg [1],
tbl.loadavg.loadavg [2], tbl.loadavg.nr_running,
tbl.loadavg.nr_tasks, tbl.loadavg.last_pid);
ret = table (TABLE_UPTIME, &tbl);
if (ret == -1) {
fprintf (stderr, "table(%u): %s\n", TABLE_UPTIME, sys_errlist [errno]);
exit (-errno);
}
fprintf (stderr, "Table (%u) = %lu, %lu\n",
TABLE_UPTIME, tbl.uptime.uptime, tbl.uptime.idle);
exit (0);
}

1
kernel/version.h Normal file
View File

@@ -0,0 +1 @@
#define _TABLE_VERSION 1

View File

@@ -24,7 +24,7 @@
/* Closes pipe to gtop server. */ /* Closes pipe to gtop server. */
void void
glibtop_close (glibtop *server) glibtop_close_r (glibtop *server)
{ {
kill (server->pid, SIGKILL); kill (server->pid, SIGKILL);
close (server->input [0]); close (server->input [0]);

View File

@@ -27,28 +27,28 @@
#include <glibtop/xmalloc.h> #include <glibtop/xmalloc.h>
void * void *
glibtop_call__r (glibtop *server, unsigned command, size_t send_size, void *send_buf, glibtop_call_l (glibtop *server, unsigned command, size_t send_size, void *send_buf,
size_t recv_size, void *recv_buf) size_t recv_size, void *recv_buf)
{ {
glibtop_command *cmnd; glibtop_command *cmnd;
void *ptr; void *ptr;
glibtop_init__r (&server); glibtop_init_r (&server, 0, 0);
cmnd = glibtop_calloc__r (server, 1, sizeof (glibtop_command)); cmnd = glibtop_calloc_r (server, 1, sizeof (glibtop_command));
memcpy (&cmnd->server, server, sizeof (glibtop)); memcpy (&cmnd->server, server, sizeof (glibtop));
cmnd->command = command; cmnd->command = command;
cmnd->size = send_size; cmnd->size = send_size;
glibtop_write__r (server, sizeof (glibtop_command), cmnd); glibtop_write_l (server, sizeof (glibtop_command), cmnd);
glibtop_write__r (server, send_size, send_buf); glibtop_write_l (server, send_size, send_buf);
glibtop_read__r (server, recv_size, recv_buf); glibtop_read_l (server, recv_size, recv_buf);
ptr = glibtop_read_data__r (server); ptr = glibtop_read_data_l (server);
glibtop_free__r (server, cmnd); glibtop_free_r (server, cmnd);
return ptr; return ptr;
} }

View File

@@ -19,14 +19,21 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <glibtop.h>
#include <glibtop/cpu.h> #include <glibtop/cpu.h>
#include <glibtop/command.h> #include <glibtop/command.h>
/* Provides information about cpu usage. */ /* Provides information about cpu usage. */
void void
glibtop_get_cpu__r (glibtop *server, glibtop_cpu *buf) glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_CPU, 0);
glibtop_call__r (server, GLIBTOP_CMND_CPU, 0, NULL, sizeof (glibtop_cpu), buf);
if (server->features & GLIBTOP_SYSDEPS_CPU) {
glibtop_call_l (server, GLIBTOP_CMND_CPU, 0, NULL,
sizeof (glibtop_cpu), buf);
} else {
glibtop_get_cpu_r (server, buf);
}
} }

View File

@@ -26,14 +26,16 @@ static glibtop _glibtop_global_server;
glibtop *glibtop_global_server = NULL; glibtop *glibtop_global_server = NULL;
glibtop * glibtop *
glibtop_init__r (glibtop **server) glibtop_init_r (glibtop **server, const unsigned long features,
const unsigned flags)
{ {
if (*server != NULL) if (*server != NULL)
return *server; return *server;
if (glibtop_global_server == NULL) { if (glibtop_global_server == NULL) {
glibtop_global_server = &_glibtop_global_server; glibtop_global_server = &_glibtop_global_server;
glibtop_open (glibtop_global_server, "glibtop"); glibtop_open_l (glibtop_global_server, "glibtop",
features, flags);
} }
return *server = glibtop_global_server; return *server = glibtop_global_server;

View File

@@ -26,8 +26,14 @@
/* Provides load averange. */ /* Provides load averange. */
void void
glibtop_get_loadavg__r (glibtop *server, glibtop_loadavg *buf) glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_LOADAVG, 0);
glibtop_call__r (server, GLIBTOP_CMND_LOADAVG, 0, NULL, sizeof (glibtop_loadavg), buf);
if (server->features & GLIBTOP_SYSDEPS_LOADAVG) {
glibtop_call_l (server, GLIBTOP_CMND_LOADAVG, 0, NULL,
sizeof (glibtop_loadavg), buf);
} else {
glibtop_get_loadavg_r (server, buf);
}
} }

View File

@@ -25,8 +25,14 @@
/* Provides information about memory usage. */ /* Provides information about memory usage. */
void void
glibtop_get_mem__r (glibtop *server, glibtop_mem *buf) glibtop_get_mem_l (glibtop *server, glibtop_mem *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_MEM, 0);
glibtop_call__r (server, GLIBTOP_CMND_MEM, 0, NULL, sizeof (glibtop_mem), buf);
if (server->features & GLIBTOP_SYSDEPS_MEM) {
glibtop_call_l (server, GLIBTOP_CMND_MEM, 0, NULL,
sizeof (glibtop_mem), buf);
} else {
glibtop_get_mem_r (server, buf);
}
} }

View File

@@ -25,8 +25,14 @@
/* Provides information about sysv ipc limits. */ /* Provides information about sysv ipc limits. */
void void
glibtop_get_msg_limits__r (glibtop *server, glibtop_msg_limits *buf) glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_MSG_LIMITS, 0);
glibtop_call__r (server, GLIBTOP_CMND_MSG_LIMITS, 0, NULL, sizeof (glibtop_msg_limits), buf);
if (server->features & GLIBTOP_SYSDEPS_MSG_LIMITS) {
glibtop_call_l (server, GLIBTOP_CMND_MSG_LIMITS, 0, NULL,
sizeof (glibtop_msg_limits), buf);
} else {
glibtop_get_msg_limits_r (server, buf);
}
} }

View File

@@ -19,42 +19,138 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <glibtop.h>
#include <glibtop/open.h> #include <glibtop/open.h>
#include <glibtop/sysdeps.h>
#include <glibtop/command.h>
#include <glibtop/xmalloc.h>
/* Opens pipe to gtop server. Returns 0 on success and -1 on error. */ /* Opens pipe to gtop server. Returns 0 on success and -1 on error. */
void void
glibtop_open (glibtop *server, const char *program_name) glibtop_open_l (glibtop *server, const char *program_name,
const unsigned long features, const unsigned flags)
{ {
char version [BUFSIZ], buffer [BUFSIZ]; char version [BUFSIZ], buffer [BUFSIZ];
char *server_command, *server_rsh, *temp;
char *server_host, *server_user;
glibtop_sysdeps sysdeps;
memset (server, 0, sizeof (glibtop)); memset (server, 0, sizeof (glibtop));
server->name = program_name; server->name = program_name;
/* Is the user allowed to override the server ? */
if ((flags & GLIBTOP_OPEN_NO_OVERRIDE) == 0) {
/* Try to get data from environment. */
temp = getenv ("LIBGTOP_SERVER") ?
getenv ("LIBGTOP_SERVER") : GTOP_SERVER;
server_command = glibtop_malloc_r (server, strlen (temp) + 1);
strcpy (server_command, temp);
temp = getenv ("LIBGTOP_RSH") ?
getenv ("LIBGTOP_RSH") : "rsh";
server_rsh = glibtop_malloc_r (server, strlen (temp) + 1);
strcpy (server_rsh, temp);
/* Extract host and user information. */
temp = strstr (server_command, ":");
if (temp) {
*temp = 0;
server_host = server_command;
server_command = temp+1;
temp = strstr (server_host, "@");
if (temp) {
*temp = 0;
server_user = server_host;
server_host = temp+1;
} else {
server_user = NULL;
}
} else {
server_host = NULL;
server_user = NULL;
}
/* Store everything in `server'. */
server->server_command = server_command;
server->server_host = server_host;
server->server_user = server_user;
server->server_rsh = server_rsh;
}
/* Get server features. */
if (server->server_host == NULL) {
server->features = glibtop_server_features;
if (server->features == 0)
return;
}
/* Fork and exec server. */
if (pipe (server->input) || pipe (server->output)) if (pipe (server->input) || pipe (server->output))
glibtop_error__r (server, _("cannot make a pipe: %s\n"), strerror (errno)); glibtop_error_r (server, _("cannot make a pipe: %s\n"),
strerror (errno));
server->pid = fork (); server->pid = fork ();
if (server->pid < 0) { if (server->pid < 0) {
glibtop_error__r (server, _("%s: fork failed: %s\n"), strerror (errno)); glibtop_error_r (server, _("%s: fork failed: %s\n"),
strerror (errno));
} else if (server->pid == 0) { } else if (server->pid == 0) {
close (0); close (1); /* close (2); */ close (0); close (1); /* close (2); */
close (server->input [0]); close (server->output [1]); close (server->input [0]); close (server->output [1]);
dup2 (server->input [1], 1); /* dup2 (server->input [1], 2); */ dup2 (server->input [1], 1); /* dup2 (server->input [1], 2); */
dup2 (server->output [0], 0); dup2 (server->output [0], 0);
execl (GTOP_SERVER, NULL);
if (server_host) {
if (server_user) {
execl (server->server_rsh, "-l",
server->server_user, server->server_host,
server->server_command, NULL);
} else {
execl (server->server_rsh,
server->server_host, server_command, NULL);
}
} else {
execl (server->server_command, NULL);
}
_exit (2); _exit (2);
} }
fprintf (stderr, "PID: %d\n", server->pid);
close (server->input [1]); close (server->input [1]);
close (server->output [0]); close (server->output [0]);
sprintf (version, "%s server %s ready.\n", PACKAGE, VERSION); sprintf (version, "%s server %s ready.\n", PACKAGE, VERSION);
glibtop_read__r (server, strlen (version), buffer); glibtop_read_l (server, strlen (version), buffer);
if (memcmp (version, buffer, strlen (version))) if (memcmp (version, buffer, strlen (version)))
glibtop_error__r (server, _("server version is not %s"), VERSION); glibtop_error_r (server, _("server version is not %s"), VERSION);
fprintf (stderr, "Calling GLITOP_CMND_SYSDEPS ...\n");
glibtop_call_l (server, GLIBTOP_CMND_SYSDEPS, 0, NULL,
sizeof (glibtop_sysdeps), &sysdeps);
server->features = sysdeps.features;
fprintf (stderr, "Features: %lu\n", server->features);
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_kernel__r (glibtop *server, glibtop_proc_kernel *buf, glibtop_get_proc_kernel_l (glibtop *server, glibtop_proc_kernel *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_KERNEL, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_KERNEL, sizeof (pid_t),
&pid, sizeof (glibtop_proc_kernel), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_KERNEL) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_KERNEL, sizeof (pid_t),
&pid, sizeof (glibtop_proc_kernel), buf);
} else {
glibtop_get_proc_kernel_r (server, buf, pid);
}
} }

View File

@@ -25,8 +25,14 @@
/* Fetch list of currently running processes. */ /* Fetch list of currently running processes. */
unsigned * unsigned *
glibtop_get_proclist__r (glibtop *server, glibtop_proclist *buf) glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROCLIST, 0);
return glibtop_call__r (server, GLIBTOP_CMND_PROCLIST, 0, NULL, sizeof (glibtop_proclist), buf);
if (server->features & GLIBTOP_SYSDEPS_PROCLIST) {
return glibtop_call_l (server, GLIBTOP_CMND_PROCLIST, 0, NULL,
sizeof (glibtop_proclist), buf);
} else {
return glibtop_get_proclist_r (server, buf);
}
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_mem__r (glibtop *server, glibtop_proc_mem *buf, glibtop_get_proc_mem_l (glibtop *server, glibtop_proc_mem *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_MEM, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_MEM, sizeof (pid_t),
&pid, sizeof (glibtop_proc_mem), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_MEM) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_MEM, sizeof (pid_t),
&pid, sizeof (glibtop_proc_mem), buf);
} else {
glibtop_get_proc_mem_r (server, buf, pid);
}
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_segment__r (glibtop *server, glibtop_proc_segment *buf, glibtop_get_proc_segment_l (glibtop *server, glibtop_proc_segment *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_SEGMENT, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_SEGMENT, sizeof (pid_t),
&pid, sizeof (glibtop_proc_segment), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_SEGMENT) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_SEGMENT, sizeof (pid_t),
&pid, sizeof (glibtop_proc_segment), buf);
} else {
glibtop_get_proc_segment_r (server, buf, pid);
}
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_signal__r (glibtop *server, glibtop_proc_signal *buf, glibtop_get_proc_signal_l (glibtop *server, glibtop_proc_signal *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_SIGNAL, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_SIGNAL, sizeof (pid_t),
&pid, sizeof (glibtop_proc_signal), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_SIGNAL) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_SIGNAL, sizeof (pid_t),
&pid, sizeof (glibtop_proc_signal), buf);
} else {
glibtop_get_proc_signal_r (server, buf, pid);
}
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_state__r (glibtop *server, glibtop_proc_state *buf, glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_STATE, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_STATE, sizeof (pid_t),
&pid, sizeof (glibtop_proc_state), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_STATE) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_STATE, sizeof (pid_t),
&pid, sizeof (glibtop_proc_state), buf);
} else {
glibtop_get_proc_state_r (server, buf, pid);
}
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_time__r (glibtop *server, glibtop_proc_time *buf, glibtop_get_proc_time_l (glibtop *server, glibtop_proc_time *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_TIME, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_TIME, sizeof (pid_t),
&pid, sizeof (glibtop_proc_time), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_TIME) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_TIME, sizeof (pid_t),
&pid, sizeof (glibtop_proc_time), buf);
} else {
glibtop_get_proc_time_r (server, buf, pid);
}
} }

View File

@@ -26,10 +26,15 @@
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
void void
glibtop_get_proc_uid__r (glibtop *server, glibtop_proc_uid *buf, glibtop_get_proc_uid_l (glibtop *server, glibtop_proc_uid *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_PROC_UID, 0);
glibtop_call__r (server, GLIBTOP_CMND_PROC_UID, sizeof (pid_t),
&pid, sizeof (glibtop_proc_uid), buf); if (server->features & GLIBTOP_SYSDEPS_PROC_UID) {
glibtop_call_l (server, GLIBTOP_CMND_PROC_UID, sizeof (pid_t),
&pid, sizeof (glibtop_proc_uid), buf);
} else {
glibtop_get_proc_uid_r (server, buf, pid);
}
} }

View File

@@ -24,18 +24,18 @@
/* Reads some data from server. */ /* Reads some data from server. */
void void
glibtop_read__r (glibtop *server, size_t size, void *buf) glibtop_read_l (glibtop *server, size_t size, void *buf)
{ {
size_t ssize; size_t ssize;
glibtop_init__r (&server); glibtop_init_r (&server, 0, 0);
if (read (server->input [0], &ssize, sizeof (size_t)) < 0) if (read (server->input [0], &ssize, sizeof (size_t)) < 0)
glibtop_error__r (server, _("read size: %s"), strerror (errno)); glibtop_error_r (server, _("read size: %s"), strerror (errno));
if (size != ssize) if (size != ssize)
glibtop_error__r (server, _("got %d bytes but requested %d"), ssize, size); glibtop_error_r (server, _("got %d bytes but requested %d"), ssize, size);
if (read (server->input [0], buf, size) < 0) if (read (server->input [0], buf, size) < 0)
glibtop_error__r (server, _("read %d bytes: %s"), size, strerror (errno)); glibtop_error_r (server, _("read %d bytes: %s"), size, strerror (errno));
} }

View File

@@ -25,24 +25,24 @@
/* Reads some data from server. */ /* Reads some data from server. */
void * void *
glibtop_read_data__r (glibtop *server) glibtop_read_data_l (glibtop *server)
{ {
size_t size; size_t size;
void *ptr; void *ptr;
glibtop_init__r (&server); glibtop_init_r (&server, 0, 0);
if (read (server->input [0], &size, sizeof (size_t)) < 0) if (read (server->input [0], &size, sizeof (size_t)) < 0)
glibtop_error__r (server, _("read data size: %s"), strerror (errno)); glibtop_error_r (server, _("read data size: %s"),
strerror (errno));
if (!size) return NULL; if (!size) return NULL;
fprintf (stderr, "Server has %d bytes of data.\n", size); ptr = glibtop_malloc_r (server, size);
ptr = glibtop_malloc__r (server, size);
if (read (server->input [0], ptr, size) < 0) if (read (server->input [0], ptr, size) < 0)
glibtop_error__r (server, _("read data %d bytes: %s"), size, strerror (errno)); glibtop_error_r (server, _("read data %d bytes: %s"),
size, strerror (errno));
return ptr; return ptr;
} }

View File

@@ -25,8 +25,14 @@
/* Provides information about sysv ipc limits. */ /* Provides information about sysv ipc limits. */
void void
glibtop_get_sem_limits__r (glibtop *server, glibtop_sem_limits *buf) glibtop_get_sem_limits_l (glibtop *server, glibtop_sem_limits *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_SEM_LIMITS, 0);
glibtop_call__r (server, GLIBTOP_CMND_SEM_LIMITS, 0, NULL, sizeof (glibtop_sem_limits), buf);
if (server->features & GLIBTOP_SYSDEPS_SEM_LIMITS) {
glibtop_call_l (server, GLIBTOP_CMND_SEM_LIMITS, 0, NULL,
sizeof (glibtop_sem_limits), buf);
} else {
glibtop_get_sem_limits_r (server, buf);
}
} }

View File

@@ -25,8 +25,14 @@
/* Provides information about sysv ipc limits. */ /* Provides information about sysv ipc limits. */
void void
glibtop_get_shm_limits__r (glibtop *server, glibtop_shm_limits *buf) glibtop_get_shm_limits_l (glibtop *server, glibtop_shm_limits *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_SHM_LIMITS, 0);
glibtop_call__r (server, GLIBTOP_CMND_SHM_LIMITS, 0, NULL, sizeof (glibtop_shm_limits), buf);
if (server->features & GLIBTOP_SYSDEPS_SHM_LIMITS) {
glibtop_call_l (server, GLIBTOP_CMND_SHM_LIMITS, 0, NULL,
sizeof (glibtop_shm_limits), buf);
} else {
glibtop_get_shm_limits_r (server, buf);
}
} }

View File

@@ -25,8 +25,14 @@
/* Provides information about swap usage. */ /* Provides information about swap usage. */
void void
glibtop_get_swap__r (glibtop *server, glibtop_swap *buf) glibtop_get_swap_l (glibtop *server, glibtop_swap *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_SWAP, 0);
glibtop_call__r (server, GLIBTOP_CMND_SWAP, 0, NULL, sizeof (glibtop_swap), buf);
if (server->features & GLIBTOP_SYSDEPS_SWAP) {
glibtop_call_l (server, GLIBTOP_CMND_SWAP, 0, NULL,
sizeof (glibtop_swap), buf);
} else {
glibtop_get_swap_r (server, buf);
}
} }

View File

@@ -26,8 +26,14 @@
/* Provides uptime and idle time. */ /* Provides uptime and idle time. */
void void
glibtop_get_uptime__r (glibtop *server, glibtop_uptime *buf) glibtop_get_uptime_l (glibtop *server, glibtop_uptime *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, GLIBTOP_SYSDEPS_UPTIME, 0);
glibtop_call__r (server, GLIBTOP_CMND_UPTIME, 0, NULL, sizeof (glibtop_uptime), buf);
if (server->features & GLIBTOP_SYSDEPS_UPTIME) {
glibtop_call_l (server, GLIBTOP_CMND_UPTIME, 0, NULL,
sizeof (glibtop_uptime), buf);
} else {
glibtop_get_uptime_r (server, buf);
}
} }

View File

@@ -24,15 +24,15 @@
/* Writes some data to server. */ /* Writes some data to server. */
void void
glibtop_write__r (glibtop *server, size_t size, void *buf) glibtop_write_l (glibtop *server, size_t size, void *buf)
{ {
glibtop_init__r (&server); glibtop_init_r (&server, 0, 0);
if (write (server->output [1], &size, sizeof (size_t)) < 0) if (write (server->output [1], &size, sizeof (size_t)) < 0)
glibtop_error__r (server, _("write size: %s"), strerror (errno)); glibtop_error_r (server, _("write size: %s"), strerror (errno));
if (!size) return; if (!size) return;
if (write (server->output [1], buf, size) < 0) if (write (server->output [1], buf, size) < 0)
glibtop_error__r (server, _("write %d bytes: %s"), size, strerror (errno)); glibtop_error_r (server, _("write %d bytes: %s"), size, strerror (errno));
} }

View File

@@ -3,39 +3,32 @@
%define rel SNAP %define rel SNAP
%define prefix /usr %define prefix /usr
Summary: GNOME Top Library Summary: libgtop library
Name: libgtop Name: libgtop
Version: %ver Version: %ver
Release: %rel Release: %rel
Copyright: LGPL Copyright: LGPL
Group: X11/gnome Group: X11/Libraries
Source: ftp://ftp.gnome.org/pub/libgtop-%{ver}.tar.gz Source: ftp://ftp.gnome.org/pub/libgtop-%{ver}.tar.gz
BuildRoot: /tmp/libgtop-root BuildRoot: /tmp/libgtop-root
Obsoletes: gnome Packager: Michael Fulbright <msf@redhat.com>
Packager: Marc Ewing <marc@redhat.com> URL: http://www.gnome.org
URL: http://www.gnome.org/ Prereq: /sbin/install-info
Docdir: %{prefix}/doc Docdir: %{prefix}/doc
%description %description
Library that fetches information about the running system such as cpu
and memory usage, active processes etc. On Linux systems, these information
are taken directly from the /proc filesystem. For other systems such as
Solaris, where such programs need to be suid root (or only setgid kmem/mem
on some systems), it provides a suid/setgid server that fetches those
information and a client-side library that talks to this server.
Main idea was to have the same interface for all operating systems, A library that fetches
thus all system dependent details are hidden in the implementation information about the running system such as cpu and memory usage,
of that server. active processes etc. On Linux systems, these information are taken
directly from the /proc filesystem.
%package devel
Summary: Libraries, includes, etc to use libgtop in GNOME applications
Group: X11/gnome
Requires: libgtop
Obsoletes: gnome
%description devel %changelog
Libraries, include files, etc you need to use libgtop in GNOME applications.
* Tue Jun 2 1998 Michael Fulbright <msf@redhat.com>
- first version of the RPM
%prep %prep
%setup %setup
@@ -43,9 +36,9 @@ Libraries, include files, etc you need to use libgtop in GNOME applications.
%build %build
# Needed for snapshot releases. # Needed for snapshot releases.
if [ ! -f configure ]; then if [ ! -f configure ]; then
CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%prefix CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%prefix --disable-libgtop-examples
else else
CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix --disable-libgtop-examples
fi fi
if [ "$SMP" != "" ]; then if [ "$SMP" != "" ]; then
@@ -60,30 +53,29 @@ rm -rf $RPM_BUILD_ROOT
make prefix=$RPM_BUILD_ROOT%{prefix} install make prefix=$RPM_BUILD_ROOT%{prefix} install
#
# msf - remove these as they are really supposed to come from gnome-libs
#
rm -f $RPM_BUILD_ROOT/%{prefix}/lib/libgnomesupport.a
rm -f $RPM_BUILD_ROOT/%{prefix}/lib/libgnomesupport.la
rm -f $RPM_BUILD_ROOT/%{prefix}/lib/libgnomesupport.so.0
rm -f $RPM_BUILD_ROOT/%{prefix}/lib/libgnomesupport.so.0.0.0
rm -fr $RPM_BUILD_ROOT/%{prefix}/include/libgtop
%clean %clean
rm -rf $RPM_BUILD_ROOT #rm -rf $RPM_BUILD_ROOT
%post %post -p /sbin/ldconfig
if ! grep %{prefix}/lib /etc/ld.so.conf > /dev/null ; then
echo "%{prefix}/lib" >> /etc/ld.so.conf
fi
/sbin/ldconfig
%postun -p /sbin/ldconfig %postun -p /sbin/ldconfig
%files %files
%defattr(-, root, root) %defattr(-, root, root)
%doc AUTHORS COPYING ChangeLog NEWS README %doc ANNOUNCE AUTHORS ChangeLog NEWS README README.LATEST copyright.txt doc
%{prefix}/lib/lib*.so.*
%{prefix}/bin/* %{prefix}/bin/*
%{prefix}/lib/lib*.so.*
%files devel %{prefix}/lib/libgtopConf.sh
%defattr(-, root, root)
%{prefix}/lib/lib*.so
%{prefix}/lib/*a %{prefix}/lib/*a
%{prefix}/lib/*.sh
%{prefix}/lib/libgtop
%{prefix}/include/* %{prefix}/include/*

View File

@@ -2,4 +2,5 @@ Makefile
Makefile.in Makefile.in
POTFILES POTFILES
cat-id-tbl.c cat-id-tbl.c
fr.gmo
libgtop.pot libgtop.pot

View File

@@ -1,3 +1,7 @@
Sun, 31 May 1998 22:38:59 +0200 Vincent Renardias <vincent@waw.com>
* fr.po: new file - ChangeLog isn't empty anymore _(;
1998-05-21 Martin Baulig <martin@home-of-linux.org> 1998-05-21 Martin Baulig <martin@home-of-linux.org>
* ChangeLog: new file - currently empty * ChangeLog: new file - currently empty

402
po/fr.po Normal file
View File

@@ -0,0 +1,402 @@
# libgtop fr.po
# Copyright (C) 1998 Free Software Foundation, Inc.
# Vincent Renardias <vincent@waw.com>, 1998.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: libgtop VERSION\n"
"POT-Creation-Date: 1998-05-31 22:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Vincent Renardias <vincent@waw.com>\n"
"Language-Team: Vincent Renardias <vincent@waw.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: lib/open.c:36
#, c-format
msgid "cannot make a pipe: %s\n"
msgstr ""
#: lib/open.c:41
#, c-format
msgid "%s: fork failed: %s\n"
msgstr ""
#: lib/open.c:59
#, c-format
msgid "server version is not %s"
msgstr ""
#: lib/read.c:34
#, c-format
msgid "read size: %s"
msgstr ""
#: lib/read.c:37
#, c-format
msgid "got %d bytes but requested %d"
msgstr ""
#: lib/read.c:40
#, c-format
msgid "read %d bytes: %s"
msgstr ""
#: lib/write.c:32
#, c-format
msgid "write size: %s"
msgstr ""
#: lib/write.c:37
#, c-format
msgid "write %d bytes: %s"
msgstr ""
#: lib/read_data.c:36
#, c-format
msgid "read data size: %s"
msgstr ""
#: lib/read_data.c:46
#, c-format
msgid "read data %d bytes: %s"
msgstr ""
#: sysdeps/common/xmalloc.c:32
#, c-format
msgid "malloc %d bytes: %s"
msgstr ""
#: sysdeps/common/xmalloc.c:44
#, c-format
msgid "calloc %d block (%d bytes each): %s"
msgstr ""
#: sysdeps/common/xmalloc.c:56
#, c-format
msgid "realloc %d bytes: %s"
msgstr ""
#: sysdeps/names/sysdeps.c:42 sysdeps/names/sysdeps.c:62
msgid "CPU Usage"
msgstr "Utilisation CPU"
#: sysdeps/names/sysdeps.c:43 sysdeps/names/sysdeps.c:63
msgid "Memory Usage"
msgstr "Utilisation M<>moire"
#: sysdeps/names/sysdeps.c:44 sysdeps/names/sysdeps.c:64
msgid "Swap Usage"
msgstr "Utilisation du Swap"
#: sysdeps/names/sysdeps.c:45 sysdeps/names/sysdeps.c:65
msgid "System Uptime"
msgstr ""
#: sysdeps/names/sysdeps.c:46 sysdeps/names/sysdeps.c:66
msgid "Load Averange"
msgstr "Charge moyenne"
#: sysdeps/names/sysdeps.c:47 sysdeps/names/sysdeps.c:67
msgid "Shared Memory Limits"
msgstr "Limites de la m<>moire partag<61>e"
#: sysdeps/names/sysdeps.c:48 sysdeps/names/sysdeps.c:68
msgid "Message Queue Limits"
msgstr "Limites de la queue de messages"
#: sysdeps/names/sysdeps.c:49 sysdeps/names/sysdeps.c:69
msgid "Semaphore Set Limits"
msgstr "Limites de l'ensemble de s<>maphores"
#: sysdeps/names/sysdeps.c:50 sysdeps/names/sysdeps.c:70
msgid "List of running Processes"
msgstr "Liste des taches en cours d'<27>x<EFBFBD>cution"
#: sysdeps/names/sysdeps.c:51 sysdeps/names/sysdeps.c:71
msgid "Process Status information"
msgstr ""
#: sysdeps/names/sysdeps.c:52 sysdeps/names/sysdeps.c:72
msgid "Process UID and TTY information"
msgstr ""
#: sysdeps/names/sysdeps.c:53 sysdeps/names/sysdeps.c:73
msgid "Process Memory information"
msgstr ""
#: sysdeps/names/sysdeps.c:54 sysdeps/names/sysdeps.c:74
msgid "Process Time information"
msgstr ""
#: sysdeps/names/sysdeps.c:55 sysdeps/names/sysdeps.c:75
msgid "Process Signal information"
msgstr ""
#: sysdeps/names/sysdeps.c:56 sysdeps/names/sysdeps.c:76
msgid "Process Kernel Data information"
msgstr ""
#: sysdeps/names/sysdeps.c:57 sysdeps/names/sysdeps.c:77
msgid "Process Segment information"
msgstr ""
#: sysdeps/names/cpu.c:37
msgid "Total CPU Time"
msgstr "Temps CPU Total"
#: sysdeps/names/cpu.c:38
msgid "CPU Time in User Mode"
msgstr "Temps CPU en mode utilisateur"
#: sysdeps/names/cpu.c:39
msgid "CPU Time in User Mode (nice)"
msgstr ""
#: sysdeps/names/cpu.c:40
msgid "CPU Time in System Mode"
msgstr "Temps CPU en mode syst<73>me"
#: sysdeps/names/cpu.c:41
msgid "CPU Time in the Idle Task"
msgstr "Temps CPU pour la tache inactive"
#: sysdeps/names/cpu.c:42
msgid "Tick Frequency"
msgstr ""
#: sysdeps/names/cpu.c:47
msgid "The number of jiffies (1/100ths of a second) since system boot"
msgstr "Nombre de jiffies (1/100e de seconde) depuis le boot du syst<73>me"
#: sysdeps/names/cpu.c:49
msgid ""
"The number of jiffies (1/100ths of a second) that the system spent in user "
"mode"
msgstr ""
#: sysdeps/names/cpu.c:51
msgid ""
"The number of jiffies (1/100ths of a second) that the system spent in user "
"mode with low priority (nice)"
msgstr ""
#: sysdeps/names/cpu.c:53
msgid ""
"The number of jiffies (1/100ths of a second) that the system spent in system "
"mode"
msgstr ""
#: sysdeps/names/cpu.c:55
msgid ""
"The number of jiffies (1/100ths of a second) that the system spend in the "
"idle task"
msgstr ""
#: sysdeps/names/cpu.c:57
msgid ""
"All of the above values are in jiffies (1/100ths of a second) unless "
"otherwise stated in this field (i.e. 'frequency != 100')"
msgstr ""
#: sysdeps/names/loadavg.c:36
msgid "Load Average"
msgstr "Charge Moyenne"
#: sysdeps/names/loadavg.c:41
msgid "Number of jobs running simultaneously averaged over 1, 5 and 15 minutes"
msgstr ""
#: sysdeps/names/mem.c:39
msgid "Total Memory"
msgstr "M<>moire Totale"
#: sysdeps/names/mem.c:40
msgid "Used Memory"
msgstr "M<>moire Utilis<69>e"
#: sysdeps/names/mem.c:41
msgid "Free Memory"
msgstr "M<>moire Libre"
#: sysdeps/names/mem.c:42
msgid "Shared Memory"
msgstr "M<>moire Partag<61>e"
#: sysdeps/names/mem.c:43
msgid "Buffers"
msgstr "Tampons"
#: sysdeps/names/mem.c:44
msgid "Cached"
msgstr ""
#: sysdeps/names/mem.c:45
msgid "User"
msgstr "Utilisateur"
#: sysdeps/names/mem.c:46
msgid "Locked"
msgstr "V<>rouill<6C>"
#: sysdeps/names/mem.c:51
msgid "Total physical memory in kB"
msgstr "M<>moire physique totalle en Ko"
#: sysdeps/names/mem.c:52
msgid "Used memory size in kB"
msgstr ""
#: sysdeps/names/mem.c:53
msgid "Free memory size in kB"
msgstr ""
#: sysdeps/names/mem.c:54
msgid "Shared memory size in kB"
msgstr ""
#: sysdeps/names/mem.c:55
msgid "Size of buffers kB"
msgstr ""
#: sysdeps/names/mem.c:56
msgid "Size of cached memory in kB"
msgstr ""
#: sysdeps/names/mem.c:57
msgid "Memory used from user processes in kB"
msgstr ""
#: sysdeps/names/mem.c:58
msgid "Memory in locked pages in kB"
msgstr ""
#: sysdeps/names/swap.c:36 sysdeps/names/swap.c:43
msgid "Total Swap Space"
msgstr ""
#: sysdeps/names/swap.c:37 sysdeps/names/swap.c:44
msgid "Used Swap Space"
msgstr ""
#: sysdeps/names/swap.c:38 sysdeps/names/swap.c:45
msgid "Free Swap Space"
msgstr ""
#: sysdeps/names/uptime.c:36
msgid "Uptime"
msgstr ""
#: sysdeps/names/uptime.c:37
msgid "Idletime"
msgstr ""
#: sysdeps/names/uptime.c:42
msgid "Time in seconds since system boot"
msgstr ""
#: sysdeps/names/uptime.c:43
msgid "Time in seconds the system spent in the idle task since system boot"
msgstr ""
#: sysdeps/names/shm_limits.c:37 sysdeps/names/shm_limits.c:46
msgid "Max segment size"
msgstr ""
#: sysdeps/names/shm_limits.c:38 sysdeps/names/shm_limits.c:47
msgid "Min segment size"
msgstr ""
#: sysdeps/names/shm_limits.c:39 sysdeps/names/shm_limits.c:48
msgid "Max number of segments"
msgstr ""
#: sysdeps/names/shm_limits.c:40 sysdeps/names/shm_limits.c:49
msgid "Max shared segments per process"
msgstr ""
#: sysdeps/names/shm_limits.c:41 sysdeps/names/shm_limits.c:50
msgid "Max total shared memory"
msgstr ""
#: sysdeps/names/msg_limits.c:37 sysdeps/names/msg_limits.c:48
msgid "Size in kilobytes of message pool"
msgstr ""
#: sysdeps/names/msg_limits.c:38 sysdeps/names/msg_limits.c:49
msgid "Number of entries in message map"
msgstr ""
#: sysdeps/names/msg_limits.c:39 sysdeps/names/msg_limits.c:50
msgid "Max size of message"
msgstr ""
#: sysdeps/names/msg_limits.c:40 sysdeps/names/msg_limits.c:51
msgid "Default max size of queue"
msgstr ""
#: sysdeps/names/msg_limits.c:41 sysdeps/names/msg_limits.c:52
msgid "Max queues system wide"
msgstr ""
#: sysdeps/names/msg_limits.c:42 sysdeps/names/msg_limits.c:53
msgid "Message segment size"
msgstr ""
#: sysdeps/names/msg_limits.c:43 sysdeps/names/msg_limits.c:54
msgid "Number of system message headers"
msgstr ""
#: sysdeps/names/sem_limits.c:39 sysdeps/names/sem_limits.c:53
msgid "Number of entries in semaphore map"
msgstr ""
#: sysdeps/names/sem_limits.c:40 sysdeps/names/sem_limits.c:54
msgid "Max number of arrays"
msgstr ""
#: sysdeps/names/sem_limits.c:41 sysdeps/names/sem_limits.c:55
msgid "Max semaphores system wide"
msgstr ""
#: sysdeps/names/sem_limits.c:42 sysdeps/names/sem_limits.c:56
msgid "Number of undo structures system wide"
msgstr ""
#: sysdeps/names/sem_limits.c:43 sysdeps/names/sem_limits.c:57
msgid "Max semaphores per array"
msgstr ""
#: sysdeps/names/sem_limits.c:44 sysdeps/names/sem_limits.c:58
msgid "Max ops per semop call"
msgstr ""
#: sysdeps/names/sem_limits.c:45 sysdeps/names/sem_limits.c:59
msgid "Max number of undo entries per process"
msgstr ""
#: sysdeps/names/sem_limits.c:46 sysdeps/names/sem_limits.c:60
msgid "sizeof struct sem_undo"
msgstr ""
#: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61
msgid "Semaphore max value"
msgstr ""
#: sysdeps/names/sem_limits.c:48 sysdeps/names/sem_limits.c:62
msgid "Adjust on exit max value"
msgstr ""
#: sysdeps/names/proclist.c:36 sysdeps/names/proclist.c:43
msgid "Number of list elements"
msgstr ""
#: sysdeps/names/proclist.c:37 sysdeps/names/proclist.c:44
msgid "Total size of list"
msgstr "Taille totalle de la liste"
#: sysdeps/names/proclist.c:38 sysdeps/names/proclist.c:45
msgid "Size of a single list element"
msgstr ""

View File

@@ -1 +1 @@
SUBDIRS = server SUBDIRS = server proxy

5
src/proxy/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
.deps
.libs
Makefile
Makefile.in
gtop_proxy

16
src/proxy/Makefile.am Normal file
View File

@@ -0,0 +1,16 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = -I$(top_builddir) -I$(top_srcdir) @machine_incs@ \
-I$(top_srcdir)/include -I$(top_srcdir)/intl @GUILE_INCS@ \
-DGTOPLOCALEDIR=\"$(datadir)/locale\" -D_GNU_SOURCE
CFLAGS = -Wall -W @CFLAGS@ -DGTOP_SERVER=\""@LIBGTOP_SERVER@"\"
bin_PROGRAMS = gtop_proxy
gtop_proxy_SOURCES = main.c output.c version.c
gtop_proxy_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@INTLLIBS@ @LIBSUPPORT@
gtop_proxy_LDFLAGS = -static

234
src/proxy/main.c Normal file
View File

@@ -0,0 +1,234 @@
/* $Id$ */
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the Gnome Top Library.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
The Gnome Top Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Top Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <glibtop/command.h>
#include <glibtop/version.h>
#include <glibtop/xmalloc.h>
#include <glibtop/union.h>
#include <glibtop/open.h>
#include <fcntl.h>
#include <locale.h>
#if defined(HAVE_GETDTABLESIZE)
#define GET_MAX_FDS() getdtablesize()
#else
/* Fallthrough case - please add other #elif cases above
for different OS's as necessary */
#define GET_MAX_FDS() 256
#endif
int
main(int argc, char *argv[])
{
pid_t pid;
int fd, max_fd, nread;
size_t size, dsize;
char parameter [BUFSIZ];
glibtop_union data;
glibtop_command cmnd;
glibtop_sysdeps sysdeps;
glibtop server;
void *ptr;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_version ();
glibtop_open_l (&server, argv [0], 0, GLIBTOP_OPEN_NO_OVERRIDE);
/* close all file descriptors except ones used by the pipes (0 and 1). */
max_fd = GET_MAX_FDS();
for(fd = 3 /* The first fd after the pipes */; fd < max_fd; fd++)
close(fd);
while(1) {
/* block on read from client */
/* fprintf (stderr, "waiting for input ...\n"); */
nread = read (0, &size, sizeof (size_t));
/* will return 0 if parent exits. */
if (nread == 0)
_exit(0);
if (nread != sizeof (size_t))
_exit(1);
if (size != sizeof (glibtop_command))
_exit(2);
nread = read (0, &cmnd, size);
/* will return 0 if parent exits. */
if (nread == 0)
_exit(0);
if (nread < 0)
_exit(1);
nread = read (0, &dsize, sizeof (size_t));
/* will return 0 if parent exits. */
if (nread == 0)
_exit(0);
if (nread < 0)
_exit(1);
if (dsize >= BUFSIZ)
_exit(3);
memset (parameter, 0, sizeof (parameter));
if (dsize) {
nread = read (0, parameter, dsize);
/* will return 0 if parent exits. */
if (nread == 0)
_exit(0);
if (nread < 0)
_exit(1);
}
switch (cmnd.command) {
case GLIBTOP_CMND_SYSDEPS:
sysdeps.features = GLIBTOP_SYSDEPS_ALL;
glibtop_output (sizeof (glibtop_sysdeps), &sysdeps);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_CPU:
glibtop_get_cpu_l (&server, &data.cpu);
glibtop_output (sizeof (glibtop_cpu), &data.cpu);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_MEM:
glibtop_get_mem_l (&server, &data.mem);
glibtop_output (sizeof (glibtop_mem), &data.mem);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_SWAP:
glibtop_get_swap_l (&server, &data.swap);
glibtop_output (sizeof (glibtop_swap), &data.swap);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_UPTIME:
glibtop_get_uptime_l (&server, &data.uptime);
glibtop_output (sizeof (glibtop_uptime), &data.uptime);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_LOADAVG:
glibtop_get_loadavg_l (&server, &data.loadavg);
glibtop_output (sizeof (glibtop_loadavg), &data.loadavg);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_SHM_LIMITS:
glibtop_get_shm_limits_l (&server, &data.shm_limits);
glibtop_output (sizeof (glibtop_shm_limits),
&data.shm_limits);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_MSG_LIMITS:
glibtop_get_msg_limits_l (&server, &data.msg_limits);
glibtop_output (sizeof (glibtop_msg_limits),
&data.msg_limits);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_SEM_LIMITS:
glibtop_get_sem_limits_l (&server, &data.sem_limits);
glibtop_output (sizeof (glibtop_sem_limits),
&data.sem_limits);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROCLIST:
ptr = glibtop_get_proclist_l (&server, &data.proclist);
glibtop_output (sizeof (glibtop_proclist),
&data.proclist);
glibtop_output (data.proclist.total, ptr);
glibtop_free_r (&server, ptr);
break;
case GLIBTOP_CMND_PROC_STATE:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_state_l
(&server, &data.proc_state, pid);
glibtop_output (sizeof (glibtop_proc_state),
&data.proc_state);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROC_UID:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_uid_l
(&server, &data.proc_uid, pid);
glibtop_output (sizeof (glibtop_proc_uid),
&data.proc_uid);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROC_MEM:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_mem_l
(&server, &data.proc_mem, pid);
glibtop_output (sizeof (glibtop_proc_mem),
&data.proc_mem);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROC_TIME:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_time_l
(&server, &data.proc_time, pid);
glibtop_output (sizeof (glibtop_proc_time),
&data.proc_time);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROC_SIGNAL:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_signal_l
(&server, &data.proc_signal, pid);
glibtop_output (sizeof (glibtop_proc_signal),
&data.proc_signal);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROC_KERNEL:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_kernel_l
(&server, &data.proc_kernel, pid);
glibtop_output (sizeof (glibtop_proc_kernel),
&data.proc_kernel);
glibtop_output (0, NULL);
break;
case GLIBTOP_CMND_PROC_SEGMENT:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_segment_l
(&server, &data.proc_segment, pid);
glibtop_output (sizeof (glibtop_proc_segment),
&data.proc_segment);
glibtop_output (0, NULL);
break;
}
}
_exit(0);
}

31
src/proxy/output.c Normal file
View File

@@ -0,0 +1,31 @@
/* $Id$ */
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the Gnome Top Library.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
The Gnome Top Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Top Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <glibtop/output.h>
void
glibtop_output (size_t size, const void *buf)
{
if (write (1, &size, sizeof (size_t)) < 0)
_exit (2);
if (write (1, buf, size) < 0)
_exit (2);
}

31
src/proxy/version.c Normal file
View File

@@ -0,0 +1,31 @@
/* $Id$ */
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the Gnome Top Library.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
The Gnome Top Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Top Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <glibtop/version.h>
void
glibtop_version (void)
{
char buffer [BUFSIZ];
sprintf (buffer, "%s server %s ready.\n", PACKAGE, VERSION);
glibtop_output (strlen (buffer), buffer);
}

View File

@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
setreuid (uid, euid); setregid (gid, egid); setreuid (uid, euid); setregid (gid, egid);
glibtop_open (&server, argv [0]); glibtop_open_r (&server, argv [0], 0, 0);
if (setreuid (euid, uid)) _exit (1); if (setreuid (euid, uid)) _exit (1);
@@ -142,112 +142,146 @@ int main(int argc, char *argv[])
switch (cmnd.command) { switch (cmnd.command) {
case GLIBTOP_CMND_SYSDEPS: case GLIBTOP_CMND_SYSDEPS:
glibtop_get_sysdeps__r (&server, &sysdeps); sysdeps.features = GLIBTOP_SYSDEPS_ALL;
glibtop_output (sizeof (glibtop_sysdeps), &sysdeps); glibtop_output (sizeof (glibtop_sysdeps), &sysdeps);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_CPU: case GLIBTOP_CMND_CPU:
glibtop_get_cpu__r (&server, &data.cpu); #if GLIBTOP_SUID_CPU
glibtop_get_cpu_p (&server, &data.cpu);
#endif
glibtop_output (sizeof (glibtop_cpu), &data.cpu); glibtop_output (sizeof (glibtop_cpu), &data.cpu);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_MEM: case GLIBTOP_CMND_MEM:
glibtop_get_mem__r (&server, &data.mem); #if GLIBTOP_SUID_MEM
glibtop_get_mem_p (&server, &data.mem);
#endif
glibtop_output (sizeof (glibtop_mem), &data.mem); glibtop_output (sizeof (glibtop_mem), &data.mem);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_SWAP: case GLIBTOP_CMND_SWAP:
glibtop_get_swap__r (&server, &data.swap); #if GLIBTOP_SUID_SWAP
glibtop_get_swap_p (&server, &data.swap);
#endif
glibtop_output (sizeof (glibtop_swap), &data.swap); glibtop_output (sizeof (glibtop_swap), &data.swap);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_UPTIME: case GLIBTOP_CMND_UPTIME:
glibtop_get_uptime__r (&server, &data.uptime); #if GLIBTOP_SUID_UPTIME
glibtop_get_uptime_p (&server, &data.uptime);
#endif
glibtop_output (sizeof (glibtop_uptime), &data.uptime); glibtop_output (sizeof (glibtop_uptime), &data.uptime);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_LOADAVG: case GLIBTOP_CMND_LOADAVG:
glibtop_get_loadavg__r (&server, &data.loadavg); #if GLIBTOP_SUID_LOADAVG
glibtop_get_loadavg_p (&server, &data.loadavg);
#endif
glibtop_output (sizeof (glibtop_loadavg), &data.loadavg); glibtop_output (sizeof (glibtop_loadavg), &data.loadavg);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_SHM_LIMITS: case GLIBTOP_CMND_SHM_LIMITS:
glibtop_get_shm_limits__r (&server, &data.shm_limits); #if GLIBTOP_SUID_SHM_LIMITS
glibtop_get_shm_limits_p (&server, &data.shm_limits);
#endif
glibtop_output (sizeof (glibtop_shm_limits), glibtop_output (sizeof (glibtop_shm_limits),
&data.shm_limits); &data.shm_limits);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_MSG_LIMITS: case GLIBTOP_CMND_MSG_LIMITS:
glibtop_get_msg_limits__r (&server, &data.msg_limits); #if GLIBTOP_SUID_MSG_LIMITS
glibtop_get_msg_limits_p (&server, &data.msg_limits);
#endif
glibtop_output (sizeof (glibtop_msg_limits), glibtop_output (sizeof (glibtop_msg_limits),
&data.msg_limits); &data.msg_limits);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_SEM_LIMITS: case GLIBTOP_CMND_SEM_LIMITS:
glibtop_get_sem_limits__r (&server, &data.sem_limits); #if GLIBTOP_SUID_SEM_LIMITS
glibtop_get_sem_limits_p (&server, &data.sem_limits);
#endif
glibtop_output (sizeof (glibtop_sem_limits), glibtop_output (sizeof (glibtop_sem_limits),
&data.sem_limits); &data.sem_limits);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROCLIST: case GLIBTOP_CMND_PROCLIST:
ptr = glibtop_get_proclist__r (&server, &data.proclist); #if GLIBTOP_SUID_PROCLIST
ptr = glibtop_get_proclist_p (&server, &data.proclist);
#else
ptr = NULL;
#endif
glibtop_output (sizeof (glibtop_proclist), glibtop_output (sizeof (glibtop_proclist),
&data.proclist); &data.proclist);
glibtop_output (data.proclist.total, ptr); glibtop_output (data.proclist.total, ptr);
glibtop_free__r (&server, ptr); glibtop_free_r (&server, ptr);
break; break;
case GLIBTOP_CMND_PROC_STATE: case GLIBTOP_CMND_PROC_STATE:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_state__r #if GLIBTOP_SUID_PROC_STATE
glibtop_get_proc_state_p
(&server, &data.proc_state, pid); (&server, &data.proc_state, pid);
#endif
glibtop_output (sizeof (glibtop_proc_state), glibtop_output (sizeof (glibtop_proc_state),
&data.proc_state); &data.proc_state);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROC_UID: case GLIBTOP_CMND_PROC_UID:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_uid__r #if GLIBTOP_SUID_PROC_UID
glibtop_get_proc_uid_p
(&server, &data.proc_uid, pid); (&server, &data.proc_uid, pid);
#endif
glibtop_output (sizeof (glibtop_proc_uid), glibtop_output (sizeof (glibtop_proc_uid),
&data.proc_uid); &data.proc_uid);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROC_MEM: case GLIBTOP_CMND_PROC_MEM:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_mem__r #if GLIBTOP_SUID_PROC_MEM
glibtop_get_proc_mem_p
(&server, &data.proc_mem, pid); (&server, &data.proc_mem, pid);
#endif
glibtop_output (sizeof (glibtop_proc_mem), glibtop_output (sizeof (glibtop_proc_mem),
&data.proc_mem); &data.proc_mem);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROC_TIME: case GLIBTOP_CMND_PROC_TIME:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_time__r #if GLIBTOP_SUID_PROC_TIME
glibtop_get_proc_time_p
(&server, &data.proc_time, pid); (&server, &data.proc_time, pid);
#endif
glibtop_output (sizeof (glibtop_proc_time), glibtop_output (sizeof (glibtop_proc_time),
&data.proc_time); &data.proc_time);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROC_SIGNAL: case GLIBTOP_CMND_PROC_SIGNAL:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_signal__r #if GLIBTOP_SUID_PROC_SIGNAL
glibtop_get_proc_signal_p
(&server, &data.proc_signal, pid); (&server, &data.proc_signal, pid);
#endif
glibtop_output (sizeof (glibtop_proc_signal), glibtop_output (sizeof (glibtop_proc_signal),
&data.proc_signal); &data.proc_signal);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROC_KERNEL: case GLIBTOP_CMND_PROC_KERNEL:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_kernel__r #if GLIBTOP_SUID_PROC_KERNEL
glibtop_get_proc_kernel_p
(&server, &data.proc_kernel, pid); (&server, &data.proc_kernel, pid);
#endif
glibtop_output (sizeof (glibtop_proc_kernel), glibtop_output (sizeof (glibtop_proc_kernel),
&data.proc_kernel); &data.proc_kernel);
glibtop_output (0, NULL); glibtop_output (0, NULL);
break; break;
case GLIBTOP_CMND_PROC_SEGMENT: case GLIBTOP_CMND_PROC_SEGMENT:
memcpy (&pid, parameter, sizeof (pid_t)); memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_segment__r #if GLIBTOP_SUID_PROC_SEGMENT
glibtop_get_proc_segment_p
(&server, &data.proc_segment, pid); (&server, &data.proc_segment, pid);
#endif
glibtop_output (sizeof (glibtop_proc_segment), glibtop_output (sizeof (glibtop_proc_segment),
&data.proc_segment); &data.proc_segment);
glibtop_output (0, NULL); glibtop_output (0, NULL);

View File

@@ -24,7 +24,7 @@
/* Prints error message and exits. */ /* Prints error message and exits. */
void void
glibtop_error__r (glibtop *server, char *format, ...) glibtop_error_r (glibtop *server, char *format, ...)
{ {
va_list ap; va_list ap;

View File

@@ -21,60 +21,80 @@
#include <glibtop/union.h> #include <glibtop/union.h>
#include <glibtop/sysdeps.h> #include <glibtop/sysdeps.h>
const unsigned long glibtop_server_features =
GLIBTOP_SUID_CPU +
GLIBTOP_SUID_MEM +
GLIBTOP_SUID_SWAP +
GLIBTOP_SUID_UPTIME +
GLIBTOP_SUID_LOADAVG +
GLIBTOP_SUID_SHM_LIMITS +
GLIBTOP_SUID_MSG_LIMITS +
GLIBTOP_SUID_SEM_LIMITS +
GLIBTOP_SUID_PROCLIST +
GLIBTOP_SUID_PROC_STATE +
GLIBTOP_SUID_PROC_UID +
GLIBTOP_SUID_PROC_MEM +
GLIBTOP_SUID_PROC_TIME +
GLIBTOP_SUID_PROC_SIGNAL +
GLIBTOP_SUID_PROC_KERNEL +
GLIBTOP_SUID_PROC_SEGMENT;
/* Checks which features are implemented. */ /* Checks which features are implemented. */
void void
glibtop_get_sysdeps__r (glibtop *server, glibtop_sysdeps *buf) glibtop_get_sysdeps_r (glibtop *server, glibtop_sysdeps *buf)
{ {
glibtop_union data; glibtop_union data;
memset (buf, 0, sizeof (glibtop_sysdeps)); memset (buf, 0, sizeof (glibtop_sysdeps));
buf->features = glibtop_server_features;
/* Call all system dependent functions to check which values /* Call all system dependent functions to check which values
* they return. */ * they return. */
glibtop_get_cpu__r (server, &data.cpu); glibtop_get_cpu_r (server, &data.cpu);
buf->cpu = data.cpu.flags; buf->cpu = data.cpu.flags;
glibtop_get_mem__r (server, &data.mem); glibtop_get_mem_r (server, &data.mem);
buf->mem = data.mem.flags; buf->mem = data.mem.flags;
glibtop_get_swap__r (server, &data.swap); glibtop_get_swap_r (server, &data.swap);
buf->swap = data.swap.flags; buf->swap = data.swap.flags;
glibtop_get_uptime__r (server, &data.uptime); glibtop_get_uptime_r (server, &data.uptime);
buf->uptime = data.uptime.flags; buf->uptime = data.uptime.flags;
glibtop_get_loadavg__r (server, &data.loadavg); glibtop_get_loadavg_r (server, &data.loadavg);
buf->loadavg = data.loadavg.flags; buf->loadavg = data.loadavg.flags;
glibtop_get_shm_limits__r (server, &data.shm_limits); glibtop_get_shm_limits_r (server, &data.shm_limits);
buf->shm_limits = data.shm_limits.flags; buf->shm_limits = data.shm_limits.flags;
glibtop_get_msg_limits__r (server, &data.msg_limits); glibtop_get_msg_limits_r (server, &data.msg_limits);
buf->msg_limits = data.msg_limits.flags; buf->msg_limits = data.msg_limits.flags;
glibtop_get_sem_limits__r (server, &data.sem_limits); glibtop_get_sem_limits_r (server, &data.sem_limits);
buf->sem_limits = data.sem_limits.flags; buf->sem_limits = data.sem_limits.flags;
glibtop_get_proclist__r (server, &data.proclist); glibtop_get_proclist_r (server, &data.proclist);
buf->proclist = data.proclist.flags; buf->proclist = data.proclist.flags;
glibtop_get_proc_state__r (server, &data.proc_state, 0); glibtop_get_proc_state_r (server, &data.proc_state, 0);
buf->proc_state = data.proc_state.flags; buf->proc_state = data.proc_state.flags;
glibtop_get_proc_uid__r (server, &data.proc_uid, 0); glibtop_get_proc_uid_r (server, &data.proc_uid, 0);
buf->proc_uid = data.proc_uid.flags; buf->proc_uid = data.proc_uid.flags;
glibtop_get_proc_mem__r (server, &data.proc_mem, 0); glibtop_get_proc_mem_r (server, &data.proc_mem, 0);
buf->proc_mem = data.proc_mem.flags; buf->proc_mem = data.proc_mem.flags;
glibtop_get_proc_time__r (server, &data.proc_time, 0); glibtop_get_proc_time_r (server, &data.proc_time, 0);
buf->proc_time = data.proc_time.flags; buf->proc_time = data.proc_time.flags;
glibtop_get_proc_kernel__r (server, &data.proc_kernel, 0); glibtop_get_proc_kernel_r (server, &data.proc_kernel, 0);
buf->proc_kernel = data.proc_kernel.flags; buf->proc_kernel = data.proc_kernel.flags;
glibtop_get_proc_segment__r (server, &data.proc_segment, 0); glibtop_get_proc_segment_r (server, &data.proc_segment, 0);
buf->proc_segment = data.proc_segment.flags; buf->proc_segment = data.proc_segment.flags;
} }

View File

@@ -24,43 +24,43 @@
/* Wrappers to malloc, calloc, realloc ... */ /* Wrappers to malloc, calloc, realloc ... */
void * void *
glibtop_malloc__r (glibtop *server, size_t size) glibtop_malloc_r (glibtop *server, size_t size)
{ {
void *buf = malloc (size); void *buf = malloc (size);
if (!buf) if (!buf)
glibtop_error__r (server, _("malloc %d bytes: %s"), glibtop_error_r (server, _("malloc %d bytes: %s"),
size, strerror (errno)); size, strerror (errno));
return buf; return buf;
} }
void * void *
glibtop_calloc__r (glibtop *server, size_t nmemb, size_t size) glibtop_calloc_r (glibtop *server, size_t nmemb, size_t size)
{ {
void *buf = calloc (nmemb, size); void *buf = calloc (nmemb, size);
if (!buf) if (!buf)
glibtop_error__r (server, _("calloc %d block (%d bytes each): %s"), glibtop_error_r (server, _("calloc %d block (%d bytes each): %s"),
nmemb, size, strerror (errno)); nmemb, size, strerror (errno));
return buf; return buf;
} }
void * void *
glibtop_realloc__r (glibtop *server, void *ptr, size_t size) glibtop_realloc_r (glibtop *server, void *ptr, size_t size)
{ {
void *buf = realloc (ptr, size); void *buf = realloc (ptr, size);
if (!buf) if (!buf)
glibtop_error__r (server, _("realloc %d bytes: %s"), glibtop_error_r (server, _("realloc %d bytes: %s"),
size, strerror (errno)); size, strerror (errno));
return buf; return buf;
} }
void void
glibtop_free__r (glibtop *server, void *ptr) glibtop_free_r (glibtop *server, void *ptr)
{ {
if (ptr) free (ptr); if (ptr) free (ptr);
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_cpu (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_CPU; i++) for (i = 0; i < GLIBTOP_MAX_CPU; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_cpu [i])), (gh_str02scm (glibtop_names_cpu [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_cpu (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_CPU; i++) for (i = 0; i < GLIBTOP_MAX_CPU; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_cpu [i])), (gh_str02scm (glibtop_types_cpu [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_cpu (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_CPU; i++) for (i = 0; i < GLIBTOP_MAX_CPU; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_cpu [i]))), (glibtop_labels_cpu [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_cpu (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_CPU; i++) for (i = 0; i < GLIBTOP_MAX_CPU; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_cpu [i]))), (glibtop_descriptions_cpu [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_loadavg (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++) for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_loadavg [i])), (gh_str02scm (glibtop_names_loadavg [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_loadavg (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++) for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_loadavg [i])), (gh_str02scm (glibtop_types_loadavg [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_loadavg (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++) for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_loadavg [i]))), (glibtop_labels_loadavg [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_loadavg (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++) for (i = 0; i < GLIBTOP_MAX_LOADAVG; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_loadavg [i]))), (glibtop_descriptions_loadavg [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MEM; i++) for (i = 0; i < GLIBTOP_MAX_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_mem [i])), (gh_str02scm (glibtop_names_mem [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MEM; i++) for (i = 0; i < GLIBTOP_MAX_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_mem [i])), (gh_str02scm (glibtop_types_mem [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MEM; i++) for (i = 0; i < GLIBTOP_MAX_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_mem [i]))), (glibtop_labels_mem [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MEM; i++) for (i = 0; i < GLIBTOP_MAX_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_mem [i]))), (glibtop_descriptions_mem [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_msg_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_msg_limits [i])), (gh_str02scm (glibtop_names_msg_limits [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_msg_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_msg_limits [i])), (gh_str02scm (glibtop_types_msg_limits [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_msg_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_msg_limits [i]))), (glibtop_labels_msg_limits [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_msg_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_MSG_LIMITS; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_msg_limits [i]))), (glibtop_descriptions_msg_limits [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_kernel (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_kernel [i])), (gh_str02scm (glibtop_names_proc_kernel [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_kernel (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_kernel [i])), (gh_str02scm (glibtop_types_proc_kernel [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_kernel (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_kernel [i]))), (glibtop_labels_proc_kernel [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_kernel (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_KERNEL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_kernel [i]))), (glibtop_descriptions_proc_kernel [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -34,10 +34,10 @@ glibtop_guile_names_proclist (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++) for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proclist [i])), (gh_str02scm (glibtop_names_proclist [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -51,11 +51,11 @@ glibtop_guile_types_proclist (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++) for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proclist [i])), (gh_str02scm (glibtop_types_proclist [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -68,11 +68,11 @@ glibtop_guile_labels_proclist (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++) for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proclist [i]))), (glibtop_labels_proclist [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -86,11 +86,11 @@ glibtop_guile_descriptions_proclist (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++) for (i = 0; i < GLIBTOP_MAX_PROCLIST; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proclist [i]))), (glibtop_descriptions_proclist [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++) for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_mem [i])), (gh_str02scm (glibtop_names_proc_mem [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++) for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_mem [i])), (gh_str02scm (glibtop_types_proc_mem [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++) for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_mem [i]))), (glibtop_labels_proc_mem [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_mem (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++) for (i = 0; i < GLIBTOP_MAX_PROC_MEM; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_mem [i]))), (glibtop_descriptions_proc_mem [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_segment (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_segment [i])), (gh_str02scm (glibtop_names_proc_segment [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_segment (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_segment [i])), (gh_str02scm (glibtop_types_proc_segment [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_segment (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_segment [i]))), (glibtop_labels_proc_segment [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_segment (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SEGMENT; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_segment [i]))), (glibtop_descriptions_proc_segment [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_signal (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_signal [i])), (gh_str02scm (glibtop_names_proc_signal [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_signal (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_signal [i])), (gh_str02scm (glibtop_types_proc_signal [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_signal (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_signal [i]))), (glibtop_labels_proc_signal [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_signal (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++) for (i = 0; i < GLIBTOP_MAX_PROC_SIGNAL; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_signal [i]))), (glibtop_descriptions_proc_signal [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_state (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++) for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_state [i])), (gh_str02scm (glibtop_names_proc_state [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_state (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++) for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_state [i])), (gh_str02scm (glibtop_types_proc_state [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_state (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++) for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_state [i]))), (glibtop_labels_proc_state [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_state (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++) for (i = 0; i < GLIBTOP_MAX_PROC_STATE; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_state [i]))), (glibtop_descriptions_proc_state [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_time (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++) for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_time [i])), (gh_str02scm (glibtop_names_proc_time [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_time (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++) for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_time [i])), (gh_str02scm (glibtop_types_proc_time [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_time (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++) for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_time [i]))), (glibtop_labels_proc_time [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_time (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++) for (i = 0; i < GLIBTOP_MAX_PROC_TIME; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_time [i]))), (glibtop_descriptions_proc_time [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,10 @@ glibtop_guile_names_proc_uid (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++) for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_names_proc_uid [i])), (gh_str02scm (glibtop_names_proc_uid [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -50,10 +50,10 @@ glibtop_guile_types_proc_uid (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++) for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (glibtop_types_proc_uid [i])), (gh_str02scm (glibtop_types_proc_uid [i]),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -67,11 +67,11 @@ glibtop_guile_labels_proc_uid (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++) for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_labels_proc_uid [i]))), (glibtop_labels_proc_uid [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }
@@ -85,11 +85,11 @@ glibtop_guile_descriptions_proc_uid (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++) for (i = 0; i < GLIBTOP_MAX_PROC_UID; i++)
list = gh_append list = gh_append2
(gh_list (list, (list, gh_list
gh_list (gh_str02scm (gettext (gh_str02scm (gettext
(glibtop_descriptions_proc_uid [i]))), (glibtop_descriptions_proc_uid [i])),
SCM_UNDEFINED)); SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,9 +33,8 @@ glibtop_guile_names_sem_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (glibtop_names_sem_limits [i]),
gh_list (gh_str02scm (glibtop_names_sem_limits [i])), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -49,9 +48,8 @@ glibtop_guile_types_sem_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_types_sem_limits [i])),
gh_list (gh_str02scm (gettext (glibtop_types_sem_limits [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -65,9 +63,8 @@ glibtop_guile_labels_sem_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_labels_sem_limits [i])),
gh_list (gh_str02scm (gettext (glibtop_labels_sem_limits [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -81,9 +78,8 @@ glibtop_guile_descriptions_sem_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SEM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_descriptions_sem_limits [i])),
gh_list (gh_str02scm (gettext (glibtop_descriptions_sem_limits [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,9 +33,8 @@ glibtop_guile_names_shm_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (glibtop_names_shm_limits [i]),
gh_list (gh_str02scm (glibtop_names_shm_limits [i])), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -49,9 +48,8 @@ glibtop_guile_types_shm_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_types_shm_limits [i])),
gh_list (gh_str02scm (gettext (glibtop_types_shm_limits [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -65,9 +63,8 @@ glibtop_guile_labels_shm_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_labels_shm_limits [i])),
gh_list (gh_str02scm (gettext (glibtop_labels_shm_limits [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -81,9 +78,8 @@ glibtop_guile_descriptions_shm_limits (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++) for (i = 0; i < GLIBTOP_MAX_SHM_LIMITS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_descriptions_shm_limits [i])),
gh_list (gh_str02scm (gettext (glibtop_descriptions_shm_limits [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,9 +33,7 @@ glibtop_guile_names_swap (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SWAP; i++) for (i = 0; i < GLIBTOP_MAX_SWAP; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (glibtop_names_swap [i]), SCM_UNDEFINED));
gh_list (gh_str02scm (glibtop_names_swap [i])),
SCM_UNDEFINED));
return list; return list;
} }
@@ -49,9 +47,8 @@ glibtop_guile_types_swap (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SWAP; i++) for (i = 0; i < GLIBTOP_MAX_SWAP; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_types_swap [i])),
gh_list (gh_str02scm (gettext (glibtop_types_swap [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -65,9 +62,8 @@ glibtop_guile_labels_swap (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SWAP; i++) for (i = 0; i < GLIBTOP_MAX_SWAP; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_labels_swap [i])),
gh_list (gh_str02scm (gettext (glibtop_labels_swap [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -81,9 +77,8 @@ glibtop_guile_descriptions_swap (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SWAP; i++) for (i = 0; i < GLIBTOP_MAX_SWAP; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_descriptions_swap [i])),
gh_list (gh_str02scm (gettext (glibtop_descriptions_swap [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,10 +33,9 @@ glibtop_guile_names_sysdeps (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++) for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (glibtop_names_sysdeps [i]),
gh_list (gh_str02scm (glibtop_names_sysdeps [i])), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -49,9 +48,8 @@ glibtop_guile_types_sysdeps (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++) for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_types_sysdeps [i])),
gh_list (gh_str02scm (gettext (glibtop_types_sysdeps [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -65,9 +63,8 @@ glibtop_guile_labels_sysdeps (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++) for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_labels_sysdeps [i])),
gh_list (gh_str02scm (gettext (glibtop_labels_sysdeps [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -81,9 +78,8 @@ glibtop_guile_descriptions_sysdeps (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++) for (i = 0; i < GLIBTOP_MAX_SYSDEPS; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_descriptions_sysdeps [i])),
gh_list (gh_str02scm (gettext (glibtop_descriptions_sysdeps [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -33,9 +33,7 @@ glibtop_guile_names_uptime (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_UPTIME; i++) for (i = 0; i < GLIBTOP_MAX_UPTIME; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (glibtop_names_uptime [i]), SCM_UNDEFINED));
gh_list (gh_str02scm (glibtop_names_uptime [i])),
SCM_UNDEFINED));
return list; return list;
} }
@@ -49,9 +47,8 @@ glibtop_guile_types_uptime (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_UPTIME; i++) for (i = 0; i < GLIBTOP_MAX_UPTIME; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_types_uptime [i])),
gh_list (gh_str02scm (gettext (glibtop_types_uptime [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -65,9 +62,8 @@ glibtop_guile_labels_uptime (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_UPTIME; i++) for (i = 0; i < GLIBTOP_MAX_UPTIME; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_labels_uptime [i])),
gh_list (gh_str02scm (gettext (glibtop_labels_uptime [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }
@@ -81,9 +77,8 @@ glibtop_guile_descriptions_uptime (void)
list = gh_list (SCM_UNDEFINED); list = gh_list (SCM_UNDEFINED);
for (i = 0; i < GLIBTOP_MAX_UPTIME; i++) for (i = 0; i < GLIBTOP_MAX_UPTIME; i++)
list = gh_append (gh_list (list, list = gh_append2 (list, gh_list (gh_str02scm (gettext (glibtop_descriptions_uptime [i])),
gh_list (gh_str02scm (gettext (glibtop_descriptions_uptime [i]))), SCM_UNDEFINED));
SCM_UNDEFINED));
return list; return list;
} }

View File

@@ -43,10 +43,7 @@ glibtop_guile_get_proclist (void)
if (ptr) { if (ptr) {
for (i = 0; i < proclist.number; i++) for (i = 0; i < proclist.number; i++)
list = gh_append list = gh_append2 (list, gh_list (gh_ulong2scm ((unsigned long) ptr [i]), SCM_UNDEFINED));
(gh_list (list,
gh_list (gh_ulong2scm ((unsigned long) ptr [i])),
SCM_UNDEFINED));
} }
glibtop_free (ptr); glibtop_free (ptr);

View File

@@ -13,3 +13,5 @@ libgtop_sysdeps_la_SOURCES = init.c open.c close.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 procsegment.c
include_HEADERS = glibtop_server.h

View File

@@ -24,5 +24,5 @@
/* Closes pipe to gtop server. */ /* Closes pipe to gtop server. */
void void
glibtop_close (glibtop *server) glibtop_close_l (glibtop *server)
{ } { }

View File

@@ -20,6 +20,7 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <config.h> #include <config.h>
#include <glibtop/error.h>
#include <glibtop/cpu.h> #include <glibtop/cpu.h>
static const unsigned long _glibtop_sysdeps_cpu = static const unsigned long _glibtop_sysdeps_cpu =
@@ -29,26 +30,51 @@ static const unsigned long _glibtop_sysdeps_cpu =
/* Provides information about cpu usage. */ /* Provides information about cpu usage. */
void #define FILENAME "/proc/stat"
glibtop_get_cpu__r (glibtop *server, glibtop_cpu *buf)
{
FILE *f;
glibtop_init__r (&server); void
glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf)
{
char buffer [BUFSIZ], *tmp;
int fd = 0, ret;
glibtop_init_r (&server, 0, 0);
memset (buf, 0, sizeof (glibtop_cpu)); memset (buf, 0, sizeof (glibtop_cpu));
buf->flags = _glibtop_sysdeps_cpu; buf->flags = _glibtop_sysdeps_cpu;
f = fopen ("/proc/stat", "r"); #ifdef GLIBTOP_CACHE_OPEN
if (!f) return; fd = server->machine.fd_stat;
#endif
if (fd == 0) {
fd = open (FILENAME, O_RDONLY);
if (fd == -1)
glibtop_error_r (server, "open (%s): %s",
FILENAME, strerror (errno));
} else {
lseek (fd, 0, SEEK_SET);
}
fscanf (f, "cpu %lu %lu %lu %lu\n", ret = read (fd, buffer, BUFSIZ);
&buf->user, &buf->nice, &buf->sys, &buf->idle); if (ret == -1)
glibtop_error_r (server, "read (%s): %s",
FILENAME, strerror (errno));
tmp = strchr (buffer, '\n');
tmp = skip_token (tmp); /* "cpu" */
buf->user = strtoul (tmp, &tmp, 10);
buf->nice = strtoul (tmp, &tmp, 10);
buf->sys = strtoul (tmp, &tmp, 10);
buf->idle = strtoul (tmp, &tmp, 10);
buf->total = buf->user + buf->nice + buf->sys + buf->idle; buf->total = buf->user + buf->nice + buf->sys + buf->idle;
buf->frequency = 100; buf->frequency = 100;
fclose (f); #ifdef GLIBTOP_CACHE_OPEN
server->machine.fd_stat = fd;
#else
close (fd);
#endif
} }

View File

@@ -0,0 +1,56 @@
/* $Id$ */
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the Gnome Top Library.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
The Gnome Top Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Top Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef __GLIBTOP_MACHINE_H__
#define __GLIBTOP_MACHINE_H__
#include <unistd.h>
#include <fcntl.h>
#include <ctype.h>
__BEGIN_DECLS
#if _IN_LIBGTOP
static inline char *
skip_token(const char *p)
{
while (isspace(*p)) p++;
while (*p && !isspace(*p)) p++;
return (char *)p;
}
#endif
typedef struct _glibtop_machine glibtop_machine;
struct _glibtop_machine
{
pid_t last_pid;
int no_update;
int fd_stat, fd_meminfo, fd_loadavg;
char proc_stat [BUFSIZ], proc_statm [BUFSIZ];
char proc_status [BUFSIZ];
};
__END_DECLS
#endif

View File

@@ -0,0 +1,46 @@
/* $Id$ */
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the Gnome Top Library.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
The Gnome Top Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Top Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef __GLIBTOP_SERVER_H__
#define __GLIBTOP_SERVER_H__
__BEGIN_DECLS
#define GLIBTOP_SUID_CPU 0
#define GLIBTOP_SUID_MEM 0
#define GLIBTOP_SUID_SWAP 0
#define GLIBTOP_SUID_UPTIME 0
#define GLIBTOP_SUID_LOADAVG 0
#define GLIBTOP_SUID_SHM_LIMITS 0
#define GLIBTOP_SUID_MSG_LIMITS 0
#define GLIBTOP_SUID_SEM_LIMITS 0
#define GLIBTOP_SUID_PROCLIST 0
#define GLIBTOP_SUID_PROC_STATE 0
#define GLIBTOP_SUID_PROC_UID 0
#define GLIBTOP_SUID_PROC_MEM 0
#define GLIBTOP_SUID_PROC_TIME 0
#define GLIBTOP_SUID_PROC_SIGNAL 0
#define GLIBTOP_SUID_PROC_KERNEL 0
#define GLIBTOP_SUID_PROC_SEGMENT 0
__END_DECLS
#endif

Some files were not shown because too many files have changed in this diff Show More