Compare commits
45 Commits
libgtop-GN
...
LIBGTOP_2_
Author | SHA1 | Date | |
---|---|---|---|
|
7bd1293665 | ||
|
5edf277435 | ||
|
3f307e8e30 | ||
|
b375457834 | ||
|
79e8b914ed | ||
|
faacbd7f8b | ||
|
dde57bee91 | ||
|
08798f05f5 | ||
|
486e6b0260 | ||
|
1c96e35cc0 | ||
|
83a3d5f76d | ||
|
80aeb305c2 | ||
|
4c8ae9e25c | ||
|
bae16b467f | ||
|
5e28a55218 | ||
|
4d0bca118a | ||
|
c3011b646c | ||
|
b94a36c719 | ||
|
7aaa4454ab | ||
|
6572ee1baf | ||
|
c95d39dde7 | ||
|
a32503df9b | ||
|
d31e33d4bf | ||
|
09becf3b7d | ||
|
6e9589702f | ||
|
ab7f98d2ff | ||
|
75b2832076 | ||
|
142a323364 | ||
|
3a4a550e06 | ||
|
2fc6e07c0f | ||
|
2d4db7f03f | ||
|
9b87f4586e | ||
|
9ff3af644c | ||
|
ffb5f13711 | ||
|
6dbc1e0d4a | ||
|
c660c08b6f | ||
|
2ce38167e1 | ||
|
7cad52aaa0 | ||
|
61f8cb7ff2 | ||
|
f05ee369d5 | ||
|
c3bfcf38a8 | ||
|
1552efa493 | ||
|
9bb1b80751 | ||
|
40140ad487 | ||
|
47e518d612 |
19
.cvsignore
19
.cvsignore
@@ -1,7 +1,5 @@
|
|||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
call-vector.h
|
|
||||||
call-vector.h
|
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
config.cache
|
config.cache
|
||||||
config.h
|
config.h
|
||||||
@@ -15,11 +13,11 @@ gtopConf.sh
|
|||||||
i386-bsdi
|
i386-bsdi
|
||||||
i686-pc-linux-gnu
|
i686-pc-linux-gnu
|
||||||
intl
|
intl
|
||||||
libgtop-1.*.*.tar.gz
|
|
||||||
libgtop-1.*.*
|
|
||||||
libgtop-mirror.sh.swp
|
libgtop-mirror.sh.swp
|
||||||
libgtopConf.sh
|
libgtopConf.sh
|
||||||
libtool
|
libtool
|
||||||
|
ltconfig
|
||||||
|
ltmain.sh
|
||||||
macros
|
macros
|
||||||
stamp-h
|
stamp-h
|
||||||
stamp-h.in
|
stamp-h.in
|
||||||
@@ -32,13 +30,6 @@ i686-pc-linux-gnu-linux
|
|||||||
libgtop-config
|
libgtop-config
|
||||||
ABOUT-NLS
|
ABOUT-NLS
|
||||||
libgtop.spec
|
libgtop.spec
|
||||||
install-sh
|
libgtop*.tar.gz
|
||||||
mkinstalldirs
|
*-debstamp
|
||||||
missing
|
libgtop*.pc
|
||||||
INSTALL
|
|
||||||
COPYING
|
|
||||||
glibtop-config.h
|
|
||||||
stamp-gc-h
|
|
||||||
build-debstamp
|
|
||||||
install-debstamp
|
|
||||||
libgtop.pc
|
|
||||||
|
@@ -7,18 +7,17 @@
|
|||||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
||||||
#
|
#
|
||||||
LIBGTOP_MAJOR_VERSION=1
|
LIBGTOP_MAJOR_VERSION=1
|
||||||
LIBGTOP_MINOR_VERSION=1
|
LIBGTOP_MINOR_VERSION=90
|
||||||
LIBGTOP_MICRO_VERSION=6
|
LIBGTOP_MICRO_VERSION=0
|
||||||
|
|
||||||
# you can set this to `-snap' for instance to create
|
|
||||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
|
||||||
LIBGTOP_VERSION_SUFFIX=-snap
|
|
||||||
|
|
||||||
LIBGTOP_INTERFACE_AGE=0
|
LIBGTOP_INTERFACE_AGE=0
|
||||||
LIBGTOP_BINARY_AGE=0
|
LIBGTOP_BINARY_AGE=0
|
||||||
|
# you can set this to `-snap' for instance to create
|
||||||
|
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||||
|
LIBGTOP_VERSION_SUFFIX=
|
||||||
|
|
||||||
# Increase each time you change the client/server protocol.
|
# Increase each time you change the client/server protocol.
|
||||||
LIBGTOP_SERVER_VERSION=53
|
LIBGTOP_SERVER_VERSION=5
|
||||||
|
|
||||||
# Don't change this
|
# Don't change this
|
||||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||||
@@ -27,6 +26,3 @@ LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERS
|
|||||||
# For automake.
|
# For automake.
|
||||||
VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX
|
VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX
|
||||||
PACKAGE=libgtop
|
PACKAGE=libgtop
|
||||||
|
|
||||||
# This is the default translation domain for LibGTop
|
|
||||||
LIBGTOP_PACKAGE=libgtop-$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
|
||||||
|
81
Makefile.am
81
Makefile.am
@@ -1,26 +1,27 @@
|
|||||||
## Process this file with automake to produce Makefile.in.
|
## Process this file with automake to produce Makefile.in.
|
||||||
|
|
||||||
SUBDIRS = po intl misc include lib sysdeps src doc dtd scripts
|
if EXAMPLES
|
||||||
|
examples_SUBDIRS = examples
|
||||||
|
else
|
||||||
|
examples_SUBDIRS =
|
||||||
|
endif
|
||||||
|
|
||||||
include_HEADERS = glibtop.h
|
if BUILD_GNOME_SUPPORT
|
||||||
configincludedir = $(pkglibdir)/include
|
support = support
|
||||||
|
endif
|
||||||
|
|
||||||
|
SUBDIRS = . po $(support) misc include sysdeps lib src \
|
||||||
|
$(examples_SUBDIRS) doc
|
||||||
|
|
||||||
|
libgtopinclude_HEADERS = glibtop.h
|
||||||
|
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||||
|
|
||||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
|
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
|
||||||
LIBGTOP-VERSION features.def structures.def libgtop-config.in \
|
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
|
||||||
RELNOTES-0.25 RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \
|
RELNOTES-1.0 RELNOTES-1.0.x libgtop-sysdeps.m4 README \
|
||||||
libgtop-mirror.sh libgtop-2.0.pc.in
|
libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4
|
||||||
|
|
||||||
configinclude_DATA = \
|
dist-hook:
|
||||||
glibtop-config.h
|
|
||||||
|
|
||||||
BUILT_SOURCES = stamp-gc-h #note: not glibtop-config.h
|
|
||||||
glibtop-config.h: stamp-gc-h
|
|
||||||
@:
|
|
||||||
stamp-gc-h: config.status
|
|
||||||
CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=glibtop-config.h ./config.status
|
|
||||||
echo timestamp > stamp-gc-h
|
|
||||||
|
|
||||||
dist-hook: libgtop.spec
|
|
||||||
cp libgtop.spec $(distdir)
|
cp libgtop.spec $(distdir)
|
||||||
|
|
||||||
release:
|
release:
|
||||||
@@ -28,14 +29,24 @@ release:
|
|||||||
|
|
||||||
## Put `exec' in the name because this should be installed by
|
## Put `exec' in the name because this should be installed by
|
||||||
## `install-exec', not `install-data'.
|
## `install-exec', not `install-data'.
|
||||||
confexecdir = $(libdir)
|
## confexecdir = $(libdir)
|
||||||
confexec_DATA = $(top_builddir)/libgtopConf.sh \
|
## confexec_DATA = $(top_builddir)/libgtopConf.sh \
|
||||||
$(top_builddir)/libgtop-features.def \
|
## $(top_builddir)/libgtop-features.def
|
||||||
$(top_builddir)/libgtop-structures.def
|
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = libgtop-2.0.pc
|
||||||
|
|
||||||
CLEANFILES=libgtopConf.sh
|
CLEANFILES=libgtopConf.sh
|
||||||
|
|
||||||
bin_SCRIPTS = libgtop-config
|
## bin_SCRIPTS = $(top_builddir)/libgtop-config
|
||||||
|
|
||||||
|
## to automatically rebuild aclocal.m4 if any of the macros in
|
||||||
|
## `macros/' change
|
||||||
|
## @MAINT@ include macros/macros.dep
|
||||||
|
## @MAINT@macros/macros.dep: macros/Makefile.am
|
||||||
|
## @MAINT@ cd macros && $(MAKE) macros.dep
|
||||||
|
|
||||||
|
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION
|
||||||
|
|
||||||
## We create libgtopConf.sh here and not from configure because we want
|
## We create libgtopConf.sh here and not from configure because we want
|
||||||
## to get the paths expanded correctly. Macros like srcdir are given
|
## to get the paths expanded correctly. Macros like srcdir are given
|
||||||
@@ -44,14 +55,17 @@ bin_SCRIPTS = libgtop-config
|
|||||||
libgtopConf.sh: libgtopConf.sh.in Makefile
|
libgtopConf.sh: libgtopConf.sh.in Makefile
|
||||||
## Use sed and then mv to avoid problems if the user interrupts.
|
## Use sed and then mv to avoid problems if the user interrupts.
|
||||||
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
||||||
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#g' \
|
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)/libgtop-2.0#g' \
|
||||||
-e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
|
-e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
|
||||||
-e 's#\@LIBGTOP_BACKEND_DIR\@#$(LIBGTOP_BACKEND_DIR)#g' \
|
|
||||||
-e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
|
-e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||||
-e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
|
-e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
|
||||||
-e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \
|
-e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \
|
||||||
-e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \
|
-e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \
|
||||||
-e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \
|
-e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \
|
||||||
|
-e 's#\@LIBGTOP_GUILE_LIBS\@#$(LIBGTOP_GUILE_LIBS)#g' \
|
||||||
|
-e 's#\@LIBGTOP_GUILE_INCS\@#$(LIBGTOP_GUILE_INCS)#g' \
|
||||||
|
-e 's#\@LIBGTOP_GUILE_NAMES_LIBS\@#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
|
||||||
|
-e 's#\@LIBGTOP_GUILE_NAMES_INCS\@#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
|
||||||
-e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \
|
-e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \
|
||||||
-e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \
|
-e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \
|
||||||
-e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \
|
-e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \
|
||||||
@@ -60,25 +74,20 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
|
|||||||
-e 's#\@LIBGTOP_VERSION\@#$(LIBGTOP_VERSION)#g' \
|
-e 's#\@LIBGTOP_VERSION\@#$(LIBGTOP_VERSION)#g' \
|
||||||
-e 's#\@LIBGTOP_VERSION_CODE\@#$(LIBGTOP_VERSION_CODE)#g' \
|
-e 's#\@LIBGTOP_VERSION_CODE\@#$(LIBGTOP_VERSION_CODE)#g' \
|
||||||
-e 's#\@LIBGTOP_SERVER_VERSION\@#$(LIBGTOP_SERVER_VERSION)#g' \
|
-e 's#\@LIBGTOP_SERVER_VERSION\@#$(LIBGTOP_SERVER_VERSION)#g' \
|
||||||
-e 's#\@LIBGTOP_PACKAGE\@#$(LIBGTOP_PACKAGE)#g' \
|
|
||||||
-e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \
|
-e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \
|
||||||
-e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \
|
-e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \
|
||||||
-e 's#\@libgtop_have_sysdeps\@#$(libgtop_have_sysdeps)#g' \
|
|
||||||
-e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \
|
-e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \
|
||||||
|
-e 's#\@libgtop_guile_found\@#$(libgtop_guile_found)#g' \
|
||||||
|
-e 's#\@libgtop_want_examples\@#$(libgtop_want_examples)#g' \
|
||||||
< $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
|
< $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
|
||||||
&& mv libgtopConf.tmp libgtopConf.sh
|
&& mv libgtopConf.tmp libgtopConf.sh
|
||||||
|
|
||||||
libgtop-config: libgtop-config.in Makefile
|
# libgtop-config: libgtop-config.in Makefile
|
||||||
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
# sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
||||||
< $(srcdir)/libgtop-config.in > libgtop-config.tmp \
|
# < $(srcdir)/libgtop-config.in > libgtop-config.tmp \
|
||||||
&& mv libgtop-config.tmp libgtop-config && \
|
# && mv libgtop-config.tmp libgtop-config && \
|
||||||
chmod 755 libgtop-config
|
# chmod 755 libgtop-config
|
||||||
|
|
||||||
libgtop-features.def: features.def
|
libgtop-features.def: features.def
|
||||||
@LN_S@ $< $@
|
@LN_S@ $< $@
|
||||||
|
|
||||||
libgtop-structures.def: structures.def
|
|
||||||
@LN_S@ $< $@
|
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = libgtop-2.0.pc
|
|
||||||
|
75
NEWS
75
NEWS
@@ -1,27 +1,68 @@
|
|||||||
February 16, 2000:
|
February 27, 2001:
|
||||||
=================
|
=================
|
||||||
|
|
||||||
* Released LibGTop 1.1.5 "Sidney"
|
* Released LibGTop 1.0.12 "Gerolzhofen".
|
||||||
|
|
||||||
This is a developer's snapshot for the GUADEC CD-ROM. It
|
- fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits).
|
||||||
should work without problems on most recent GNU/Linux and
|
|
||||||
BSD systems. The Solaris port compiles, but has some dynamic
|
|
||||||
linking issues - please use LibGTop 1.1.2.1 on Solaris for
|
|
||||||
the moment until this is fixed.
|
|
||||||
|
|
||||||
January 14, 1999:
|
- fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses
|
||||||
|
`_KERNEL' instead of `KERNEL'). Bug #51334.
|
||||||
|
|
||||||
|
- for BSDI, comment out `subnet' field in netload; this should make
|
||||||
|
it compile, but there may be other problems. Bug #13345.
|
||||||
|
|
||||||
|
This release is for GNOME 1.4 Beta2.
|
||||||
|
|
||||||
|
February 14, 2001:
|
||||||
|
=================
|
||||||
|
|
||||||
|
* Released LibGTop 1.0.11 "Jasmin":
|
||||||
|
|
||||||
|
[The release which was supposed to be called "Gerolzhofen".]
|
||||||
|
|
||||||
|
- merged in the Solaris code from LIBGTOP_1_1_2_PATCHES.
|
||||||
|
|
||||||
|
- minor OpenBSD fixes.
|
||||||
|
|
||||||
|
- again a bunch of updated translations.
|
||||||
|
|
||||||
|
Please test the Solaris stuff and report and bugs and
|
||||||
|
problems as soon as possible; I'll make a new release
|
||||||
|
for the 2nd beta of GNOME 1.4 if necessary.
|
||||||
|
|
||||||
|
November 20, 2000:
|
||||||
|
=================
|
||||||
|
|
||||||
|
* Released LibGTop 1.0.10 "November Rain":
|
||||||
|
|
||||||
|
- this release contains a bunch of updated translations.
|
||||||
|
|
||||||
|
May 25, 2000:
|
||||||
|
============
|
||||||
|
|
||||||
|
* Released LibGTop 1.0.9 "Stuttgart".
|
||||||
|
|
||||||
|
(LibGTop 1.0.8 "Frankfurt" was not publically released.)
|
||||||
|
|
||||||
|
February 15, 2000:
|
||||||
|
=================
|
||||||
|
|
||||||
|
* Released LibGTop 1.0.7 "Copenhagen":
|
||||||
|
|
||||||
|
- this is a bug fix release for the GUADEC CD-ROM;
|
||||||
|
it contains fixes in both the Linux and *BSD sysdeps
|
||||||
|
directory.
|
||||||
|
|
||||||
|
October 18, 1999:
|
||||||
================
|
================
|
||||||
|
|
||||||
* Released LibGTop 1.1.4 "Earthquake"
|
* Released LibGTop 1.0.6 "October LibGTop":
|
||||||
|
|
||||||
This is the first developer's snapshot release after a
|
- compilation fixes for FreeBSD.
|
||||||
longer development period with a lot of interface changes.
|
- updated reference manual.
|
||||||
|
|
||||||
October 19, 1999:
|
September 29, 1999:
|
||||||
================
|
==================
|
||||||
|
|
||||||
* Released LibGTop 1.1.2 "Hardangervidda"
|
* Released LibGTop 1.0.5.
|
||||||
|
|
||||||
This is a stable release from the development branch
|
|
||||||
of LibGTop for Solaris users of October GNOME.
|
|
||||||
|
|
||||||
|
34
README
34
README
@@ -1,32 +1,8 @@
|
|||||||
This is the *development* branch of LibGTop. It is indended
|
$Id$
|
||||||
for people who want to help with the development of LibGTop and
|
|
||||||
not for end-users.
|
|
||||||
|
|
||||||
Please use the LIBGTOP_STABLE_1_0 branch (which is LibGTop 1.0.x)
|
LATEST NEWS:
|
||||||
unless you're really a developer.
|
===========
|
||||||
|
|
||||||
If you're using LibGTop from CVS simply do a
|
Please look also in the file 'NEWS' for latest news.
|
||||||
|
|
||||||
cvs update -r LIBGTOP_STABLE_1_0
|
Martin
|
||||||
|
|
||||||
to get the latest version from the stable branch.
|
|
||||||
|
|
||||||
However, I'll periodically make snapshot releases from the development
|
|
||||||
branch for Solaris users of LibGTop.
|
|
||||||
|
|
||||||
They can be found at
|
|
||||||
|
|
||||||
ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
|
|
||||||
|
|
||||||
in near future.
|
|
||||||
|
|
||||||
Using released tarballs from the development branch is a lot better than
|
|
||||||
compiling directly from CVS since things in CVS may not always work as
|
|
||||||
expected.
|
|
||||||
|
|
||||||
Note that releases from the developer branch are neither binary
|
|
||||||
nor fully source compatible; you'll normally have to recompile
|
|
||||||
everything that use them.
|
|
||||||
|
|
||||||
October 1999
|
|
||||||
Martin Baulig
|
|
||||||
|
@@ -87,7 +87,7 @@ LibGTop is currently used in various places in the GNOME Project,
|
|||||||
for instance in some of the applets in gnome-core and - of cause -
|
for instance in some of the applets in gnome-core and - of cause -
|
||||||
this ultra-cool application called GTop ...
|
this ultra-cool application called GTop ...
|
||||||
|
|
||||||
Although LibGTop is not specific to GNOME and under LGPL license, I
|
Although LibGTop is not specific to GNOME and under GPL license, I
|
||||||
spent most my time during the last months to work in the GNOME project
|
spent most my time during the last months to work in the GNOME project
|
||||||
so this is the primary use for LibGTop (and currently the only one).
|
so this is the primary use for LibGTop (and currently the only one).
|
||||||
|
|
||||||
|
172
RELNOTES-1.0.x
Normal file
172
RELNOTES-1.0.x
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
RELEASE NOTES FOR LIBGTOP 1.0.7
|
||||||
|
===============================
|
||||||
|
|
||||||
|
OVERVIEW
|
||||||
|
--------
|
||||||
|
|
||||||
|
LibGTop is a library that read information about processes and the
|
||||||
|
running systems. This information include:
|
||||||
|
|
||||||
|
General System Information:
|
||||||
|
|
||||||
|
cpu - CPU Usage
|
||||||
|
mem - Memory Usage
|
||||||
|
swap - Swap Usage (including paging activity)
|
||||||
|
loadavg - Load average (including nr_running, nr_tasks, last_pid)
|
||||||
|
uptime - Uptime and Idle time, can be calculated from CPU usage
|
||||||
|
|
||||||
|
SYS V IPC Limits:
|
||||||
|
|
||||||
|
shm_limits - Shared Memory Limits
|
||||||
|
msg_limits - Message Queue Limits
|
||||||
|
sem_limits - Semaphore Set Limits
|
||||||
|
|
||||||
|
Network:
|
||||||
|
|
||||||
|
netload - Network load
|
||||||
|
ppp - PPP statistics
|
||||||
|
|
||||||
|
Process List:
|
||||||
|
|
||||||
|
proclist - List of processes
|
||||||
|
|
||||||
|
Process information:
|
||||||
|
|
||||||
|
proc_state - cmd, state, uid, gid
|
||||||
|
proc_uid - uid,euid,gid,egid,pid,ppid,pgrp
|
||||||
|
session,tty,tpgid,priority,nice
|
||||||
|
proc_mem - size,vsize,resident,share,rss,rss_rlim
|
||||||
|
proc_time - start_time,rtime,utime,stime,cutime,cstime
|
||||||
|
timeout,it_real_value,frequency
|
||||||
|
proc_signal - signal,blocked,sigignore,sigcatch
|
||||||
|
proc_kernel - k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
|
||||||
|
kstk_esp,kstk_eip,nwchan,wchan
|
||||||
|
proc_segment - text_rss,shlib_rss,data_rss,stack_rss,dirty_size
|
||||||
|
start_code,end_code,start_stack
|
||||||
|
|
||||||
|
Process maps:
|
||||||
|
|
||||||
|
proc_args - Command line arguments
|
||||||
|
proc_map - Process map (/proc/<pid>/maps under Linux)
|
||||||
|
|
||||||
|
File system usage:
|
||||||
|
|
||||||
|
mountlist - List of currently mounted filesystems
|
||||||
|
fsusage - File system usage
|
||||||
|
|
||||||
|
PORTABILITY:
|
||||||
|
-----------
|
||||||
|
|
||||||
|
LibGTop is designed to be as portable as possible. None of the
|
||||||
|
functions and retrieved information should be specific to a specific
|
||||||
|
operating system. So you only need to port the system dependent part
|
||||||
|
of the library to a new system and all application programs can then
|
||||||
|
use libgtop on this new system.
|
||||||
|
|
||||||
|
CLIENT/SERVER MODEL:
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Some systems like DEC OSF/1 or BSD require special privileges for the
|
||||||
|
calling process to fetch the required information (SUID root/SGID
|
||||||
|
kmem). To solve this problem, I designed a client/server model which
|
||||||
|
makes a call to a SUID/SGID server which fetches the required
|
||||||
|
information whenever it is required. This server is only called for
|
||||||
|
features that really require privileges, otherwise the sysdeps code
|
||||||
|
is called directory (every user can get the CPU usage on DEC OSF/1,
|
||||||
|
but only root can get information about processes other than the
|
||||||
|
current one).
|
||||||
|
|
||||||
|
There is also some kind of daemon which can be used to fetch
|
||||||
|
information from remote systems (still experimental). This daemon
|
||||||
|
normally runs as nobody and calls the SUID/SGID itself when needed.
|
||||||
|
|
||||||
|
LIBGTOP AND GNOME:
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Although LibGTop is part of the GNOME desktop environment, its main
|
||||||
|
interface is totally independent from any particular desktop environment,
|
||||||
|
so you can also use it as a standalone library in any piece of GPLed
|
||||||
|
software which makes it also a valuable part of the GNU project.
|
||||||
|
|
||||||
|
LibGTop is currently used in various places in the GNOME Project,
|
||||||
|
for instance in some of the applets in gnome-core and - of cause -
|
||||||
|
this ultra-cool application called GTop ...
|
||||||
|
|
||||||
|
However, you need to give the configure.in script the `--without-gnome'
|
||||||
|
parameter when you want to use LibGTop without GNOME (this is because,
|
||||||
|
if you want to use it with GNOME, you need to compile it after the main
|
||||||
|
GNOME libraries and I wanted to avoid getting unnecessary bug reports
|
||||||
|
about this).
|
||||||
|
|
||||||
|
LIBGTOP AND GNOME - PART II:
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
LibGTop was tested with FreeBSD 3.0 but it should also work with
|
||||||
|
FreeBSD 2.2.7, NetBSD and OpenBSD.
|
||||||
|
|
||||||
|
Unfortunately, I don't have the power and disk space to install all
|
||||||
|
possible operating systems out there on my machine and test things myself,
|
||||||
|
so I depend on people telling me whether it works and sending me bug
|
||||||
|
reports and patches if not.
|
||||||
|
|
||||||
|
However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for
|
||||||
|
LibGTop and whenever I get bug reports I will do my best to fix them as
|
||||||
|
quickly as possible.
|
||||||
|
|
||||||
|
PLATFORM SPECIFIC NOTES FOR LINUX:
|
||||||
|
==================================
|
||||||
|
|
||||||
|
[I am speaking of the Linux kernel here.]
|
||||||
|
|
||||||
|
Under Linux, LibGTop should work without problems and read everything
|
||||||
|
from /proc.
|
||||||
|
|
||||||
|
LibGTop 0.25 also had an experimental kernel interface to read this
|
||||||
|
information directly from the kernel with a system call - but I have
|
||||||
|
currently dropped support for this as I am too busy with GNOME
|
||||||
|
development to keep current with kernel hacking.
|
||||||
|
|
||||||
|
PLATFORM SPECIFIC NOTES FOR SOLARIS:
|
||||||
|
====================================
|
||||||
|
|
||||||
|
The development branch of LibGTop (the 1.1.x series) has a first version
|
||||||
|
of the Solaris port which works at least on Solaris 7.
|
||||||
|
|
||||||
|
If you are on a Solaris system and want to give it a try, just fetch the
|
||||||
|
latest 1.1.x tarball from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
|
||||||
|
and try it out.
|
||||||
|
|
||||||
|
PLATFORM SPECIFIC NOTES FOR BSD:
|
||||||
|
=================================
|
||||||
|
|
||||||
|
There are a few caveats:
|
||||||
|
|
||||||
|
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to
|
||||||
|
kmem after installation and mount the /proc file system of FreeBSD
|
||||||
|
(/proc/<pid>/mem is used within kvm_uread ()).
|
||||||
|
|
||||||
|
* To get the filenames of the process maps displayed in GTop, you need
|
||||||
|
to configure with the `--with-libgtop-inodedb' option (you need GDBM
|
||||||
|
for this to work).
|
||||||
|
|
||||||
|
You have then to create an inode database which is used to look up
|
||||||
|
filenames. This is done using the `mkinodedb' program which comes
|
||||||
|
along with libgtop.
|
||||||
|
|
||||||
|
See the file src/inodedb/README for details:
|
||||||
|
|
||||||
|
The `mkinodedb' program which is build in this directory takes two
|
||||||
|
command line arguments: the full pathname of the database to be
|
||||||
|
created and the name of a configuration file consisting of directory
|
||||||
|
and file names each on a line by itself - see `/etc/ld.so.conf' for
|
||||||
|
an example.
|
||||||
|
|
||||||
|
Putting a directory name in this file means all regular files found
|
||||||
|
in this directory are included in the database, but it will not
|
||||||
|
recursively descend into subdirectories (for instance, we want
|
||||||
|
everything in `/usr/lib' but not every single file in `/usr/lib/sgml').
|
||||||
|
You can also use filenames to include a single file.
|
||||||
|
|
||||||
|
Have fun,
|
||||||
|
|
||||||
|
Martin <martin@home-of-linux.org>
|
68
acconfig.h
68
acconfig.h
@@ -1,18 +1,36 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
/* Define if gethostname () must be declared. */
|
||||||
|
#undef NEED_DECLARATION_GETHOSTNAME
|
||||||
|
|
||||||
|
/* Define if setreuid () must be declared. */
|
||||||
|
#undef NEED_DECLARATION_SETREUID
|
||||||
|
|
||||||
|
/* Define if setregid () must be declared. */
|
||||||
|
#undef NEED_DECLARATION_SETREGID
|
||||||
|
|
||||||
|
/* Define if getpagesize () must be declared. */
|
||||||
|
#undef NEED_DECLARATION_GETPAGESIZE
|
||||||
|
|
||||||
|
/* Define if program_invocation_name must be declared. */
|
||||||
|
#undef NEED_DECLARATION_PROGRAM_INVOCATION_NAME
|
||||||
|
|
||||||
|
@TOP@
|
||||||
|
|
||||||
#undef ENABLE_NLS
|
#undef ENABLE_NLS
|
||||||
#undef HAVE_CATGETS
|
#undef HAVE_CATGETS
|
||||||
|
#undef GETTEXT_PACKAGE
|
||||||
#undef HAVE_GETTEXT
|
#undef HAVE_GETTEXT
|
||||||
#undef HAVE_LC_MESSAGES
|
#undef HAVE_LC_MESSAGES
|
||||||
#undef HAVE_STPCPY
|
#undef HAVE_STPCPY
|
||||||
#undef HAVE_STRUCT_OSOCKADDR
|
#undef HAVE_STRUCT_OSOCKADDR
|
||||||
#undef LIBGTOP_PACKAGE
|
|
||||||
#undef PACKAGE
|
#undef PACKAGE
|
||||||
#undef VERSION
|
#undef VERSION
|
||||||
#undef HAVE_LIBSM
|
#undef HAVE_LIBSM
|
||||||
#undef HAVE_LIBINTL_H
|
#undef HAVE_LIBINTL_H
|
||||||
#undef HAVE_GTK_SIGNAL_HANDLER_PENDING
|
#undef HAVE_GTK_SIGNAL_HANDLER_PENDING
|
||||||
|
|
||||||
|
/* Do not remove this comments and the empty lines; they are needed */
|
||||||
|
#undef HAVE_PROGRAM_INVOCATION_SHORT_NAME
|
||||||
/* Define if you have the Andrew File System. */
|
/* Define if you have the Andrew File System. */
|
||||||
#undef AFS
|
#undef AFS
|
||||||
|
|
||||||
@@ -92,23 +110,61 @@
|
|||||||
SunOS 4.1.1 seems not to be affected.] */
|
SunOS 4.1.1 seems not to be affected.] */
|
||||||
#undef STATFS_TRUNCATES_BLOCK_COUNTS
|
#undef STATFS_TRUNCATES_BLOCK_COUNTS
|
||||||
|
|
||||||
|
|
||||||
|
/* to fix a bug in autoheader on DEC OSF1. */
|
||||||
|
#undef HAVE_PROGRAM_INVOCATION_NAME
|
||||||
|
|
||||||
#undef HAVE_SOCKETS
|
#undef HAVE_SOCKETS
|
||||||
#undef HAVE_SOCKADDR_SUN_LEN
|
#undef HAVE_SOCKADDR_SUN_LEN
|
||||||
|
|
||||||
|
#undef HAVE_LIBJPEG
|
||||||
|
#undef HAVE_LIBGIF
|
||||||
|
#undef HAVE_LIBTIFF
|
||||||
|
#undef HAVE_LIBZ
|
||||||
|
#undef HAVE_LIBPNG
|
||||||
|
#undef HAVE_GMP2_INCLUDE_DIR
|
||||||
|
#undef HAVE_GUILE
|
||||||
|
|
||||||
#undef ssize_t
|
#undef ssize_t
|
||||||
#undef u_int64_t
|
#undef u_int64_t
|
||||||
#undef int64_t
|
#undef int64_t
|
||||||
#undef u_int8_t
|
|
||||||
#undef int8_t
|
|
||||||
|
|
||||||
|
#undef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
|
||||||
|
#undef GLIBTOP_NAMES
|
||||||
|
#undef GLIBTOP_GUILE
|
||||||
|
#undef GLIBTOP_GUILE_NAMES
|
||||||
|
#undef GLIBTOP_EXAMPLES
|
||||||
#undef GLIBTOP_INODEDB
|
#undef GLIBTOP_INODEDB
|
||||||
|
|
||||||
|
#undef NEED_LIBGTOP
|
||||||
|
|
||||||
|
#undef HAVE_LINUX_TABLE
|
||||||
|
#undef HAVE_LIBGTOP_SMP
|
||||||
|
|
||||||
#undef HAVE_XAUTH
|
#undef HAVE_XAUTH
|
||||||
|
|
||||||
|
/* Define if your have the I4B package. */
|
||||||
|
#undef HAVE_I4B
|
||||||
|
#undef HAVE_I4B_ACCT
|
||||||
|
|
||||||
/* Define to enable debugging. */
|
/* Define to enable debugging. */
|
||||||
#undef LIBGTOP_ENABLE_DEBUG
|
#undef LIBGTOP_ENABLE_DEBUG
|
||||||
#undef LIBGTOP_FATAL_WARNINGS
|
#undef LIBGTOP_FATAL_WARNINGS
|
||||||
|
|
||||||
/* Define to use glib's malloc. */
|
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
|
||||||
#undef LIBGTOP_USE_GLIB_MALLOC
|
* the running kernel (if we don't have configured kernel sources).
|
||||||
|
*/
|
||||||
|
#undef GLIBTOP_LINUX_VERSION_CODE
|
||||||
|
|
||||||
|
/* Solaris release code (eg. 251 for Solaris 2.5.1). */
|
||||||
|
#undef GLIBTOP_SOLARIS_RELEASE
|
||||||
|
|
||||||
|
/* Define if you want to use LibGTop without GNOME. */
|
||||||
|
#undef WITHOUT_GNOME
|
||||||
|
|
||||||
|
/* Define if you have the <procfs.h> header file */
|
||||||
|
#undef HAVE_PROCFS_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/procfs.h> header file */
|
||||||
|
#undef HAVE_SYS_PROCFS_H
|
||||||
|
522
acinclude.m4
522
acinclude.m4
@@ -1,3 +1,95 @@
|
|||||||
|
dnl This is just copied m4s from need-declaration.m4 gnome-fileutils.m4
|
||||||
|
dnl gnome-supprt-checks.m4 and a little from gnome-libgtop-check.m4
|
||||||
|
dnl and finally libgtop-sysdeps.m4
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl LIBGTOP_CHECK_TYPE
|
||||||
|
dnl
|
||||||
|
dnl Improved version of AC_CHECK_TYPE which takes into account
|
||||||
|
dnl that we need to #include some other header files on some
|
||||||
|
dnl systems to get some types.
|
||||||
|
|
||||||
|
dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT)
|
||||||
|
AC_DEFUN([AC_LIBGTOP_CHECK_TYPE],
|
||||||
|
[AC_REQUIRE([AC_HEADER_STDC])dnl
|
||||||
|
AC_MSG_CHECKING(for $1)
|
||||||
|
AC_CACHE_VAL(ac_cv_type_$1,
|
||||||
|
[AC_EGREP_CPP(dnl
|
||||||
|
changequote(<<,>>)dnl
|
||||||
|
<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
|
||||||
|
changequote([,]), [#include <sys/types.h>
|
||||||
|
#if STDC_HEADERS
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For Tru64 */
|
||||||
|
#ifdef HAVE_SYS_BITYPES_H
|
||||||
|
#include <sys/bitypes.h>
|
||||||
|
#endif
|
||||||
|
], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
|
||||||
|
AC_MSG_RESULT($ac_cv_type_$1)
|
||||||
|
if test $ac_cv_type_$1 = no; then
|
||||||
|
AC_DEFINE($1, $2)
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl GNOME_LIBGTOP_TYPES
|
||||||
|
dnl
|
||||||
|
dnl some typechecks for libgtop.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_DEFUN([GNOME_LIBGTOP_TYPES],
|
||||||
|
[
|
||||||
|
AC_CHECK_HEADERS(sys/bitypes.h)
|
||||||
|
AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int)
|
||||||
|
AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int)
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl See whether we need a declaration for a function.
|
||||||
|
dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
|
||||||
|
AC_DEFUN([GCC_NEED_DECLARATION],
|
||||||
|
[AC_MSG_CHECKING([whether $1 must be declared])
|
||||||
|
AC_CACHE_VAL(gcc_cv_decl_needed_$1,
|
||||||
|
[AC_TRY_COMPILE([
|
||||||
|
#include <stdio.h>
|
||||||
|
#ifdef HAVE_STRING_H
|
||||||
|
#include <string.h>
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_STRINGS_H
|
||||||
|
#include <strings.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_STDLIB_H
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
$2],
|
||||||
|
[char *(*pfn) = (char *(*)) $1],
|
||||||
|
eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")])
|
||||||
|
if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
gcc_need_declarations="$gcc_need_declarations $1"
|
||||||
|
gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||||
|
AC_DEFINE_UNQUOTED($gcc_tr_decl)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
dnl Check multiple functions to see whether each needs a declaration.
|
||||||
|
dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
|
||||||
|
AC_DEFUN([GCC_NEED_DECLARATIONS],
|
||||||
|
[for ac_func in $1
|
||||||
|
do
|
||||||
|
GCC_NEED_DECLARATION($ac_func, $2)
|
||||||
|
done
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl GNOME_FILEUTILS_CHECKS
|
dnl GNOME_FILEUTILS_CHECKS
|
||||||
dnl
|
dnl
|
||||||
@@ -17,21 +109,21 @@ listmntent memcpy mkfifo strchr strerror strrchr vprintf)
|
|||||||
dnl Set some defaults when cross-compiling
|
dnl Set some defaults when cross-compiling
|
||||||
|
|
||||||
if test x$cross_compiling = xyes ; then
|
if test x$cross_compiling = xyes ; then
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
linux*)
|
linux*)
|
||||||
fu_cv_sys_mounted_getmntent1=yes
|
fu_cv_sys_mounted_getmntent1=yes
|
||||||
fu_cv_sys_stat_statfs2_bsize=yes
|
fu_cv_sys_stat_statfs2_bsize=yes
|
||||||
;;
|
;;
|
||||||
sunos*)
|
sunos*)
|
||||||
fu_cv_sys_stat_statfs4=yes
|
fu_cv_sys_stat_statfs4=yes
|
||||||
;;
|
;;
|
||||||
freebsd*)
|
freebsd*)
|
||||||
fu_cv_sys_stat_statfs2_bsize=yes
|
fu_cv_sys_stat_statfs2_bsize=yes
|
||||||
;;
|
;;
|
||||||
osf*)
|
osf*)
|
||||||
fu_cv_sys_stat_statfs3_osf1=yes
|
fu_cv_sys_stat_statfs3_osf1=yes
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Determine how to get the list of mounted filesystems.
|
# Determine how to get the list of mounted filesystems.
|
||||||
@@ -216,7 +308,7 @@ fi
|
|||||||
if test -z "$list_mounted_fs"; then
|
if test -z "$list_mounted_fs"; then
|
||||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
||||||
# FIXME -- no need to abort building the whole package
|
# FIXME -- no need to abort building the whole package
|
||||||
# Can't build mountlist.c or anything that needs its functions
|
# Cannot build mountlist.c or anything that needs its functions
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECKING(how to get filesystem space usage)
|
AC_CHECKING(how to get filesystem space usage)
|
||||||
@@ -250,11 +342,11 @@ AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
|
|||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
main ()
|
int main ()
|
||||||
{
|
{
|
||||||
struct statfs fsd;
|
struct statfs fsd;
|
||||||
fsd.f_fsize = 0;
|
fsd.f_fsize = 0;
|
||||||
exit (statfs (".", &fsd, sizeof (struct statfs)));
|
return (statfs (".", &fsd, sizeof (struct statfs)));
|
||||||
}],
|
}],
|
||||||
fu_cv_sys_stat_statfs3_osf1=yes,
|
fu_cv_sys_stat_statfs3_osf1=yes,
|
||||||
fu_cv_sys_stat_statfs3_osf1=no,
|
fu_cv_sys_stat_statfs3_osf1=no,
|
||||||
@@ -281,11 +373,11 @@ AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
|
|||||||
#ifdef HAVE_SYS_VFS_H
|
#ifdef HAVE_SYS_VFS_H
|
||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
#endif
|
#endif
|
||||||
main ()
|
int main ()
|
||||||
{
|
{
|
||||||
struct statfs fsd;
|
struct statfs fsd;
|
||||||
fsd.f_bsize = 0;
|
fsd.f_bsize = 0;
|
||||||
exit (statfs (".", &fsd));
|
return (statfs (".", &fsd));
|
||||||
}],
|
}],
|
||||||
fu_cv_sys_stat_statfs2_bsize=yes,
|
fu_cv_sys_stat_statfs2_bsize=yes,
|
||||||
fu_cv_sys_stat_statfs2_bsize=no,
|
fu_cv_sys_stat_statfs2_bsize=no,
|
||||||
@@ -303,10 +395,10 @@ AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
|
|||||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
|
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
|
||||||
[AC_TRY_RUN([#include <sys/types.h>
|
[AC_TRY_RUN([#include <sys/types.h>
|
||||||
#include <sys/statfs.h>
|
#include <sys/statfs.h>
|
||||||
main ()
|
int main ()
|
||||||
{
|
{
|
||||||
struct statfs fsd;
|
struct statfs fsd;
|
||||||
exit (statfs (".", &fsd, sizeof fsd, 0));
|
return (statfs (".", &fsd, sizeof fsd, 0));
|
||||||
}],
|
}],
|
||||||
fu_cv_sys_stat_statfs4=yes,
|
fu_cv_sys_stat_statfs4=yes,
|
||||||
fu_cv_sys_stat_statfs4=no,
|
fu_cv_sys_stat_statfs4=no,
|
||||||
@@ -330,11 +422,11 @@ AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
|
|||||||
#ifdef HAVE_SYS_MOUNT_H
|
#ifdef HAVE_SYS_MOUNT_H
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#endif
|
#endif
|
||||||
main ()
|
int main ()
|
||||||
{
|
{
|
||||||
struct statfs fsd;
|
struct statfs fsd;
|
||||||
fsd.f_fsize = 0;
|
fsd.f_fsize = 0;
|
||||||
exit (statfs (".", &fsd));
|
return (statfs (".", &fsd));
|
||||||
}],
|
}],
|
||||||
fu_cv_sys_stat_statfs2_fsize=yes,
|
fu_cv_sys_stat_statfs2_fsize=yes,
|
||||||
fu_cv_sys_stat_statfs2_fsize=no,
|
fu_cv_sys_stat_statfs2_fsize=no,
|
||||||
@@ -360,12 +452,12 @@ AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
|
|||||||
#ifdef HAVE_SYS_FS_TYPES_H
|
#ifdef HAVE_SYS_FS_TYPES_H
|
||||||
#include <sys/fs_types.h>
|
#include <sys/fs_types.h>
|
||||||
#endif
|
#endif
|
||||||
main ()
|
int main ()
|
||||||
{
|
{
|
||||||
struct fs_data fsd;
|
struct fs_data fsd;
|
||||||
/* Ultrix's statfs returns 1 for success,
|
/* Ultrix's statfs returns 1 for success,
|
||||||
0 for not mounted, -1 for failure. */
|
0 for not mounted, -1 for failure. */
|
||||||
exit (statfs (".", &fsd) != 1);
|
return (statfs (".", &fsd) != 1);
|
||||||
}],
|
}],
|
||||||
fu_cv_sys_stat_fs_data=yes,
|
fu_cv_sys_stat_fs_data=yes,
|
||||||
fu_cv_sys_stat_fs_data=no,
|
fu_cv_sys_stat_fs_data=no,
|
||||||
@@ -385,8 +477,8 @@ fi
|
|||||||
|
|
||||||
if test -n "$list_mounted_fs" && test $space != no; then
|
if test -n "$list_mounted_fs" && test $space != no; then
|
||||||
DF_PROG="df"
|
DF_PROG="df"
|
||||||
# LIBOBJS="$LIBOBJS fsusage.o"
|
# AC_LIBOBJ(fsusage)
|
||||||
# LIBOBJS="$LIBOBJS mountlist.o"
|
# AC_LIBOBJ(mountlist)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
|
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
|
||||||
@@ -412,3 +504,377 @@ AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
|||||||
AC_CHECKING(for AFS)
|
AC_CHECKING(for AFS)
|
||||||
test -d /afs && AC_DEFINE(AFS)
|
test -d /afs && AC_DEFINE(AFS)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl GNOME_SUPPORT_CHECKS
|
||||||
|
dnl Check for various support functions needed by the standard
|
||||||
|
dnl Gnome libraries. Sets LIBOBJS, might define some macros.
|
||||||
|
dnl This should only be used when building the Gnome libs;
|
||||||
|
dnl Gnome clients should not need this macro.
|
||||||
|
AC_DEFUN([GNOME_SUPPORT_CHECKS],[
|
||||||
|
# we need an `awk' to build `gnomesupport.h'
|
||||||
|
AC_REQUIRE([AC_PROG_AWK])
|
||||||
|
|
||||||
|
# this should go away soon
|
||||||
|
need_gnome_support=yes
|
||||||
|
|
||||||
|
AC_CHECK_FUNCS(getopt_long,,
|
||||||
|
[AC_LIBOBJ(getopt)
|
||||||
|
AC_LIBOBJ(getopt1)])
|
||||||
|
|
||||||
|
# for `scandir'
|
||||||
|
AC_HEADER_DIRENT
|
||||||
|
|
||||||
|
# copied from `configure.in' of `libiberty'
|
||||||
|
vars="program_invocation_short_name program_invocation_name sys_errlist"
|
||||||
|
for v in $vars; do
|
||||||
|
AC_MSG_CHECKING([for $v])
|
||||||
|
AC_CACHE_VAL(gnome_cv_var_$v,
|
||||||
|
[AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
|
||||||
|
[eval "gnome_cv_var_$v=yes"],
|
||||||
|
[eval "gnome_cv_var_$v=no"])])
|
||||||
|
if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||||
|
AC_DEFINE_UNQUOTED($n)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
|
||||||
|
AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
|
||||||
|
|
||||||
|
AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize))
|
||||||
|
|
||||||
|
# to include `error.c' error.c has some HAVE_* checks
|
||||||
|
AC_CHECK_FUNCS(vprintf doprnt strerror_r)
|
||||||
|
# stolen from am_func_error_at_line
|
||||||
|
AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
|
||||||
|
[AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
|
||||||
|
am_cv_lib_error_at_line=yes,
|
||||||
|
am_cv_lib_error_at_line=no)])
|
||||||
|
if test $am_cv_lib_error_at_line = no; then
|
||||||
|
AC_LIBOBJ(error)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This is required if we declare setreuid () and setregid ().
|
||||||
|
AC_TYPE_UID_T
|
||||||
|
|
||||||
|
# see if we need to declare some functions. Solaris is notorious for
|
||||||
|
# putting functions into the `libc' but not listing them in the headers
|
||||||
|
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
|
||||||
|
GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
|
||||||
|
GCC_NEED_DECLARATION(scandir,[
|
||||||
|
#ifdef HAVE_DIRENT_H
|
||||||
|
#include <dirent.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_SUBST(need_gnome_support)
|
||||||
|
|
||||||
|
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl This file is intended for use both internally in libgtop and in every program
|
||||||
|
dnl that wants to use it.
|
||||||
|
dnl
|
||||||
|
dnl It defines the following variables:
|
||||||
|
dnl
|
||||||
|
dnl * 'libgtop_sysdeps_dir' - sysdeps dir for libgtop.
|
||||||
|
dnl * 'libgtop_use_machine_h' - some of system dependend parts of libgtop provide
|
||||||
|
dnl their own header file. In this case we need to
|
||||||
|
dnl define 'HAVE_GLIBTOP_MACHINE_H'.
|
||||||
|
dnl * 'libgtop_need_server' - is the server really needed? Defines 'NEED_LIBGTOP'
|
||||||
|
dnl if true; defines conditional 'NEED_LIBGTOP'.
|
||||||
|
|
||||||
|
AC_DEFUN([LIBGTOP_HACKER_TESTS],[
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
|
|
||||||
|
AC_ARG_WITH(linux-table,
|
||||||
|
[ --with-linux-table Use the table () function from Martin Baulig],
|
||||||
|
[linux_table="$withval"],[linux_table=auto])
|
||||||
|
case "$host_os" in
|
||||||
|
linux*)
|
||||||
|
if test $linux_table = yes ; then
|
||||||
|
AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no)
|
||||||
|
elif test $linux_table = auto ; then
|
||||||
|
AC_MSG_CHECKING(for table function in Linux Kernel)
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <linux/unistd.h>
|
||||||
|
#include <linux/table.h>
|
||||||
|
|
||||||
|
#include <syscall.h>
|
||||||
|
|
||||||
|
static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param);
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
union table tbl;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = table (TABLE_VERSION, NULL, NULL);
|
||||||
|
|
||||||
|
if (ret == -1)
|
||||||
|
exit (-errno);
|
||||||
|
|
||||||
|
exit (ret < 1 ? ret : 0);
|
||||||
|
}
|
||||||
|
], linux_table=yes, linux_table=no, linux_table=no)
|
||||||
|
AC_MSG_RESULT($linux_table)
|
||||||
|
fi
|
||||||
|
if test $linux_table = yes ; then
|
||||||
|
AC_DEFINE(HAVE_LINUX_TABLE)
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
|
|
||||||
|
AC_SUBST(libgtop_sysdeps_dir)
|
||||||
|
AC_SUBST(libgtop_use_machine_h)
|
||||||
|
AC_SUBST(libgtop_need_server)
|
||||||
|
|
||||||
|
AC_ARG_WITH(libgtop-examples,
|
||||||
|
[ --with-libgtop-examples Build the libgtop examples (default=no)],[
|
||||||
|
build_examples="$withval"], [build_examples=no])
|
||||||
|
|
||||||
|
AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(hacker-mode,
|
||||||
|
[ --enable-hacker-mode Enable building of unstable sysdeps],
|
||||||
|
[hacker_mode="$enableval"], [hacker_mode=no])
|
||||||
|
|
||||||
|
AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes)
|
||||||
|
|
||||||
|
linux_table=auto
|
||||||
|
if test x$hacker_mode = xyes ; then
|
||||||
|
LIBGTOP_HACKER_TESTS
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes)
|
||||||
|
|
||||||
|
AC_ARG_WITH(libgtop-smp,
|
||||||
|
[ --with-libgtop-smp Enable SMP support (default-auto)],[
|
||||||
|
libgtop_smp="$withval"],[libgtop_smp=auto])
|
||||||
|
|
||||||
|
if test $libgtop_smp = auto ; then
|
||||||
|
AC_MSG_CHECKING(whether to enable SMP support)
|
||||||
|
case "$host_os" in
|
||||||
|
linux*)
|
||||||
|
libgtop_smp=yes
|
||||||
|
;;
|
||||||
|
aix*)
|
||||||
|
libgtop_smp=yes
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
libgtop_smp=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_MSG_RESULT($libgtop_smp)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $libgtop_smp = yes ; then
|
||||||
|
AC_DEFINE(HAVE_LIBGTOP_SMP)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for libgtop sysdeps directory)
|
||||||
|
|
||||||
|
case "$host_os" in
|
||||||
|
linux*)
|
||||||
|
if test x$linux_table = xyes ; then
|
||||||
|
libgtop_sysdeps_dir=kernel
|
||||||
|
libgtop_use_machine_h=no
|
||||||
|
else
|
||||||
|
libgtop_sysdeps_dir=linux
|
||||||
|
libgtop_use_machine_h=no
|
||||||
|
libgtop_have_sysinfo=yes
|
||||||
|
fi
|
||||||
|
libgtop_need_server=no
|
||||||
|
;;
|
||||||
|
freebsd*|netbsd*|openbsd*|bsdi*)
|
||||||
|
libgtop_sysdeps_dir=freebsd
|
||||||
|
libgtop_use_machine_h=yes
|
||||||
|
libgtop_need_server=yes
|
||||||
|
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
libgtop_sysdeps_dir=solaris
|
||||||
|
libgtop_use_machine_h=yes
|
||||||
|
libgtop_need_server=yes
|
||||||
|
libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||||
|
;;
|
||||||
|
aix*)
|
||||||
|
libgtop_sysdeps_dir=aix
|
||||||
|
libgtop_use_machine_h=yes
|
||||||
|
libgtop_need_server=yes
|
||||||
|
libgtop_have_sysinfo=yes
|
||||||
|
libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if test x$hacker_mode = xyes ; then
|
||||||
|
case "$host_os" in
|
||||||
|
sunos4*)
|
||||||
|
#Please note that this port is obsolete and not working at
|
||||||
|
#all. It is only useful for people who want to fix it ... :-)
|
||||||
|
libgtop_sysdeps_dir=sun4
|
||||||
|
libgtop_use_machine_h=yes
|
||||||
|
libgtop_need_server=yes
|
||||||
|
;;
|
||||||
|
osf*)
|
||||||
|
libgtop_sysdeps_dir=osf1
|
||||||
|
libgtop_use_machine_h=yes
|
||||||
|
libgtop_need_server=yes
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
libgtop_sysdeps_dir=stub
|
||||||
|
libgtop_use_machine_h=no
|
||||||
|
libgtop_need_server=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
libgtop_sysdeps_dir=stub
|
||||||
|
libgtop_use_machine_h=no
|
||||||
|
libgtop_need_server=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
test -z "$libgtop_postinstall" && libgtop_postinstall=:
|
||||||
|
|
||||||
|
AC_MSG_RESULT($libgtop_sysdeps_dir)
|
||||||
|
|
||||||
|
AC_SUBST(libgtop_sysdeps_dir)
|
||||||
|
AC_SUBST(libgtop_postinstall)
|
||||||
|
AC_SUBST(libgtop_have_sysinfo)
|
||||||
|
|
||||||
|
case "$host_os" in
|
||||||
|
*bsd*)
|
||||||
|
AC_CHECK_HEADERS(net/if_var.h)
|
||||||
|
AC_MSG_CHECKING([for I4B])
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <net/if_types.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_NET_IF_VAR_H
|
||||||
|
#include <net/if_var.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <net/netisr.h>
|
||||||
|
#include <net/route.h>
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||||
|
#include <net/if_sppp.h>
|
||||||
|
#else
|
||||||
|
#include <i4b/sppp/if_sppp.h>
|
||||||
|
#endif
|
||||||
|
],[
|
||||||
|
size_t size = sizeof (struct sppp);
|
||||||
|
], have_i4b=yes, have_i4b=no)
|
||||||
|
AC_MSG_RESULT($have_i4b)
|
||||||
|
if test x$have_i4b = xyes; then
|
||||||
|
AC_DEFINE(HAVE_I4B)
|
||||||
|
AC_MSG_CHECKING([for I4B accounting])
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <net/if_types.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_NET_IF_VAR_H
|
||||||
|
#include <net/if_var.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <net/netisr.h>
|
||||||
|
#include <net/route.h>
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||||
|
#include <net/if_sppp.h>
|
||||||
|
#else
|
||||||
|
#include <i4b/sppp/if_sppp.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <machine/i4b_acct.h>
|
||||||
|
],[
|
||||||
|
size_t size = sizeof (struct i4bisppp_softc);
|
||||||
|
], have_i4b_acct=yes, have_i4b_acct=no)
|
||||||
|
AC_MSG_RESULT($have_i4b_acct)
|
||||||
|
if test x$have_i4b_acct = xyes ; then
|
||||||
|
AC_DEFINE(HAVE_I4B_ACCT)
|
||||||
|
else
|
||||||
|
AC_WARN([
|
||||||
|
*** I4B accounting disabled - you won't get any PPP statistics.
|
||||||
|
*** Read "misc/i4b_acct.txt" in the LibGTop source directory
|
||||||
|
*** to see how to enable it.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
linux*)
|
||||||
|
os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||||
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||||
|
os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||||
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||||
|
os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||||
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||||
|
os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q"
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes,
|
||||||
|
have_linux_version_h=no)
|
||||||
|
|
||||||
|
if test x$have_linux_version_h = xyes ; then
|
||||||
|
version_code=`cat /usr/include/linux/version.h | \
|
||||||
|
grep \#define | grep LINUX_VERSION_CODE`
|
||||||
|
os_version_code=`echo $version_code | \
|
||||||
|
sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'`
|
||||||
|
else
|
||||||
|
os_version_code=`echo "$os_version_expr" | dc`
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for Linux kernel version code)
|
||||||
|
AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code)
|
||||||
|
AC_MSG_RESULT($os_version_code)
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'`
|
||||||
|
os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'`
|
||||||
|
os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'`
|
||||||
|
test -z "$os_micro_version" && os_micro_version=0
|
||||||
|
os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q"
|
||||||
|
os_version_code=`echo "$os_version_expr" | dc`
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for Solaris release code)
|
||||||
|
AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code)
|
||||||
|
AC_MSG_RESULT($os_version_code)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir)
|
||||||
|
AC_MSG_RESULT($libgtop_use_machine_h)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(whether we need libgtop)
|
||||||
|
AC_MSG_RESULT($libgtop_need_server)
|
||||||
|
|
||||||
|
if test x$libgtop_need_server = xyes ; then
|
||||||
|
AC_DEFINE(NEED_LIBGTOP)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$libgtop_use_machine_h = xyes ; then
|
||||||
|
AC_DEFINE(HAVE_GLIBTOP_MACHINE_H)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
29
autogen.sh
29
autogen.sh
@@ -4,7 +4,7 @@
|
|||||||
srcdir=`dirname $0`
|
srcdir=`dirname $0`
|
||||||
test -z "$srcdir" && srcdir=.
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
PKG_NAME="GNOME Portable System Access Library"
|
PKG_NAME="Gnome Top Library"
|
||||||
|
|
||||||
(test -f $srcdir/configure.in \
|
(test -f $srcdir/configure.in \
|
||||||
&& test -f $srcdir/copyright.txt \
|
&& test -f $srcdir/copyright.txt \
|
||||||
@@ -14,27 +14,8 @@ PKG_NAME="GNOME Portable System Access Library"
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
which gnome-autogen.sh || {
|
||||||
|
echo "You need to install gnome-common from the GNOME CVS"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
USE_GNOME2_MACROS=1 . gnome-autogen.sh
|
USE_GNOME2_MACROS=1 . gnome-autogen.sh
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo " *** IMPORTANT *** "
|
|
||||||
echo ""
|
|
||||||
echo "This is a development version of LibGTop. You should be using a stable"
|
|
||||||
echo "version, which is available at ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/"
|
|
||||||
echo "The version you just configured is meant for developers of LibGTop only:"
|
|
||||||
echo ""
|
|
||||||
echo " * You should not base ANY software on this version of LibGTop."
|
|
||||||
echo ""
|
|
||||||
echo " *** You should be using LibGTop 1.0.x instead. ***"
|
|
||||||
echo ""
|
|
||||||
echo "If you are using this source tree from CVS, please run:"
|
|
||||||
echo " cvs update -r LIBGTOP_STABLE_1_0"
|
|
||||||
echo "now."
|
|
||||||
echo ""
|
|
||||||
echo "If you're a Solaris user, you should try out the LibGTop 1.1.2 release."
|
|
||||||
echo "You can get it from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/"
|
|
||||||
echo ""
|
|
||||||
echo "If you are using this source tree from CVS, you can use:"
|
|
||||||
echo " cvs update -r LIBGTOP_1_1_2_PATCHES"
|
|
||||||
echo "to get a bug fixed release of 1.1.2."
|
|
||||||
echo ""
|
|
||||||
|
392
configure.in
392
configure.in
@@ -1,74 +1,57 @@
|
|||||||
dnl
|
dnl
|
||||||
dnl Configure script for LibGTop
|
dnl Configure script for the Gnome library
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_INIT(copyright.txt)
|
AC_INIT(copyright.txt)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
|
|
||||||
if test -z "$I_LIKE_PAIN"; then
|
LIBGTOP_MAJOR_VERSION=2
|
||||||
AC_MSG_ERROR([
|
LIBGTOP_MINOR_VERSION=0
|
||||||
*** You don't want this version of libgtop!
|
LIBGTOP_MICRO_VERSION=5
|
||||||
*** If you want the GNOME 2.0 port then check out
|
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||||
*** the libgtop-GNOME-2-0-port branch of libgtop
|
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
|
||||||
*** You can do this by typing
|
LIBGTOP_INTERFACE_AGE=5
|
||||||
*** cvs update -r libgtop-GNOME-2-0-port libgtop/
|
LIBGTOP_BINARY_AGE=5
|
||||||
*** in the directory above this one.
|
|
||||||
*** If you are looking for the stable branch then
|
|
||||||
*** check out the LIBGTOP_STABLE_1_0 branch
|
|
||||||
***])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl This is required at several places
|
# you can set this to `-snap' for instance to create
|
||||||
AC_CHECK_PROG(ac_dc_found, dc, yes, no)
|
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||||
if test x$ac_dc_found != xyes ; then
|
LIBGTOP_VERSION_SUFFIX=
|
||||||
AC_MSG_ERROR([
|
|
||||||
*** The "dc" utility was not found on your system.
|
|
||||||
***
|
|
||||||
*** When using RedHat Linux, you need to install the "bc" package.
|
|
||||||
***
|
|
||||||
*** It is now part of the "bc" package, so you should look at
|
|
||||||
*** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself.
|
|
||||||
***
|
|
||||||
*** Other systems and distributions may also have it in their "bc" package,
|
|
||||||
*** so if there's no "dc" one, please look for "bc".
|
|
||||||
***])
|
|
||||||
fi
|
|
||||||
|
|
||||||
. $srcdir/LIBGTOP-VERSION
|
# Increase each time you change the client/server protocol.
|
||||||
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
|
LIBGTOP_SERVER_VERSION=5
|
||||||
|
|
||||||
|
# Version code calculation
|
||||||
|
LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION`
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_MAJOR_VERSION)
|
AC_SUBST(LIBGTOP_MAJOR_VERSION)
|
||||||
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
||||||
AC_SUBST(LIBGTOP_MICRO_VERSION)
|
AC_SUBST(LIBGTOP_MICRO_VERSION)
|
||||||
AC_SUBST(LIBGTOP_INTERFACE_AGE)
|
AC_SUBST(LIBGTOP_INTERFACE_AGE)
|
||||||
AC_SUBST(LIBGTOP_BINARY_AGE)
|
AC_SUBST(LIBGTOP_BINARY_AGE)
|
||||||
|
AC_SUBST(LIBGTOP_SERVER_VERSION)
|
||||||
AC_SUBST(LIBGTOP_VERSION)
|
AC_SUBST(LIBGTOP_VERSION)
|
||||||
AC_SUBST(LIBGTOP_VERSION_CODE)
|
AC_SUBST(LIBGTOP_VERSION_CODE)
|
||||||
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
|
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_PACKAGE)
|
|
||||||
AC_DEFINE_UNQUOTED(LIBGTOP_PACKAGE, "$LIBGTOP_PACKAGE")
|
|
||||||
|
|
||||||
# libtool versioning
|
# libtool versioning
|
||||||
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
||||||
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
|
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
|
||||||
LT_REVISION=$LIBGTOP_INTERFACE_AGE
|
LT_REVISION=$LIBGTOP_INTERFACE_AGE
|
||||||
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
|
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
|
||||||
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} -release ${LT_RELEASE}'
|
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
|
||||||
AC_SUBST(LT_VERSION_INFO)
|
AC_SUBST(LT_VERSION_INFO)
|
||||||
AC_SUBST(LT_RELEASE)
|
AC_SUBST(LT_RELEASE)
|
||||||
AC_SUBST(LT_CURRENT)
|
AC_SUBST(LT_CURRENT)
|
||||||
AC_SUBST(LT_REVISION)
|
AC_SUBST(LT_REVISION)
|
||||||
AC_SUBST(LT_AGE)
|
AC_SUBST(LT_AGE)
|
||||||
|
|
||||||
GNOME_COMMON_INIT
|
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
|
||||||
GNOME_PLATFORM_GNOME_2(yes, force)
|
|
||||||
|
|
||||||
AC_ISC_POSIX
|
AC_ISC_POSIX
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_STDC_HEADERS
|
AC_STDC_HEADERS
|
||||||
AC_ARG_PROGRAM
|
dnl AC_ARG_PROGRAM
|
||||||
|
|
||||||
dnl We need this at some places.
|
dnl We need this at some places.
|
||||||
libgtop_top_builddir=`pwd`
|
libgtop_top_builddir=`pwd`
|
||||||
@@ -87,10 +70,8 @@ AC_CHECK_TOOL(CC,gcc)
|
|||||||
AC_CHECK_TOOL(RANLIB,ranlib)
|
AC_CHECK_TOOL(RANLIB,ranlib)
|
||||||
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)
|
|
||||||
|
|
||||||
NM=`which $NM`
|
export CC CXX RANLIB LD AS AR
|
||||||
export CC CXX RANLIB LD AS AR NM
|
|
||||||
|
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
@@ -98,27 +79,54 @@ AC_PROG_MAKE_SET
|
|||||||
|
|
||||||
export cross_compiling
|
export cross_compiling
|
||||||
|
|
||||||
AC_LIBTOOL_DLOPEN
|
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
dnl Let the user enable compiler warnings
|
dnl Let the user enable compiler warnings
|
||||||
GNOME_COMPILE_WARNINGS
|
dnl GNOME_COMPILE_WARNINGS
|
||||||
|
|
||||||
dnl PKGCONFIG_CHECK_MODULES(GNOMESUPPORT, libgnomesupport-2.0:1.96.0)
|
dnl GNOME_INIT_HOOK(gnome_found=yes)
|
||||||
dnl AC_SUBST(GNOMESUPPORT_CFLAGS)
|
|
||||||
dnl AC_SUBST(GNOMESUPPORT_LIBS)
|
dnl if test "x$gnome_found" != xyes; then
|
||||||
|
dnl if test "x$want_gnome" != xno ; then
|
||||||
|
dnl AC_MSG_ERROR([
|
||||||
|
dnl *** GNOME was not found on this system. ***
|
||||||
|
dnl
|
||||||
|
dnl *** If you want to use LibGTop without GNOME, you need
|
||||||
|
dnl *** to give configure the --without-gnome parameter.
|
||||||
|
dnl ])
|
||||||
|
dnl else
|
||||||
|
dnl AC_DEFINE(WITHOUT_GNOME)
|
||||||
|
dnl fi
|
||||||
|
dnl GNOME_SUPPORT_CHECKS
|
||||||
|
dnl else
|
||||||
|
dnl if test "x$want_gnome" != xno ; then
|
||||||
|
dnl AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
||||||
|
dnl else
|
||||||
|
dnl GNOME_SUPPORT_CHECKS
|
||||||
|
dnl fi
|
||||||
|
dnl fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
||||||
|
|
||||||
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
||||||
|
|
||||||
PKG_CHECK_MODULES(XML, libxml-2.0 >= 2.2.8)
|
GNOME_LIBGTOP_SYSDEPS
|
||||||
AC_SUBST(XML_CFLAGS)
|
GNOME_LIBGTOP_TYPES
|
||||||
AC_SUBST(XML_LIBS)
|
|
||||||
|
dnl AC_ARG_WITH(libgtop-guile,
|
||||||
|
dnl [ --with-libgtop-guile Build the libgtop guile interface (default=no)],
|
||||||
|
dnl [build_guile="$withval"], [build_guile=yes])
|
||||||
|
|
||||||
|
dnl if test x$build_guile != xno ; then
|
||||||
|
dnl GNOME_CHECK_GUILE
|
||||||
|
dnl fi
|
||||||
|
|
||||||
AC_ARG_WITH(libgtop-inodedb,
|
AC_ARG_WITH(libgtop-inodedb,
|
||||||
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
||||||
[build_inodedb="$withval"], [build_inodedb=no])
|
[build_inodedb="$withval"], [build_inodedb=no])
|
||||||
|
|
||||||
LIBGTOP_EXTRA_LIBS=
|
LIBGTOP_EXTRA_LIBS=
|
||||||
|
|
||||||
if test x$build_inodedb = xyes ; then
|
if test x$build_inodedb = xyes ; then
|
||||||
AC_CHECK_LIB(gdbm, gdbm_open, LIBGTOP_EXTRA_LIBS='-lgdbm', build_inodedb=no)
|
AC_CHECK_LIB(gdbm, gdbm_open, LIBGTOP_EXTRA_LIBS='-lgdbm', build_inodedb=no)
|
||||||
fi
|
fi
|
||||||
@@ -129,16 +137,58 @@ if test x$build_inodedb = xyes ; then
|
|||||||
AC_DEFINE(GLIBTOP_INODEDB)
|
AC_DEFINE(GLIBTOP_INODEDB)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_DEFINE(GLIBTOP_NAMES)
|
||||||
|
|
||||||
|
if test x$ac_cv_guile_found = xyes ; then
|
||||||
|
AC_DEFINE(GLIBTOP_GUILE)
|
||||||
|
AC_DEFINE(GLIBTOP_GUILE_NAMES)
|
||||||
|
libgtop_guile_found=yes
|
||||||
|
guile_examples='third'
|
||||||
|
guile_static_examples='third_static'
|
||||||
|
guile_subdirs='guile'
|
||||||
|
else
|
||||||
|
libgtop_guile_found=no
|
||||||
|
guile_examples=
|
||||||
|
guile_static_examples=
|
||||||
|
guile_subdirs=
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$libgtop_smp = xyes ; then
|
||||||
|
smp_examples='smp'
|
||||||
|
smp_static_examples='smp_static'
|
||||||
|
else
|
||||||
|
smp_examples=
|
||||||
|
smp_static_examples=
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$enable_static" != xno; then
|
||||||
|
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $guile_static_examples $smp_static_examples"
|
||||||
|
else
|
||||||
|
static_targets=""
|
||||||
|
fi
|
||||||
|
|
||||||
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
|
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
|
||||||
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
|
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
|
||||||
|
|
||||||
|
AC_SUBST(static_targets)
|
||||||
|
AC_SUBST(smp_examples)
|
||||||
|
AC_SUBST(guile_examples)
|
||||||
|
AC_SUBST(guile_subdirs)
|
||||||
|
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
dnl Check for glib
|
GLIB_REQUIRED=2.0.0
|
||||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.1 gmodule-2.0 >= 1.3.1 gobject-2.0 >= 1.3.1)
|
|
||||||
|
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
||||||
AC_SUBST(GLIB_CFLAGS)
|
AC_SUBST(GLIB_CFLAGS)
|
||||||
AC_SUBST(GLIB_LIBS)
|
AC_SUBST(GLIB_LIBS)
|
||||||
|
|
||||||
|
dnl (1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
|
||||||
|
|
||||||
|
dnl You need to uncomment the following line if you want to use
|
||||||
|
dnl libGTop without Gnome.
|
||||||
|
GNOME_SUPPORT_CHECKS
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
AC_C_INLINE
|
AC_C_INLINE
|
||||||
@@ -150,7 +200,70 @@ AC_HEADER_TIME
|
|||||||
AC_STRUCT_TM
|
AC_STRUCT_TM
|
||||||
AC_TYPE_UID_T
|
AC_TYPE_UID_T
|
||||||
|
|
||||||
dnl Check for Internet sockets.
|
dnl For SunOS
|
||||||
|
AC_CHECK_TYPE(ssize_t, int)
|
||||||
|
AC_CHECK_HEADERS(memory.h)
|
||||||
|
AC_CHECK_HEADERS(string.h strings.h, break)
|
||||||
|
AC_REPLACE_FUNCS(strerror)
|
||||||
|
|
||||||
|
dnl dlopen() and dlsym()
|
||||||
|
DL_LIB=
|
||||||
|
AC_CHECK_FUNCS(dlopen,,[
|
||||||
|
AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", [
|
||||||
|
AC_CHECK_LIB(dld, shl_load, DL_LIB="-ldld", [
|
||||||
|
AC_CHECK_FUNCS(dlopen, DL_LIB="", DL_LIB="")
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
oLIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $DL_LIB"
|
||||||
|
AC_CHECK_FUNCS(dlerror,,)
|
||||||
|
LIBS="$oLIBS"
|
||||||
|
AC_SUBST(DL_LIB)
|
||||||
|
|
||||||
|
dnl AIX
|
||||||
|
AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the `vmgetinfo' function in libperfstat])
|
||||||
|
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
|
||||||
|
|
||||||
|
dnl Solaris
|
||||||
|
AC_CHECK_LIB(kstat, kstat_open)
|
||||||
|
AC_CHECK_FUNCS(getloadavg swapctl)
|
||||||
|
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
|
||||||
|
|
||||||
|
dnl Some versions of Solaris require -lelf for -lkvm
|
||||||
|
AC_CHECK_LIB(kvm, kvm_open,[
|
||||||
|
LIBS="-lkvm $LIBS"
|
||||||
|
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
|
||||||
|
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
|
||||||
|
[ac_save_LIBS="$LIBS"
|
||||||
|
LIBS="-lkvm -lelf $LIBS"
|
||||||
|
AC_TRY_LINK([char kvm_open();], [kvm_open()],
|
||||||
|
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
])
|
||||||
|
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
LIBS="-lkvm -lelf $LIBS"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl For DEC OSF1
|
||||||
|
AC_CHECK_LIB(mach, vm_statistics)
|
||||||
|
|
||||||
|
dnl For some broken libc5 systems (Debian 1.3)
|
||||||
|
saved_CFLAGS=$CFLAGS
|
||||||
|
CFLAGS="$CFLAGS -D_GNU_SOURCE"
|
||||||
|
GCC_NEED_DECLARATION(program_invocation_name, [
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
])
|
||||||
|
|
||||||
|
CFLAGS=$saved_CFLAGS
|
||||||
|
|
||||||
AC_CHECK_FUNC(socket,
|
AC_CHECK_FUNC(socket,
|
||||||
[AC_CHECK_HEADER(netinet/in.h,
|
[AC_CHECK_HEADER(netinet/in.h,
|
||||||
[AC_CHECK_HEADER(arpa/inet.h, [
|
[AC_CHECK_HEADER(arpa/inet.h, [
|
||||||
@@ -172,93 +285,200 @@ 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)
|
||||||
|
|
||||||
dnl ## all 'es_??' are only needed for format numbers different of 'es'
|
ALL_LINGUAS="am ar az be bg bn ca cs cy da de el es et fa fi fr ga gl he hi hu id it ja ko lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
|
||||||
ALL_LINGUAS="az ca da de el es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr ga gl hu ja ko nl nn no pl pt_BR ro ru sk sl sv tr uk zh_CN.GB2312 zh_TW"
|
|
||||||
AM_GNOME2_GETTEXT
|
GETTEXT_PACKAGE=libgtop-2.0
|
||||||
|
AC_SUBST(GETTEXT_PACKAGE)
|
||||||
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
|
||||||
|
|
||||||
|
AM_GLIB_GNU_GETTEXT
|
||||||
|
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
|
|
||||||
|
dnl For Solaris
|
||||||
|
dnl Please don't move this before AC_PATH_XTRA
|
||||||
|
AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
|
||||||
|
AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)])
|
||||||
|
AC_CHECK_FUNC(inet_aton,,[AC_CHECK_LIB(resolv,inet_aton)])
|
||||||
|
|
||||||
|
dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n
|
||||||
|
dnl So we use the following instead.
|
||||||
|
dnl XE_SPACE(var, words)
|
||||||
|
define([XE_SPACE],[
|
||||||
|
T=""
|
||||||
|
for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
|
||||||
|
$1="$T"
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
dnl Autodetect Xauth
|
||||||
|
dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
|
||||||
|
saved_CPPFLAGS="$CPPFLAGS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
||||||
|
test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h, ,with_xauth=no) }
|
||||||
|
test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) }
|
||||||
|
test -z "$with_xauth" && with_xauth=yes
|
||||||
|
if test "$with_xauth" = "yes"; then
|
||||||
|
AC_DEFINE(HAVE_XAUTH)
|
||||||
|
XE_SPACE(libs_xauth, $X_LIBS -lXau)
|
||||||
|
fi
|
||||||
|
CPPFLAGS="$saved_CPPFLAGS"
|
||||||
|
AC_SUBST(libs_xauth)
|
||||||
|
|
||||||
dnl For diskusage stuff
|
dnl For diskusage stuff
|
||||||
GNOME_FILEUTILS_CHECKS
|
GNOME_FILEUTILS_CHECKS
|
||||||
|
|
||||||
dnl Debugging
|
dnl Debugging
|
||||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]], libgtop_enable_debug=yes, libgtop_enable_debug=no)
|
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
||||||
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
||||||
AC_ARG_ENABLE(glib-malloc, [ --enable-glib-malloc use glib's malloc [default=auto]], libgtop_enable_glib_malloc=yes,)
|
|
||||||
|
|
||||||
if test "x$libgtop_enable_glib_malloc" != xyes ; then
|
if test "x$gnome_found" = xyes ; then
|
||||||
if test "x$libgtop_enable_debug" = xyes ; then
|
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
||||||
libgtop_enable_glib_malloc=yes
|
SUPPORTINCS="$GNOME_INCLUDEDIR"
|
||||||
else
|
else
|
||||||
libgtop_enable_glib_malloc=no
|
LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la'
|
||||||
fi
|
SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$libgtop_enable_glib_malloc" = xyes ; then
|
dnl Some ugly hack; if '-lgnomesupport' is part of $GNOME_LIBS,
|
||||||
AC_DEFINE(LIBGTOP_USE_GLIB_MALLOC)
|
dnl we include it here.
|
||||||
fi
|
case "$GNOME_LIBS" in
|
||||||
|
'*-lgnomesupport*' )
|
||||||
if test "x$libgtop_enable_debug" = xyes ; then
|
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
||||||
AC_DEFINE(LIBGTOP_ENABLE_DEBUG)
|
SUPPORTINCS="$GNOME_INCLUDEDIR" ;;
|
||||||
fi
|
esac
|
||||||
|
AC_SUBST(LIBSUPPORT)
|
||||||
|
AC_SUBST(SUPPORTINCS)
|
||||||
|
|
||||||
dnl These definitions are expanded in make.
|
dnl These definitions are expanded in make.
|
||||||
LIBGTOP_LIBS='-L$(libdir)'
|
LIBGTOP_LIBS='-L$(libdir)'
|
||||||
LIBGTOP_INCS='-I$(includedir) -I$(pkglibdir)/include'
|
LIBGTOP_INCS='-I$(includedir)/libgtop-2.0'
|
||||||
|
|
||||||
|
if test x$libgtop_use_machine_h = xyes ; then
|
||||||
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$build_inodedb = xyes ; then
|
if test x$build_inodedb = xyes ; then
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS $GNOMESUPPORT_CFLAGS $GLIB_CFLAGS $XML_CFLAGS"
|
if test x$libgtop_smp = xyes ; then
|
||||||
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP"
|
||||||
|
fi
|
||||||
|
|
||||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS $XML_LIBS"
|
if test x$libgtop_have_sysinfo = xyes ; then
|
||||||
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
|
||||||
|
fi
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop_common -lgtop"
|
LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
|
||||||
|
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
|
||||||
|
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
|
||||||
|
LIBGTOP_BINDIR='$(bindir)'
|
||||||
|
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
|
||||||
|
|
||||||
|
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||||
|
AC_SUBST(sysdeps_dir)
|
||||||
|
|
||||||
|
if test x$ac_cv_guile_found = xyes ; then
|
||||||
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0"
|
||||||
|
libgtop_guile_found=yes
|
||||||
|
else
|
||||||
|
libgtop_guile_found=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(libgtop_guile_found)
|
||||||
|
|
||||||
|
if test -z "$LIBGTOP_EXTRA_LIBS" ; then
|
||||||
|
LIBGTOP_EXTRA_LIBS="$libs_xauth"
|
||||||
|
else
|
||||||
|
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
||||||
|
|
||||||
|
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
|
||||||
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
|
||||||
|
|
||||||
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names-2.0"
|
||||||
|
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names-2.0 -lgtop_names-2.0"
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
||||||
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS"
|
||||||
|
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS"
|
||||||
|
|
||||||
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
|
||||||
|
LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE"
|
||||||
|
|
||||||
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
||||||
|
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES"
|
||||||
|
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES"
|
||||||
|
|
||||||
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
||||||
|
|
||||||
AC_SUBST(machine_incs)
|
AC_SUBST(machine_incs)
|
||||||
|
|
||||||
LIBGTOP_BACKEND_DIR="\$(datadir)/libgtop/backends"
|
if test x$libgtop_guile_found = xyes ; then
|
||||||
|
guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
|
||||||
|
else
|
||||||
|
guile_def=""
|
||||||
|
fi
|
||||||
|
|
||||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -Werror -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_builddir)/include -I\$(top_srcdir)/intl $GNOMESUPPORT_CFLAGS $GLIB_CFLAGS $XML_CFLAGS $CFLAGS $X_CFLAGS "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_BACKEND_DIR=\"'"$LIBGTOP_BACKEND_DIR"'\"'
|
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
|
||||||
|
|
||||||
AC_SUBST(INCLUDES)
|
AC_SUBST(INCLUDES)
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
||||||
AC_SUBST(LIBGTOP_BACKEND_DIR)
|
AC_SUBST(GLIB_LIBS)
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_LIBS)
|
AC_SUBST(LIBGTOP_LIBS)
|
||||||
AC_SUBST(LIBGTOP_INCS)
|
AC_SUBST(LIBGTOP_INCS)
|
||||||
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
||||||
AC_SUBST(LIBGTOP_NAMES_INCS)
|
AC_SUBST(LIBGTOP_NAMES_INCS)
|
||||||
|
AC_SUBST(LIBGTOP_GUILE_LIBS)
|
||||||
|
AC_SUBST(LIBGTOP_GUILE_INCS)
|
||||||
|
AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS)
|
||||||
|
AC_SUBST(LIBGTOP_GUILE_NAMES_INCS)
|
||||||
|
AC_SUBST(LIBGTOP_BINDIR)
|
||||||
|
AC_SUBST(LIBGTOP_SERVER)
|
||||||
|
|
||||||
|
if test x$libgtop_need_server = xyes ; then
|
||||||
|
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la"
|
||||||
|
server_programs='libgtop_server2'
|
||||||
|
else
|
||||||
|
sysdeps_suid_lib=
|
||||||
|
server_programs=
|
||||||
|
fi
|
||||||
|
AC_SUBST(sysdeps_suid_lib)
|
||||||
|
AC_SUBST(server_programs)
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
Makefile
|
Makefile
|
||||||
|
libgtop.spec
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
intl/Makefile
|
|
||||||
misc/Makefile
|
misc/Makefile
|
||||||
include/Makefile
|
include/Makefile
|
||||||
include/glibtop/Makefile
|
include/glibtop/Makefile
|
||||||
sysdeps/Makefile
|
sysdeps/Makefile
|
||||||
sysdeps/common/Makefile
|
sysdeps/common/Makefile
|
||||||
sysdeps/names/Makefile
|
sysdeps/names/Makefile
|
||||||
|
sysdeps/guile/Makefile
|
||||||
|
sysdeps/guile/names/Makefile
|
||||||
|
sysdeps/stub/Makefile
|
||||||
|
sysdeps/stub_suid/Makefile
|
||||||
|
sysdeps/sun4/Makefile
|
||||||
|
sysdeps/osf1/Makefile
|
||||||
|
sysdeps/linux/Makefile
|
||||||
|
sysdeps/kernel/Makefile
|
||||||
|
sysdeps/freebsd/Makefile
|
||||||
|
sysdeps/solaris/Makefile
|
||||||
|
sysdeps/aix/Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
|
src/daemon/Makefile
|
||||||
src/inodedb/Makefile
|
src/inodedb/Makefile
|
||||||
scripts/Makefile
|
|
||||||
backends/Makefile
|
|
||||||
backends/server/Makefile
|
|
||||||
backends/sysdeps/Makefile
|
|
||||||
backends/common/Makefile
|
|
||||||
lib/Makefile
|
lib/Makefile
|
||||||
|
examples/Makefile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
dtd/Makefile
|
support/Makefile
|
||||||
libgtop-2.0.pc])
|
support/gnome-support-2.0.pc
|
||||||
|
libgtop-2.0.pc
|
||||||
|
])
|
||||||
|
7
debian/README.Debian
vendored
7
debian/README.Debian
vendored
@@ -1,10 +1,9 @@
|
|||||||
LibGTop CVS snapshots for Debian
|
LibGTop CVS snapshots for Debian
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
This is a snapshot of LibGTop from the main CVS archive, built into a
|
This is a debian package made from a stable release of LibGTop, but it
|
||||||
Debian package. This package is not guaranteed to work, as it was
|
should be considered "unofficial" since I'm not a Debian Maintainer.
|
||||||
built automatically. You're on your own, mister or missus!
|
|
||||||
|
|
||||||
|
|
||||||
Martin Baulig <martin@home-of-linux.org>, Fri, 14 Jan 2000 20:20:13 +0100
|
Martin Baulig <martin@home-of-linux.org>, Wed, 16 Feb 2000 16:40:50 +0100
|
||||||
|
|
||||||
|
11
debian/changelog
vendored
11
debian/changelog
vendored
@@ -1,9 +1,10 @@
|
|||||||
libgtop (1.1.4-1) unstable; urgency=low
|
libgtop (1.0.7-1) unstable; urgency=low
|
||||||
* New upstream source
|
* New upstream source (1.0.7 "Copenhagen" release)
|
||||||
* Non-maintainer upload; this is an unstable developer's snapshot from
|
* Non-maintainer upload; since I'm not a Debian maintainer, this is some
|
||||||
the GNOME CVS tree.
|
kind of "unofficial" debian package for LibGTop 1.0.7 - but I think it
|
||||||
|
can be considered stable and working.
|
||||||
|
|
||||||
-- Martin Baulig <martin@home-of-linux.org> Fri, 14 Jan 2000 15:32:48 +0100
|
-- Martin Baulig <martin@home-of-linux.org> Wed, 16 Feb 2000 16:40:50 +0100
|
||||||
|
|
||||||
libgtop (1.0.6-1) unstable; urgency=low
|
libgtop (1.0.6-1) unstable; urgency=low
|
||||||
* New upstream source
|
* New upstream source
|
||||||
|
4
debian/control.in
vendored
4
debian/control.in
vendored
@@ -4,7 +4,7 @@ Section: libs
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Standards-Version: 3.0.0
|
Standards-Version: 3.0.0
|
||||||
|
|
||||||
Package: libgtop2@SUFFIX@
|
Package: libgtop1@SUFFIX@
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Section: libs
|
Section: libs
|
||||||
Depends: ${shlibs:Depends}
|
Depends: ${shlibs:Depends}
|
||||||
@@ -20,7 +20,7 @@ Description: Portable system access library (part of Gnome)
|
|||||||
Package: libgtop-dev@SUFFIX@
|
Package: libgtop-dev@SUFFIX@
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Section: devel
|
Section: devel
|
||||||
Depends: libgtop2@SUFFIX@ (= ${Source-Version})
|
Depends: libgtop1@SUFFIX@ (= ${Source-Version})
|
||||||
Description: Dev libraries for the portable system access library (part of Gnome)
|
Description: Dev libraries for the portable system access library (part of Gnome)
|
||||||
Gnome is the "GNU Network Object Model Environment"
|
Gnome is the "GNU Network Object Model Environment"
|
||||||
.
|
.
|
||||||
|
2
debian/debconfigure
vendored
2
debian/debconfigure
vendored
@@ -93,7 +93,7 @@ do
|
|||||||
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
|
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
|
||||||
done
|
done
|
||||||
|
|
||||||
for postinst in libgtop2$pkgsuffix
|
for postinst in libgtop1$pkgsuffix
|
||||||
do
|
do
|
||||||
|
|
||||||
cat > $postinst.postinst <<EOF
|
cat > $postinst.postinst <<EOF
|
||||||
|
1
debian/libgtop-dev.files.in
vendored
1
debian/libgtop-dev.files.in
vendored
@@ -15,7 +15,6 @@
|
|||||||
@PREFIX@/lib/libgtop_suid_common.so
|
@PREFIX@/lib/libgtop_suid_common.so
|
||||||
@PREFIX@/lib/libgtop_sysdeps.so
|
@PREFIX@/lib/libgtop_sysdeps.so
|
||||||
@PREFIX@/lib/libgtop-features.def
|
@PREFIX@/lib/libgtop-features.def
|
||||||
@PREFIX@/lib/libgtop-structures.def
|
|
||||||
@PREFIX@/lib/libgtop/include/*.h
|
@PREFIX@/lib/libgtop/include/*.h
|
||||||
@PREFIX@/include/glibtop/*.h
|
@PREFIX@/include/glibtop/*.h
|
||||||
@PREFIX@/include/glibtop.h
|
@PREFIX@/include/glibtop.h
|
||||||
|
5
debian/libgtop1.README.Debian
vendored
Normal file
5
debian/libgtop1.README.Debian
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
The Debian package of libgtop, a GNOME library.
|
||||||
|
|
||||||
|
--
|
||||||
|
Martin Baulig <martin@home-of-linux.org>
|
12
debian/libgtop1.copyright
vendored
Normal file
12
debian/libgtop1.copyright
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
libgtop is released under the GPL.
|
||||||
|
On Debian GNU/Linux systems, the complete text of the GNU General
|
||||||
|
Public License can be found in /usr/share/common-licenses/GPL
|
||||||
|
|
||||||
|
Original authors: Martin Baulig <martin@home-of-linux.org>
|
||||||
|
Drazen Kacar <dave@srce.hr>
|
||||||
|
|
||||||
|
Originally Debianised by Jim Pick <jim@jimpick.com>
|
||||||
|
Then re-Debianised in October 1998 by Martin Schulze
|
||||||
|
<joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh
|
||||||
|
<ian@lynagh.demon.co.uk> in November 1998.
|
5
debian/libgtop1.docs
vendored
Normal file
5
debian/libgtop1.docs
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
RELNOTES-0.25
|
||||||
|
RELNOTES-1.0.x
|
||||||
|
NEWS
|
||||||
|
AUTHORS
|
||||||
|
debian/changelog
|
4
debian/libgtop1.files.in
vendored
Normal file
4
debian/libgtop1.files.in
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
@PREFIX@/lib/libgtop*.so.[0-9].[0-9][0-9].[0-9]
|
||||||
|
@PREFIX@/lib/libgtop*.so.[0-9].[0-9].[0-9]
|
||||||
|
@PREFIX@/lib/libgtop*.so.[0-9]
|
||||||
|
@PREFIX@/share/locale/*/*/libgtop.mo
|
8
debian/rules.in
vendored
8
debian/rules.in
vendored
@@ -66,14 +66,14 @@ install-saved:
|
|||||||
binary-indep: build install
|
binary-indep: build install
|
||||||
|
|
||||||
binary-arch: build install \
|
binary-arch: build install \
|
||||||
libgtop2@SUFFIX@ \
|
libgtop1@SUFFIX@ \
|
||||||
libgtop-dev@SUFFIX@
|
libgtop-dev@SUFFIX@
|
||||||
|
|
||||||
#
|
#
|
||||||
# libgtop2@SUFFIX@
|
# libgtop1@SUFFIX@
|
||||||
#
|
#
|
||||||
|
|
||||||
libgtop2@SUFFIX@: install
|
libgtop1@SUFFIX@: install
|
||||||
@echo "--- Building: $@"
|
@echo "--- Building: $@"
|
||||||
dh_installdocs -p$@ -P$(b)/$@ README NEWS AUTHORS
|
dh_installdocs -p$@ -P$(b)/$@ README NEWS AUTHORS
|
||||||
dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog
|
dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog
|
||||||
@@ -95,7 +95,7 @@ libgtop2@SUFFIX@: install
|
|||||||
libgtop-dev@SUFFIX@: install
|
libgtop-dev@SUFFIX@: install
|
||||||
@echo "--- Building: $@"
|
@echo "--- Building: $@"
|
||||||
mkdir -p $(b)/$@/usr/doc
|
mkdir -p $(b)/$@/usr/doc
|
||||||
cd $(b)/$@/usr/doc; ln -s libgtop2@SUFFIX@ $@
|
cd $(b)/$@/usr/doc; ln -s libgtop1@SUFFIX@ $@
|
||||||
dh_movefiles -p$@ -P$(b)/$@
|
dh_movefiles -p$@ -P$(b)/$@
|
||||||
dh_strip -p$@ -P$(b)/$@
|
dh_strip -p$@ -P$(b)/$@
|
||||||
dh_compress -p$@ -P$(b)/$@
|
dh_compress -p$@ -P$(b)/$@
|
||||||
|
@@ -8,4 +8,3 @@ auto-macros.texi
|
|||||||
version.texi
|
version.texi
|
||||||
stamp-vti
|
stamp-vti
|
||||||
*.html *.pdf
|
*.html *.pdf
|
||||||
*.info-*
|
|
||||||
|
@@ -1,10 +1,13 @@
|
|||||||
2002-01-09 Darin Adler <darin@bentspoon.com>
|
2002-03-12 James Henstridge <james@daa.com.au>
|
||||||
|
|
||||||
* Makefile.am: Fix build breakage caused by bad MAKEINFO change.
|
* Makefile.am (MAKEINFO): using += seems to screw up the build
|
||||||
|
with newer automakes. Set it explicitly (using @MAKEINFO@) seems
|
||||||
|
to be compatible with both.
|
||||||
|
|
||||||
2000-02-05 Martin Baulig <martin@home-of-linux.org>
|
2001-11-26 Abel Cheung <maddog@linux.org.hk>
|
||||||
|
|
||||||
* reference.texi: Started to update documentation.
|
* libgtop.texi, Makefile.am: Renamed to libgtop2.texi
|
||||||
|
* about.texi: Very minor update.
|
||||||
|
|
||||||
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
@@ -15,22 +18,7 @@
|
|||||||
|
|
||||||
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* Makefile.am: Reverted Timur's commit.
|
* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here.
|
||||||
(MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. This still
|
|
||||||
creates libgtop.info in srcdir, but that's an automake problem.
|
|
||||||
|
|
||||||
Tue Jun 15 15:59:50 1999 Timur Bakeyev <mc@bat.ru>
|
|
||||||
|
|
||||||
* Makefile.am: Force `auto-macros.texi' to be created in $(srcdir),
|
|
||||||
as, otherwise, makeinfo is unable to find it, if srcdir != builddir.
|
|
||||||
That's a buggy solution, as spoils srcdir, but, as libgtop.info also
|
|
||||||
created in srcdir - this is acceptable. Both SHOULD be fixed!
|
|
||||||
|
|
||||||
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
|
|
||||||
|
|
||||||
* internals.texi: New file documenting LibGTop internals.
|
|
||||||
* reference.texi: Started to document all library functions and
|
|
||||||
finished the sysdeps and common references.
|
|
||||||
|
|
||||||
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
info_TEXINFOS = libgtop.texi
|
info_TEXINFOS = libgtop2.texi
|
||||||
|
|
||||||
libgtop_TEXINFOS = libgtop.texi about.texi reference.texi \
|
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.texi \
|
||||||
auto-macros.texi version.texi main.texi \
|
auto-macros.texi version.texi main.texi \
|
||||||
white-paper.texi internals.texi
|
white-paper.texi
|
||||||
|
|
||||||
MAKEINFO = @MAKEINFO@ -I @libgtop_top_builddir@/doc
|
MAKEINFO = @MAKEINFO@ -I @libgtop_top_builddir@/doc
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ EXTRA_DIST = auto-macros.texi.in
|
|||||||
auto-macros.texi: auto-macros.texi.in Makefile
|
auto-macros.texi: auto-macros.texi.in Makefile
|
||||||
## Use sed and then mv to avoid problems if the user interrupts.
|
## Use sed and then mv to avoid problems if the user interrupts.
|
||||||
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
||||||
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)#g' \
|
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \
|
||||||
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
||||||
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||||
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
||||||
|
@@ -7,9 +7,10 @@ and information about running Processes.
|
|||||||
On Systems like Solaris or Digital Unix where you need special privileges to
|
On Systems like Solaris or Digital Unix where you need special privileges to
|
||||||
get those data, it uses a setuid/setgid server to do so.
|
get those data, it uses a setuid/setgid server to do so.
|
||||||
|
|
||||||
Even if LibGTop is a part of the GNOME desktop environment (@uref{http://www.gnome.org}),
|
Even if LibGTop is a part of the GNOME desktop environment
|
||||||
the main interface of LibGTop is totally independent from any particular desktop environment,
|
(@uref{http://www.gnome.org}), the main interface of LibGTop is totally
|
||||||
so you can also use it as a standalone library in any piece of GPLed software.
|
independent from any particular desktop environment, so you can also use it
|
||||||
|
as a standalone library in any piece of GPLed software.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Availability:: Where to get LibGTop
|
* Availability:: Where to get LibGTop
|
||||||
@@ -32,10 +33,10 @@ latest release tarballs from
|
|||||||
@noindent
|
@noindent
|
||||||
or any of its mirror sites.
|
or any of its mirror sites.
|
||||||
|
|
||||||
The latest stable version of LibGTop is 1.0.1 which is also the one that comes
|
The latest stable version of LibGTop is 1.0.12 which is also the one that comes
|
||||||
together with GNOME 1.0. In CVS, there is a @code{LIBGTOP_STABLE_1_0} branch
|
together with GNOME 1.0. It belongs to @code{LIBGTOP_STABLE_1_0} branch in CVS.
|
||||||
which is rooted at the @code{LIBGTOP_1_0_1} tag while actual development occurs
|
Actual development occurs in the @code{libgtop-GNOME-2-0-port} which is
|
||||||
in the @code{HEAD} which currently has version 1.1.0.
|
currently versioned 1.90.0.
|
||||||
|
|
||||||
@node Supported Platforms, Mailing List, Availability, About
|
@node Supported Platforms, Mailing List, Availability, About
|
||||||
@section Supported Platforms
|
@section Supported Platforms
|
||||||
@@ -46,7 +47,7 @@ The stable branch currently supports the following platforms:
|
|||||||
@item All versions of Linux
|
@item All versions of Linux
|
||||||
|
|
||||||
LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but
|
LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but
|
||||||
it should also work without problems on SparcLinux.
|
it should also work without problems on SparcLinux or Linux 2.4.x.
|
||||||
|
|
||||||
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
|
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
|
||||||
|
|
||||||
@@ -115,6 +116,7 @@ me a lot in the early beginning.
|
|||||||
@item Timur Bakeyev for the BSDI port.
|
@item Timur Bakeyev for the BSDI port.
|
||||||
@item Drazen Kacar and the other people on the LibGTop development mailing
|
@item Drazen Kacar and the other people on the LibGTop development mailing
|
||||||
list for the Solaris port.
|
list for the Solaris port.
|
||||||
|
@item Kevin Vandersloot for the effort to port to GNOME 2.0.
|
||||||
@item All people sending me patches, having good ideas, ...
|
@item All people sending me patches, having good ideas, ...
|
||||||
@item Everyone I have forgotten in this list ...
|
@item Everyone I have forgotten in this list ...
|
||||||
@end itemize
|
@end itemize
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
\input texinfo @c -*-texinfo-*-
|
\input texinfo @c -*-texinfo-*-
|
||||||
@c %**start of header
|
@c %**start of header
|
||||||
@setfilename libgtop.info
|
@setfilename libgtop2.info
|
||||||
@settitle LibGTop Reference Manual
|
@settitle LibGTop Reference Manual
|
||||||
@setchapternewpage odd
|
@setchapternewpage odd
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
@@ -44,7 +44,7 @@ translation approved by the Free Software Foundation.
|
|||||||
@format
|
@format
|
||||||
@dircategory Libraries:
|
@dircategory Libraries:
|
||||||
@direntry
|
@direntry
|
||||||
* libgtop: (libgtop). Library to get system specific data
|
* LibGTop2: (libgtop2). Library to get system specific data
|
||||||
such as cpu and memory usage, active
|
such as cpu and memory usage, active
|
||||||
processes
|
processes
|
||||||
@end direntry
|
@end direntry
|
@@ -4,23 +4,8 @@
|
|||||||
* About:: About LibGTop
|
* About:: About LibGTop
|
||||||
* White Paper:: LibGTop White Paper
|
* White Paper:: LibGTop White Paper
|
||||||
* Reference Manual:: LibGTop Reference Manual
|
* Reference Manual:: LibGTop Reference Manual
|
||||||
* LibGTop Internals:: LibGTop Internals
|
|
||||||
|
|
||||||
|
--- The Detailed Node Listing ---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@detailmenu --- The Detailed Node Listing ---
|
|
||||||
|
|
||||||
About LibGTop
|
About LibGTop
|
||||||
|
|
||||||
@@ -33,7 +18,6 @@ LibGTop White Paper
|
|||||||
|
|
||||||
* Introduction:: Introduction
|
* Introduction:: Introduction
|
||||||
* Overview:: Overview
|
* Overview:: Overview
|
||||||
* Servers and Daemons:: Servers and Daemons
|
|
||||||
|
|
||||||
Overview
|
Overview
|
||||||
|
|
||||||
@@ -45,8 +29,6 @@ LibGTop Reference Manual
|
|||||||
* System Dependent:: System Dependent Functions.
|
* System Dependent:: System Dependent Functions.
|
||||||
* Common Functions:: Common Functions.
|
* Common Functions:: Common Functions.
|
||||||
* Library Functions:: Library Functions.
|
* Library Functions:: Library Functions.
|
||||||
* Generic Structures:: Generic Structures.
|
|
||||||
* Enums and Typedefs:: Enums and Typedefs.
|
|
||||||
|
|
||||||
System Dependent Functions
|
System Dependent Functions
|
||||||
|
|
||||||
@@ -65,7 +47,6 @@ System Dependent Functions
|
|||||||
* glibtop_proc_segment:: Process Segment Information.
|
* glibtop_proc_segment:: Process Segment Information.
|
||||||
* glibtop_proc_args:: Process Arguments.
|
* glibtop_proc_args:: Process Arguments.
|
||||||
* glibtop_proc_map:: Process Memory Maps.
|
* glibtop_proc_map:: Process Memory Maps.
|
||||||
* glibtop_netinfo:: Network Information.
|
|
||||||
* glibtop_netload:: Network Load.
|
* glibtop_netload:: Network Load.
|
||||||
* glibtop_ppp:: PPP Usage.
|
* glibtop_ppp:: PPP Usage.
|
||||||
|
|
||||||
@@ -79,40 +60,9 @@ Library Functions
|
|||||||
* glibtop_init:: Server Initialization.
|
* glibtop_init:: Server Initialization.
|
||||||
* glibtop_sysdeps:: Server Sysdeps.
|
* glibtop_sysdeps:: Server Sysdeps.
|
||||||
* Library Parameters:: Library Parameters.
|
* Library Parameters:: Library Parameters.
|
||||||
|
|
||||||
Generic Structures
|
|
||||||
|
|
||||||
* glibtop_ifaddr:: Interface Address.
|
|
||||||
|
|
||||||
Enums and Typedefs
|
|
||||||
|
|
||||||
* Network Interfaces:: Network Interfaces.
|
|
||||||
* Address Scope:: Address Scope (IPv6).
|
|
||||||
|
|
||||||
Network Interfaces
|
|
||||||
|
|
||||||
* Transport Methods:: Transport Methods.
|
|
||||||
* Interface Flags:: Interface Flags.
|
|
||||||
|
|
||||||
LibGTop Internals
|
|
||||||
|
|
||||||
* General Internals:: General Internals
|
|
||||||
* Sysdeps Internals:: Sysdeps Internals
|
|
||||||
|
|
||||||
General Internals
|
|
||||||
|
|
||||||
* glibtop:: The server structure
|
|
||||||
|
|
||||||
Sysdeps Internals
|
|
||||||
|
|
||||||
* glibtop_open_s:: Non-privileged initializations
|
|
||||||
* glibtop_close_s:: Non-privileged cleanups
|
|
||||||
|
|
||||||
@end detailmenu
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@include about.texi
|
@include about.texi
|
||||||
@include white-paper.texi
|
@include white-paper.texi
|
||||||
@include reference.texi
|
@include reference.texi
|
||||||
@include internals.texi
|
|
||||||
|
|
||||||
|
@@ -1,12 +1,10 @@
|
|||||||
@node Reference Manual, LibGTop Internals, White Paper, Top
|
@node Reference Manual, , White Paper, Top
|
||||||
@chapter LibGTop Reference Manual
|
@chapter LibGTop Reference Manual
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* System Dependent:: System Dependent Functions.
|
* System Dependent:: System Dependent Functions.
|
||||||
* Common Functions:: Common Functions.
|
* Common Functions:: Common Functions.
|
||||||
* Library Functions:: Library Functions.
|
* Library Functions:: Library Functions.
|
||||||
* Generic Structures:: Generic Structures.
|
|
||||||
* Enums and Typedefs:: Enums and Typedefs.
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node System Dependent, Common Functions, Reference Manual, Reference Manual
|
@node System Dependent, Common Functions, Reference Manual, Reference Manual
|
||||||
@@ -28,7 +26,6 @@
|
|||||||
* glibtop_proc_segment:: Process Segment Information.
|
* glibtop_proc_segment:: Process Segment Information.
|
||||||
* glibtop_proc_args:: Process Arguments.
|
* glibtop_proc_args:: Process Arguments.
|
||||||
* glibtop_proc_map:: Process Memory Maps.
|
* glibtop_proc_map:: Process Memory Maps.
|
||||||
* glibtop_netinfo:: Network Information.
|
|
||||||
* glibtop_netload:: Network Load.
|
* glibtop_netload:: Network Load.
|
||||||
* glibtop_ppp:: PPP Usage.
|
* glibtop_ppp:: PPP Usage.
|
||||||
@end menu
|
@end menu
|
||||||
@@ -1114,7 +1111,7 @@ the lenght of this string is returned in the @code{size} field.
|
|||||||
Remember to @code{glibtop_free} the returned string to avoid a memory leak.
|
Remember to @code{glibtop_free} the returned string to avoid a memory leak.
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@node glibtop_proc_map, glibtop_netinfo, glibtop_proc_args, System Dependent
|
@node glibtop_proc_map, glibtop_netload, glibtop_proc_args, System Dependent
|
||||||
@subsection Process Memory Maps
|
@subsection Process Memory Maps
|
||||||
|
|
||||||
Library function @code{glibtop_get_proc_map}:
|
Library function @code{glibtop_get_proc_map}:
|
||||||
@@ -1201,87 +1198,7 @@ Constants for the @code{perm} member:
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@node glibtop_netinfo, glibtop_netload, glibtop_proc_map, System Dependent
|
@node glibtop_netload, glibtop_ppp, glibtop_proc_map, System Dependent
|
||||||
@subsection Network Information
|
|
||||||
|
|
||||||
Library function @code{glibtop_get_netinfo}:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
glibtop_ifaddr *
|
|
||||||
glibtop_get_netinfo (glibtop_array *array, glibtop_netinfo *buf,
|
|
||||||
const char *interface, u_int64_t transport);
|
|
||||||
|
|
||||||
glibtop_ifaddr *
|
|
||||||
glibtop_get_netinfo_l (glibtop *server, glibtop_array *array,
|
|
||||||
glibtop_netinfo *buf, const char *interface,
|
|
||||||
u_int64_t transport);
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
Declaration of @code{glibtop_ifaddr} in @file{<glibtop/interfaces.h>}:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
typedef struct _glibtop_ifaddr glibtop_ifaddr;
|
|
||||||
|
|
||||||
struct _glibtop_ifaddr
|
|
||||||
@{
|
|
||||||
u_int64_t flags,
|
|
||||||
transport;
|
|
||||||
u_int8_t addr_len,
|
|
||||||
address [GLIBTOP_IFADDR_LEN];
|
|
||||||
u_int64_t subnet,
|
|
||||||
scope;
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
Declaration of @code{glibtop_netinfo} in @file{<glibtop/netinfo.h>}:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
typedef struct _glibtop_netinfo glibtop_netinfo;
|
|
||||||
|
|
||||||
struct _glibtop_netinfo
|
|
||||||
@{
|
|
||||||
u_int64_t flags,
|
|
||||||
if_flags,
|
|
||||||
transport,
|
|
||||||
mtu;
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
Returns information about network interface @code{interface}.
|
|
||||||
|
|
||||||
@table @code
|
|
||||||
@item interface
|
|
||||||
The network interface you want to get information about (for instance
|
|
||||||
@samp{eth0}).
|
|
||||||
@item transport
|
|
||||||
Bitmask specifying about which transport methods you want to get information
|
|
||||||
or @code{GLIBTOP_TRANSPORT_ALL} if you want information about all possible
|
|
||||||
transport methods (@pxref{Transport Methods}).
|
|
||||||
@end table
|
|
||||||
|
|
||||||
On success, the following fields in @code{glibtop_netinfo} are set:
|
|
||||||
|
|
||||||
@table @code
|
|
||||||
@item if_flags
|
|
||||||
Interface flags (@pxref{Interface Flags}).
|
|
||||||
@item transport
|
|
||||||
Bitmask of all transport methods which are currently supported on the
|
|
||||||
selected interface (@pxref{Transport Methods}).
|
|
||||||
@item mtu
|
|
||||||
Maximum Transfer Unit (MTU)
|
|
||||||
@end table
|
|
||||||
|
|
||||||
Additionally, an array of @code{glibtop_ifaddr} structures is returned
|
|
||||||
(@pxref{glibtop_ifaddr}).
|
|
||||||
|
|
||||||
@page
|
|
||||||
@node glibtop_netload, glibtop_ppp, glibtop_netinfo, System Dependent
|
|
||||||
@subsection Network Load
|
@subsection Network Load
|
||||||
|
|
||||||
Library function @code{glibtop_get_netload}:
|
Library function @code{glibtop_get_netload}:
|
||||||
@@ -1597,7 +1514,7 @@ Free file nodes.
|
|||||||
Blocks are usually 512 bytes.
|
Blocks are usually 512 bytes.
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@node Library Functions, Generic Structures, Common Functions, Reference Manual
|
@node Library Functions, , Common Functions, Reference Manual
|
||||||
@section Library Functions
|
@section Library Functions
|
||||||
|
|
||||||
This are general library functions which can be used to get information
|
This are general library functions which can be used to get information
|
||||||
@@ -1888,159 +1805,3 @@ Abort if the library fails to get some of the required features. This
|
|||||||
should not be used by applications.
|
should not be used by applications.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Generic Structures, Enums and Typedefs, Library Functions, Reference Manual
|
|
||||||
@section Generic Structures
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* glibtop_ifaddr:: Interface Address.
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node glibtop_ifaddr, , Generic Structures, Generic Structures
|
|
||||||
@subsection Interface Addresses
|
|
||||||
|
|
||||||
The @code{glibtop_ifaddr} structure contains information about a network
|
|
||||||
interface.
|
|
||||||
|
|
||||||
It is declared in @file{<glibtop/interfaces.h>}:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
typedef struct _glibtop_ifaddr glibtop_ifaddr;
|
|
||||||
|
|
||||||
struct _glibtop_ifaddr
|
|
||||||
@{
|
|
||||||
u_int64_t flags,
|
|
||||||
transport;
|
|
||||||
u_int8_t addr_len,
|
|
||||||
address [GLIBTOP_IFADDR_LEN];
|
|
||||||
u_int64_t subnet,
|
|
||||||
scope;
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
The contents of this structure depends on the @code{transport} field -
|
|
||||||
for instance a single network interface can have both an IPv4 address
|
|
||||||
and several IPv6 ones. This is why functions like @code{glibtop_get_netinfo}
|
|
||||||
return an array of @code{glibtop_ifaddr} structures.
|
|
||||||
|
|
||||||
In general, the fields of the @code{glibtop_ifaddr} structure have the
|
|
||||||
following meaning:
|
|
||||||
|
|
||||||
@table @code
|
|
||||||
@item transport
|
|
||||||
The "interface address" from the @code{address} field is only valid for
|
|
||||||
this transport method (@pxref{Transport Methods}).
|
|
||||||
@item addr_len
|
|
||||||
Length of the interface address in the @code{address} field in bytes.
|
|
||||||
@item address
|
|
||||||
This is one of the "interface address" for the selected network interface
|
|
||||||
which is used with the transport method from the @code{transport} field.
|
|
||||||
@item subnet
|
|
||||||
The meaning of this field depends on the transport method and is currently
|
|
||||||
only used for IPv4 (where it contains the current subnet mask) and for IPv6
|
|
||||||
(where it contains the address length in bits).
|
|
||||||
@item scope
|
|
||||||
This is only used for IPv6 and contains the address scope
|
|
||||||
(@pxref{Address Scope}).
|
|
||||||
@end table
|
|
||||||
|
|
||||||
@node Enums and Typedefs, , Generic Structures, Reference Manual
|
|
||||||
@section Enums and Typedefs
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* Network Interfaces:: Network Interfaces.
|
|
||||||
* Address Scope:: Address Scope (IPv6).
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Network Interfaces, Address Scope, Enums and Typedefs, Enums and Typedefs
|
|
||||||
@subsection Network Interfaces
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* Transport Methods:: Transport Methods.
|
|
||||||
* Interface Flags:: Interface Flags.
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Transport Methods, Interface Flags, Network Interfaces, Network Interfaces
|
|
||||||
@subsubsection Transport Methods
|
|
||||||
|
|
||||||
The following transport methods are defined in @file{<glibtop/interfaces.h>}:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
enum _glibtop_transport @{
|
|
||||||
GLIBTOP_TRANSPORT_DEFAULT = 0,
|
|
||||||
GLIBTOP_TRANSPORT_IPV4 = 1 << 0,
|
|
||||||
GLIBTOP_TRANSPORT_IPV6 = 1 << 1,
|
|
||||||
GLIBTOP_TRANSPORT_IPX = 1 << 2,
|
|
||||||
GLIBTOP_TRANSPORT_X25 = 1 << 3,
|
|
||||||
GLIBTOP_TRANSPORT_DECNET = 1 << 4,
|
|
||||||
GLIBTOP_TRANSPORT_APPLETALK = 1 << 5,
|
|
||||||
GLIBTOP_TRANSPORT_NETBEUI = 1 << 6,
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
There is a @code{GLIBTOP_TRANSPORT_ALL} constant which can be used
|
|
||||||
when you want information about all possible transport methods:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
#define GLIBTOP_TRANSPORT_ALL GLIBTOP_UNLIMITED
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@node Interface Flags, , Transport Methods, Network Interfaces
|
|
||||||
@subsubsection Interface Flags
|
|
||||||
|
|
||||||
This is defined in @file{<glibtop/interfaces.h>}:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
enum _glibtop_interface_flags @{
|
|
||||||
GLIBTOP_IF_FLAGS_UP = 1,
|
|
||||||
GLIBTOP_IF_FLAGS_BROADCAST,
|
|
||||||
GLIBTOP_IF_FLAGS_DEBUG,
|
|
||||||
GLIBTOP_IF_FLAGS_LOOPBACK,
|
|
||||||
GLIBTOP_IF_FLAGS_POINTOPOINT,
|
|
||||||
GLIBTOP_IF_FLAGS_RUNNING,
|
|
||||||
GLIBTOP_IF_FLAGS_NOARP,
|
|
||||||
GLIBTOP_IF_FLAGS_PROMISC,
|
|
||||||
GLIBTOP_IF_FLAGS_ALLMULTI,
|
|
||||||
GLIBTOP_IF_FLAGS_OACTIVE,
|
|
||||||
GLIBTOP_IF_FLAGS_SIMPLEX,
|
|
||||||
GLIBTOP_IF_FLAGS_LINK0,
|
|
||||||
GLIBTOP_IF_FLAGS_LINK1,
|
|
||||||
GLIBTOP_IF_FLAGS_LINK2,
|
|
||||||
GLIBTOP_IF_FLAGS_ALTPHYS,
|
|
||||||
GLIBTOP_IF_FLAGS_MULTICAST
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
They are used as a bit mask like this:
|
|
||||||
|
|
||||||
@example
|
|
||||||
u_int64_t if_flags;
|
|
||||||
|
|
||||||
if_flags = (1L << GLIBTOP_IF_FLAGS_UP) | (1L << GLIBTOP_IF_FLAGS_RUNNING);
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@node Address Scope, , Network Interfaces, Enums and Typedefs
|
|
||||||
@subsection Address Scope
|
|
||||||
|
|
||||||
This is defined in @file{<glibtop/interfaces.h>} for the IPv6 address scope:
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
enum _glibtop_ipv6_scope @{
|
|
||||||
GLIBTOP_IPV6_SCOPE_GLOBAL = 0,
|
|
||||||
GLIBTOP_IPV6_SCOPE_LOOPBACK = 1 << 1,
|
|
||||||
GLIBTOP_IPV6_SCOPE_LINKLOCAL = 1 << 2,
|
|
||||||
GLIBTOP_IPV6_SCOPE_SITELOCAL = 1 << 3,
|
|
||||||
GLIBTOP_IPV6_SCOPE_COMPATv4 = 1 << 4,
|
|
||||||
GLIBTOP_IPV6_SCOPE_UNKNOWN = 1 << 5
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
@menu
|
@menu
|
||||||
* Introduction:: Introduction
|
* Introduction:: Introduction
|
||||||
* Overview:: Overview
|
* Overview:: Overview
|
||||||
* Servers and Daemons:: Servers and Daemons
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Introduction, Overview, White Paper, White Paper
|
@node Introduction, Overview, White Paper, White Paper
|
||||||
@@ -48,7 +47,7 @@ since there's more than just one single program that wants to use them - for
|
|||||||
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
|
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
|
||||||
@code{netload} panel applets.
|
@code{netload} panel applets.
|
||||||
|
|
||||||
@node Overview, Servers and Daemons, Introduction, White Paper
|
@node Overview, , Introduction, White Paper
|
||||||
@section Overview
|
@section Overview
|
||||||
|
|
||||||
This section should give you a short overview on how LibGTop was developed, which
|
This section should give you a short overview on how LibGTop was developed, which
|
||||||
@@ -89,48 +88,3 @@ only contains the @dfn{features} which need privileges.
|
|||||||
Whenever we do not need any privileges to get all the data for some of the requested
|
Whenever we do not need any privileges to get all the data for some of the requested
|
||||||
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
||||||
rather than using the server.
|
rather than using the server.
|
||||||
|
|
||||||
@node Servers and Daemons, , Overview, White Paper
|
|
||||||
@section Servers and Daemons
|
|
||||||
|
|
||||||
LibGTop gives you the possibility to use different LibGTop "servers" and
|
|
||||||
"daemons" in your application.
|
|
||||||
|
|
||||||
Normally you do not need to worry about this things since LibGTop auto-
|
|
||||||
matically opens a pipe to its server it it's required, but this can also
|
|
||||||
be customized to fit your needs.
|
|
||||||
|
|
||||||
For instance if you have a small applet which is only interested in disk
|
|
||||||
usage there's no need to fork a separate server process since you don't
|
|
||||||
need any privileges to get them on any of the supported systems. This can
|
|
||||||
be archieved with a special call to @code{glibtop_init_r} on startup.
|
|
||||||
|
|
||||||
There's also an option to tell @code{glibtop_init_r} that you're only
|
|
||||||
interested in several features - for instance cpu and memory usage. In
|
|
||||||
this case LibGTop will only fork a server process if it's required to get
|
|
||||||
cpu and memory.
|
|
||||||
|
|
||||||
You can also tell @code{glibtop_init_r} to start the server only on demand,
|
|
||||||
this might become useful in command-line based programs. For graphical
|
|
||||||
applications it's normally best to start the server directly during their
|
|
||||||
initialization. The same applies for any time critical applications (since
|
|
||||||
@code{fork} is an expensive operation on some systems this may lead to
|
|
||||||
incorrect statistics).
|
|
||||||
|
|
||||||
LibGTop also allows you to talk to a remote machine using the
|
|
||||||
@dfn{LibGTop daemon}. This daemon is based on @code{gnuserv} from
|
|
||||||
GNU Emacs and should be run as an unprivileged user. It has support
|
|
||||||
for either @code{xauth} or host based authorization.
|
|
||||||
|
|
||||||
This daemon itself behaves like a LibGTop client application, i.e. it
|
|
||||||
forks a server process if this is required.
|
|
||||||
|
|
||||||
The main use for this daemon is when you want to monitor a machine which
|
|
||||||
is either very slow or has very low disk space. In this case you don't need
|
|
||||||
to install the whole client application (for instance GTop) on the remote
|
|
||||||
machine but only a very small (maybe also statically linked) executable and
|
|
||||||
run the graphical application on a more powerful machine.
|
|
||||||
|
|
||||||
It can also be used to monitor a remote machine over a very slow link such
|
|
||||||
as a dialup connection since the conversation between LibGTop client and
|
|
||||||
daemon uses much less bandwith than an ordinary X11 connection.
|
|
||||||
|
16
examples/.cvsignore
Normal file
16
examples/.cvsignore
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
first
|
||||||
|
first_linux
|
||||||
|
first_static
|
||||||
|
second
|
||||||
|
third
|
||||||
|
third_linux
|
||||||
|
third_static
|
||||||
|
second_static
|
||||||
|
second_linux
|
||||||
|
smp_static sysdeps_static netload_static procmap_static mountlist_static
|
||||||
|
smp sysdeps netload procmap mountlist
|
||||||
|
timings timings_static
|
94
examples/ChangeLog
Normal file
94
examples/ChangeLog
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
2001-01-14 Abel Cheung <maddog@linux.org.hk>
|
||||||
|
|
||||||
|
* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE.
|
||||||
|
|
||||||
|
* Makefile.am, first.c, second.c, sysdeps.c: Make them at least
|
||||||
|
compile for now, by disabling chunks which should belong to
|
||||||
|
HEAD branch.
|
||||||
|
|
||||||
|
1999-05-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* first.c, second.c, sysdeps.c: Use LibGTop version conditionals
|
||||||
|
so we can more easily merge the code into LIBGTOP_STABLE_1_0.
|
||||||
|
|
||||||
|
1999-05-07 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* timings.c (timersub): Renamed this to `libgtop_timersub' and define
|
||||||
|
it on all systems.
|
||||||
|
|
||||||
|
Fri Apr 9 00:14:52 1999 Timur Bakeyev <timur@gnu.org>
|
||||||
|
|
||||||
|
* timings.c: Added timersub defenition, to make code compilable on
|
||||||
|
BSDI.
|
||||||
|
|
||||||
|
1999-03-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* timings.c: New example.
|
||||||
|
|
||||||
|
1999-03-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* first.c, second.c: Fixed a bug that caused a core dump when
|
||||||
|
the sysdeps code does not return all data.
|
||||||
|
|
||||||
|
1998-11-22 Martin Baulig <baulig@taurus.uni-trier.de>
|
||||||
|
|
||||||
|
* netload.c: Call inet_ntoa () to get address and subnet
|
||||||
|
in quatted dot notation (like 136.199.14.201) and not just
|
||||||
|
as a number (like 0xc90ec788).
|
||||||
|
|
||||||
|
1998-11-02 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* sysdeps.c: New example.
|
||||||
|
|
||||||
|
1998-10-26 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* netload.c: New file. Gets network load for the interface
|
||||||
|
given as command line argument.
|
||||||
|
|
||||||
|
1998-10-26 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* first.c (glibtop_get_proc_args): Get command line arguments.
|
||||||
|
* second.c: Likewise.
|
||||||
|
|
||||||
|
1998-10-25 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* first.c (glibtop_get_ppp): Get PPP/ISDN statistics.
|
||||||
|
|
||||||
|
1998-09-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* Makefile.am: Install everything in $(libexecdir)/libgtop.
|
||||||
|
|
||||||
|
1998-09-09 Martin Baulig <baulig@Stud.Informatik.uni-trier.de>
|
||||||
|
|
||||||
|
* smp.c: New file. Nice tool to show CPU statistics on SMP systems.
|
||||||
|
|
||||||
|
1998-08-25 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* first.c, second.c, procmap.c: Fixed some compiler warnings.
|
||||||
|
|
||||||
|
1998-08-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* procmap.c: We now display filenames when compiled
|
||||||
|
`--with-libgtop-inodedb'.
|
||||||
|
|
||||||
|
1998-08-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* second.c: Works a little bit more like `ps' - you can
|
||||||
|
give an optional command line argument to get information
|
||||||
|
about a single process.
|
||||||
|
|
||||||
|
1998-07-22 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* mountlist.c: New file.
|
||||||
|
|
||||||
|
1998-06-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* test.scm: New file.
|
||||||
|
|
||||||
|
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.
|
121
examples/Makefile.am
Normal file
121
examples/Makefile.am
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
INCLUDES = @INCLUDES@
|
||||||
|
|
||||||
|
DEFS = @DEFS@
|
||||||
|
|
||||||
|
# We install it in `libexec' since this will make it more easy
|
||||||
|
# to put the examples into an extra RPM package.
|
||||||
|
|
||||||
|
libgtopdir = $(libexecdir)/libgtop
|
||||||
|
|
||||||
|
libgtop_PROGRAMS = first second\
|
||||||
|
mountlist procmap netload sysdeps timings \
|
||||||
|
@static_targets@ @guile_examples@ @smp_examples@
|
||||||
|
|
||||||
|
EXTRA_PROGRAMS = first_static second_static \
|
||||||
|
mountlist_static procmap_static \
|
||||||
|
third third_static smp smp_static \
|
||||||
|
netload_static sysdeps_static \
|
||||||
|
timings_static
|
||||||
|
|
||||||
|
first_SOURCES = first.c
|
||||||
|
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
first_static_SOURCES = $(first_SOURCES)
|
||||||
|
first_static_LDADD = $(first_LDADD)
|
||||||
|
first_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
second_SOURCES = second.c
|
||||||
|
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
second_static_SOURCES = $(second_SOURCES)
|
||||||
|
second_static_LDADD = $(second_LDADD)
|
||||||
|
second_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
procmap_SOURCES = procmap.c
|
||||||
|
procmap_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
procmap_static_SOURCES = $(procmap_SOURCES)
|
||||||
|
procmap_static_LDADD = $(procmap_LDADD)
|
||||||
|
procmap_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
netload_SOURCES = netload.c
|
||||||
|
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
netload_static_SOURCES = $(netload_SOURCES)
|
||||||
|
netload_static_LDADD = $(netload_LDADD)
|
||||||
|
netload_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
sysdeps_SOURCES = sysdeps.c
|
||||||
|
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
|
||||||
|
sysdeps_static_LDADD = $(sysdeps_LDADD)
|
||||||
|
sysdeps_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
third_guile_names_LIBS = $(top_builddir)/sysdeps/guile/names/libgtop_guile_names-2.0.la
|
||||||
|
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names-2.0.la
|
||||||
|
|
||||||
|
third_SOURCES = third.c
|
||||||
|
third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile-2.0.la \
|
||||||
|
$(third_guile_names_LIBS) $(third_names_LIBS) \
|
||||||
|
$(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
third_static_SOURCES = $(third_SOURCES)
|
||||||
|
third_static_LDADD = $(third_LDADD)
|
||||||
|
third_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
mountlist_SOURCES = mountlist.c
|
||||||
|
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
||||||
|
mountlist_static_LDADD = $(mountlist_LDADD)
|
||||||
|
mountlist_static_LDFLAGS= -static
|
||||||
|
|
||||||
|
|
||||||
|
smp_SOURCES = smp.c
|
||||||
|
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
smp_static_SOURCES = $(smp_SOURCES)
|
||||||
|
smp_static_LDADD = $(smp_LDADD)
|
||||||
|
smp_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
timings_SOURCES = timings.c
|
||||||
|
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||||
|
@LIBSUPPORT@ @INTLLIBS@
|
||||||
|
|
||||||
|
timings_static_SOURCES = $(timings_SOURCES)
|
||||||
|
timings_static_LDADD = $(timings_LDADD)
|
||||||
|
timings_static_LDFLAGS = -static
|
||||||
|
|
575
examples/first.c
Normal file
575
examples/first.c
Normal file
@@ -0,0 +1,575 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_union data;
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
unsigned c, method, count, port, i, *ptr;
|
||||||
|
char buffer [BUFSIZ];
|
||||||
|
pid_t pid, ppid;
|
||||||
|
char *args;
|
||||||
|
|
||||||
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
||||||
|
|
||||||
|
printf ("Method = %d\n", method);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
printf ("Command = '%s'\n", buffer);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
||||||
|
|
||||||
|
printf ("Host = '%s' - %u\n\n", buffer, port);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_cpu (&data.cpu);
|
||||||
|
|
||||||
|
printf ("CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.cpu.flags,
|
||||||
|
(unsigned long) data.cpu.total,
|
||||||
|
(unsigned long) data.cpu.user,
|
||||||
|
(unsigned long) data.cpu.nice,
|
||||||
|
(unsigned long) data.cpu.sys,
|
||||||
|
(unsigned long) data.cpu.idle,
|
||||||
|
(unsigned long) data.cpu.frequency);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_mem (&data.mem);
|
||||||
|
|
||||||
|
printf ("Memory (0x%08lx): "
|
||||||
|
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.mem.flags,
|
||||||
|
(unsigned long) data.mem.total,
|
||||||
|
(unsigned long) data.mem.used,
|
||||||
|
(unsigned long) data.mem.free,
|
||||||
|
(unsigned long) data.mem.shared,
|
||||||
|
(unsigned long) data.mem.buffer,
|
||||||
|
(unsigned long) data.mem.cached,
|
||||||
|
(unsigned long) data.mem.user,
|
||||||
|
(unsigned long) data.mem.locked);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_swap (&data.swap);
|
||||||
|
|
||||||
|
printf ("Swap (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.swap.flags,
|
||||||
|
(unsigned long) data.swap.total,
|
||||||
|
(unsigned long) data.swap.used,
|
||||||
|
(unsigned long) data.swap.free,
|
||||||
|
(unsigned long) data.swap.pagein,
|
||||||
|
(unsigned long) data.swap.pageout);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_uptime (&data.uptime);
|
||||||
|
|
||||||
|
printf ("Uptime (0x%08lx): %f, %f\n",
|
||||||
|
(unsigned long) data.uptime.flags,
|
||||||
|
data.uptime.uptime, data.uptime.idletime);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_loadavg (&data.loadavg);
|
||||||
|
|
||||||
|
printf ("Loadavg (0x%08lx): %f, %f, %f - %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.loadavg.flags,
|
||||||
|
(double) data.loadavg.loadavg [0],
|
||||||
|
(double) data.loadavg.loadavg [1],
|
||||||
|
(double) data.loadavg.loadavg [2],
|
||||||
|
(unsigned long) data.loadavg.nr_running,
|
||||||
|
(unsigned long) data.loadavg.nr_tasks,
|
||||||
|
(unsigned long) data.loadavg.last_pid);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_shm_limits (&data.shm_limits);
|
||||||
|
|
||||||
|
printf ("Shm Limits (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.shm_limits.flags,
|
||||||
|
(unsigned long) data.shm_limits.shmmax,
|
||||||
|
(unsigned long) data.shm_limits.shmmin,
|
||||||
|
(unsigned long) data.shm_limits.shmmni,
|
||||||
|
(unsigned long) data.shm_limits.shmseg,
|
||||||
|
(unsigned long) data.shm_limits.shmall);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_msg_limits (&data.msg_limits);
|
||||||
|
|
||||||
|
printf ("Msg Limits (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.msg_limits.flags,
|
||||||
|
(unsigned long) data.msg_limits.msgpool,
|
||||||
|
(unsigned long) data.msg_limits.msgmap,
|
||||||
|
(unsigned long) data.msg_limits.msgmax,
|
||||||
|
(unsigned long) data.msg_limits.msgmnb,
|
||||||
|
(unsigned long) data.msg_limits.msgmni,
|
||||||
|
(unsigned long) data.msg_limits.msgssz,
|
||||||
|
(unsigned long) data.msg_limits.msgtql);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_sem_limits (&data.sem_limits);
|
||||||
|
|
||||||
|
printf ("Sem Limits (0x%08lx): "
|
||||||
|
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.sem_limits.flags,
|
||||||
|
(unsigned long) data.sem_limits.semmap,
|
||||||
|
(unsigned long) data.sem_limits.semmni,
|
||||||
|
(unsigned long) data.sem_limits.semmns,
|
||||||
|
(unsigned long) data.sem_limits.semmnu,
|
||||||
|
(unsigned long) data.sem_limits.semmsl,
|
||||||
|
(unsigned long) data.sem_limits.semopm,
|
||||||
|
(unsigned long) data.sem_limits.semume,
|
||||||
|
(unsigned long) data.sem_limits.semusz,
|
||||||
|
(unsigned long) data.sem_limits.semvmx,
|
||||||
|
(unsigned long) data.sem_limits.semaem);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_ppp (&data.ppp, 0);
|
||||||
|
|
||||||
|
printf ("PPP (0x%08lx): %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.ppp.flags,
|
||||||
|
(unsigned long) data.ppp.state,
|
||||||
|
(unsigned long) data.ppp.bytes_in,
|
||||||
|
(unsigned long) data.ppp.bytes_out);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
glibtop_get_sysdeps (&sysdeps);
|
||||||
|
|
||||||
|
printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
|
||||||
|
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, "
|
||||||
|
"%lu, %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) sysdeps.flags,
|
||||||
|
(unsigned long) sysdeps.cpu,
|
||||||
|
(unsigned long) sysdeps.mem,
|
||||||
|
(unsigned long) sysdeps.swap,
|
||||||
|
(unsigned long) sysdeps.uptime,
|
||||||
|
(unsigned long) sysdeps.loadavg,
|
||||||
|
(unsigned long) sysdeps.shm_limits,
|
||||||
|
(unsigned long) sysdeps.msg_limits,
|
||||||
|
(unsigned long) sysdeps.sem_limits,
|
||||||
|
(unsigned long) sysdeps.proclist,
|
||||||
|
(unsigned long) sysdeps.proc_state,
|
||||||
|
(unsigned long) sysdeps.proc_uid,
|
||||||
|
(unsigned long) sysdeps.proc_mem,
|
||||||
|
(unsigned long) sysdeps.proc_time,
|
||||||
|
(unsigned long) sysdeps.proc_signal,
|
||||||
|
(unsigned long) sysdeps.proc_kernel,
|
||||||
|
(unsigned long) sysdeps.proc_segment,
|
||||||
|
(unsigned long) sysdeps.proc_args,
|
||||||
|
(unsigned long) sysdeps.proc_map,
|
||||||
|
(unsigned long) sysdeps.mountlist,
|
||||||
|
(unsigned long) sysdeps.fsusage,
|
||||||
|
(unsigned long) sysdeps.netload,
|
||||||
|
(unsigned long) sysdeps.ppp);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
||||||
|
|
||||||
|
printf ("Proclist (0x%08lx): %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) data.proclist.flags,
|
||||||
|
(unsigned long) data.proclist.number,
|
||||||
|
(unsigned long) data.proclist.size,
|
||||||
|
(unsigned long) data.proclist.total);
|
||||||
|
|
||||||
|
if (ptr) {
|
||||||
|
printf ("\nProcess: ");
|
||||||
|
for (i = 0; i < data.proclist.number; i++)
|
||||||
|
printf ("%s%u", i ? ", " : "", ptr [i]);
|
||||||
|
printf ("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
glibtop_free (ptr);
|
||||||
|
|
||||||
|
pid = getpid ();
|
||||||
|
ppid = getppid ();
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_state (&data.proc_state, pid);
|
||||||
|
|
||||||
|
printf ("Proc_State PID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
|
||||||
|
(int) pid, (unsigned long) data.proc_state.flags,
|
||||||
|
data.proc_state.cmd, data.proc_state.state,
|
||||||
|
(unsigned long) data.proc_state.uid,
|
||||||
|
(unsigned long) data.proc_state.gid);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_uid (&data.proc_uid, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Uid PID %5d (0x%08lx): "
|
||||||
|
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_uid.flags,
|
||||||
|
data.proc_uid.uid, data.proc_uid.euid,
|
||||||
|
data.proc_uid.gid, data.proc_uid.egid,
|
||||||
|
data.proc_uid.pid, data.proc_uid.ppid,
|
||||||
|
data.proc_uid.pgrp, data.proc_uid.session,
|
||||||
|
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||||
|
data.proc_uid.priority, data.proc_uid.nice);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_mem (&data.proc_mem, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Mem PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_mem.flags,
|
||||||
|
(unsigned long) data.proc_mem.size,
|
||||||
|
(unsigned long) data.proc_mem.vsize,
|
||||||
|
(unsigned long) data.proc_mem.resident,
|
||||||
|
(unsigned long) data.proc_mem.share,
|
||||||
|
(unsigned long) data.proc_mem.rss,
|
||||||
|
(unsigned long) data.proc_mem.rss_rlim);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Segment PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_segment.flags,
|
||||||
|
(unsigned long) data.proc_segment.text_rss,
|
||||||
|
(unsigned long) data.proc_segment.shlib_rss,
|
||||||
|
(unsigned long) data.proc_segment.data_rss,
|
||||||
|
(unsigned long) data.proc_segment.stack_rss,
|
||||||
|
(unsigned long) data.proc_segment.dirty_size,
|
||||||
|
(unsigned long) data.proc_segment.start_code,
|
||||||
|
(unsigned long) data.proc_segment.end_code,
|
||||||
|
(unsigned long) data.proc_segment.start_stack);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_time (&data.proc_time, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Time PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_time.flags,
|
||||||
|
(unsigned long) data.proc_time.start_time,
|
||||||
|
(unsigned long) data.proc_time.rtime,
|
||||||
|
(unsigned long) data.proc_time.utime,
|
||||||
|
(unsigned long) data.proc_time.stime,
|
||||||
|
(unsigned long) data.proc_time.cutime,
|
||||||
|
(unsigned long) data.proc_time.cstime,
|
||||||
|
(unsigned long) data.proc_time.timeout,
|
||||||
|
(unsigned long) data.proc_time.it_real_value,
|
||||||
|
(unsigned long) data.proc_time.frequency);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_signal.flags,
|
||||||
|
(unsigned long) data.proc_signal.signal,
|
||||||
|
(unsigned long) data.proc_signal.blocked,
|
||||||
|
(unsigned long) data.proc_signal.sigignore,
|
||||||
|
(unsigned long) data.proc_signal.sigcatch);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_kernel.flags,
|
||||||
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
|
(unsigned long) data.proc_kernel.maj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmin_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmaj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_esp,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_eip,
|
||||||
|
(unsigned long) data.proc_kernel.nwchan,
|
||||||
|
data.proc_kernel.wchan);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
args = glibtop_get_proc_args (&data.proc_args, pid, 0);
|
||||||
|
|
||||||
|
for (i = 0; i < data.proc_args.size; i++) {
|
||||||
|
if (args [i]) continue;
|
||||||
|
args [i] = '|';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_args.flags,
|
||||||
|
(unsigned long) data.proc_args.size,
|
||||||
|
args ? args : "");
|
||||||
|
|
||||||
|
glibtop_free (args);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_state (&data.proc_state, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_State PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
|
||||||
|
(int) ppid, (unsigned long) data.proc_state.flags,
|
||||||
|
data.proc_state.cmd, data.proc_state.state,
|
||||||
|
(unsigned long) data.proc_state.uid,
|
||||||
|
(unsigned long) data.proc_state.gid);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_uid (&data.proc_uid, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_Uid PPID %5d (0x%08lx): "
|
||||||
|
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid,
|
||||||
|
(unsigned long) data.proc_uid.flags,
|
||||||
|
data.proc_uid.uid, data.proc_uid.euid,
|
||||||
|
data.proc_uid.gid, data.proc_uid.egid,
|
||||||
|
data.proc_uid.pid, data.proc_uid.ppid,
|
||||||
|
data.proc_uid.pgrp, data.proc_uid.session,
|
||||||
|
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||||
|
data.proc_uid.priority, data.proc_uid.nice);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_mem (&data.proc_mem, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_Mem PPID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
||||||
|
(unsigned long) data.proc_mem.flags,
|
||||||
|
(unsigned long) data.proc_mem.size,
|
||||||
|
(unsigned long) data.proc_mem.vsize,
|
||||||
|
(unsigned long) data.proc_mem.resident,
|
||||||
|
(unsigned long) data.proc_mem.share,
|
||||||
|
(unsigned long) data.proc_mem.rss,
|
||||||
|
(unsigned long) data.proc_mem.rss_rlim);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_segment (&data.proc_segment, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_Segment PPID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
||||||
|
(unsigned long) data.proc_segment.flags,
|
||||||
|
(unsigned long) data.proc_segment.text_rss,
|
||||||
|
(unsigned long) data.proc_segment.shlib_rss,
|
||||||
|
(unsigned long) data.proc_segment.data_rss,
|
||||||
|
(unsigned long) data.proc_segment.stack_rss,
|
||||||
|
(unsigned long) data.proc_segment.dirty_size,
|
||||||
|
(unsigned long) data.proc_segment.start_code,
|
||||||
|
(unsigned long) data.proc_segment.end_code,
|
||||||
|
(unsigned long) data.proc_segment.start_stack);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_time (&data.proc_time, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_Time PPID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
||||||
|
(unsigned long) data.proc_time.flags,
|
||||||
|
(unsigned long) data.proc_time.start_time,
|
||||||
|
(unsigned long) data.proc_time.rtime,
|
||||||
|
(unsigned long) data.proc_time.utime,
|
||||||
|
(unsigned long) data.proc_time.stime,
|
||||||
|
(unsigned long) data.proc_time.cutime,
|
||||||
|
(unsigned long) data.proc_time.cstime,
|
||||||
|
(unsigned long) data.proc_time.timeout,
|
||||||
|
(unsigned long) data.proc_time.it_real_value,
|
||||||
|
(unsigned long) data.proc_time.frequency);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_signal (&data.proc_signal, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_Signal PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
|
||||||
|
(int) ppid, (unsigned long) data.proc_signal.flags,
|
||||||
|
(unsigned long) data.proc_signal.signal,
|
||||||
|
(unsigned long) data.proc_signal.blocked,
|
||||||
|
(unsigned long) data.proc_signal.sigignore,
|
||||||
|
(unsigned long) data.proc_signal.sigcatch);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
||||||
|
|
||||||
|
printf ("Proc_Kernel PPID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) ppid,
|
||||||
|
(unsigned long) data.proc_kernel.flags,
|
||||||
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
|
(unsigned long) data.proc_kernel.maj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmin_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmaj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_esp,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_eip,
|
||||||
|
(unsigned long) data.proc_kernel.nwchan,
|
||||||
|
data.proc_kernel.wchan);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
args = glibtop_get_proc_args (&data.proc_args, ppid, 0);
|
||||||
|
|
||||||
|
for (i = 0; i < data.proc_args.size; i++) {
|
||||||
|
if (args [i]) continue;
|
||||||
|
args [i] = '|';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) ppid,
|
||||||
|
(unsigned long) data.proc_args.flags,
|
||||||
|
(unsigned long) data.proc_args.size,
|
||||||
|
args ? args : "");
|
||||||
|
|
||||||
|
glibtop_free (args);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_state (&data.proc_state, 1);
|
||||||
|
|
||||||
|
printf ("Proc_State INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1,
|
||||||
|
(unsigned long) data.proc_state.flags,
|
||||||
|
data.proc_state.cmd, data.proc_state.state,
|
||||||
|
(unsigned long) data.proc_state.uid,
|
||||||
|
(unsigned long) data.proc_state.gid);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_uid (&data.proc_uid, 1);
|
||||||
|
|
||||||
|
printf ("Proc_Uid INIT %5d (0x%08lx): "
|
||||||
|
"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1,
|
||||||
|
(unsigned long) data.proc_uid.flags,
|
||||||
|
data.proc_uid.uid, data.proc_uid.euid,
|
||||||
|
data.proc_uid.gid, data.proc_uid.egid,
|
||||||
|
data.proc_uid.pid, data.proc_uid.ppid,
|
||||||
|
data.proc_uid.pgrp, data.proc_uid.session,
|
||||||
|
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||||
|
data.proc_uid.priority, data.proc_uid.nice);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_mem (&data.proc_mem, 1);
|
||||||
|
|
||||||
|
printf ("Proc_Mem INIT %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu\n", 1,
|
||||||
|
(unsigned long) data.proc_mem.flags,
|
||||||
|
(unsigned long) data.proc_mem.size,
|
||||||
|
(unsigned long) data.proc_mem.vsize,
|
||||||
|
(unsigned long) data.proc_mem.resident,
|
||||||
|
(unsigned long) data.proc_mem.share,
|
||||||
|
(unsigned long) data.proc_mem.rss,
|
||||||
|
(unsigned long) data.proc_mem.rss_rlim);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_segment (&data.proc_segment, 1);
|
||||||
|
|
||||||
|
printf ("Proc_Segment INIT %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
|
||||||
|
(unsigned long) data.proc_segment.flags,
|
||||||
|
(unsigned long) data.proc_segment.text_rss,
|
||||||
|
(unsigned long) data.proc_segment.shlib_rss,
|
||||||
|
(unsigned long) data.proc_segment.data_rss,
|
||||||
|
(unsigned long) data.proc_segment.stack_rss,
|
||||||
|
(unsigned long) data.proc_segment.dirty_size,
|
||||||
|
(unsigned long) data.proc_segment.start_code,
|
||||||
|
(unsigned long) data.proc_segment.end_code,
|
||||||
|
(unsigned long) data.proc_segment.start_stack);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_time (&data.proc_time, 1);
|
||||||
|
|
||||||
|
printf ("Proc_Time INIT %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
|
||||||
|
(unsigned long) data.proc_time.flags,
|
||||||
|
(unsigned long) data.proc_time.start_time,
|
||||||
|
(unsigned long) data.proc_time.rtime,
|
||||||
|
(unsigned long) data.proc_time.utime,
|
||||||
|
(unsigned long) data.proc_time.stime,
|
||||||
|
(unsigned long) data.proc_time.cutime,
|
||||||
|
(unsigned long) data.proc_time.cstime,
|
||||||
|
(unsigned long) data.proc_time.timeout,
|
||||||
|
(unsigned long) data.proc_time.it_real_value,
|
||||||
|
(unsigned long) data.proc_time.frequency);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_signal (&data.proc_signal, 1);
|
||||||
|
|
||||||
|
printf ("Proc_Signal INIT %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu\n", 1,
|
||||||
|
(unsigned long) data.proc_signal.flags,
|
||||||
|
(unsigned long) data.proc_signal.signal,
|
||||||
|
(unsigned long) data.proc_signal.blocked,
|
||||||
|
(unsigned long) data.proc_signal.sigignore,
|
||||||
|
(unsigned long) data.proc_signal.sigcatch);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
||||||
|
|
||||||
|
printf ("Proc_Kernel INIT %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", 1,
|
||||||
|
(unsigned long) data.proc_kernel.flags,
|
||||||
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
|
(unsigned long) data.proc_kernel.maj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmin_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmaj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_esp,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_eip,
|
||||||
|
(unsigned long) data.proc_kernel.nwchan,
|
||||||
|
data.proc_kernel.wchan);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
args = glibtop_get_proc_args (&data.proc_args, 1, 0);
|
||||||
|
|
||||||
|
for (i = 0; i < data.proc_args.size; i++) {
|
||||||
|
if (args [i]) continue;
|
||||||
|
args [i] = '|';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", 1,
|
||||||
|
(unsigned long) data.proc_args.flags,
|
||||||
|
(unsigned long) data.proc_args.size,
|
||||||
|
args ? args : "");
|
||||||
|
|
||||||
|
glibtop_free (args);
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
113
examples/mountlist.c
Normal file
113
examples/mountlist.c
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#include <glibtop/mountlist.h>
|
||||||
|
#include <glibtop/fsusage.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 1000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_fsusage fsusage;
|
||||||
|
glibtop_mountlist mount_list;
|
||||||
|
glibtop_mountentry *mount_entries;
|
||||||
|
unsigned c, index, method, count, port;
|
||||||
|
char buffer [BUFSIZ];
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
||||||
|
|
||||||
|
printf ("Method = %d\n", method);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
printf ("Command = '%s'\n", buffer);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
||||||
|
|
||||||
|
printf ("Host = '%s' - %u\n\n", buffer, port);
|
||||||
|
|
||||||
|
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++) {
|
||||||
|
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
||||||
|
|
||||||
|
glibtop_free (mount_entries);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
||||||
|
|
||||||
|
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
||||||
|
|
||||||
|
if (mount_entries == NULL)
|
||||||
|
_exit (1);
|
||||||
|
|
||||||
|
for (index = 0; index < mount_list.number; index++)
|
||||||
|
printf ("Mount_Entry: %-30s %-10s %-20s\n",
|
||||||
|
mount_entries [index].mountdir,
|
||||||
|
mount_entries [index].type,
|
||||||
|
mount_entries [index].devname);
|
||||||
|
|
||||||
|
printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n",
|
||||||
|
"", "Blocks", "Free", "Avail", "Files", "Free");
|
||||||
|
|
||||||
|
for (index = 0; index < mount_list.number; index++) {
|
||||||
|
glibtop_get_fsusage (&fsusage,
|
||||||
|
mount_entries [index].mountdir);
|
||||||
|
|
||||||
|
printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n",
|
||||||
|
mount_entries [index].mountdir,
|
||||||
|
fsusage.blocks, fsusage.bfree,
|
||||||
|
fsusage.bavail, fsusage.files,
|
||||||
|
fsusage.ffree);
|
||||||
|
}
|
||||||
|
|
||||||
|
glibtop_free (mount_entries);
|
||||||
|
|
||||||
|
printf ("\nsbrk (0) = %p\n\n", sbrk (0));
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
125
examples/netload.c
Normal file
125
examples/netload.c
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#include <glibtop/netload.h>
|
||||||
|
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_netload netload;
|
||||||
|
unsigned method, count, port;
|
||||||
|
struct in_addr addr, subnet;
|
||||||
|
char *address_string, *subnet_string;
|
||||||
|
char buffer [BUFSIZ];
|
||||||
|
|
||||||
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
||||||
|
|
||||||
|
printf ("Method = %d\n", method);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
printf ("Command = '%s'\n", buffer);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
||||||
|
|
||||||
|
printf ("Host = '%s' - %u\n\n", buffer, port);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
if (argc != 2)
|
||||||
|
glibtop_error ("Usage: %s interface", argv [0]);
|
||||||
|
|
||||||
|
glibtop_get_netload (&netload, argv [1]);
|
||||||
|
|
||||||
|
addr.s_addr = netload.address;
|
||||||
|
subnet.s_addr = netload.subnet;
|
||||||
|
|
||||||
|
address_string = glibtop_strdup (inet_ntoa (addr));
|
||||||
|
subnet_string = glibtop_strdup (inet_ntoa (subnet));
|
||||||
|
|
||||||
|
printf ("Network Load (0x%08lx):\n\n"
|
||||||
|
"\tInterface Flags:\t0x%08lx\n"
|
||||||
|
"\tAddress:\t\t0x%08lx - %s\n"
|
||||||
|
"\tSubnet:\t\t\t0x%08lx - %s\n\n"
|
||||||
|
"\tMTU:\t\t\t%ld\n"
|
||||||
|
"\tCollisions:\t\t%ld\n\n"
|
||||||
|
"\tPackets In:\t\t%ld\n"
|
||||||
|
"\tPackets Out:\t\t%ld\n"
|
||||||
|
"\tPackets Total:\t\t%ld\n\n"
|
||||||
|
"\tBytes In:\t\t%ld\n"
|
||||||
|
"\tBytes Out:\t\t%ld\n"
|
||||||
|
"\tBytes Total:\t\t%ld\n\n"
|
||||||
|
"\tErrors In:\t\t%ld\n"
|
||||||
|
"\tErrors Out:\t\t%ld\n"
|
||||||
|
"\tErrors Total:\t\t%ld\n\n",
|
||||||
|
(unsigned long) netload.flags,
|
||||||
|
(unsigned long) netload.if_flags,
|
||||||
|
(unsigned long) netload.address, address_string,
|
||||||
|
(unsigned long) netload.subnet, subnet_string,
|
||||||
|
(unsigned long) netload.mtu,
|
||||||
|
(unsigned long) netload.collisions,
|
||||||
|
(unsigned long) netload.packets_in,
|
||||||
|
(unsigned long) netload.packets_out,
|
||||||
|
(unsigned long) netload.packets_total,
|
||||||
|
(unsigned long) netload.bytes_in,
|
||||||
|
(unsigned long) netload.bytes_out,
|
||||||
|
(unsigned long) netload.bytes_total,
|
||||||
|
(unsigned long) netload.errors_in,
|
||||||
|
(unsigned long) netload.errors_out,
|
||||||
|
(unsigned long) netload.errors_total);
|
||||||
|
|
||||||
|
glibtop_free (address_string);
|
||||||
|
glibtop_free (subnet_string);
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
164
examples/procmap.c
Normal file
164
examples/procmap.c
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#include <glibtop/procmap.h>
|
||||||
|
|
||||||
|
#ifdef GLIBTOP_INODEDB
|
||||||
|
#include <glibtop/inodedb.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/resource.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
#ifdef GLIBTOP_INODEDB
|
||||||
|
glibtop_inodedb *inodedb;
|
||||||
|
#endif
|
||||||
|
glibtop_proc_map procmap;
|
||||||
|
glibtop_map_entry *maps;
|
||||||
|
unsigned method, count, port, i;
|
||||||
|
char buffer [BUFSIZ];
|
||||||
|
pid_t pid;
|
||||||
|
|
||||||
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
||||||
|
|
||||||
|
printf ("Method = %d\n", method);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
printf ("Command = '%s'\n", buffer);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
||||||
|
|
||||||
|
printf ("Host = '%s' - %u\n\n", buffer, port);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
||||||
|
glibtop_error ("Usage: %s pid", argv [0]);
|
||||||
|
|
||||||
|
#ifdef GLIBTOP_INODEDB
|
||||||
|
inodedb = glibtop_inodedb_open (0, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid);
|
||||||
|
|
||||||
|
maps = glibtop_get_proc_map (&procmap, pid);
|
||||||
|
|
||||||
|
for (i = 0; i < procmap.number; i++) {
|
||||||
|
const char *filename = NULL;
|
||||||
|
unsigned device, device_major, device_minor;
|
||||||
|
char perm [5];
|
||||||
|
|
||||||
|
if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME))
|
||||||
|
filename = maps [i].filename;
|
||||||
|
|
||||||
|
#ifdef GLIBTOP_INODEDB
|
||||||
|
if (inodedb && !filename)
|
||||||
|
filename = glibtop_inodedb_lookup
|
||||||
|
(inodedb, maps [i].device, maps [i].inode);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
perm [0] = (maps [i].perm & GLIBTOP_MAP_PERM_READ) ? 'r' : '-';
|
||||||
|
perm [1] = (maps [i].perm & GLIBTOP_MAP_PERM_WRITE) ? 'w' : '-';
|
||||||
|
perm [2] = (maps [i].perm & GLIBTOP_MAP_PERM_EXECUTE) ? 'x' : '-';
|
||||||
|
perm [3] = (maps [i].perm & GLIBTOP_MAP_PERM_SHARED) ? 's' : '-';
|
||||||
|
perm [4] = (maps [i].perm & GLIBTOP_MAP_PERM_PRIVATE) ? 'p' : '-';
|
||||||
|
|
||||||
|
device = (unsigned long) maps [i].device;
|
||||||
|
device_minor = (device & 255);
|
||||||
|
device_major = ((device >> 8) & 255);
|
||||||
|
|
||||||
|
if (filename) {
|
||||||
|
char *format;
|
||||||
|
|
||||||
|
if (sizeof (void*) == 8)
|
||||||
|
format = "%016lx-%016lx %016lx - "
|
||||||
|
"%02x:%02x %08lu - %4s - %s\n";
|
||||||
|
else
|
||||||
|
format = "%08lx-%08lx %08lx - "
|
||||||
|
"%02x:%02x %08lu - %4s - %s\n";
|
||||||
|
|
||||||
|
fprintf (stderr, format,
|
||||||
|
(unsigned long) maps [i].start,
|
||||||
|
(unsigned long) maps [i].end,
|
||||||
|
(unsigned long) maps [i].offset,
|
||||||
|
device_major, device_minor,
|
||||||
|
(unsigned long) maps [i].inode,
|
||||||
|
perm, filename);
|
||||||
|
} else {
|
||||||
|
char * format;
|
||||||
|
|
||||||
|
if (sizeof (void*) == 8)
|
||||||
|
format = "%016lx-%016lx %016lx - "
|
||||||
|
"%02x:%02x %08lu - %4s\n";
|
||||||
|
else
|
||||||
|
format = "%08lx-%08lx %08lx - "
|
||||||
|
"%02x:%02x %08lu - %4s\n";
|
||||||
|
|
||||||
|
fprintf (stderr, format,
|
||||||
|
(unsigned long) maps [i].start,
|
||||||
|
(unsigned long) maps [i].end,
|
||||||
|
(unsigned long) maps [i].offset,
|
||||||
|
device_major, device_minor,
|
||||||
|
(unsigned long) maps [i].inode,
|
||||||
|
perm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filename && (filename != maps [i].filename))
|
||||||
|
glibtop_free (filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
glibtop_free (maps);
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
300
examples/second.c
Normal file
300
examples/second.c
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
static void
|
||||||
|
output (pid_t pid)
|
||||||
|
{
|
||||||
|
glibtop_union data;
|
||||||
|
char *args;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
#if HAVE_LIBGTOP_SMP
|
||||||
|
unsigned long total;
|
||||||
|
double p_total, p_utime, p_stime;
|
||||||
|
double b_total, b_utime, b_stime;
|
||||||
|
double s_total, s_utime, s_stime;
|
||||||
|
double my_utime, my_stime;
|
||||||
|
int ncpu;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
glibtop_get_proc_state (&data.proc_state, pid);
|
||||||
|
|
||||||
|
printf ("Proc_State PID %5d (0x%08lx): "
|
||||||
|
"'%s', %c, %lu, %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_state.flags,
|
||||||
|
data.proc_state.cmd, data.proc_state.state,
|
||||||
|
(unsigned long) data.proc_state.uid,
|
||||||
|
(unsigned long) data.proc_state.gid);
|
||||||
|
|
||||||
|
glibtop_get_proc_uid (&data.proc_uid, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Uid PID %5d (0x%08lx): "
|
||||||
|
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_uid.flags,
|
||||||
|
data.proc_uid.uid, data.proc_uid.euid,
|
||||||
|
data.proc_uid.gid, data.proc_uid.egid,
|
||||||
|
data.proc_uid.pid, data.proc_uid.ppid,
|
||||||
|
data.proc_uid.pgrp, data.proc_uid.session,
|
||||||
|
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||||
|
data.proc_uid.priority, data.proc_uid.nice);
|
||||||
|
|
||||||
|
glibtop_get_proc_mem (&data.proc_mem, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Mem PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_mem.flags,
|
||||||
|
(unsigned long) data.proc_mem.size,
|
||||||
|
(unsigned long) data.proc_mem.vsize,
|
||||||
|
(unsigned long) data.proc_mem.resident,
|
||||||
|
(unsigned long) data.proc_mem.share,
|
||||||
|
(unsigned long) data.proc_mem.rss,
|
||||||
|
(unsigned long) data.proc_mem.rss_rlim);
|
||||||
|
|
||||||
|
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Segment PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_segment.flags,
|
||||||
|
(unsigned long) data.proc_segment.text_rss,
|
||||||
|
(unsigned long) data.proc_segment.shlib_rss,
|
||||||
|
(unsigned long) data.proc_segment.data_rss,
|
||||||
|
(unsigned long) data.proc_segment.stack_rss,
|
||||||
|
(unsigned long) data.proc_segment.dirty_size,
|
||||||
|
(unsigned long) data.proc_segment.start_code,
|
||||||
|
(unsigned long) data.proc_segment.end_code,
|
||||||
|
(unsigned long) data.proc_segment.start_stack);
|
||||||
|
|
||||||
|
glibtop_get_proc_time (&data.proc_time, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Time PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_time.flags,
|
||||||
|
(unsigned long) data.proc_time.start_time,
|
||||||
|
(unsigned long) data.proc_time.rtime,
|
||||||
|
(unsigned long) data.proc_time.utime,
|
||||||
|
(unsigned long) data.proc_time.stime,
|
||||||
|
(unsigned long) data.proc_time.cutime,
|
||||||
|
(unsigned long) data.proc_time.cstime,
|
||||||
|
(unsigned long) data.proc_time.timeout,
|
||||||
|
(unsigned long) data.proc_time.it_real_value,
|
||||||
|
(unsigned long) data.proc_time.frequency);
|
||||||
|
|
||||||
|
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_signal.flags,
|
||||||
|
(unsigned long) data.proc_signal.signal,
|
||||||
|
(unsigned long) data.proc_signal.blocked,
|
||||||
|
(unsigned long) data.proc_signal.sigignore,
|
||||||
|
(unsigned long) data.proc_signal.sigcatch);
|
||||||
|
|
||||||
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
|
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
||||||
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_kernel.flags,
|
||||||
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
|
(unsigned long) data.proc_kernel.maj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmin_flt,
|
||||||
|
(unsigned long) data.proc_kernel.cmaj_flt,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_esp,
|
||||||
|
(unsigned long) data.proc_kernel.kstk_eip,
|
||||||
|
(unsigned long) data.proc_kernel.nwchan,
|
||||||
|
data.proc_kernel.wchan);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
args = glibtop_get_proc_args (&data.proc_args, pid, 0);
|
||||||
|
|
||||||
|
for (i = 0; i < data.proc_args.size; i++) {
|
||||||
|
if (args [i]) continue;
|
||||||
|
args [i] = '|';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_args.flags,
|
||||||
|
(unsigned long) data.proc_args.size,
|
||||||
|
args ? args : "");
|
||||||
|
|
||||||
|
glibtop_free (args);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
#if HAVE_LIBGTOP_SMP
|
||||||
|
ncpu = glibtop_global_server->ncpu;
|
||||||
|
|
||||||
|
glibtop_get_proc_time (&data.proc_time, pid);
|
||||||
|
|
||||||
|
total = (unsigned long) data.proc_time.utime +
|
||||||
|
(unsigned long) data.proc_time.stime;
|
||||||
|
|
||||||
|
p_total = total ? (double) total : 1.0;
|
||||||
|
|
||||||
|
p_utime = (double) data.proc_time.utime * 100.0 / p_total;
|
||||||
|
p_stime = (double) data.proc_time.stime * 100.0 / p_total;
|
||||||
|
|
||||||
|
b_total = p_total / ncpu;
|
||||||
|
b_utime = (double) data.proc_time.utime / ncpu;
|
||||||
|
b_stime = (double) data.proc_time.stime / ncpu;
|
||||||
|
|
||||||
|
s_total = 0.0; s_utime = 0.0; s_stime = 0.0;
|
||||||
|
|
||||||
|
printf ("Proc_Time PID %5d (0x%08lx): %12lu %12lu %12lu\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_time.flags, total,
|
||||||
|
(unsigned long) data.proc_time.utime,
|
||||||
|
(unsigned long) data.proc_time.stime);
|
||||||
|
|
||||||
|
for (i = 0; i < ncpu; i++) {
|
||||||
|
unsigned long this_total;
|
||||||
|
|
||||||
|
this_total = (unsigned long) data.proc_time.xcpu_utime [i] +
|
||||||
|
(unsigned long) data.proc_time.xcpu_stime [i];
|
||||||
|
|
||||||
|
printf ("CPU %3d PID %5d (0x%08lx): %12lu %12lu %12lu\n", i,
|
||||||
|
(int) pid, (unsigned long) data.proc_time.flags, this_total,
|
||||||
|
(unsigned long) data.proc_time.xcpu_utime [i],
|
||||||
|
(unsigned long) data.proc_time.xcpu_stime [i]);
|
||||||
|
|
||||||
|
s_total += fabs (((double) this_total) - b_total);
|
||||||
|
s_utime += fabs (((double) data.proc_time.xcpu_utime [i]) - b_utime);
|
||||||
|
s_stime += fabs (((double) data.proc_time.xcpu_stime [i]) - b_stime);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
printf ("Proc_Time PID %5d (0x%08lx): %12.3f %12.3f %12.3f\n", (int) pid,
|
||||||
|
(unsigned long) data.proc_time.flags, 100.0, p_utime, p_stime);
|
||||||
|
|
||||||
|
for (i = 0; i < ncpu; i++) {
|
||||||
|
double this_p_total, this_p_utime, this_p_stime;
|
||||||
|
unsigned long this_total;
|
||||||
|
|
||||||
|
this_total = (unsigned long) data.proc_time.xcpu_utime [i] +
|
||||||
|
(unsigned long) data.proc_time.xcpu_stime [i];
|
||||||
|
|
||||||
|
this_p_total = (double) this_total * 100.0 / p_total;
|
||||||
|
|
||||||
|
this_p_utime = (double) data.proc_time.xcpu_utime [i] * 100.0 / p_total;
|
||||||
|
this_p_stime = (double) data.proc_time.xcpu_stime [i] * 100.0 / p_total;
|
||||||
|
|
||||||
|
printf ("CPU %3d PID %5d (0x%08lx): %12.3f %12.3f %12.3f\n", i,
|
||||||
|
(int) pid, (unsigned long) data.proc_time.flags,
|
||||||
|
this_p_total, this_p_utime, this_p_stime);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
my_utime = (unsigned long) data.proc_time.utime ?
|
||||||
|
(double) data.proc_time.utime : 1.0;
|
||||||
|
my_stime = (unsigned long) data.proc_time.stime ?
|
||||||
|
(double) data.proc_time.stime : 1.0;
|
||||||
|
|
||||||
|
printf ("SPIN: %31s %12.3f %12.3f %12.3f\n", "", s_total * 100.0 / p_total,
|
||||||
|
s_utime * 100.0 / my_utime, s_stime * 100.0 / my_stime);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_proclist proclist;
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
unsigned *ptr, pid, i;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init ();
|
||||||
|
|
||||||
|
glibtop_get_sysdeps (&sysdeps);
|
||||||
|
|
||||||
|
printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
|
||||||
|
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) sysdeps.flags,
|
||||||
|
(unsigned long) sysdeps.cpu,
|
||||||
|
(unsigned long) sysdeps.mem,
|
||||||
|
(unsigned long) sysdeps.swap,
|
||||||
|
(unsigned long) sysdeps.uptime,
|
||||||
|
(unsigned long) sysdeps.loadavg,
|
||||||
|
(unsigned long) sysdeps.shm_limits,
|
||||||
|
(unsigned long) sysdeps.msg_limits,
|
||||||
|
(unsigned long) sysdeps.sem_limits,
|
||||||
|
(unsigned long) sysdeps.proclist,
|
||||||
|
(unsigned long) sysdeps.proc_state,
|
||||||
|
(unsigned long) sysdeps.proc_uid,
|
||||||
|
(unsigned long) sysdeps.proc_mem,
|
||||||
|
(unsigned long) sysdeps.proc_time,
|
||||||
|
(unsigned long) sysdeps.proc_signal,
|
||||||
|
(unsigned long) sysdeps.proc_kernel,
|
||||||
|
(unsigned long) sysdeps.proc_segment);
|
||||||
|
|
||||||
|
if ((argc == 2) && (sscanf (argv [1], "%d", &pid) == 1)) {
|
||||||
|
output (pid);
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
ptr = glibtop_get_proclist (&proclist, 0, 0);
|
||||||
|
|
||||||
|
printf ("Proclist (0x%08lx): %lu, %lu, %lu\n",
|
||||||
|
(unsigned long) proclist.flags,
|
||||||
|
(unsigned long) proclist.number,
|
||||||
|
(unsigned long) proclist.size,
|
||||||
|
(unsigned long) proclist.total);
|
||||||
|
|
||||||
|
if (!ptr) exit (1);
|
||||||
|
|
||||||
|
for (i = 0; i < proclist.number; i++) {
|
||||||
|
|
||||||
|
pid = ptr [i];
|
||||||
|
|
||||||
|
output (pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
glibtop_free (ptr);
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
127
examples/smp.c
Normal file
127
examples/smp.c
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, September 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/cpu.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_cpu cpu;
|
||||||
|
unsigned long frequency;
|
||||||
|
double total, user, nice, sys, idle;
|
||||||
|
double b_total, b_user, b_nice, b_sys, b_idle;
|
||||||
|
double s_total, s_user, s_nice, s_sys, s_idle;
|
||||||
|
char separator [BUFSIZ], buffer [BUFSIZ];
|
||||||
|
int ncpu, i;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init();
|
||||||
|
|
||||||
|
glibtop_get_cpu (&cpu);
|
||||||
|
|
||||||
|
ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
|
||||||
|
|
||||||
|
frequency = (unsigned long) cpu.frequency;
|
||||||
|
|
||||||
|
total = ((unsigned long) cpu.total) ? ((double) cpu.total) : 1.0;
|
||||||
|
user = ((unsigned long) cpu.user) ? ((double) cpu.user) : 1.0;
|
||||||
|
nice = ((unsigned long) cpu.nice) ? ((double) cpu.nice) : 1.0;
|
||||||
|
sys = ((unsigned long) cpu.sys) ? ((double) cpu.sys) : 1.0;
|
||||||
|
idle = ((unsigned long) cpu.idle) ? ((double) cpu.idle) : 1.0;
|
||||||
|
|
||||||
|
s_total = s_user = s_nice = s_sys = s_idle = 0.0;
|
||||||
|
|
||||||
|
b_total = total / ncpu;
|
||||||
|
b_user = user / ncpu;
|
||||||
|
b_nice = nice / ncpu;
|
||||||
|
b_sys = sys / ncpu;
|
||||||
|
b_idle = idle / ncpu;
|
||||||
|
|
||||||
|
memset (separator, '-', 91);
|
||||||
|
separator [92] = '\0';
|
||||||
|
|
||||||
|
sprintf (buffer, _("Ticks (%ld per second):"), frequency);
|
||||||
|
|
||||||
|
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
|
||||||
|
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
|
||||||
|
|
||||||
|
printf (_("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"),
|
||||||
|
(unsigned long) cpu.flags, total, user, nice, sys, idle);
|
||||||
|
|
||||||
|
for (i = 0; i < glibtop_global_server->ncpu; i++) {
|
||||||
|
printf (_("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i,
|
||||||
|
(unsigned long) cpu.flags,
|
||||||
|
(unsigned long) cpu.xcpu_total [i],
|
||||||
|
(unsigned long) cpu.xcpu_user [i],
|
||||||
|
(unsigned long) cpu.xcpu_nice [i],
|
||||||
|
(unsigned long) cpu.xcpu_sys [i],
|
||||||
|
(unsigned long) cpu.xcpu_idle [i]);
|
||||||
|
|
||||||
|
s_total += fabs (((double) cpu.xcpu_total [i]) - b_total);
|
||||||
|
s_user += fabs (((double) cpu.xcpu_user [i]) - b_user);
|
||||||
|
s_nice += fabs (((double) cpu.xcpu_nice [i]) - b_nice);
|
||||||
|
s_sys += fabs (((double) cpu.xcpu_sys [i]) - b_sys);
|
||||||
|
s_idle += fabs (((double) cpu.xcpu_idle [i]) - b_idle);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("%s\n\n\n", separator);
|
||||||
|
|
||||||
|
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"),
|
||||||
|
_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"),
|
||||||
|
_("Idle (%)"), separator);
|
||||||
|
|
||||||
|
printf (_("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"),
|
||||||
|
(unsigned long) cpu.flags, (double) total * 100.0 / total,
|
||||||
|
(double) user * 100.0 / total,
|
||||||
|
(double) nice * 100.0 / total,
|
||||||
|
(double) sys * 100.0 / total,
|
||||||
|
(double) idle * 100.0 / total);
|
||||||
|
|
||||||
|
for (i = 0; i < glibtop_global_server->ncpu; i++) {
|
||||||
|
double p_total, p_user, p_nice, p_sys, p_idle;
|
||||||
|
|
||||||
|
p_total = ((double) cpu.xcpu_total [i]) * 100.0 / total;
|
||||||
|
p_user = ((double) cpu.xcpu_user [i]) * 100.0 / user;
|
||||||
|
p_nice = ((double) cpu.xcpu_nice [i]) * 100.0 / nice;
|
||||||
|
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
|
||||||
|
p_idle = ((double) cpu.xcpu_idle [i]) * 100.0 / idle;
|
||||||
|
|
||||||
|
printf (_("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"),
|
||||||
|
i, (unsigned long) cpu.flags, p_total, p_user, p_nice,
|
||||||
|
p_sys, p_idle);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator,
|
||||||
|
_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user,
|
||||||
|
s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
148
examples/sysdeps.c
Normal file
148
examples/sysdeps.c
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
unsigned method, count, port;
|
||||||
|
char buffer [BUFSIZ];
|
||||||
|
|
||||||
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
||||||
|
|
||||||
|
printf ("Method = %d\n", method);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
printf ("Command = '%s'\n", buffer);
|
||||||
|
|
||||||
|
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
||||||
|
buffer [count] = 0;
|
||||||
|
|
||||||
|
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
||||||
|
|
||||||
|
printf ("Host = '%s' - %u\n\n", buffer, port);
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
glibtop_get_sysdeps (&sysdeps);
|
||||||
|
|
||||||
|
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
|
||||||
|
|
||||||
|
printf ("Sysdeps (0x%08lx):\n\n"
|
||||||
|
"\tfeatures:\t\t0x%08lx\n\n"
|
||||||
|
"\tcpu:\t\t%d\t0x%08lx\n"
|
||||||
|
"\tmem:\t\t%d\t0x%08lx\n"
|
||||||
|
"\tswap:\t\t%d\t0x%08lx\n\n"
|
||||||
|
"\tuptime:\t\t%d\t0x%08lx\n"
|
||||||
|
"\tloadavg:\t%d\t0x%08lx\n\n"
|
||||||
|
"\tshm_limits:\t%d\t0x%08lx\n"
|
||||||
|
"\tmsg_limits:\t%d\t0x%08lx\n"
|
||||||
|
"\tsem_limits:\t%d\t0x%08lx\n\n"
|
||||||
|
"\tproclist:\t%d\t0x%08lx\n\n"
|
||||||
|
"\tproc_state:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_uid:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_mem:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_time:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_signal:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_kernel:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_segment:\t%d\t0x%08lx\n\n"
|
||||||
|
"\tproc_args:\t%d\t0x%08lx\n"
|
||||||
|
"\tproc_map:\t%d\t0x%08lx\n\n"
|
||||||
|
"\tmountlist:\t%d\t0x%08lx\n"
|
||||||
|
"\tfsusage:\t%d\t0x%08lx\n\n"
|
||||||
|
"\tnetload:\t%d\t0x%08lx\n"
|
||||||
|
"\tppp:\t\t%d\t0x%08lx\n\n",
|
||||||
|
(unsigned long) sysdeps.flags,
|
||||||
|
(unsigned long) sysdeps.features,
|
||||||
|
FEATURE_CHECK(CPU),
|
||||||
|
(unsigned long) sysdeps.cpu,
|
||||||
|
FEATURE_CHECK(MEM),
|
||||||
|
(unsigned long) sysdeps.mem,
|
||||||
|
FEATURE_CHECK(SWAP),
|
||||||
|
(unsigned long) sysdeps.swap,
|
||||||
|
FEATURE_CHECK(UPTIME),
|
||||||
|
(unsigned long) sysdeps.uptime,
|
||||||
|
FEATURE_CHECK(LOADAVG),
|
||||||
|
(unsigned long) sysdeps.loadavg,
|
||||||
|
FEATURE_CHECK(SHM_LIMITS),
|
||||||
|
(unsigned long) sysdeps.shm_limits,
|
||||||
|
FEATURE_CHECK(MSG_LIMITS),
|
||||||
|
(unsigned long) sysdeps.msg_limits,
|
||||||
|
FEATURE_CHECK(SEM_LIMITS),
|
||||||
|
(unsigned long) sysdeps.sem_limits,
|
||||||
|
FEATURE_CHECK(PROCLIST),
|
||||||
|
(unsigned long) sysdeps.proclist,
|
||||||
|
FEATURE_CHECK(PROC_STATE),
|
||||||
|
(unsigned long) sysdeps.proc_state,
|
||||||
|
FEATURE_CHECK(PROC_UID),
|
||||||
|
(unsigned long) sysdeps.proc_uid,
|
||||||
|
FEATURE_CHECK(PROC_MEM),
|
||||||
|
(unsigned long) sysdeps.proc_mem,
|
||||||
|
FEATURE_CHECK(PROC_TIME),
|
||||||
|
(unsigned long) sysdeps.proc_time,
|
||||||
|
FEATURE_CHECK(PROC_SIGNAL),
|
||||||
|
(unsigned long) sysdeps.proc_signal,
|
||||||
|
FEATURE_CHECK(PROC_KERNEL),
|
||||||
|
(unsigned long) sysdeps.proc_kernel,
|
||||||
|
FEATURE_CHECK(PROC_SEGMENT),
|
||||||
|
(unsigned long) sysdeps.proc_segment,
|
||||||
|
FEATURE_CHECK(PROC_ARGS),
|
||||||
|
(unsigned long) sysdeps.proc_args,
|
||||||
|
FEATURE_CHECK(PROC_MAP),
|
||||||
|
(unsigned long) sysdeps.proc_map,
|
||||||
|
FEATURE_CHECK(MOUNTLIST),
|
||||||
|
(unsigned long) sysdeps.mountlist,
|
||||||
|
FEATURE_CHECK(FSUSAGE),
|
||||||
|
(unsigned long) sysdeps.fsusage,
|
||||||
|
FEATURE_CHECK(NETLOAD),
|
||||||
|
(unsigned long) sysdeps.netload,
|
||||||
|
FEATURE_CHECK(PPP),
|
||||||
|
(unsigned long) sysdeps.ppp);
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
80
examples/test.scm
Normal file
80
examples/test.scm
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
(display (glibtop-names-sysdeps)) (newline)
|
||||||
|
(display (glibtop-labels-sysdeps)) (newline)
|
||||||
|
(display (glibtop-descriptions-sysdeps)) (newline)
|
||||||
|
(display (glibtop-types-sysdeps)) (newline)
|
||||||
|
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(display (glibtop-names-cpu)) (newline)
|
||||||
|
(display (glibtop-names-mem)) (newline)
|
||||||
|
(display (glibtop-names-swap)) (newline)
|
||||||
|
(display (glibtop-names-uptime)) (newline)
|
||||||
|
(display (glibtop-names-loadavg)) (newline)
|
||||||
|
(display (glibtop-names-shm_limits)) (newline)
|
||||||
|
(display (glibtop-names-msg_limits)) (newline)
|
||||||
|
(display (glibtop-names-sem_limits)) (newline)
|
||||||
|
(display (glibtop-names-proclist)) (newline)
|
||||||
|
(display (glibtop-names-proc_state)) (newline)
|
||||||
|
(display (glibtop-names-proc_uid)) (newline)
|
||||||
|
(display (glibtop-names-proc_mem)) (newline)
|
||||||
|
(display (glibtop-names-proc_time)) (newline)
|
||||||
|
(display (glibtop-names-proc_signal)) (newline)
|
||||||
|
(display (glibtop-names-proc_kernel)) (newline)
|
||||||
|
(display (glibtop-names-proc_segment)) (newline)
|
||||||
|
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(display (glibtop-labels-cpu)) (newline)
|
||||||
|
(display (glibtop-labels-mem)) (newline)
|
||||||
|
(display (glibtop-labels-swap)) (newline)
|
||||||
|
(display (glibtop-labels-uptime)) (newline)
|
||||||
|
(display (glibtop-labels-loadavg)) (newline)
|
||||||
|
(display (glibtop-labels-shm_limits)) (newline)
|
||||||
|
(display (glibtop-labels-msg_limits)) (newline)
|
||||||
|
(display (glibtop-labels-sem_limits)) (newline)
|
||||||
|
(display (glibtop-labels-proclist)) (newline)
|
||||||
|
(display (glibtop-labels-proc_state)) (newline)
|
||||||
|
(display (glibtop-labels-proc_uid)) (newline)
|
||||||
|
(display (glibtop-labels-proc_mem)) (newline)
|
||||||
|
(display (glibtop-labels-proc_time)) (newline)
|
||||||
|
(display (glibtop-labels-proc_signal)) (newline)
|
||||||
|
(display (glibtop-labels-proc_kernel)) (newline)
|
||||||
|
(display (glibtop-labels-proc_segment)) (newline)
|
||||||
|
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(display (glibtop-descriptions-cpu)) (newline)
|
||||||
|
(display (glibtop-descriptions-mem)) (newline)
|
||||||
|
(display (glibtop-descriptions-swap)) (newline)
|
||||||
|
(display (glibtop-descriptions-uptime)) (newline)
|
||||||
|
(display (glibtop-descriptions-loadavg)) (newline)
|
||||||
|
(display (glibtop-descriptions-shm_limits)) (newline)
|
||||||
|
(display (glibtop-descriptions-msg_limits)) (newline)
|
||||||
|
(display (glibtop-descriptions-sem_limits)) (newline)
|
||||||
|
(display (glibtop-descriptions-proclist)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_state)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_uid)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_mem)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_time)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_signal)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_kernel)) (newline)
|
||||||
|
(display (glibtop-descriptions-proc_segment)) (newline)
|
||||||
|
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(display (glibtop-types-cpu)) (newline)
|
||||||
|
(display (glibtop-types-mem)) (newline)
|
||||||
|
(display (glibtop-types-swap)) (newline)
|
||||||
|
(display (glibtop-types-uptime)) (newline)
|
||||||
|
(display (glibtop-types-loadavg)) (newline)
|
||||||
|
(display (glibtop-types-shm_limits)) (newline)
|
||||||
|
(display (glibtop-types-msg_limits)) (newline)
|
||||||
|
(display (glibtop-types-sem_limits)) (newline)
|
||||||
|
(display (glibtop-types-proclist)) (newline)
|
||||||
|
(display (glibtop-types-proc_state)) (newline)
|
||||||
|
(display (glibtop-types-proc_uid)) (newline)
|
||||||
|
(display (glibtop-types-proc_mem)) (newline)
|
||||||
|
(display (glibtop-types-proc_time)) (newline)
|
||||||
|
(display (glibtop-types-proc_signal)) (newline)
|
||||||
|
(display (glibtop-types-proc_kernel)) (newline)
|
||||||
|
(display (glibtop-types-proc_segment)) (newline)
|
57
examples/third.c
Normal file
57
examples/third.c
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
void main_prog(int argc, char *argv[]);
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
gh_enter (argc, argv, main_prog);
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
main_prog (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
glibtop_boot_guile ();
|
||||||
|
#ifdef GLIBTOP_GUILE_NAMES
|
||||||
|
glibtop_boot_guile_names ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
gh_repl (argc, argv);
|
||||||
|
}
|
357
examples/timings.c
Normal file
357
examples/timings.c
Normal file
@@ -0,0 +1,357 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
#include <sys/times.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 100000L
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT_EXPENSIVE
|
||||||
|
#define PROFILE_COUNT_EXPENSIVE 10000L
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 + (unsigned long) elapsed_utime.tv_usec)
|
||||||
|
#define ELAPSED_STIME ((unsigned long) elapsed_stime.tv_sec * 1000000 + (unsigned long) elapsed_stime.tv_usec)
|
||||||
|
|
||||||
|
#define libgtop_timeradd(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec >= 1000000) { \
|
||||||
|
(vvp)->tv_sec++; \
|
||||||
|
(vvp)->tv_usec -= 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define libgtop_timersub(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec < 0) { \
|
||||||
|
(vvp)->tv_sec--; \
|
||||||
|
(vvp)->tv_usec += 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_union data;
|
||||||
|
unsigned c, count, *ptr;
|
||||||
|
struct rusage total_start, total_end;
|
||||||
|
struct rusage rusage_start, rusage_end;
|
||||||
|
struct timeval elapsed_utime, elapsed_stime;
|
||||||
|
pid_t pid;
|
||||||
|
|
||||||
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
printf ("%-12s (%-10s): %7s - %9s - %9s\n",
|
||||||
|
"Feature", "Flags", "Count", "utime", "stime");
|
||||||
|
printf ("-------------------------------------------"
|
||||||
|
"---------------\n");
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &total_start);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_cpu (&data.cpu);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("CPU (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.cpu.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++)
|
||||||
|
glibtop_get_mem (&data.mem);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Memory (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.mem.flags, PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++)
|
||||||
|
glibtop_get_swap (&data.swap);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Swap (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.swap.flags, PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_uptime (&data.uptime);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Uptime (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.uptime.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_loadavg (&data.loadavg);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Loadavg (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.loadavg.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
||||||
|
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
||||||
|
glibtop_free (ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proclist (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proclist.flags,
|
||||||
|
PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
|
pid = getpid ();
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_state (&data.proc_state, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_State (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_state.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_uid (&data.proc_uid, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Uid (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_uid.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_mem (&data.proc_mem, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Mem (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_mem.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Segment (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_segment.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_time (&data.proc_time, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Time (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_time.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Signal (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_signal.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Kernel (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_kernel.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &total_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&total_end.ru_utime, &total_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&total_end.ru_stime, &total_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("-------------------------------------------"
|
||||||
|
"---------------\n");
|
||||||
|
|
||||||
|
printf ("%-36s %9lu - %9lu\n\n", "TOTAL",
|
||||||
|
ELAPSED_UTIME, ELAPSED_STIME);
|
||||||
|
|
||||||
|
printf ("All timings are in clock ticks "
|
||||||
|
"(1000000 ticks per second).\n\n");
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
47
features.def
47
features.def
@@ -1,25 +1,22 @@
|
|||||||
retval|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[GLIBTOP_NCPU],xcpu_user[GLIBTOP_NCPU],xcpu_nice[GLIBTOP_NCPU],xcpu_sys[GLIBTOP_NCPU],xcpu_idle[GLIBTOP_NCPU],xcpu_flags)
|
void|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4])
|
||||||
retval|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
||||||
retval|swap|ulong(total,used,free,pagein,pageout)
|
void|swap|ulong(total,used,free,pagein,pageout)
|
||||||
retval|uptime|double(uptime,idletime):ulong(boot_time)
|
void|uptime|double(uptime,idletime)
|
||||||
retval|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
||||||
retval|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
||||||
retval|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
||||||
retval|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
||||||
pointer(unsigned)|proclist|array|long(which,arg)
|
unsigned *|proclist|ulong(number,size,total)|long(which,arg)
|
||||||
retval|proc_state|string(cmd):unsigned(state):ulong(uid,gid,ruid,rgid,has_cpu,processor,last_processor)|pid_t(pid)
|
void|proc_state|str(cmd):char(state):ulong(uid,gid)|pid_t(pid)
|
||||||
retval|proc_uid|long(uid,euid,gid,egid,suid,sgid,fsuid,fsgid,pid,ppid,pgrp,session,tty,tpgid,priority,nice,ngroups,groups[GLIBTOP_MAX_GROUPS])|pid_t(pid)
|
void|proc_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid)
|
||||||
retval|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
||||||
retval|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[GLIBTOP_NCPU],xcpu_stime[GLIBTOP_NCPU],xcpu_flags)|pid_t(pid)
|
void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[4],xcpu_stime[4])|pid_t(pid)
|
||||||
retval|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
|
void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
|
||||||
retval|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):string(wchan)|pid_t(pid)
|
void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):str(wchan)|pid_t(pid)
|
||||||
retval|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_data,end_data,start_brk,end_brk,start_stack,start_mmap,arg_start,arg_end,env_start,env_end)|pid_t(pid)
|
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_stack)|pid_t(pid)
|
||||||
char *|proc_cwd|ulong(size,device,inode)|pid_t(pid)
|
char *|proc_args|ulong(size)|pid_t(pid):unsigned(max_len)
|
||||||
pointer(string)|proc_args|array|pid_t(pid)
|
glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid)
|
||||||
array(glibtop_map_entry)|proc_map|array|pid_t(pid)
|
glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs)
|
||||||
array(glibtop_mountentry)|@mountlist|array|int(all_fs)
|
void|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string|mount_dir
|
||||||
retval|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string(mount_dir)
|
void|netload|ulong(if_flags,mtu,subnet,address,packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string|interface
|
||||||
array(glibtop_interface)|interface_names|array|ulong(interface,number,instance,strategy)
|
void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
||||||
array(glibtop_ifaddr)|netinfo|array:ulong(if_flags,transport,mtu)|string(interface):ulong(transport)
|
|
||||||
retval|netload|ulong(packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string(interface):unsigned(transport,protocol)
|
|
||||||
retval|ppp|ulong(state,bytes_in,bytes_out)|ushort(device,use_isdn)
|
|
||||||
|
77
glibtop.h
77
glibtop.h
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -26,35 +24,84 @@
|
|||||||
#ifndef __GLIBTOP_H__
|
#ifndef __GLIBTOP_H__
|
||||||
#define __GLIBTOP_H__
|
#define __GLIBTOP_H__
|
||||||
|
|
||||||
#ifndef _IN_LIBGTOP
|
|
||||||
#include <glibtop-config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
#include <glibtop/limits.h>
|
|
||||||
|
#include <glibtop_server.h>
|
||||||
#include <glibtop/types.h>
|
#include <glibtop/types.h>
|
||||||
|
|
||||||
#include <glibtop/glibtop-client.h>
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
#include <glibtop_machine.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
#ifndef GLIBTOP_MOUNTENTRY_LEN
|
||||||
|
#define GLIBTOP_MOUNTENTRY_LEN 79
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct _glibtop glibtop;
|
typedef struct _glibtop glibtop;
|
||||||
|
|
||||||
#include <glibtop/sysdeps.h>
|
#include <glibtop/sysdeps.h>
|
||||||
#include <glibtop/errors.h>
|
|
||||||
|
|
||||||
#include <glibtop/glibtop-server.h>
|
struct _glibtop
|
||||||
|
{
|
||||||
|
unsigned flags;
|
||||||
|
unsigned method; /* Server Method */
|
||||||
|
unsigned error_method; /* Error Method */
|
||||||
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
glibtop_machine machine; /* Machine dependent data */
|
||||||
|
#endif
|
||||||
|
int input [2]; /* Pipe client <- server */
|
||||||
|
int output [2]; /* Pipe client -> server */
|
||||||
|
int socket; /* Accepted connection of a socket */
|
||||||
|
int ncpu; /* Number of CPUs, zero if single-processor */
|
||||||
|
unsigned long os_version_code; /* Version code of the operating system */
|
||||||
|
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 */
|
||||||
|
unsigned long server_port; /* Port on which daemon is listening */
|
||||||
|
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
||||||
|
glibtop_sysdeps required; /* Required feature list */
|
||||||
|
pid_t pid; /* PID of the server */
|
||||||
|
};
|
||||||
|
|
||||||
|
extern glibtop *glibtop_global_server;
|
||||||
|
|
||||||
|
extern const unsigned long glibtop_server_features;
|
||||||
|
|
||||||
|
#define glibtop_init() glibtop_init_r(&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
#define glibtop_close() glibtop_close_r(glibtop_global_server);
|
||||||
|
|
||||||
glibtop *
|
glibtop *
|
||||||
glibtop_init_r (glibtop **server_ptr,
|
glibtop_init_r (glibtop **server_ptr,
|
||||||
unsigned long features,
|
unsigned long features,
|
||||||
unsigned flags);
|
unsigned flags);
|
||||||
|
|
||||||
void
|
glibtop *
|
||||||
glibtop_init_s (glibtop_server *server_ptr,
|
glibtop_init_s (glibtop **server_ptr,
|
||||||
unsigned long features,
|
unsigned long features,
|
||||||
unsigned flags);
|
unsigned flags);
|
||||||
|
|
||||||
G_END_DECLS
|
#ifdef GLIBTOP_GUILE
|
||||||
|
|
||||||
|
/* You need to link with -lgtop_guile to get this stuff here. */
|
||||||
|
|
||||||
|
void glibtop_boot_guile (void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef GLIBTOP_GUILE_NAMES
|
||||||
|
|
||||||
|
/* You need to link with -lgtop_guile_names to get this stuff here. */
|
||||||
|
|
||||||
|
void glibtop_boot_guile_names (void);
|
||||||
|
|
||||||
|
#ifndef GLIBTOP_NAMES
|
||||||
|
#define GLIBTOP_NAMES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,3 +1,2 @@
|
|||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
call-vector.h
|
|
||||||
|
@@ -1,25 +1,10 @@
|
|||||||
glibtopdir = $(includedir)/glibtop
|
glibtopdir = $(includedir)/libgtop-2.0/glibtop
|
||||||
|
|
||||||
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||||
sem_limits.h uptime.h mem.h proclist.h \
|
sem_limits.h uptime.h command.h mem.h proclist.h \
|
||||||
proctime.h shm_limits.h cpu.h msg_limits.h \
|
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
|
||||||
procmem.h procuid.h swap.h error.h open.h \
|
procmem.h procuid.h swap.h write.h error.h open.h \
|
||||||
procsegment.h sysdeps.h xmalloc.h global.h \
|
procsegment.h read.h sysdeps.h xmalloc.h global.h \
|
||||||
procsignal.h union.h types.h proccwd.h \
|
procsignal.h read_data.h union.h types.h gnuserv.h \
|
||||||
mountlist.h fsusage.h procmap.h signal.h \
|
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
||||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
|
inodedb.h sysinfo.h ppp.h procargs.h netload.h
|
||||||
netinfo.h interfaces.h limits.h array.h compat_10.h \
|
|
||||||
glib-arrays.h call-vector.h \
|
|
||||||
glibtop-client.h glibtop-server.h glibtop-backend.h \
|
|
||||||
glibtop-backend-info.h errors.h
|
|
||||||
|
|
||||||
BUILT_SOURCES = call-vector.h
|
|
||||||
|
|
||||||
call-vector.h: call-vector.pl call-vector.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
|
||||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/call-vector.pl $(top_srcdir)/features.def $(srcdir)/call-vector.h.in > tmp-t
|
|
||||||
mv tmp-t call-vector.h
|
|
||||||
|
|
||||||
EXTRA_DIST = call-vector.pl call-vector.h.in
|
|
||||||
|
|
||||||
CLEANFILES = $(BUILT_SOURCES)
|
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -28,13 +26,13 @@
|
|||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
void glibtop_close_r (glibtop *server);
|
void glibtop_close_r (glibtop *server);
|
||||||
|
|
||||||
void glibtop_close_s (glibtop_server *server);
|
void glibtop_close_s (glibtop *server);
|
||||||
void glibtop_close_p (glibtop_server *server);
|
void glibtop_close_p (glibtop *server);
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
102
include/glibtop/command.h
Normal file
102
include/glibtop/command.h
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_COMMAND_H__
|
||||||
|
#define __GLIBTOP_COMMAND_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define GLIBTOP_CMND_QUIT 0
|
||||||
|
#define GLIBTOP_CMND_SYSDEPS 1
|
||||||
|
|
||||||
|
#define GLIBTOP_CMND_CPU 2
|
||||||
|
#define GLIBTOP_CMND_MEM 3
|
||||||
|
#define GLIBTOP_CMND_SWAP 4
|
||||||
|
#define GLIBTOP_CMND_UPTIME 5
|
||||||
|
#define GLIBTOP_CMND_LOADAVG 6
|
||||||
|
#define GLIBTOP_CMND_SHM_LIMITS 7
|
||||||
|
#define GLIBTOP_CMND_MSG_LIMITS 8
|
||||||
|
#define GLIBTOP_CMND_SEM_LIMITS 9
|
||||||
|
#define GLIBTOP_CMND_PROCLIST 10
|
||||||
|
|
||||||
|
#define GLIBTOP_CMND_PROC_STATE 11
|
||||||
|
#define GLIBTOP_CMND_PROC_UID 12
|
||||||
|
#define GLIBTOP_CMND_PROC_MEM 13
|
||||||
|
#define GLIBTOP_CMND_PROC_TIME 14
|
||||||
|
#define GLIBTOP_CMND_PROC_SIGNAL 15
|
||||||
|
#define GLIBTOP_CMND_PROC_KERNEL 16
|
||||||
|
#define GLIBTOP_CMND_PROC_SEGMENT 17
|
||||||
|
#define GLIBTOP_CMND_PROC_ARGS 18
|
||||||
|
#define GLIBTOP_CMND_PROC_MAP 19
|
||||||
|
|
||||||
|
#define GLIBTOP_CMND_MOUNTLIST 20
|
||||||
|
#define GLIBTOP_CMND_FSUSAGE 21
|
||||||
|
#define GLIBTOP_CMND_NETLOAD 22
|
||||||
|
#define GLIBTOP_CMND_PPP 23
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_CMND 24
|
||||||
|
|
||||||
|
#define _GLIBTOP_PARAM_SIZE 16
|
||||||
|
|
||||||
|
typedef struct _glibtop_command glibtop_command;
|
||||||
|
|
||||||
|
typedef struct _glibtop_response glibtop_response;
|
||||||
|
typedef union _glibtop_response_union glibtop_response_union;
|
||||||
|
|
||||||
|
struct _glibtop_command
|
||||||
|
{
|
||||||
|
u_int64_t command;
|
||||||
|
u_int64_t size, data_size;
|
||||||
|
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
union _glibtop_response_union
|
||||||
|
{
|
||||||
|
glibtop_union data;
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_response
|
||||||
|
{
|
||||||
|
int64_t offset;
|
||||||
|
u_int64_t size, data_size;
|
||||||
|
glibtop_response_union u;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define glibtop_call(p1, p2, p3, p4) glibtop_call_r(glibtop_global_server, p1, p2, p3, p4)
|
||||||
|
|
||||||
|
void *
|
||||||
|
glibtop_call_l (glibtop *server, unsigned command, size_t send_size,
|
||||||
|
const void *send_buf, size_t recv_size, void *recv_buf);
|
||||||
|
|
||||||
|
void *
|
||||||
|
glibtop_call_s (glibtop *server, unsigned command, size_t send_size,
|
||||||
|
const void *send_buf, size_t recv_size, void *recv_buf);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_CPU_TOTAL 0
|
#define GLIBTOP_CPU_TOTAL 0
|
||||||
#define GLIBTOP_CPU_USER 1
|
#define GLIBTOP_CPU_USER 1
|
||||||
@@ -38,48 +36,51 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_CPU_IDLE 4
|
#define GLIBTOP_CPU_IDLE 4
|
||||||
#define GLIBTOP_CPU_FREQUENCY 5
|
#define GLIBTOP_CPU_FREQUENCY 5
|
||||||
|
|
||||||
#define GLIBTOP_CPU_XCPU_TOTAL 6
|
#define GLIBTOP_XCPU_TOTAL 6
|
||||||
#define GLIBTOP_CPU_XCPU_USER 7
|
#define GLIBTOP_XCPU_USER 7
|
||||||
#define GLIBTOP_CPU_XCPU_NICE 8
|
#define GLIBTOP_XCPU_NICE 8
|
||||||
#define GLIBTOP_CPU_XCPU_SYS 9
|
#define GLIBTOP_XCPU_SYS 9
|
||||||
#define GLIBTOP_CPU_XCPU_IDLE 10
|
#define GLIBTOP_XCPU_IDLE 10
|
||||||
#define GLIBTOP_CPU_XCPU_FLAGS 11
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_CPU 12
|
#define GLIBTOP_MAX_CPU 11
|
||||||
|
|
||||||
|
/* Nobody should really be using more than 4 processors. */
|
||||||
|
#define GLIBTOP_NCPU 4
|
||||||
|
|
||||||
typedef struct _glibtop_cpu glibtop_cpu;
|
typedef struct _glibtop_cpu glibtop_cpu;
|
||||||
|
|
||||||
struct _glibtop_cpu
|
struct _glibtop_cpu
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
total, /* GLIBTOP_CPU_TOTAL */
|
total, /* GLIBTOP_CPU_TOTAL */
|
||||||
user, /* GLIBTOP_CPU_USER */
|
user, /* GLIBTOP_CPU_USER */
|
||||||
nice, /* GLIBTOP_CPU_NICE */
|
nice, /* GLIBTOP_CPU_NICE */
|
||||||
sys, /* GLIBTOP_CPU_SYS */
|
sys, /* GLIBTOP_CPU_SYS */
|
||||||
idle, /* GLIBTOP_CPU_IDLE */
|
idle, /* GLIBTOP_CPU_IDLE */
|
||||||
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
||||||
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_TOTAL */
|
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
|
||||||
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_USER */
|
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
|
||||||
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_NICE */
|
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
|
||||||
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_SYS */
|
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
|
||||||
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_IDLE */
|
xcpu_idle [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IDLE */
|
||||||
xcpu_flags; /* GLIBTOP_CPU_XCPU_FLAGS */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_CPU
|
#if GLIBTOP_SUID_CPU
|
||||||
#define glibtop_get_cpu_r glibtop_get_cpu_p
|
#define glibtop_get_cpu_r glibtop_get_cpu_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_cpu_r glibtop_get_cpu_s
|
#define glibtop_get_cpu_r glibtop_get_cpu_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_cpu_l (glibtop_client *client, glibtop_cpu *buf);
|
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_CPU
|
#if GLIBTOP_SUID_CPU
|
||||||
int glibtop_init_cpu_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_cpu_p (glibtop *server);
|
||||||
int glibtop_get_cpu_p (glibtop_server *server, glibtop_closure *closure, glibtop_cpu *buf);
|
void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_cpu_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_cpu_s (glibtop *server);
|
||||||
int glibtop_get_cpu_s (glibtop_server *server, glibtop_closure *closure, glibtop_cpu *buf);
|
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -93,6 +94,6 @@ extern const char *glibtop_descriptions_cpu [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -28,19 +26,111 @@
|
|||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
void glibtop_error_vr (glibtop_server *server, char *format, va_list args);
|
#ifndef G_GNUC_UNUSED
|
||||||
void glibtop_warn_vr (glibtop_server *server, char *format, va_list args);
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
||||||
|
#define G_GNUC_UNUSED \
|
||||||
|
__attribute__((unused))
|
||||||
|
#else /* !__GNUC__ */
|
||||||
|
#define G_GNUC_UNUSED
|
||||||
|
#endif /* !__GNUC__ */
|
||||||
|
#endif /* defined G_GNUC_UNUSED */
|
||||||
|
|
||||||
void glibtop_error_io_vr (glibtop_server *server, char *format, int, va_list args);
|
void glibtop_error_vr (glibtop *server, char *format, va_list args);
|
||||||
void glibtop_warn_io_vr (glibtop_server *server, char *format, int, va_list args);
|
void glibtop_warn_vr (glibtop *server, char *format, va_list args);
|
||||||
|
|
||||||
void glibtop_error_r (glibtop_server *server, char *format, ...);
|
void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args);
|
||||||
void glibtop_warn_r (glibtop_server *server, char *format, ...);
|
void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args);
|
||||||
void glibtop_error_io_r (glibtop_server *server, char *format, ...);
|
|
||||||
void glibtop_warn_io_r (glibtop_server *server, char *format, ...);
|
|
||||||
|
|
||||||
G_END_DECLS
|
static void G_GNUC_UNUSED
|
||||||
|
glibtop_error_r (glibtop *server, char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_error_vr (server, format, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void G_GNUC_UNUSED
|
||||||
|
glibtop_warn_r (glibtop *server, char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_warn_vr (server, format, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void G_GNUC_UNUSED
|
||||||
|
glibtop_error_io_r (glibtop *server, char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_error_io_vr (server, format, errno, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void G_GNUC_UNUSED
|
||||||
|
glibtop_warn_io_r (glibtop *server, char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_warn_io_vr (server, format, errno, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
|
||||||
|
#define glibtop_error(p1, args...) glibtop_error_r(glibtop_global_server , p1 , ## args)
|
||||||
|
#define glibtop_warn(p1, args...) glibtop_warn_r(glibtop_global_server , p1 , ## args)
|
||||||
|
|
||||||
|
#define glibtop_error_io(p1, args...) glibtop_error_io_r(glibtop_global_server , p1 , ## args)
|
||||||
|
#define glibtop_warn_io(p1, args...) glibtop_warn_io_r(glibtop_global_server , p1 , ## args)
|
||||||
|
|
||||||
|
#else /* no __GNUC__ */
|
||||||
|
|
||||||
|
static void
|
||||||
|
glibtop_error (char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_error_vr (glibtop_global_server, format, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
glibtop_warn (char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_warn_vr (glibtop_global_server, format, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
glibtop_error_io (char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
glibtop_warn_io (char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* no __GNUC__ */
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_FSUSAGE_BLOCKS 0
|
#define GLIBTOP_FSUSAGE_BLOCKS 0
|
||||||
#define GLIBTOP_FSUSAGE_BFREE 1
|
#define GLIBTOP_FSUSAGE_BFREE 1
|
||||||
@@ -43,16 +41,20 @@ typedef struct _glibtop_fsusage glibtop_fsusage;
|
|||||||
|
|
||||||
struct _glibtop_fsusage
|
struct _glibtop_fsusage
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
blocks, /* Total blocks. */
|
blocks, /* Total blocks. */
|
||||||
bfree, /* Free blocks available to superuser. */
|
bfree, /* Free blocks available to superuser. */
|
||||||
bavail, /* Free blocks available to non-superuser. */
|
bavail, /* Free blocks available to non-superuser. */
|
||||||
files, /* Total file nodes. */
|
files, /* Total file nodes. */
|
||||||
ffree; /* Free file nodes. */
|
ffree; /* Free file nodes. */
|
||||||
};
|
};
|
||||||
|
|
||||||
int glibtop_get_fsusage_l (glibtop_client *client, glibtop_fsusage *buf, const char *mount_dir);
|
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
|
||||||
int glibtop_get_fsusage_s (glibtop_server *server, glibtop_closure *closure, glibtop_fsusage *buf, const char *mount_dir);
|
|
||||||
|
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
|
||||||
|
|
||||||
|
void glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
|
||||||
|
void glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
|
|
||||||
@@ -65,6 +67,6 @@ extern const char *glibtop_descriptions_fsusage [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -30,24 +28,40 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
/*
|
||||||
#include <stdlib.h>
|
* All declarations are enclosed in BEGIN_LIBGTOP_DECLS and
|
||||||
#include <sys/param.h>
|
* END_LIBGTOP_DECLS so that C++ compilers don't mangle their names.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#undef BEGIN_LIBGTOP_DECLS
|
||||||
|
#undef END_LIBGTOP_DECLS
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef __cplusplus
|
||||||
#include <unistd.h>
|
# define BEGIN_LIBGTOP_DECLS extern "C" {
|
||||||
|
# define END_LIBGTOP_DECLS }
|
||||||
|
#else
|
||||||
|
# define BEGIN_LIBGTOP_DECLS /* empty */
|
||||||
|
# define END_LIBGTOP_DECLS /* empty */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_MEMORY_H
|
#ifdef _IN_LIBGTOP
|
||||||
#include <memory.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
/* Provide macros to feature the GCC function attribute.
|
||||||
#include <sys/types.h>
|
*/
|
||||||
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
||||||
|
#define G_GNUC_NORETURN \
|
||||||
|
__attribute__((noreturn))
|
||||||
|
#define G_GNUC_CONST \
|
||||||
|
__attribute__((const))
|
||||||
|
#define G_GNUC_UNUSED \
|
||||||
|
__attribute__((unused))
|
||||||
|
#else /* !__GNUC__ */
|
||||||
|
#define G_GNUC_NORETURN
|
||||||
|
#define G_GNUC_CONST
|
||||||
|
#define G_GNUC_UNUSED
|
||||||
|
#endif /* !__GNUC__ */
|
||||||
|
|
||||||
#include <glib/gmacros.h>
|
#endif /* _IN_LIBGTOP */
|
||||||
|
|
||||||
#if TIME_WITH_SYS_TIME
|
#if TIME_WITH_SYS_TIME
|
||||||
# include <sys/time.h>
|
# include <sys/time.h>
|
||||||
@@ -60,11 +74,6 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* For Tru64 UNIX */
|
|
||||||
#ifdef HAVE_SYS_BITYPES_H
|
|
||||||
#include <sys/bitypes.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NEED_GNOMESUPPORT_H
|
#ifdef NEED_GNOMESUPPORT_H
|
||||||
#include <gnomesupport.h>
|
#include <gnomesupport.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -86,8 +95,25 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MEMORY_H
|
||||||
|
#include <memory.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef _IN_LIBGTOP
|
#ifdef _IN_LIBGTOP
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/param.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
@@ -98,10 +124,10 @@
|
|||||||
|
|
||||||
#ifdef _IN_LIBGTOP
|
#ifdef _IN_LIBGTOP
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#ifndef _
|
#ifndef _
|
||||||
#define _(String) dgettext (LIBGTOP_PACKAGE, String)
|
#define _(String) dgettext (PACKAGE, String)
|
||||||
#define N_(String) (String)
|
#define N_(String) (String)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -109,7 +135,7 @@ G_BEGIN_DECLS
|
|||||||
char *strerror (int errno);
|
char *strerror (int errno);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif /* _IN_LIBGTOP */
|
#endif /* _IN_LIBGTOP */
|
||||||
|
|
||||||
|
161
include/glibtop/gnuserv.h
Normal file
161
include/glibtop/gnuserv.h
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
/* -*-C-*-
|
||||||
|
|
||||||
|
Header file for the GNU Emacs server and client C code.
|
||||||
|
|
||||||
|
This file is part of GNU Emacs.
|
||||||
|
|
||||||
|
Copying is permitted under those conditions described by the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
Copyright (C) 1989 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Author: Andy Norman (ange@hplb.hpl.hp.com), based on
|
||||||
|
'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU
|
||||||
|
Emacs distribution.
|
||||||
|
|
||||||
|
Please mail bugs and suggestions to the author at the above address.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* HISTORY
|
||||||
|
* 11-Nov-1990 bristor@simba
|
||||||
|
* Added EOT stuff.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file incorporates new features added by Bob Weiner <weiner@mot.com>,
|
||||||
|
* Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
|
||||||
|
* Please see the note at the end of the README file for details.
|
||||||
|
*
|
||||||
|
* (If gnuserv came bundled with your emacs, the README file is probably
|
||||||
|
* ../etc/gnuserv.README relative to the directory containing this file)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NO_SHORTNAMES
|
||||||
|
|
||||||
|
#define PATCHLEVEL 2
|
||||||
|
|
||||||
|
#define NO_SHORTNAMES
|
||||||
|
/* gnuserv should not be compiled using SOCKS */
|
||||||
|
#define DO_NOT_SOCKSIFY
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
#undef read
|
||||||
|
#undef write
|
||||||
|
#undef open
|
||||||
|
#undef close
|
||||||
|
#undef signal
|
||||||
|
|
||||||
|
/* Define the communication method between server and clients:
|
||||||
|
* You can have either or both kinds of sockets, but you can't mix
|
||||||
|
* sockets with sysv ipc
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define INTERNET_DOMAIN_SOCKETS
|
||||||
|
#define UNIX_DOMAIN_SOCKETS
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define additional authentication protocols to be used. These methods will
|
||||||
|
* be tried before falling back to the default gnuserv protocol (based on
|
||||||
|
* the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1
|
||||||
|
* is also supported.
|
||||||
|
*
|
||||||
|
* Comment out the next line(s) if you don't want to enable the
|
||||||
|
* appropriate authentication protocol.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined (HAVE_XAUTH)
|
||||||
|
#define AUTH_MAGIC_COOKIE
|
||||||
|
#endif /* HAVE_XAUTH */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* stuff related to supporting MIT-MAGIC-COOKIE-1
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#define MCOOKIE_SCREEN "42980" /* screen # to use as the gnuserv cookie */
|
||||||
|
#endif
|
||||||
|
#define MCOOKIE_NAME "MAGIC-1" /* authentication protocol name */
|
||||||
|
#define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1" /* as needed by X */
|
||||||
|
|
||||||
|
|
||||||
|
#define DEFAUTH_NAME "GNU-SECURE" /* name of default auth protocol */
|
||||||
|
#define AUTH_TIMEOUT 15 /* # seconds to wait for auth data */
|
||||||
|
#define AUTH_NAMESZ 15 /* max allows auth protocol name size */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pick a default communication scheme, if none was specified.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS)
|
||||||
|
|
||||||
|
/* BSD systems use Unix Domain sockets by default */
|
||||||
|
|
||||||
|
#ifdef BSD
|
||||||
|
#define UNIX_DOMAIN_SOCKETS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* No communication method pre-defined */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you are using SYSV_IPC, you might want to make the buffer size bigger
|
||||||
|
* since it limits the size of requests and responses. Don't make it bigger
|
||||||
|
* than your system's max message size though (usually a couple of k) or else
|
||||||
|
* msgsend will start failing. For sockets, using the system BUFSIZ is usually
|
||||||
|
* what you want.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
|
||||||
|
|
||||||
|
#ifdef INTERNET_DOMAIN_SOCKETS
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#define TABLE_SIZE 101 /* The number of entries in the hash table */
|
||||||
|
#define HASH(host) host /* Rather simplistic hash function */
|
||||||
|
#define DEFAULT_PORT 21490 /* default port number to use is
|
||||||
|
* DEFAULT_PORT + uid */
|
||||||
|
#endif /* INTERNET_DOMAIN_SOCKETS */
|
||||||
|
|
||||||
|
#ifdef UNIX_DOMAIN_SOCKETS
|
||||||
|
#include <sys/un.h>
|
||||||
|
#define HIDE_UNIX_SOCKET /* put the unix socket in a protected dir */
|
||||||
|
#endif /* UNIX_DOMAIN_SOCKETS */
|
||||||
|
|
||||||
|
#define HOSTNAMSZ 255 /* max size of a hostname */
|
||||||
|
#define REPLYSIZ 300 /* max size of reply from server to client */
|
||||||
|
#undef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#undef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
|
||||||
|
/* The casts shut Sun's compiler up and are safe in the context these
|
||||||
|
are actually used. */
|
||||||
|
#define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y))
|
||||||
|
#define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y))
|
||||||
|
|
||||||
|
#ifndef _NFILE /* rough guess at maximum number of open files */
|
||||||
|
#define _NFILE 20
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define EOT_STR "\004"
|
||||||
|
#define EOT_CHR '\004'
|
||||||
|
|
||||||
|
/* connection types */
|
||||||
|
#define CONN_UNIX 0
|
||||||
|
#define CONN_INTERNET 1
|
||||||
|
#define CONN_IPC 2
|
||||||
|
|
||||||
|
/* function declarations */
|
||||||
|
int glibtop_make_connection (const char *hostarg, int portarg, int *s);
|
||||||
|
|
||||||
|
#ifdef INTERNET_DOMAIN_SOCKETS
|
||||||
|
long glibtop_internet_addr (const char *host);
|
||||||
|
#endif
|
||||||
|
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -33,7 +31,7 @@
|
|||||||
|
|
||||||
#define GLIBTOP_INODEDB_ALL 7
|
#define GLIBTOP_INODEDB_ALL 7
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
typedef struct _glibtop_inodedb glibtop_inodedb;
|
typedef struct _glibtop_inodedb glibtop_inodedb;
|
||||||
|
|
||||||
@@ -41,25 +39,29 @@ typedef struct _glibtop_inodedb_key glibtop_inodedb_key;
|
|||||||
|
|
||||||
struct _glibtop_inodedb_key
|
struct _glibtop_inodedb_key
|
||||||
{
|
{
|
||||||
u_int64_t device, inode;
|
u_int64_t device, inode;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _glibtop_inodedb
|
struct _glibtop_inodedb
|
||||||
{
|
{
|
||||||
GDBM_FILE system_dbf, user_dbf;
|
GDBM_FILE system_dbf, user_dbf;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_inodedb_open(p1,p2) glibtop_inodedb_open_s(glibtop_global_server, p1, p2)
|
||||||
|
#define glibtop_inodedb_lookup(p1,p2,p3) glibtop_inodedb_lookup_s(glibtop_global_server, p1, p2, p3)
|
||||||
|
#define glibtop_inodedb_close(p1) glibtop_inodedb_close_s(glibtop_global_server)
|
||||||
|
|
||||||
glibtop_inodedb *
|
glibtop_inodedb *
|
||||||
glibtop_inodedb_open_s (glibtop_server *server, unsigned databases, unsigned long cache_size);
|
glibtop_inodedb_open_s (glibtop *server, unsigned databases, unsigned long cache_size);
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
glibtop_inodedb_lookup_s (glibtop_server *server,
|
glibtop_inodedb_lookup_s (glibtop *server,
|
||||||
glibtop_inodedb *inodedb,
|
glibtop_inodedb *inodedb,
|
||||||
u_int64_t device, u_int64_t inode);
|
u_int64_t device, u_int64_t inode);
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_inodedb_close_s (glibtop_server *server, glibtop_closure *closure, glibtop_inodedb *inodedb);
|
glibtop_inodedb_close_s (glibtop *server, glibtop_inodedb *inodedb);
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_LOADAVG_LOADAVG 0
|
#define GLIBTOP_LOADAVG_LOADAVG 0
|
||||||
#define GLIBTOP_LOADAVG_NR_RUNNING 1
|
#define GLIBTOP_LOADAVG_NR_RUNNING 1
|
||||||
@@ -42,27 +40,29 @@ typedef struct _glibtop_loadavg glibtop_loadavg;
|
|||||||
|
|
||||||
struct _glibtop_loadavg
|
struct _glibtop_loadavg
|
||||||
{
|
{
|
||||||
u_int64_t flags;
|
u_int64_t flags;
|
||||||
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
|
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
|
||||||
u_int64_t nr_running, /* GLIBTOP_LOADAVG_NR_RUNNING */
|
u_int64_t nr_running, /* GLIBTOP_LOADAVG_NR_RUNNING */
|
||||||
nr_tasks, /* GLIBTOP_LOADAVG_NR_TASKS */
|
nr_tasks, /* GLIBTOP_LOADAVG_NR_TASKS */
|
||||||
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
|
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_loadavg(loadavg) glibtop_get_loadavg_l(glibtop_global_server, loadavg)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_LOADAVG
|
#if GLIBTOP_SUID_LOADAVG
|
||||||
#define glibtop_get_loadavg_r glibtop_get_loadavg_p
|
#define glibtop_get_loadavg_r glibtop_get_loadavg_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_loadavg_r glibtop_get_loadavg_s
|
#define glibtop_get_loadavg_r glibtop_get_loadavg_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_loadavg_l (glibtop_client *client, glibtop_loadavg *buf);
|
void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_LOADAVG
|
#if GLIBTOP_SUID_LOADAVG
|
||||||
int glibtop_init_loadavg_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_loadavg_p (glibtop *server);
|
||||||
int glibtop_get_loadavg_p (glibtop_server *server, glibtop_closure *closure, glibtop_loadavg *buf);
|
void glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_loadavg_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_loadavg_s (glibtop *server);
|
||||||
int glibtop_get_loadavg_s (glibtop_server *server, glibtop_closure *closure, glibtop_loadavg *buf);
|
void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -76,6 +76,6 @@ extern const char *glibtop_descriptions_loadavg [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_MEM_TOTAL 0
|
#define GLIBTOP_MEM_TOTAL 0
|
||||||
#define GLIBTOP_MEM_USED 1
|
#define GLIBTOP_MEM_USED 1
|
||||||
@@ -46,31 +44,33 @@ typedef struct _glibtop_mem glibtop_mem;
|
|||||||
|
|
||||||
struct _glibtop_mem
|
struct _glibtop_mem
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
total, /* GLIBTOP_MEM_TOTAL */
|
total, /* GLIBTOP_MEM_TOTAL */
|
||||||
used, /* GLIBTOP_MEM_USED */
|
used, /* GLIBTOP_MEM_USED */
|
||||||
free, /* GLIBTOP_MEM_FREE */
|
free, /* GLIBTOP_MEM_FREE */
|
||||||
shared, /* GLIBTOP_MEM_SHARED */
|
shared, /* GLIBTOP_MEM_SHARED */
|
||||||
buffer, /* GLIBTOP_MEM_BUFFER */
|
buffer, /* GLIBTOP_MEM_BUFFER */
|
||||||
cached, /* GLIBTOP_MEM_CACHED */
|
cached, /* GLIBTOP_MEM_CACHED */
|
||||||
user, /* GLIBTOP_MEM_USER */
|
user, /* GLIBTOP_MEM_USER */
|
||||||
locked; /* GLIBTOP_MEM_LOCKED */
|
locked; /* GLIBTOP_MEM_LOCKED */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_mem(mem) glibtop_get_mem_l(glibtop_global_server, mem)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_MEM
|
#if GLIBTOP_SUID_MEM
|
||||||
#define glibtop_get_mem_r glibtop_get_mem_p
|
#define glibtop_get_mem_r glibtop_get_mem_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_mem_r glibtop_get_mem_s
|
#define glibtop_get_mem_r glibtop_get_mem_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_mem_l (glibtop_client *client, glibtop_mem *buf);
|
void glibtop_get_mem_l (glibtop *server, glibtop_mem *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_MEM
|
#if GLIBTOP_SUID_MEM
|
||||||
int glibtop_init_mem_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_mem_p (glibtop *server);
|
||||||
int glibtop_get_mem_p (glibtop_server *server, glibtop_closure *closure, glibtop_mem *buf);
|
void glibtop_get_mem_p (glibtop *server, glibtop_mem *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_mem_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_mem_s (glibtop *server);
|
||||||
int glibtop_get_mem_s (glibtop_server *server, glibtop_closure *closure, glibtop_mem *buf);
|
void glibtop_get_mem_s (glibtop *server, glibtop_mem *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -84,6 +84,6 @@ extern const char *glibtop_descriptions_mem [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,28 +27,43 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
#include <glibtop/compat_10.h>
|
BEGIN_LIBGTOP_DECLS
|
||||||
#include <glibtop/array.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
#define GLIBTOP_MOUNTLIST_NUMBER 0
|
||||||
|
#define GLIBTOP_MOUNTLIST_TOTAL 1
|
||||||
|
#define GLIBTOP_MOUNTLIST_SIZE 2
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_MOUNTLIST 3
|
||||||
|
|
||||||
typedef struct _glibtop_mountentry glibtop_mountentry;
|
typedef struct _glibtop_mountentry glibtop_mountentry;
|
||||||
|
|
||||||
|
typedef struct _glibtop_mountlist glibtop_mountlist;
|
||||||
|
|
||||||
struct _glibtop_mountentry
|
struct _glibtop_mountentry
|
||||||
{
|
{
|
||||||
u_int64_t dev;
|
u_int64_t dev;
|
||||||
char devname [GLIBTOP_MOUNTENTRY_LEN+1];
|
char devname [GLIBTOP_MOUNTENTRY_LEN+1];
|
||||||
char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
|
char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
|
||||||
char type [GLIBTOP_MOUNTENTRY_LEN+1];
|
char type [GLIBTOP_MOUNTENTRY_LEN+1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _glibtop_mountlist
|
||||||
|
{
|
||||||
|
u_int64_t flags,
|
||||||
|
number, /* GLIBTOP_MOUNTLIST_NUMBER */
|
||||||
|
total, /* GLIBTOP_MOUNTLIST_TOTAL */
|
||||||
|
size; /* GLIBTOP_MOUNTLIST_SIZE */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_mountlist(mountlist,all_fs) glibtop_get_mountlist_l(glibtop_global_server, mountlist, all_fs)
|
||||||
|
|
||||||
#define glibtop_get_mountlist_r glibtop_get_mountlist_s
|
#define glibtop_get_mountlist_r glibtop_get_mountlist_s
|
||||||
|
|
||||||
glibtop_mountentry *
|
glibtop_mountentry *
|
||||||
glibtop_get_mountlist_l (glibtop_client *client, glibtop_array *array, int all_fs);
|
glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf, int all_fs);
|
||||||
|
|
||||||
glibtop_mountentry *
|
glibtop_mountentry *
|
||||||
glibtop_get_mountlist_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, int all_fs);
|
glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs);
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
|
|
||||||
@@ -63,6 +76,6 @@ extern const char *glibtop_descriptions_mountlist [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,46 +27,48 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGPOOL 0
|
#define GLIBTOP_IPC_MSGPOOL 0
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGMAP 1
|
#define GLIBTOP_IPC_MSGMAP 1
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGMAX 2
|
#define GLIBTOP_IPC_MSGMAX 2
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGMNB 3
|
#define GLIBTOP_IPC_MSGMNB 3
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGMNI 4
|
#define GLIBTOP_IPC_MSGMNI 4
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGSSZ 5
|
#define GLIBTOP_IPC_MSGSSZ 5
|
||||||
#define GLIBTOP_MSG_LIMITS_MSGTQL 6
|
#define GLIBTOP_IPC_MSGTQL 6
|
||||||
|
|
||||||
#define GLIBTOP_MAX_MSG_LIMITS 7
|
#define GLIBTOP_MAX_MSG_LIMITS 7
|
||||||
|
|
||||||
typedef struct _glibtop_msg_limits glibtop_msg_limits;
|
typedef struct _glibtop_msg_limits glibtop_msg_limits;
|
||||||
|
|
||||||
struct _glibtop_msg_limits
|
struct _glibtop_msg_limits
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
msgpool, /* GLIBTOP_MSG_LIMITS_MSGPOOL */
|
msgpool, /* GLIBTOP_IPC_MSGPOOL */
|
||||||
msgmap, /* GLIBTOP_MSG_LIMITS_MSGMAP */
|
msgmap, /* GLIBTOP_IPC_MSGMAP */
|
||||||
msgmax, /* GLIBTOP_MSG_LIMITS_MSGMAX */
|
msgmax, /* GLIBTOP_IPC_MSGMAX */
|
||||||
msgmnb, /* GLIBTOP_MSG_LIMITS_MSGMNB */
|
msgmnb, /* GLIBTOP_IPC_MSGMNB */
|
||||||
msgmni, /* GLIBTOP_MSG_LIMITS_MSGMNI */
|
msgmni, /* GLIBTOP_IPC_MSGMNI */
|
||||||
msgssz, /* GLIBTOP_MSG_LIMITS_MSGSSZ */
|
msgssz, /* GLIBTOP_IPC_MSGSSZ */
|
||||||
msgtql; /* GLIBTOP_MSG_LIMITS_MSGTQL */
|
msgtql; /* GLIBTOP_IPC_MSGTQL */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_msg_limits(msg) glibtop_get_msg_limits_l(glibtop_global_server, msg)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_MSG_LIMITS
|
#if GLIBTOP_SUID_MSG_LIMITS
|
||||||
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_p
|
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_s
|
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_msg_limits_l (glibtop_client *client, glibtop_msg_limits *buf);
|
void glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_MSG_LIMITS
|
#if GLIBTOP_SUID_MSG_LIMITS
|
||||||
int glibtop_init_msg_limits_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_msg_limits_p (glibtop *server);
|
||||||
int glibtop_get_msg_limits_p (glibtop_server *server, glibtop_closure *closure, glibtop_msg_limits *buf);
|
void glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_msg_limits_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_msg_limits_s (glibtop *server);
|
||||||
int glibtop_get_msg_limits_s (glibtop_server *server, glibtop_closure *closure, glibtop_msg_limits *buf);
|
void glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -82,7 +82,7 @@ extern const char *glibtop_descriptions_msg_limits [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,54 +27,81 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_NETLOAD_PACKETS_IN 0
|
#define GLIBTOP_NETLOAD_IF_FLAGS 0
|
||||||
#define GLIBTOP_NETLOAD_PACKETS_OUT 1
|
#define GLIBTOP_NETLOAD_MTU 1
|
||||||
#define GLIBTOP_NETLOAD_PACKETS_TOTAL 2
|
#define GLIBTOP_NETLOAD_SUBNET 2
|
||||||
#define GLIBTOP_NETLOAD_BYTES_IN 3
|
#define GLIBTOP_NETLOAD_ADDRESS 3
|
||||||
#define GLIBTOP_NETLOAD_BYTES_OUT 4
|
#define GLIBTOP_NETLOAD_PACKETS_IN 4
|
||||||
#define GLIBTOP_NETLOAD_BYTES_TOTAL 5
|
#define GLIBTOP_NETLOAD_PACKETS_OUT 5
|
||||||
#define GLIBTOP_NETLOAD_ERRORS_IN 6
|
#define GLIBTOP_NETLOAD_PACKETS_TOTAL 6
|
||||||
#define GLIBTOP_NETLOAD_ERRORS_OUT 7
|
#define GLIBTOP_NETLOAD_BYTES_IN 7
|
||||||
#define GLIBTOP_NETLOAD_ERRORS_TOTAL 8
|
#define GLIBTOP_NETLOAD_BYTES_OUT 8
|
||||||
#define GLIBTOP_NETLOAD_COLLISIONS 9
|
#define GLIBTOP_NETLOAD_BYTES_TOTAL 9
|
||||||
|
#define GLIBTOP_NETLOAD_ERRORS_IN 10
|
||||||
|
#define GLIBTOP_NETLOAD_ERRORS_OUT 11
|
||||||
|
#define GLIBTOP_NETLOAD_ERRORS_TOTAL 12
|
||||||
|
#define GLIBTOP_NETLOAD_COLLISIONS 13
|
||||||
|
|
||||||
#define GLIBTOP_MAX_NETLOAD 10
|
#define GLIBTOP_MAX_NETLOAD 14
|
||||||
|
|
||||||
typedef struct _glibtop_netload glibtop_netload;
|
typedef struct _glibtop_netload glibtop_netload;
|
||||||
|
|
||||||
#include <glibtop/interfaces.h>
|
enum {
|
||||||
|
GLIBTOP_IF_FLAGS_UP = 1,
|
||||||
|
GLIBTOP_IF_FLAGS_BROADCAST,
|
||||||
|
GLIBTOP_IF_FLAGS_DEBUG,
|
||||||
|
GLIBTOP_IF_FLAGS_LOOPBACK,
|
||||||
|
GLIBTOP_IF_FLAGS_POINTOPOINT,
|
||||||
|
GLIBTOP_IF_FLAGS_RUNNING,
|
||||||
|
GLIBTOP_IF_FLAGS_NOARP,
|
||||||
|
GLIBTOP_IF_FLAGS_PROMISC,
|
||||||
|
GLIBTOP_IF_FLAGS_ALLMULTI,
|
||||||
|
GLIBTOP_IF_FLAGS_OACTIVE,
|
||||||
|
GLIBTOP_IF_FLAGS_SIMPLEX,
|
||||||
|
GLIBTOP_IF_FLAGS_LINK0,
|
||||||
|
GLIBTOP_IF_FLAGS_LINK1,
|
||||||
|
GLIBTOP_IF_FLAGS_LINK2,
|
||||||
|
GLIBTOP_IF_FLAGS_ALTPHYS,
|
||||||
|
GLIBTOP_IF_FLAGS_MULTICAST
|
||||||
|
};
|
||||||
|
|
||||||
struct _glibtop_netload
|
struct _glibtop_netload
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
packets_in, /* GLIBTOP_NETLOAD_PACKETS_IN */
|
if_flags, /* GLIBTOP_NETLOAD_IF_FLAGS */
|
||||||
packets_out, /* GLIBTOP_NETLOAD_PACKETS_OUT */
|
mtu, /* GLIBTOP_NETLOAD_MTU */
|
||||||
packets_total, /* GLIBTOP_NETLOAD_PACKETS_TOTAL*/
|
subnet, /* GLIBTOP_NETLOAD_SUBNET */
|
||||||
bytes_in, /* GLIBTOP_NETLOAD_BYTES_IN */
|
address, /* GLIBTOP_NETLOAD_ADDRESS */
|
||||||
bytes_out, /* GLIBTOP_NETLOAD_BYTES_OUT */
|
packets_in, /* GLIBTOP_NETLOAD_PACKETS_IN */
|
||||||
bytes_total, /* GLIBTOP_NETLOAD_BYTES_TOTAL */
|
packets_out, /* GLIBTOP_NETLOAD_PACKETS_OUT */
|
||||||
errors_in, /* GLIBTOP_NETLOAD_ERRORS_IN */
|
packets_total, /* GLIBTOP_NETLOAD_PACKETS_TOTAL*/
|
||||||
errors_out, /* GLIBTOP_NETLOAD_ERRORS_OUT */
|
bytes_in, /* GLIBTOP_NETLOAD_BYTES_IN */
|
||||||
errors_total, /* GLIBTOP_NETLOAD_ERRORS_TOTAL */
|
bytes_out, /* GLIBTOP_NETLOAD_BYTES_OUT */
|
||||||
collisions; /* GLIBTOP_NETLOAD_COLLISIONS */
|
bytes_total, /* GLIBTOP_NETLOAD_BYTES_TOTAL */
|
||||||
|
errors_in, /* GLIBTOP_NETLOAD_ERRORS_IN */
|
||||||
|
errors_out, /* GLIBTOP_NETLOAD_ERRORS_OUT */
|
||||||
|
errors_total, /* GLIBTOP_NETLOAD_ERRORS_TOTAL */
|
||||||
|
collisions; /* GLIBTOP_NETLOAD_COLLISIONS */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_netload(netload,interface) glibtop_get_netload_l(glibtop_global_server, netload, interface)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_NETLOAD
|
#if GLIBTOP_SUID_NETLOAD
|
||||||
#define glibtop_get_netload_r glibtop_get_netload_p
|
#define glibtop_get_netload_r glibtop_get_netload_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_netload_r glibtop_get_netload_s
|
#define glibtop_get_netload_r glibtop_get_netload_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_netload_l (glibtop_client *client, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol);
|
void glibtop_get_netload_l (glibtop *server, glibtop_netload *buf, const char *interface);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_NETLOAD
|
#if GLIBTOP_SUID_NETLOAD
|
||||||
int glibtop_init_netload_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_netload_p (glibtop *server);
|
||||||
int glibtop_get_netload_p (glibtop_server *server, glibtop_closure *closure, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol);
|
void glibtop_get_netload_p (glibtop *server, glibtop_netload *buf, const char *interface);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_netload_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_netload_s (glibtop *server);
|
||||||
int glibtop_get_netload_s (glibtop_server *server, glibtop_closure *closure, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol);
|
void glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, const char *interface);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -90,6 +115,6 @@ extern const char *glibtop_descriptions_netload [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -25,8 +23,10 @@
|
|||||||
#define __GLIBTOP_OPEN_H__
|
#define __GLIBTOP_OPEN_H__
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/read.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define _GLIBTOP_INIT_STATE_INIT 0x10000
|
#define _GLIBTOP_INIT_STATE_INIT 0x10000
|
||||||
#define _GLIBTOP_INIT_STATE_OPEN 0x20000
|
#define _GLIBTOP_INIT_STATE_OPEN 0x20000
|
||||||
@@ -52,7 +52,7 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_ERROR_METHOD_DEFAULT GLIBTOP_ERROR_METHOD_WARN_ONCE
|
#define GLIBTOP_ERROR_METHOD_DEFAULT GLIBTOP_ERROR_METHOD_WARN_ONCE
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_open_l (glibtop_client *client, const char *backend_name,
|
glibtop_open_l (glibtop *server, const char *program_name,
|
||||||
const unsigned long features, const unsigned flags);
|
const unsigned long features, const unsigned flags);
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -60,22 +60,14 @@ glibtop_init_p (glibtop *server, const unsigned long features,
|
|||||||
const unsigned flags);
|
const unsigned flags);
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_open_p (glibtop_server *server, glibtop_closure *closure,
|
glibtop_open_p (glibtop *server, const char *program_name,
|
||||||
const unsigned long features, const unsigned flags);
|
const unsigned long features, const unsigned flags);
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_open_s (glibtop_server *server, glibtop_closure *closure,
|
glibtop_open_s (glibtop *server, const char *program_name,
|
||||||
const unsigned long features, const unsigned flags);
|
const unsigned long features, const unsigned flags);
|
||||||
|
|
||||||
#ifdef _IN_LIBGTOP
|
|
||||||
|
|
||||||
void
|
END_LIBGTOP_DECLS
|
||||||
_glibtop_open_sysdeps (glibtop_client *client, const char *program_name,
|
|
||||||
const u_int64_t features, const char **backend_args,
|
|
||||||
GError **opt_error);
|
|
||||||
|
|
||||||
#endif /* _IN_LIBGTOP */
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -27,39 +25,27 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PARAM_ERROR_METHOD 1
|
#define GLIBTOP_PARAM_METHOD 1
|
||||||
#define GLIBTOP_PARAM_FEATURES 2
|
#define GLIBTOP_PARAM_FEATURES 2
|
||||||
#define GLIBTOP_PARAM_NCPU 3
|
#define GLIBTOP_PARAM_COMMAND 3
|
||||||
#define GLIBTOP_PARAM_OS_VERSION_CODE 4
|
#define GLIBTOP_PARAM_HOST 4
|
||||||
#define GLIBTOP_PARAM_REQUIRED 5
|
#define GLIBTOP_PARAM_PORT 5
|
||||||
|
#define GLIBTOP_PARAM_ERROR_METHOD 6
|
||||||
typedef struct _glibtop_parameter glibtop_parameter;
|
#define GLIBTOP_PARAM_REQUIRED 7
|
||||||
|
|
||||||
struct _glibtop_parameter
|
|
||||||
{
|
|
||||||
unsigned error_method; /* Error Method */
|
|
||||||
u_int64_t features; /* Server is required for this features */
|
|
||||||
unsigned ncpu; /* Number of CPUs, zero if single-processor */
|
|
||||||
u_int64_t os_version_code; /* Version code of the operating system */
|
|
||||||
glibtop_sysdeps required; /* Required feature list */
|
|
||||||
};
|
|
||||||
|
|
||||||
#define glibtop_get_parameter(p1,p2,p3) glibtop_get_parameter_l(glibtop_global_server,p1,p2,p3)
|
#define glibtop_get_parameter(p1,p2,p3) glibtop_get_parameter_l(glibtop_global_server,p1,p2,p3)
|
||||||
#define glibtop_set_parameter(p1,p2,p3) glibtop_set_parameter_l(glibtop_global_server,p1,p2,p3)
|
#define glibtop_set_parameter(p1,p2,p3) glibtop_set_parameter_l(glibtop_global_server,p1,p2,p3)
|
||||||
|
|
||||||
ssize_t
|
size_t
|
||||||
glibtop_get_parameter_l (glibtop *server, const unsigned parameter,
|
glibtop_get_parameter_l (glibtop *server, const unsigned parameter,
|
||||||
void *data_ptr, size_t data_size);
|
void *data_ptr, size_t data_size);
|
||||||
|
|
||||||
int
|
void
|
||||||
glibtop_get_parameter_size_l (glibtop *server, const unsigned parameter);
|
|
||||||
|
|
||||||
int
|
|
||||||
glibtop_set_parameter_l (glibtop *server, const unsigned parameter,
|
glibtop_set_parameter_l (glibtop *server, const unsigned parameter,
|
||||||
const void *data_ptr, size_t data_size);
|
const void *data_ptr, size_t data_size);
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PPP_STATE 0
|
#define GLIBTOP_PPP_STATE 0
|
||||||
#define GLIBTOP_PPP_BYTES_IN 1
|
#define GLIBTOP_PPP_BYTES_IN 1
|
||||||
@@ -40,33 +38,35 @@ G_BEGIN_DECLS
|
|||||||
typedef struct _glibtop_ppp glibtop_ppp;
|
typedef struct _glibtop_ppp glibtop_ppp;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
GLIBTOP_PPP_STATE_UNKNOWN = 0,
|
GLIBTOP_PPP_STATE_UNKNOWN = 0,
|
||||||
GLIBTOP_PPP_STATE_HANGUP,
|
GLIBTOP_PPP_STATE_HANGUP,
|
||||||
GLIBTOP_PPP_STATE_ONLINE
|
GLIBTOP_PPP_STATE_ONLINE
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _glibtop_ppp
|
struct _glibtop_ppp
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
state, /* GLIBTOP_PPP_STATE */
|
state, /* GLIBTOP_PPP_STATE */
|
||||||
bytes_in, /* GLIBTOP_PPP_BYTES_IN */
|
bytes_in, /* GLIBTOP_PPP_BYTES_IN */
|
||||||
bytes_out; /* GLIBTOP_PPP_BYTES_OUT */
|
bytes_out; /* GLIBTOP_PPP_BYTES_OUT */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_ppp(ppp,device) glibtop_get_ppp_l(glibtop_global_server, ppp, device)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PPP
|
#if GLIBTOP_SUID_PPP
|
||||||
#define glibtop_get_ppp_r glibtop_get_ppp_p
|
#define glibtop_get_ppp_r glibtop_get_ppp_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_ppp_r glibtop_get_ppp_s
|
#define glibtop_get_ppp_r glibtop_get_ppp_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_ppp_l (glibtop_client *client, glibtop_ppp *buf, unsigned short device, unsigned short use_isdn);
|
void glibtop_get_ppp_l (glibtop *server, glibtop_ppp *buf, unsigned short device);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PPP
|
#if GLIBTOP_SUID_PPP
|
||||||
int glibtop_init_ppp_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_ppp_p (glibtop *server);
|
||||||
int glibtop_get_ppp_p (glibtop_server *server, glibtop_closure *closure, glibtop_ppp *buf, unsigned short device, unsigned short use_isdn);
|
void glibtop_get_ppp_p (glibtop *server, glibtop_ppp *buf, unsigned short device);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_ppp_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_ppp_s (glibtop *server);
|
||||||
int glibtop_get_ppp_s (glibtop_server *server, glibtop_closure *closure, glibtop_ppp *buf, unsigned short device, unsigned short use_isdn);
|
void glibtop_get_ppp_s (glibtop *server, glibtop_ppp *buf, unsigned short device);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -80,6 +80,6 @@ extern const char *glibtop_descriptions_ppp [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,10 +27,21 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
#include <glibtop/compat_10.h>
|
BEGIN_LIBGTOP_DECLS
|
||||||
#include <glibtop/array.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
#define GLIBTOP_PROC_ARGS_SIZE 0
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_PROC_ARGS 1
|
||||||
|
|
||||||
|
typedef struct _glibtop_proc_args glibtop_proc_args;
|
||||||
|
|
||||||
|
struct _glibtop_proc_args
|
||||||
|
{
|
||||||
|
u_int64_t flags,
|
||||||
|
size; /* GLIBTOP_PROC_ARGS_SIZE */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_args(proc_args,pid,max_len) glibtop_get_proc_args_l(glibtop_global_server, proc_args, pid, max_len)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_ARGS
|
#if GLIBTOP_SUID_PROC_ARGS
|
||||||
#define glibtop_get_proc_args_r glibtop_get_proc_args_p
|
#define glibtop_get_proc_args_r glibtop_get_proc_args_p
|
||||||
@@ -40,19 +49,22 @@ G_BEGIN_DECLS
|
|||||||
#define glibtop_get_proc_args_r glibtop_get_proc_args_s
|
#define glibtop_get_proc_args_r glibtop_get_proc_args_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char **
|
char *
|
||||||
glibtop_get_proc_args_l (glibtop_client *client, glibtop_array *array, pid_t pid);
|
glibtop_get_proc_args_l (glibtop *server, glibtop_proc_args *buf,
|
||||||
|
pid_t pid, unsigned max_len);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_ARGS
|
#if GLIBTOP_SUID_PROC_ARGS
|
||||||
int glibtop_init_proc_args_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_args_p (glibtop *server);
|
||||||
|
|
||||||
char **
|
char *
|
||||||
glibtop_get_proc_args_p (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, pid_t pid);
|
glibtop_get_proc_args_p (glibtop *server, glibtop_proc_args *buf,
|
||||||
|
pid_t pid, unsigned max_len);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_args_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_args_s (glibtop *server);
|
||||||
|
|
||||||
char **
|
char *
|
||||||
glibtop_get_proc_args_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, pid_t pid);
|
glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf,
|
||||||
|
pid_t pid, unsigned max_len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -66,6 +78,6 @@ extern const char *glibtop_descriptions_proc_args [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_KERNEL_K_FLAGS 0
|
#define GLIBTOP_PROC_KERNEL_K_FLAGS 0
|
||||||
#define GLIBTOP_PROC_KERNEL_MIN_FLT 1
|
#define GLIBTOP_PROC_KERNEL_MIN_FLT 1
|
||||||
@@ -43,54 +41,45 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
#define GLIBTOP_MAX_PROC_KERNEL 9
|
#define GLIBTOP_MAX_PROC_KERNEL 9
|
||||||
|
|
||||||
/* Constants for the `k_flags' field. */
|
|
||||||
#define GLIBTOP_KFLAGS_STARTING 1 /* being created */
|
|
||||||
#define GLIBTOP_KFLAGS_EXITING 2 /* getting shut down */
|
|
||||||
#define GLIBTOP_KFLAGS_PTRACED 4 /* set if ptrace (0) has
|
|
||||||
been called */
|
|
||||||
#define GLIBTOP_KFLAGS_TRACESYS 8 /* tracing system calls */
|
|
||||||
#define GLIBTOP_KFLAGS_FORKNOEXEC 16 /* forked but didn't exec */
|
|
||||||
#define GLIBTOP_KFLAGS_SUPERPRIV 32 /* used super-user privileges */
|
|
||||||
#define GLIBTOP_KFLAGS_DUMPEDCORE 64 /* dumped core */
|
|
||||||
#define GLIBTOP_KFLAGS_SIGNALED 128 /* killed by a signal */
|
|
||||||
|
|
||||||
typedef struct _glibtop_proc_kernel glibtop_proc_kernel;
|
typedef struct _glibtop_proc_kernel glibtop_proc_kernel;
|
||||||
|
|
||||||
/* Kernel stuff */
|
/* Kernel stuff */
|
||||||
|
|
||||||
struct _glibtop_proc_kernel
|
struct _glibtop_proc_kernel
|
||||||
{
|
{
|
||||||
u_int64_t flags;
|
u_int64_t flags;
|
||||||
u_int64_t k_flags, /* kernel flags for the process */
|
u_int64_t k_flags, /* kernel flags for the process */
|
||||||
min_flt, /* number of minor page faults since
|
min_flt, /* number of minor page faults since
|
||||||
* process start */
|
* process start */
|
||||||
maj_flt, /* number of major page faults since
|
maj_flt, /* number of major page faults since
|
||||||
* process start */
|
* process start */
|
||||||
cmin_flt, /* cumulative min_flt of process and
|
cmin_flt, /* cumulative min_flt of process and
|
||||||
* child processes */
|
* child processes */
|
||||||
cmaj_flt, /* cumulative maj_flt of process and
|
cmaj_flt, /* cumulative maj_flt of process and
|
||||||
* child processes */
|
* child processes */
|
||||||
kstk_esp, /* kernel stack pointer */
|
kstk_esp, /* kernel stack pointer */
|
||||||
kstk_eip, /* kernel stack pointer */
|
kstk_eip, /* kernel stack pointer */
|
||||||
nwchan; /* address of kernel wait channel
|
nwchan; /* address of kernel wait channel
|
||||||
* proc is sleeping in */
|
* proc is sleeping in */
|
||||||
char wchan [40];
|
char wchan [40];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_kernel(p1, p2) glibtop_get_proc_kernel_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_KERNEL
|
#if GLIBTOP_SUID_PROC_KERNEL
|
||||||
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_p
|
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_s
|
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_kernel_l (glibtop_client *client, glibtop_proc_kernel *buf, pid_t pid);
|
void glibtop_get_proc_kernel_l (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_KERNEL
|
#if GLIBTOP_SUID_PROC_KERNEL
|
||||||
int glibtop_init_proc_kernel_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_kernel_p (glibtop *server);
|
||||||
int glibtop_get_proc_kernel_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_kernel *buf, pid_t pid);
|
void glibtop_get_proc_kernel_p (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_kernel_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_kernel_s (glibtop *server);
|
||||||
int glibtop_get_proc_kernel_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_kernel *buf, pid_t pid);
|
void glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -104,6 +93,6 @@ extern const char *glibtop_descriptions_proc_kernel [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,10 +27,13 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
#include <glibtop/compat_10.h>
|
BEGIN_LIBGTOP_DECLS
|
||||||
#include <glibtop/array.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
#define GLIBTOP_PROCLIST_NUMBER 0
|
||||||
|
#define GLIBTOP_PROCLIST_TOTAL 1
|
||||||
|
#define GLIBTOP_PROCLIST_SIZE 2
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_PROCLIST 3
|
||||||
|
|
||||||
/* You can use the folowing constants as the `which' member of
|
/* You can use the folowing constants as the `which' member of
|
||||||
* glibtop_get_proclist () to specify which processes to fetch. */
|
* glibtop_get_proclist () to specify which processes to fetch. */
|
||||||
@@ -44,7 +45,6 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_KERN_PROC_TTY 4
|
#define GLIBTOP_KERN_PROC_TTY 4
|
||||||
#define GLIBTOP_KERN_PROC_UID 5
|
#define GLIBTOP_KERN_PROC_UID 5
|
||||||
#define GLIBTOP_KERN_PROC_RUID 6
|
#define GLIBTOP_KERN_PROC_RUID 6
|
||||||
#define GLIBTOP_KERN_PROC_PPID 7
|
|
||||||
|
|
||||||
#define GLIBTOP_KERN_PROC_MASK 15
|
#define GLIBTOP_KERN_PROC_MASK 15
|
||||||
|
|
||||||
@@ -52,6 +52,18 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_EXCLUDE_SYSTEM 0x2000
|
#define GLIBTOP_EXCLUDE_SYSTEM 0x2000
|
||||||
#define GLIBTOP_EXCLUDE_NOTTY 0x4000
|
#define GLIBTOP_EXCLUDE_NOTTY 0x4000
|
||||||
|
|
||||||
|
typedef struct _glibtop_proclist glibtop_proclist;
|
||||||
|
|
||||||
|
struct _glibtop_proclist
|
||||||
|
{
|
||||||
|
u_int64_t flags,
|
||||||
|
number, /* GLIBTOP_PROCLIST_NUMBER */
|
||||||
|
total, /* GLIBTOP_PROCLIST_TOTAL */
|
||||||
|
size; /* GLIBTOP_PROCLIST_SIZE */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proclist(proclist,which,arg) glibtop_get_proclist_l(glibtop_global_server, proclist, which, arg)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROCLIST
|
#if GLIBTOP_SUID_PROCLIST
|
||||||
#define glibtop_get_proclist_r glibtop_get_proclist_p
|
#define glibtop_get_proclist_r glibtop_get_proclist_p
|
||||||
#else
|
#else
|
||||||
@@ -59,20 +71,20 @@ G_BEGIN_DECLS
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
unsigned *
|
unsigned *
|
||||||
glibtop_get_proclist_l (glibtop_client *client, glibtop_array *array,
|
glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
|
||||||
int64_t which, int64_t arg);
|
int64_t which, int64_t arg);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROCLIST
|
#if GLIBTOP_SUID_PROCLIST
|
||||||
int glibtop_init_proclist_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proclist_p (glibtop *server);
|
||||||
|
|
||||||
unsigned *
|
unsigned *
|
||||||
glibtop_get_proclist_p (glibtop_server *server, glibtop_closure *closure, glibtop_array *array,
|
glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||||
int64_t which, int64_t arg);
|
int64_t which, int64_t arg);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proclist_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proclist_s (glibtop *server);
|
||||||
|
|
||||||
unsigned *
|
unsigned *
|
||||||
glibtop_get_proclist_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array,
|
glibtop_get_proclist_s (glibtop *server, glibtop_proclist *buf,
|
||||||
int64_t which, int64_t arg);
|
int64_t which, int64_t arg);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -87,6 +99,6 @@ extern const char *glibtop_descriptions_proclist [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,10 +27,13 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
#include <glibtop/compat_10.h>
|
BEGIN_LIBGTOP_DECLS
|
||||||
#include <glibtop/array.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
#define GLIBTOP_PROC_MAP_NUMBER 0
|
||||||
|
#define GLIBTOP_PROC_MAP_TOTAL 1
|
||||||
|
#define GLIBTOP_PROC_MAP_SIZE 2
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_PROC_MAP 3
|
||||||
|
|
||||||
#define GLIBTOP_MAP_ENTRY_START 1
|
#define GLIBTOP_MAP_ENTRY_START 1
|
||||||
#define GLIBTOP_MAP_ENTRY_END 2
|
#define GLIBTOP_MAP_ENTRY_END 2
|
||||||
@@ -54,12 +55,24 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
typedef struct _glibtop_map_entry glibtop_map_entry;
|
typedef struct _glibtop_map_entry glibtop_map_entry;
|
||||||
|
|
||||||
|
typedef struct _glibtop_proc_map glibtop_proc_map;
|
||||||
|
|
||||||
struct _glibtop_map_entry
|
struct _glibtop_map_entry
|
||||||
{
|
{
|
||||||
u_int64_t flags, start, end, offset, perm, inode, device;
|
u_int64_t flags, start, end, offset, perm, inode, device;
|
||||||
char filename [GLIBTOP_MAP_FILENAME_LEN+1];
|
char filename [GLIBTOP_MAP_FILENAME_LEN+1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _glibtop_proc_map
|
||||||
|
{
|
||||||
|
u_int64_t flags,
|
||||||
|
number, /* GLIBTOP_PROC_MAP_NUMBER */
|
||||||
|
total, /* GLIBTOP_PROC_MAP_TOTAL */
|
||||||
|
size; /* GLIBTOP_PROC_MAP_SIZE */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_map(proc_map,pid) glibtop_get_proc_map_l(glibtop_global_server, proc_map, pid)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_MAP
|
#if GLIBTOP_SUID_PROC_MAP
|
||||||
#define glibtop_get_proc_map_r glibtop_get_proc_map_p
|
#define glibtop_get_proc_map_r glibtop_get_proc_map_p
|
||||||
#else
|
#else
|
||||||
@@ -67,18 +80,18 @@ struct _glibtop_map_entry
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
glibtop_map_entry *
|
glibtop_map_entry *
|
||||||
glibtop_get_proc_map_l (glibtop_client *client, glibtop_array *array, pid_t pid);
|
glibtop_get_proc_map_l (glibtop *server, glibtop_proc_map *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_MAP
|
#if GLIBTOP_SUID_PROC_MAP
|
||||||
int glibtop_init_proc_map_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_map_p (glibtop *server);
|
||||||
|
|
||||||
glibtop_map_entry *
|
glibtop_map_entry *
|
||||||
glibtop_get_proc_map_p (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, pid_t pid);
|
glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_map_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_map_s (glibtop *server);
|
||||||
|
|
||||||
glibtop_map_entry *
|
glibtop_map_entry *
|
||||||
glibtop_get_proc_map_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, pid_t pid);
|
glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -92,6 +105,6 @@ extern const char *glibtop_descriptions_proc_map [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_MEM_SIZE 0
|
#define GLIBTOP_PROC_MEM_SIZE 0
|
||||||
#define GLIBTOP_PROC_MEM_VSIZE 1
|
#define GLIBTOP_PROC_MEM_VSIZE 1
|
||||||
@@ -46,31 +44,33 @@ typedef struct _glibtop_proc_mem glibtop_proc_mem;
|
|||||||
|
|
||||||
struct _glibtop_proc_mem
|
struct _glibtop_proc_mem
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
size, /* total # of pages of memory */
|
size, /* total # of pages of memory */
|
||||||
vsize, /* number of pages of virtual memory ... */
|
vsize, /* number of pages of virtual memory ... */
|
||||||
resident, /* number of resident set
|
resident, /* number of resident set
|
||||||
* (non-swapped) pages (4k) */
|
* (non-swapped) pages (4k) */
|
||||||
share, /* number of pages of shared (mmap'd) memory */
|
share, /* number of pages of shared (mmap'd) memory */
|
||||||
rss, /* resident set size */
|
rss, /* resident set size */
|
||||||
rss_rlim; /* current limit (in bytes) of the rss
|
rss_rlim; /* current limit (in bytes) of the rss
|
||||||
* 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_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_MEM
|
#if GLIBTOP_SUID_PROC_MEM
|
||||||
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_p
|
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_s
|
#define glibtop_get_proc_mem_r glibtop_get_proc_mem_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_mem_l (glibtop_client *client, glibtop_proc_mem *buf, pid_t pid);
|
void glibtop_get_proc_mem_l (glibtop *server, glibtop_proc_mem *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_MEM
|
#if GLIBTOP_SUID_PROC_MEM
|
||||||
int glibtop_init_proc_mem_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_mem_p (glibtop *server);
|
||||||
int glibtop_get_proc_mem_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_mem *buf, pid_t pid);
|
void glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_mem_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_mem_s (glibtop *server);
|
||||||
int glibtop_get_proc_mem_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_mem *buf, pid_t pid);
|
void glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -84,6 +84,6 @@ extern const char *glibtop_descriptions_proc_mem [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_TEXT_RSS 0
|
#define GLIBTOP_PROC_SEGMENT_TEXT_RSS 0
|
||||||
#define GLIBTOP_PROC_SEGMENT_SHLIB_RSS 1
|
#define GLIBTOP_PROC_SEGMENT_SHLIB_RSS 1
|
||||||
@@ -38,18 +36,9 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_PROC_SEGMENT_DIRTY_SIZE 4
|
#define GLIBTOP_PROC_SEGMENT_DIRTY_SIZE 4
|
||||||
#define GLIBTOP_PROC_SEGMENT_START_CODE 5
|
#define GLIBTOP_PROC_SEGMENT_START_CODE 5
|
||||||
#define GLIBTOP_PROC_SEGMENT_END_CODE 6
|
#define GLIBTOP_PROC_SEGMENT_END_CODE 6
|
||||||
#define GLIBTOP_PROC_SEGMENT_START_DATA 7
|
#define GLIBTOP_PROC_SEGMENT_START_STACK 7
|
||||||
#define GLIBTOP_PROC_SEGMENT_END_DATA 8
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_START_BRK 9
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_END_BRK 10
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_START_STACK 11
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_START_MMAP 12
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_ARG_START 13
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_ARG_END 14
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_ENV_START 15
|
|
||||||
#define GLIBTOP_PROC_SEGMENT_ENV_END 16
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_PROC_SEGMENT 17
|
#define GLIBTOP_MAX_PROC_SEGMENT 8
|
||||||
|
|
||||||
typedef struct _glibtop_proc_segment glibtop_proc_segment;
|
typedef struct _glibtop_proc_segment glibtop_proc_segment;
|
||||||
|
|
||||||
@@ -57,40 +46,34 @@ typedef struct _glibtop_proc_segment glibtop_proc_segment;
|
|||||||
|
|
||||||
struct _glibtop_proc_segment
|
struct _glibtop_proc_segment
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
text_rss, /* text resident set size */
|
text_rss, /* text resident set size */
|
||||||
shlib_rss, /* shared-lib resident set size */
|
shlib_rss, /* shared-lib resident set size */
|
||||||
data_rss, /* data resident set size */
|
data_rss, /* data resident set size */
|
||||||
stack_rss, /* stack resident set size */
|
stack_rss, /* stack resident set size */
|
||||||
dirty_size, /* size of dirty pages */
|
dirty_size, /* size of dirty pages */
|
||||||
start_code, /* address of beginning of code segment */
|
start_code,
|
||||||
end_code, /* address of end of code segment */
|
/* address of beginning of code segment */
|
||||||
start_data, /* address of beginning of data segment */
|
end_code, /* address of end of code segment */
|
||||||
end_data, /* address of end of data segment */
|
start_stack; /* address of the bottom of stack segment */
|
||||||
start_brk,
|
|
||||||
end_brk,
|
|
||||||
start_stack, /* address of the bottom of stack segment */
|
|
||||||
start_mmap,
|
|
||||||
arg_start,
|
|
||||||
arg_end,
|
|
||||||
env_start,
|
|
||||||
env_end;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_segment(p1, p2) glibtop_get_proc_segment_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_SEGMENT
|
#if GLIBTOP_SUID_PROC_SEGMENT
|
||||||
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_p
|
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_s
|
#define glibtop_get_proc_segment_r glibtop_get_proc_segment_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_segment_l (glibtop_client *client, glibtop_proc_segment *buf, pid_t pid);
|
void glibtop_get_proc_segment_l (glibtop *server, glibtop_proc_segment *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_SEGMENT
|
#if GLIBTOP_SUID_PROC_SEGMENT
|
||||||
int glibtop_init_proc_segment_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_segment_p (glibtop *server);
|
||||||
int glibtop_get_proc_segment_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_segment *buf, pid_t pid);
|
void glibtop_get_proc_segment_p (glibtop *server, glibtop_proc_segment *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_segment_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_segment_s (glibtop *server);
|
||||||
int glibtop_get_proc_segment_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_segment *buf, pid_t pid);
|
void glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -104,6 +87,6 @@ extern const char *glibtop_descriptions_proc_segment [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_SIGNAL_SIGNAL 0
|
#define GLIBTOP_PROC_SIGNAL_SIGNAL 0
|
||||||
#define GLIBTOP_PROC_SIGNAL_BLOCKED 1
|
#define GLIBTOP_PROC_SIGNAL_BLOCKED 1
|
||||||
@@ -44,27 +42,29 @@ typedef struct _glibtop_proc_signal glibtop_proc_signal;
|
|||||||
|
|
||||||
struct _glibtop_proc_signal
|
struct _glibtop_proc_signal
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
signal [2], /* mask of pending signals */
|
signal [2], /* mask of pending signals */
|
||||||
blocked [2], /* mask of blocked signals */
|
blocked [2], /* mask of blocked signals */
|
||||||
sigignore [2], /* mask of ignored signals */
|
sigignore [2], /* mask of ignored signals */
|
||||||
sigcatch [2]; /* mask of caught signals */
|
sigcatch [2]; /* mask of caught signals */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_signal(p1, p2) glibtop_get_proc_signal_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_SIGNAL
|
#if GLIBTOP_SUID_PROC_SIGNAL
|
||||||
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_p
|
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_s
|
#define glibtop_get_proc_signal_r glibtop_get_proc_signal_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_signal_l (glibtop_client *client, glibtop_proc_signal *buf, pid_t pid);
|
void glibtop_get_proc_signal_l (glibtop *server, glibtop_proc_signal *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_SIGNAL
|
#if GLIBTOP_SUID_PROC_SIGNAL
|
||||||
int glibtop_init_proc_signal_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_signal_p (glibtop *server);
|
||||||
int glibtop_get_proc_signal_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_signal *buf, pid_t pid);
|
void glibtop_get_proc_signal_p (glibtop *server, glibtop_proc_signal *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_signal_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_signal_s (glibtop *server);
|
||||||
int glibtop_get_proc_signal_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_signal *buf, pid_t pid);
|
void glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -78,6 +78,6 @@ extern const char *glibtop_descriptions_proc_signal [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,27 +27,14 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_STATE_CMD 0
|
#define GLIBTOP_PROC_STATE_CMD 0
|
||||||
#define GLIBTOP_PROC_STATE_STATE 1
|
#define GLIBTOP_PROC_STATE_STATE 1
|
||||||
#define GLIBTOP_PROC_STATE_UID 2
|
#define GLIBTOP_PROC_STATE_UID 2
|
||||||
#define GLIBTOP_PROC_STATE_GID 3
|
#define GLIBTOP_PROC_STATE_GID 3
|
||||||
#define GLIBTOP_PROC_STATE_RUID 4
|
|
||||||
#define GLIBTOP_PROC_STATE_RGID 5
|
|
||||||
#define GLIBTOP_PROC_STATE_HAS_CPU 6
|
|
||||||
#define GLIBTOP_PROC_STATE_PROCESSOR 7
|
|
||||||
#define GLIBTOP_PROC_STATE_LAST_PROCESSOR 8
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_PROC_STATE 9
|
#define GLIBTOP_MAX_PROC_STATE 4
|
||||||
|
|
||||||
/* Constants for the `state' field. */
|
|
||||||
#define GLIBTOP_PROCESS_RUNNING 1
|
|
||||||
#define GLIBTOP_PROCESS_INTERRUPTIBLE 2
|
|
||||||
#define GLIBTOP_PROCESS_UNINTERRUPTIBLE 4
|
|
||||||
#define GLIBTOP_PROCESS_ZOMBIE 8
|
|
||||||
#define GLIBTOP_PROCESS_STOPPED 16
|
|
||||||
#define GLIBTOP_PROCESS_SWAPPING 32
|
|
||||||
|
|
||||||
typedef struct _glibtop_proc_state glibtop_proc_state;
|
typedef struct _glibtop_proc_state glibtop_proc_state;
|
||||||
|
|
||||||
@@ -57,40 +42,36 @@ typedef struct _glibtop_proc_state glibtop_proc_state;
|
|||||||
|
|
||||||
struct _glibtop_proc_state
|
struct _glibtop_proc_state
|
||||||
{
|
{
|
||||||
u_int64_t flags;
|
u_int64_t flags;
|
||||||
char cmd[40]; /* basename of executable file in
|
char cmd[40], /* basename of executable file in
|
||||||
* call to exec(2) */
|
* call to exec(2) */
|
||||||
unsigned state; /* process state */
|
state; /* single-char code for process state
|
||||||
/* NOTE: when porting the library, TRY HARD to implement the
|
* (S=sleeping) */
|
||||||
* following two fields. */
|
/* NOTE: when porting the library, TRY HARD to implement the
|
||||||
/* IMPORTANT NOTICE: For security reasons, it is extremely important
|
* following two fields. */
|
||||||
* only to set the flags value for those two
|
/* IMPORTANT NOTICE: For security reasons, it is extremely important
|
||||||
* fields if their values are corrent ! */
|
* only to set the flags value for those two
|
||||||
int uid, /* effective UID of process */
|
* fields if their values are corrent ! */
|
||||||
gid, /* effective GID of process */
|
int uid, /* UID of process */
|
||||||
ruid, /* real UID of process */
|
gid; /* GID of process */
|
||||||
rgid; /* real GID of process */
|
|
||||||
/* SMP values. */
|
|
||||||
int has_cpu,
|
|
||||||
processor,
|
|
||||||
last_processor;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_state(p1, p2) glibtop_get_proc_state_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_STATE
|
#if GLIBTOP_SUID_PROC_STATE
|
||||||
#define glibtop_get_proc_state_r glibtop_get_proc_state_p
|
#define glibtop_get_proc_state_r glibtop_get_proc_state_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_state_r glibtop_get_proc_state_s
|
#define glibtop_get_proc_state_r glibtop_get_proc_state_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_state_l (glibtop_client *client, glibtop_proc_state *buf, pid_t pid);
|
void glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_STATE
|
#if GLIBTOP_SUID_PROC_STATE
|
||||||
int glibtop_init_proc_state_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_state_p (glibtop *server);
|
||||||
int glibtop_get_proc_state_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_state *buf, pid_t pid);
|
void glibtop_get_proc_state_p (glibtop *server, glibtop_proc_state *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_state_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_state_s (glibtop *server);
|
||||||
int glibtop_get_proc_state_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_state *buf, pid_t pid);
|
void glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -104,6 +85,6 @@ extern const char *glibtop_descriptions_proc_state [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -30,7 +28,7 @@
|
|||||||
#include <glibtop/cpu.h>
|
#include <glibtop/cpu.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_TIME_START_TIME 0
|
#define GLIBTOP_PROC_TIME_START_TIME 0
|
||||||
#define GLIBTOP_PROC_TIME_RTIME 1
|
#define GLIBTOP_PROC_TIME_RTIME 1
|
||||||
@@ -43,9 +41,8 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_PROC_TIME_FREQUENCY 8
|
#define GLIBTOP_PROC_TIME_FREQUENCY 8
|
||||||
#define GLIBTOP_PROC_TIME_XCPU_UTIME 9
|
#define GLIBTOP_PROC_TIME_XCPU_UTIME 9
|
||||||
#define GLIBTOP_PROC_TIME_XCPU_STIME 10
|
#define GLIBTOP_PROC_TIME_XCPU_STIME 10
|
||||||
#define GLIBTOP_PROC_TIME_XCPU_FLAGS 11
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_PROC_TIME 12
|
#define GLIBTOP_MAX_PROC_TIME 11
|
||||||
|
|
||||||
typedef struct _glibtop_proc_time glibtop_proc_time;
|
typedef struct _glibtop_proc_time glibtop_proc_time;
|
||||||
|
|
||||||
@@ -53,41 +50,42 @@ typedef struct _glibtop_proc_time glibtop_proc_time;
|
|||||||
|
|
||||||
struct _glibtop_proc_time
|
struct _glibtop_proc_time
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
start_time, /* start time of process --
|
start_time, /* start time of process --
|
||||||
* seconds since 1-1-70 */
|
* seconds since 1-1-70 */
|
||||||
rtime, /* real time accumulated by process */
|
rtime, /* real time accumulated by process */
|
||||||
utime, /* user-mode CPU time accumulated by process */
|
utime, /* user-mode CPU time accumulated by process */
|
||||||
stime, /* kernel-mode CPU time accumulated by process */
|
stime, /* kernel-mode CPU time accumulated by process */
|
||||||
cutime, /* cumulative utime of process and
|
cutime, /* cumulative utime of process and
|
||||||
* reaped children */
|
* reaped children */
|
||||||
cstime, /* cumulative stime of process and
|
cstime, /* cumulative stime of process and
|
||||||
* reaped children */
|
* reaped children */
|
||||||
timeout, /* The time (in jiffies) of the process's
|
timeout, /* The time (in jiffies) of the process's
|
||||||
* next timeout */
|
* next timeout */
|
||||||
it_real_value, /* The time (in jiffies) before the
|
it_real_value, /* The time (in jiffies) before the
|
||||||
* next SIGALRM is sent to the process
|
* next SIGALRM is sent to the process
|
||||||
* due to an interval timer. */
|
* due to an interval timer. */
|
||||||
frequency, /* Tick frequency. */
|
frequency, /* Tick frequency. */
|
||||||
xcpu_utime [GLIBTOP_NCPU], /* utime and stime for all CPUs on */
|
xcpu_utime [GLIBTOP_NCPU], /* utime and stime for all CPUs on */
|
||||||
xcpu_stime [GLIBTOP_NCPU], /* SMP machines. */
|
xcpu_stime [GLIBTOP_NCPU]; /* SMP machines. */
|
||||||
xcpu_flags;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_time(p1, p2) glibtop_get_proc_time_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_TIME
|
#if GLIBTOP_SUID_PROC_TIME
|
||||||
#define glibtop_get_proc_time_r glibtop_get_proc_time_p
|
#define glibtop_get_proc_time_r glibtop_get_proc_time_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_time_r glibtop_get_proc_time_s
|
#define glibtop_get_proc_time_r glibtop_get_proc_time_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_time_l (glibtop_client *client, glibtop_proc_time *buf, pid_t pid);
|
void glibtop_get_proc_time_l (glibtop *server, glibtop_proc_time *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_TIME
|
#if GLIBTOP_SUID_PROC_TIME
|
||||||
int glibtop_init_proc_time_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_time_p (glibtop *server);
|
||||||
int glibtop_get_proc_time_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_time *buf, pid_t pid);
|
void glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_time_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_time_s (glibtop *server);
|
||||||
int glibtop_get_proc_time_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_time *buf, pid_t pid);
|
void glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -101,6 +99,6 @@ extern const char *glibtop_descriptions_proc_time [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,28 +27,22 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_PROC_UID_UID 0
|
#define GLIBTOP_PROC_UID_UID 0
|
||||||
#define GLIBTOP_PROC_UID_EUID 1
|
#define GLIBTOP_PROC_UID_EUID 1
|
||||||
#define GLIBTOP_PROC_UID_GID 2
|
#define GLIBTOP_PROC_UID_GID 2
|
||||||
#define GLIBTOP_PROC_UID_EGID 3
|
#define GLIBTOP_PROC_UID_EGID 3
|
||||||
#define GLIBTOP_PROC_UID_SUID 4
|
#define GLIBTOP_PROC_UID_PID 4
|
||||||
#define GLIBTOP_PROC_UID_SGID 5
|
#define GLIBTOP_PROC_UID_PPID 5
|
||||||
#define GLIBTOP_PROC_UID_FSUID 6
|
#define GLIBTOP_PROC_UID_PGRP 6
|
||||||
#define GLIBTOP_PROC_UID_FSGID 7
|
#define GLIBTOP_PROC_UID_SESSION 7
|
||||||
#define GLIBTOP_PROC_UID_PID 8
|
#define GLIBTOP_PROC_UID_TTY 8
|
||||||
#define GLIBTOP_PROC_UID_PPID 9
|
#define GLIBTOP_PROC_UID_TPGID 9
|
||||||
#define GLIBTOP_PROC_UID_PGRP 10
|
#define GLIBTOP_PROC_UID_PRIORITY 10
|
||||||
#define GLIBTOP_PROC_UID_SESSION 11
|
#define GLIBTOP_PROC_UID_NICE 11
|
||||||
#define GLIBTOP_PROC_UID_TTY 12
|
|
||||||
#define GLIBTOP_PROC_UID_TPGID 13
|
|
||||||
#define GLIBTOP_PROC_UID_PRIORITY 14
|
|
||||||
#define GLIBTOP_PROC_UID_NICE 15
|
|
||||||
#define GLIBTOP_PROC_UID_NGROUPS 16
|
|
||||||
#define GLIBTOP_PROC_UID_GROUPS 17
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_PROC_UID 18
|
#define GLIBTOP_MAX_PROC_UID 12
|
||||||
|
|
||||||
typedef struct _glibtop_proc_uid glibtop_proc_uid;
|
typedef struct _glibtop_proc_uid glibtop_proc_uid;
|
||||||
|
|
||||||
@@ -58,41 +50,37 @@ typedef struct _glibtop_proc_uid glibtop_proc_uid;
|
|||||||
|
|
||||||
struct _glibtop_proc_uid
|
struct _glibtop_proc_uid
|
||||||
{
|
{
|
||||||
u_int64_t flags;
|
u_int64_t flags;
|
||||||
int uid, /* user id */
|
int uid, /* user id */
|
||||||
euid, /* effective user id */
|
euid, /* effective user id */
|
||||||
gid, /* group id */
|
gid, /* group id */
|
||||||
egid, /* effective group id */
|
egid, /* effective group id */
|
||||||
suid, /* saved user id */
|
pid, /* process id */
|
||||||
sgid, /* saved group id */
|
ppid, /* pid of parent process */
|
||||||
fsuid, /* file system user id */
|
pgrp, /* process group id */
|
||||||
fsgid, /* file system group id */
|
session, /* session id */
|
||||||
pid, /* process id */
|
tty, /* full device number of controlling terminal */
|
||||||
ppid, /* pid of parent process */
|
tpgid, /* terminal process group id */
|
||||||
pgrp, /* process group id */
|
priority, /* kernel scheduling priority */
|
||||||
session, /* session id */
|
nice; /* standard unix nice level of process */
|
||||||
tty, /* full device number of controlling terminal */
|
|
||||||
tpgid, /* terminal process group id */
|
|
||||||
priority, /* kernel scheduling priority */
|
|
||||||
nice, /* standard unix nice level of process */
|
|
||||||
ngroups, /* number of additional process groups */
|
|
||||||
groups [GLIBTOP_MAX_GROUPS]; /* additional prcess groups */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_proc_uid(p1, p2) glibtop_get_proc_uid_l(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_UID
|
#if GLIBTOP_SUID_PROC_UID
|
||||||
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_p
|
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_s
|
#define glibtop_get_proc_uid_r glibtop_get_proc_uid_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_proc_uid_l (glibtop_client *client, glibtop_proc_uid *buf, pid_t pid);
|
void glibtop_get_proc_uid_l (glibtop *server, glibtop_proc_uid *buf, pid_t pid);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_PROC_UID
|
#if GLIBTOP_SUID_PROC_UID
|
||||||
int glibtop_init_proc_uid_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_uid_p (glibtop *server);
|
||||||
int glibtop_get_proc_uid_p (glibtop_server *server, glibtop_closure *closure, glibtop_proc_uid *buf, pid_t pid);
|
void glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_uid *buf, pid_t pid);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_proc_uid_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_proc_uid_s (glibtop *server);
|
||||||
int glibtop_get_proc_uid_s (glibtop_server *server, glibtop_closure *closure, glibtop_proc_uid *buf, pid_t pid);
|
void glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf, pid_t pid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -106,6 +94,6 @@ extern const char *glibtop_descriptions_proc_uid [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
39
include/glibtop/read.h
Normal file
39
include/glibtop/read.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_READ_H__
|
||||||
|
#define __GLIBTOP_READ_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define glibtop_read(p1, p2) glibtop_read(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
|
void glibtop_read_l (glibtop *server, size_t size, void *buf);
|
||||||
|
void glibtop_read_s (glibtop *server, size_t size, void *buf);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
39
include/glibtop/read_data.h
Normal file
39
include/glibtop/read_data.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_READ_DATA_H__
|
||||||
|
#define __GLIBTOP_READ_DATA_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define glibtop_read_data() glibtop_read_data_r(glibtop_global_server)
|
||||||
|
|
||||||
|
void *glibtop_read_data_l (glibtop *server);
|
||||||
|
void *glibtop_read_data_s (glibtop *server);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,52 +27,54 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMMAP 0
|
#define GLIBTOP_IPC_SEMMAP 0
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMMNI 1
|
#define GLIBTOP_IPC_SEMMNI 1
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMMNS 2
|
#define GLIBTOP_IPC_SEMMNS 2
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMMNU 3
|
#define GLIBTOP_IPC_SEMMNU 3
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMMSL 4
|
#define GLIBTOP_IPC_SEMMSL 4
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMOPM 5
|
#define GLIBTOP_IPC_SEMOPM 5
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMUME 6
|
#define GLIBTOP_IPC_SEMUME 6
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMUSZ 7
|
#define GLIBTOP_IPC_SEMUSZ 7
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMVMX 8
|
#define GLIBTOP_IPC_SEMVMX 8
|
||||||
#define GLIBTOP_SEM_LIMITS_SEMAEM 9
|
#define GLIBTOP_IPC_SEMAEM 9
|
||||||
|
|
||||||
#define GLIBTOP_MAX_SEM_LIMITS 10
|
#define GLIBTOP_MAX_SEM_LIMITS 10
|
||||||
|
|
||||||
typedef struct _glibtop_sem_limits glibtop_sem_limits;
|
typedef struct _glibtop_sem_limits glibtop_sem_limits;
|
||||||
|
|
||||||
struct _glibtop_sem_limits
|
struct _glibtop_sem_limits
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
semmap, /* GLIBTOP_SEM_LIMITS_SEMMAP */
|
semmap, /* GLIBTOP_IPC_SEMMAP */
|
||||||
semmni, /* GLIBTOP_SEM_LIMITS_SEMMNI */
|
semmni, /* GLIBTOP_IPC_SEMMNI */
|
||||||
semmns, /* GLIBTOP_SEM_LIMITS_SEMMNS */
|
semmns, /* GLIBTOP_IPC_SEMMNS */
|
||||||
semmnu, /* GLIBTOP_SEM_LIMITS_SEMMNU */
|
semmnu, /* GLIBTOP_IPC_SEMMNU */
|
||||||
semmsl, /* GLIBTOP_SEM_LIMITS_SEMMSL */
|
semmsl, /* GLIBTOP_IPC_SEMMSL */
|
||||||
semopm, /* GLIBTOP_SEM_LIMITS_SEMOPM */
|
semopm, /* GLIBTOP_IPC_SEMOPM */
|
||||||
semume, /* GLIBTOP_SEM_LIMITS_SEMUME */
|
semume, /* GLIBTOP_IPC_SEMUME */
|
||||||
semusz, /* GLIBTOP_SEM_LIMITS_SEMUSZ */
|
semusz, /* GLIBTOP_IPC_SEMUSZ */
|
||||||
semvmx, /* GLIBTOP_SEM_LIMITS_SEMVMX */
|
semvmx, /* GLIBTOP_IPC_SEMVMX */
|
||||||
semaem; /* GLIBTOP_SEM_LIMITS_SEMAEM */
|
semaem; /* GLIBTOP_IPC_SEMAEM */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_sem_limits(sem) glibtop_get_sem_limits_l(glibtop_global_server, sem)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_SEM_LIMITS
|
#if GLIBTOP_SUID_SEM_LIMITS
|
||||||
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_p
|
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_s
|
#define glibtop_get_sem_limits_r glibtop_get_sem_limits_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_sem_limits_l (glibtop_client *client, glibtop_sem_limits *buf);
|
void glibtop_get_sem_limits_l (glibtop *server, glibtop_sem_limits *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_SEM_LIMITS
|
#if GLIBTOP_SUID_SEM_LIMITS
|
||||||
int glibtop_init_sem_limits_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_sem_limits_p (glibtop *server);
|
||||||
int glibtop_get_sem_limits_p (glibtop_server *server, glibtop_closure *closure, glibtop_sem_limits *buf);
|
void glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_sem_limits_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_sem_limits_s (glibtop *server);
|
||||||
int glibtop_get_sem_limits_s (glibtop_server *server, glibtop_closure *closure, glibtop_sem_limits *buf);
|
void glibtop_get_sem_limits_s (glibtop *server, glibtop_sem_limits *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -88,6 +88,6 @@ extern const char *glibtop_descriptions_sem_limits [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,42 +27,44 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_SHM_LIMITS_SHMMAX 0
|
#define GLIBTOP_IPC_SHMMAX 0
|
||||||
#define GLIBTOP_SHM_LIMITS_SHMMIN 1
|
#define GLIBTOP_IPC_SHMMIN 1
|
||||||
#define GLIBTOP_SHM_LIMITS_SHMMNI 2
|
#define GLIBTOP_IPC_SHMMNI 2
|
||||||
#define GLIBTOP_SHM_LIMITS_SHMSEG 3
|
#define GLIBTOP_IPC_SHMSEG 3
|
||||||
#define GLIBTOP_SHM_LIMITS_SHMALL 4
|
#define GLIBTOP_IPC_SHMALL 4
|
||||||
|
|
||||||
#define GLIBTOP_MAX_SHM_LIMITS 5
|
#define GLIBTOP_MAX_SHM_LIMITS 5
|
||||||
|
|
||||||
typedef struct _glibtop_shm_limits glibtop_shm_limits;
|
typedef struct _glibtop_shm_limits glibtop_shm_limits;
|
||||||
|
|
||||||
struct _glibtop_shm_limits
|
struct _glibtop_shm_limits
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
shmmax, /* GLIBTOP_SHM_LIMITS_SHMMAX */
|
shmmax, /* GLIBTOP_IPC_SHMMAX */
|
||||||
shmmin, /* GLIBTOP_SHM_LIMITS_SHMMIN */
|
shmmin, /* GLIBTOP_IPC_SHMMIN */
|
||||||
shmmni, /* GLIBTOP_SHM_LIMITS_SHMMNI */
|
shmmni, /* GLIBTOP_IPC_SHMMNI */
|
||||||
shmseg, /* GLIBTOP_SHM_LIMITS_SHMSEG */
|
shmseg, /* GLIBTOP_IPC_SHMSEG */
|
||||||
shmall; /* GLIBTOP_SHM_LIMITS_SHMALL */
|
shmall; /* GLIBTOP_IPC_SHMALL */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_shm_limits(shm) glibtop_get_shm_limits_l(glibtop_global_server, shm)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_SHM_LIMITS
|
#if GLIBTOP_SUID_SHM_LIMITS
|
||||||
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_p
|
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_s
|
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_shm_limits_l (glibtop_client *client, glibtop_shm_limits *buf);
|
void glibtop_get_shm_limits_l (glibtop *server, glibtop_shm_limits *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_SHM_LIMITS
|
#if GLIBTOP_SUID_SHM_LIMITS
|
||||||
int glibtop_init_shm_limits_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_shm_limits_p (glibtop *server);
|
||||||
int glibtop_get_shm_limits_p (glibtop_server *, glibtop_shm_limits *buf);
|
void glibtop_get_shm_limits_p (glibtop *, glibtop_shm_limits *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_shm_limits_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_shm_limits_s (glibtop *server);
|
||||||
int glibtop_get_shm_limits_s (glibtop_server *server, glibtop_closure *closure, glibtop_shm_limits *buf);
|
void glibtop_get_shm_limits_s (glibtop *server, glibtop_shm_limits *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -78,6 +78,6 @@ extern const char *glibtop_descriptions_shm_limits [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -32,18 +30,18 @@
|
|||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
typedef struct _glibtop_signame glibtop_signame;
|
typedef struct _glibtop_signame glibtop_signame;
|
||||||
|
|
||||||
struct _glibtop_signame
|
struct _glibtop_signame
|
||||||
{
|
{
|
||||||
const int number;
|
const int number;
|
||||||
const char *name, *label;
|
const char *name, *label;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const glibtop_signame glibtop_sys_siglist [];
|
extern const glibtop_signame glibtop_sys_siglist [];
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_SWAP_TOTAL 0
|
#define GLIBTOP_SWAP_TOTAL 0
|
||||||
#define GLIBTOP_SWAP_USED 1
|
#define GLIBTOP_SWAP_USED 1
|
||||||
@@ -43,28 +41,30 @@ typedef struct _glibtop_swap glibtop_swap;
|
|||||||
|
|
||||||
struct _glibtop_swap
|
struct _glibtop_swap
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
total, /* GLIBTOP_SWAP_TOTAL */
|
total, /* GLIBTOP_SWAP_TOTAL */
|
||||||
used, /* GLIBTOP_SWAP_USED */
|
used, /* GLIBTOP_SWAP_USED */
|
||||||
free, /* GLIBTOP_SWAP_FREE */
|
free, /* GLIBTOP_SWAP_FREE */
|
||||||
pagein, /* GLIBTOP_SWAP_PAGEIN */
|
pagein, /* GLIBTOP_SWAP_PAGEIN */
|
||||||
pageout; /* GLIBTOP_SWAP_PAGEOUT */
|
pageout; /* GLIBTOP_SWAP_PAGEOUT */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_swap(swap) glibtop_get_swap_l(glibtop_global_server, swap)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_SWAP
|
#if GLIBTOP_SUID_SWAP
|
||||||
#define glibtop_get_swap_r glibtop_get_swap_p
|
#define glibtop_get_swap_r glibtop_get_swap_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_swap_r glibtop_get_swap_s
|
#define glibtop_get_swap_r glibtop_get_swap_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_swap_l (glibtop_client *client, glibtop_swap *buf);
|
void glibtop_get_swap_l (glibtop *server, glibtop_swap *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_SWAP
|
#if GLIBTOP_SUID_SWAP
|
||||||
int glibtop_init_swap_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_swap_p (glibtop *server);
|
||||||
int glibtop_get_swap_p (glibtop_server *server, glibtop_closure *closure, glibtop_swap *buf);
|
void glibtop_get_swap_p (glibtop *server, glibtop_swap *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_swap_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_swap_s (glibtop *server);
|
||||||
int glibtop_get_swap_s (glibtop_server *server, glibtop_closure *closure, glibtop_swap *buf);
|
void glibtop_get_swap_s (glibtop *server, glibtop_swap *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -78,6 +78,6 @@ extern const char *glibtop_descriptions_swap [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -28,72 +26,74 @@
|
|||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_SYSDEPS_CPU 0
|
#define GLIBTOP_SYSDEPS_FEATURES 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_CWD 16
|
#define GLIBTOP_SYSDEPS_PROC_SEGMENT 16
|
||||||
#define GLIBTOP_SYSDEPS_PROC_ARGS 17
|
#define GLIBTOP_SYSDEPS_PROC_ARGS 17
|
||||||
#define GLIBTOP_SYSDEPS_PROC_MAP 18
|
#define GLIBTOP_SYSDEPS_PROC_MAP 18
|
||||||
#define GLIBTOP_SYSDEPS_MOUNTLIST 19
|
#define GLIBTOP_SYSDEPS_MOUNTLIST 19
|
||||||
#define GLIBTOP_SYSDEPS_FSUSAGE 20
|
#define GLIBTOP_SYSDEPS_FSUSAGE 20
|
||||||
#define GLIBTOP_SYSDEPS_INTERFACE_NAMES 21
|
#define GLIBTOP_SYSDEPS_NETLOAD 21
|
||||||
#define GLIBTOP_SYSDEPS_NETINFO 22
|
#define GLIBTOP_SYSDEPS_PPP 22
|
||||||
#define GLIBTOP_SYSDEPS_NETLOAD 23
|
|
||||||
#define GLIBTOP_SYSDEPS_PPP 24
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_SYSDEPS 27
|
#define GLIBTOP_MAX_SYSDEPS 23
|
||||||
|
|
||||||
#define GLIBTOP_SYSDEPS_ALL ((1 << GLIBTOP_MAX_SYSDEPS) - 1)
|
#define GLIBTOP_SYSDEPS_ALL ((1 << GLIBTOP_MAX_SYSDEPS) - 1)
|
||||||
|
|
||||||
|
typedef void (*glibtop_init_func_t) (glibtop *);
|
||||||
|
extern glibtop_init_func_t _glibtop_init_hook_s [];
|
||||||
|
extern glibtop_init_func_t _glibtop_init_hook_p [];
|
||||||
|
|
||||||
typedef struct _glibtop_sysdeps glibtop_sysdeps;
|
typedef struct _glibtop_sysdeps glibtop_sysdeps;
|
||||||
|
|
||||||
struct _glibtop_sysdeps
|
struct _glibtop_sysdeps
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
features, /* server features */
|
features, /* server features */
|
||||||
pointer_size, /* sizeof(void*)*8 */
|
cpu, /* glibtop_cpu */
|
||||||
cpu, /* glibtop_cpu */
|
mem, /* glibtop_mem */
|
||||||
mem, /* glibtop_mem */
|
swap, /* glibtop_swap */
|
||||||
swap, /* glibtop_swap */
|
uptime, /* glibtop_uptime */
|
||||||
uptime, /* glibtop_uptime */
|
loadavg, /* glibtop_loadavg */
|
||||||
loadavg, /* glibtop_loadavg */
|
shm_limits, /* glibtop_shm_limits */
|
||||||
shm_limits, /* glibtop_shm_limits */
|
msg_limits, /* glibtop_msg_limits */
|
||||||
msg_limits, /* glibtop_msg_limits */
|
sem_limits, /* glibtop_sem_limits */
|
||||||
sem_limits, /* glibtop_sem_limits */
|
proclist, /* glibtop_proclist */
|
||||||
proclist, /* glibtop_proclist */
|
proc_state, /* glibtop_proc_state */
|
||||||
proc_state, /* glibtop_proc_state */
|
proc_uid, /* glibtop_proc_uid */
|
||||||
proc_uid, /* glibtop_proc_uid */
|
proc_mem, /* glibtop_proc_mem */
|
||||||
proc_mem, /* glibtop_proc_mem */
|
proc_time, /* glibtop_proc_time */
|
||||||
proc_time, /* glibtop_proc_time */
|
proc_signal, /* glibtop_proc_signal */
|
||||||
proc_signal, /* glibtop_proc_signal */
|
proc_kernel, /* glibtop_proc_kernel */
|
||||||
proc_kernel, /* glibtop_proc_kernel */
|
proc_segment, /* glibtop_proc_segment */
|
||||||
proc_segment, /* glibtop_proc_segment */
|
proc_args, /* glibtop_proc_args */
|
||||||
proc_cwd, /* glibtop_proc_cwd */
|
proc_map, /* glibtop_proc_map */
|
||||||
proc_args, /* glibtop_proc_args */
|
mountlist, /* glibtop_mountlist */
|
||||||
proc_map, /* glibtop_proc_map */
|
fsusage, /* glibtop_fsusage */
|
||||||
mountlist, /* glibtop_mountlist */
|
netload, /* glibtop_netload */
|
||||||
fsusage, /* glibtop_fsusage */
|
ppp; /* glibtop_ppp */
|
||||||
interface_names, /* glibtop_interface_names */
|
|
||||||
netinfo, /* glibtop_netinfo */
|
|
||||||
netload, /* glibtop_netload */
|
|
||||||
ppp; /* glibtop_ppp */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_sysdeps(sysdeps) glibtop_get_sysdeps_r(glibtop_global_server,sysdeps)
|
||||||
|
|
||||||
|
void glibtop_get_sysdeps_r (glibtop *server, glibtop_sysdeps *buf);
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
|
|
||||||
/* You need to link with -lgtop_names to get this stuff here. */
|
/* You need to link with -lgtop_names to get this stuff here. */
|
||||||
@@ -105,6 +105,6 @@ extern const char *glibtop_descriptions_sysdeps [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -32,7 +30,7 @@
|
|||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_SYSINFO_CPUINFO 0
|
#define GLIBTOP_SYSINFO_CPUINFO 0
|
||||||
|
|
||||||
@@ -44,21 +42,23 @@ typedef struct _glibtop_entry glibtop_entry;
|
|||||||
|
|
||||||
struct _glibtop_entry
|
struct _glibtop_entry
|
||||||
{
|
{
|
||||||
GPtrArray *labels;
|
GPtrArray *labels;
|
||||||
GHashTable *values;
|
GHashTable *values;
|
||||||
GHashTable *descriptions;
|
GHashTable *descriptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _glibtop_sysinfo
|
struct _glibtop_sysinfo
|
||||||
{
|
{
|
||||||
u_int64_t flags, ncpu;
|
u_int64_t flags, ncpu;
|
||||||
glibtop_entry cpuinfo [GLIBTOP_NCPU];
|
glibtop_entry cpuinfo [GLIBTOP_NCPU];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_sysinfo() glibtop_get_sysinfo_s(glibtop_global_server)
|
||||||
|
|
||||||
#define glibtop_get_sysinfo_r glibtop_get_sysinfo_s
|
#define glibtop_get_sysinfo_r glibtop_get_sysinfo_s
|
||||||
|
|
||||||
glibtop_sysinfo *glibtop_get_sysinfo_s (glibtop_server *server);
|
glibtop_sysinfo *glibtop_get_sysinfo_s (glibtop *server);
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -26,16 +24,15 @@
|
|||||||
#ifndef __GLIBTOP_TYPES_H__
|
#ifndef __GLIBTOP_TYPES_H__
|
||||||
#define __GLIBTOP_TYPES_H__
|
#define __GLIBTOP_TYPES_H__
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_TYPE_LONG 1
|
#define GLIBTOP_TYPE_LONG 1
|
||||||
#define GLIBTOP_TYPE_ULONG 2
|
#define GLIBTOP_TYPE_ULONG 2
|
||||||
#define GLIBTOP_TYPE_DOUBLE 3
|
#define GLIBTOP_TYPE_DOUBLE 3
|
||||||
#define GLIBTOP_TYPE_INT 4
|
#define GLIBTOP_TYPE_INT 4
|
||||||
#define GLIBTOP_TYPE_UNSIGNED 5
|
#define GLIBTOP_TYPE_CHAR 5
|
||||||
#define GLIBTOP_TYPE_CHAR 6
|
#define GLIBTOP_TYPE_STRING 6
|
||||||
#define GLIBTOP_TYPE_STRING 7
|
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -46,49 +44,42 @@
|
|||||||
#include <glibtop/procargs.h>
|
#include <glibtop/procargs.h>
|
||||||
#include <glibtop/procmap.h>
|
#include <glibtop/procmap.h>
|
||||||
|
|
||||||
#include <glibtop/proccwd.h>
|
|
||||||
|
|
||||||
#include <glibtop/mountlist.h>
|
#include <glibtop/mountlist.h>
|
||||||
#include <glibtop/fsusage.h>
|
#include <glibtop/fsusage.h>
|
||||||
|
|
||||||
#include <glibtop/netload.h>
|
#include <glibtop/netload.h>
|
||||||
#include <glibtop/netinfo.h>
|
|
||||||
#include <glibtop/interfaces.h>
|
|
||||||
#include <glibtop/ppp.h>
|
#include <glibtop/ppp.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
typedef union _glibtop_union glibtop_union;
|
typedef union _glibtop_union glibtop_union;
|
||||||
|
|
||||||
union _glibtop_union
|
union _glibtop_union
|
||||||
{
|
{
|
||||||
glibtop_cpu cpu;
|
glibtop_cpu cpu;
|
||||||
glibtop_mem mem;
|
glibtop_mem mem;
|
||||||
glibtop_swap swap;
|
glibtop_swap swap;
|
||||||
glibtop_uptime uptime;
|
glibtop_uptime uptime;
|
||||||
glibtop_loadavg loadavg;
|
glibtop_loadavg loadavg;
|
||||||
glibtop_shm_limits shm_limits;
|
glibtop_shm_limits shm_limits;
|
||||||
glibtop_msg_limits msg_limits;
|
glibtop_msg_limits msg_limits;
|
||||||
glibtop_sem_limits sem_limits;
|
glibtop_sem_limits sem_limits;
|
||||||
glibtop_array proclist;
|
glibtop_proclist proclist;
|
||||||
glibtop_proc_state proc_state;
|
glibtop_proc_state proc_state;
|
||||||
glibtop_proc_uid proc_uid;
|
glibtop_proc_uid proc_uid;
|
||||||
glibtop_proc_mem proc_mem;
|
glibtop_proc_mem proc_mem;
|
||||||
glibtop_proc_time proc_time;
|
glibtop_proc_time proc_time;
|
||||||
glibtop_proc_signal proc_signal;
|
glibtop_proc_signal proc_signal;
|
||||||
glibtop_proc_kernel proc_kernel;
|
glibtop_proc_kernel proc_kernel;
|
||||||
glibtop_proc_segment proc_segment;
|
glibtop_proc_segment proc_segment;
|
||||||
glibtop_proc_cwd proc_cwd;
|
glibtop_proc_args proc_args;
|
||||||
glibtop_array proc_args;
|
glibtop_proc_map proc_map;
|
||||||
glibtop_array proc_map;
|
glibtop_mountlist mountlist;
|
||||||
glibtop_array mountlist;
|
glibtop_fsusage fsusage;
|
||||||
glibtop_fsusage fsusage;
|
glibtop_netload netload;
|
||||||
glibtop_array interface_names;
|
glibtop_ppp ppp;
|
||||||
glibtop_netinfo netinfo;
|
|
||||||
glibtop_netload netload;
|
|
||||||
glibtop_ppp ppp;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,38 +27,38 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#define GLIBTOP_UPTIME_UPTIME 0
|
#define GLIBTOP_UPTIME_UPTIME 0
|
||||||
#define GLIBTOP_UPTIME_IDLETIME 1
|
#define GLIBTOP_UPTIME_IDLETIME 1
|
||||||
#define GLIBTOP_UPTIME_BOOT_TIME 2
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_UPTIME 3
|
#define GLIBTOP_MAX_UPTIME 2
|
||||||
|
|
||||||
typedef struct _glibtop_uptime glibtop_uptime;
|
typedef struct _glibtop_uptime glibtop_uptime;
|
||||||
|
|
||||||
struct _glibtop_uptime
|
struct _glibtop_uptime
|
||||||
{
|
{
|
||||||
u_int64_t flags;
|
u_int64_t flags;
|
||||||
double uptime, /* GLIBTOP_UPTIME_UPTIME */
|
double uptime, /* GLIBTOP_UPTIME_UPTIME */
|
||||||
idletime; /* GLIBTOP_UPTIME_IDLETIME */
|
idletime; /* GLIBTOP_UPTIME_IDLETIME */
|
||||||
u_int64_t boot_time; /* GLIBTOP_UPTIME_BOOT_TIME */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define glibtop_get_uptime(uptime) glibtop_get_uptime_l(glibtop_global_server, uptime)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_UPTIME
|
#if GLIBTOP_SUID_UPTIME
|
||||||
#define glibtop_get_uptime_r glibtop_get_uptime_p
|
#define glibtop_get_uptime_r glibtop_get_uptime_p
|
||||||
#else
|
#else
|
||||||
#define glibtop_get_uptime_r glibtop_get_uptime_s
|
#define glibtop_get_uptime_r glibtop_get_uptime_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int glibtop_get_uptime_l (glibtop_client *client, glibtop_uptime *buf);
|
void glibtop_get_uptime_l (glibtop *server, glibtop_uptime *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_UPTIME
|
#if GLIBTOP_SUID_UPTIME
|
||||||
int glibtop_init_uptime_p (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_uptime_p (glibtop *server);
|
||||||
int glibtop_get_uptime_p (glibtop_server *server, glibtop_closure *closure, glibtop_uptime *buf);
|
void glibtop_get_uptime_p (glibtop *server, glibtop_uptime *buf);
|
||||||
#else
|
#else
|
||||||
int glibtop_init_uptime_s (glibtop_server *server, glibtop_closure *closure);
|
void glibtop_init_uptime_s (glibtop *server);
|
||||||
int glibtop_get_uptime_s (glibtop_server *server, glibtop_closure *closure, glibtop_uptime *buf);
|
void glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
@@ -74,6 +72,6 @@ extern const char *glibtop_descriptions_uptime [];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
42
include/glibtop/version.h
Normal file
42
include/glibtop/version.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_VERSION_H__
|
||||||
|
#define __GLIBTOP_VERSION_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
#include <glibtop/command.h>
|
||||||
|
|
||||||
|
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#if _IN_LIBGTOP
|
||||||
|
|
||||||
|
void glibtop_send_version (glibtop *server, int fd);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
39
include/glibtop/write.h
Normal file
39
include/glibtop/write.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_WRITE_H__
|
||||||
|
#define __GLIBTOP_WRITE_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define glibtop_write(p1, p2) glibtop_write(glibtop_global_server, p1, p2)
|
||||||
|
|
||||||
|
void glibtop_write_l (glibtop *server, size_t size, void *buf);
|
||||||
|
void glibtop_write_s (glibtop *server, size_t size, void *buf);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -29,14 +27,20 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/error.h>
|
#include <glibtop/error.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
void *glibtop_malloc_r (glibtop_server *server, size_t size);
|
#define glibtop_malloc(p1) glibtop_malloc_r(glibtop_global_server, p1)
|
||||||
void *glibtop_calloc_r (glibtop_server *server, size_t nmemb, size_t size);
|
#define glibtop_calloc(p1, p2) glibtop_calloc_r(glibtop_global_server, p1, p2)
|
||||||
void *glibtop_realloc_r (glibtop_server *server, void *ptr, size_t size);
|
#define glibtop_realloc(p1, p2) glibtop_realloc_r(glibtop_global_server, p1, p2)
|
||||||
char *glibtop_strdup_r (glibtop_server *server, const char *string);
|
#define glibtop_strdup(p1) glibtop_strdup_r(glibtop_global_server, p1)
|
||||||
void glibtop_free_r (glibtop_server *server, void *ptr);
|
#define glibtop_free(p1) glibtop_free_r(glibtop_global_server, p1)
|
||||||
|
|
||||||
G_END_DECLS
|
void *glibtop_malloc_r (glibtop *server, size_t size);
|
||||||
|
void *glibtop_calloc_r (glibtop *server, size_t nmemb, size_t size);
|
||||||
|
void *glibtop_realloc_r (glibtop *server, void *ptr, size_t size);
|
||||||
|
char *glibtop_strdup_r (glibtop *server, const char *string);
|
||||||
|
void glibtop_free_r (glibtop *server, const void *ptr);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
14
kernel/ChangeLog
Normal file
14
kernel/ChangeLog
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
1998-07-21 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* table20: New directory for 2.0.xx kernels.
|
||||||
|
|
||||||
|
* table21: New directory for 2.1.xx kernels.
|
||||||
|
|
||||||
|
* *: Moved into `table20' and `table21'.
|
||||||
|
|
||||||
|
1998-06-14 Martin Baulig <baulig@taurus.uni-trier.de>
|
||||||
|
|
||||||
|
* README: Added README.
|
||||||
|
|
||||||
|
* kernel.patch: Patch for the Linux kernel to add the
|
||||||
|
new system call.
|
@@ -1,2 +1 @@
|
|||||||
*.flags
|
*.flags
|
||||||
.depend
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* linux/libgtop/module.c
|
* linux/libgtop/module.c
|
||||||
* Copyright (C) 1999 Martin Baulig
|
* Copyright (C) 1999 Martin Baulig
|
||||||
@@ -284,7 +282,7 @@ get_wchan (struct task_struct *p)
|
|||||||
# define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1019])
|
# define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1019])
|
||||||
# define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022])
|
# define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022])
|
||||||
#elif defined(__alpha__)
|
#elif defined(__alpha__)
|
||||||
/*
|
/*
|
||||||
* See arch/alpha/kernel/ptrace.c for details.
|
* See arch/alpha/kernel/ptrace.c for details.
|
||||||
*/
|
*/
|
||||||
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
|
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
|
||||||
@@ -428,8 +426,8 @@ statm_pgd_range (pgd_t * pgd, unsigned long address, unsigned long end,
|
|||||||
statm_pmd_range (pgd, address, end - address, pages,
|
statm_pmd_range (pgd, address, end - address, pages,
|
||||||
shared, dirty, total);
|
shared, dirty, total);
|
||||||
address = (address + PGDIR_SIZE) & PGDIR_MASK;
|
address = (address + PGDIR_SIZE) & PGDIR_MASK;
|
||||||
pgd++;
|
pgd++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
#ifndef _LINUX_LIBGTOP_H
|
#ifndef _LINUX_LIBGTOP_H
|
||||||
#define _LINUX_LIBGTOP_H 1
|
#define _LINUX_LIBGTOP_H 1
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* linux/libgtop/libgtop_syms.c
|
* linux/libgtop/libgtop_syms.c
|
||||||
* Copyright (C) 1999 Martin Baulig
|
* Copyright (C) 1999 Martin Baulig
|
||||||
@@ -17,6 +15,7 @@
|
|||||||
extern unsigned long total_forks;
|
extern unsigned long total_forks;
|
||||||
|
|
||||||
EXPORT_SYMBOL(task);
|
EXPORT_SYMBOL(task);
|
||||||
|
EXPORT_SYMBOL(init_mm);
|
||||||
EXPORT_SYMBOL(pidhash);
|
EXPORT_SYMBOL(pidhash);
|
||||||
EXPORT_SYMBOL(avenrun);
|
EXPORT_SYMBOL(avenrun);
|
||||||
EXPORT_SYMBOL(nr_running);
|
EXPORT_SYMBOL(nr_running);
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* linux/libgtop/main.c
|
* linux/libgtop/main.c
|
||||||
* Copyright (C) 1999 Martin Baulig
|
* Copyright (C) 1999 Martin Baulig
|
||||||
|
81
kernel/sysctl/patch-2.2.1
Normal file
81
kernel/sysctl/patch-2.2.1
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
diff -ru linux-2.2.1/Makefile hacker/Makefile
|
||||||
|
--- linux-2.2.1/Makefile Sun Jan 31 22:45:42 1999
|
||||||
|
+++ hacker/Makefile Sun Mar 21 16:10:41 1999
|
||||||
|
@@ -109,6 +109,7 @@
|
||||||
|
DRIVERS =drivers/block/block.a \
|
||||||
|
drivers/char/char.a \
|
||||||
|
drivers/misc/misc.a
|
||||||
|
+EXTRAS =
|
||||||
|
LIBS =$(TOPDIR)/lib/lib.a
|
||||||
|
SUBDIRS =kernel drivers mm fs net ipc lib
|
||||||
|
|
||||||
|
@@ -186,6 +187,11 @@
|
||||||
|
DRIVERS := $(DRIVERS) drivers/net/irda/irda_drivers.a
|
||||||
|
endif
|
||||||
|
|
||||||
|
+ifdef CONFIG_LIBGTOP
|
||||||
|
+SUBDIRS := $(SUBDIRS) libgtop
|
||||||
|
+EXTRAS := $(EXTRAS) libgtop/kernel.o
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
include arch/$(ARCH)/Makefile
|
||||||
|
|
||||||
|
.S.s:
|
||||||
|
@@ -206,6 +212,7 @@
|
||||||
|
$(FILESYSTEMS) \
|
||||||
|
$(NETWORKS) \
|
||||||
|
$(DRIVERS) \
|
||||||
|
+ $(EXTRAS) \
|
||||||
|
$(LIBS) \
|
||||||
|
--end-group \
|
||||||
|
-o vmlinux
|
||||||
|
diff -ru linux-2.2.1/arch/i386/config.in hacker/arch/i386/config.in
|
||||||
|
--- linux-2.2.1/arch/i386/config.in Sun Jan 31 22:25:25 1999
|
||||||
|
+++ hacker/arch/i386/config.in Sat Mar 20 18:26:18 1999
|
||||||
|
@@ -84,6 +84,9 @@
|
||||||
|
bool 'System V IPC' CONFIG_SYSVIPC
|
||||||
|
bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
|
||||||
|
bool 'Sysctl support' CONFIG_SYSCTL
|
||||||
|
+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
|
||||||
|
+ tristate 'LibGTop support' CONFIG_LIBGTOP
|
||||||
|
+fi
|
||||||
|
tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
|
||||||
|
tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
|
||||||
|
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
|
||||||
|
diff -ru linux-2.2.1/include/linux/sysctl.h hacker/include/linux/sysctl.h
|
||||||
|
--- linux-2.2.1/include/linux/sysctl.h Sun Jan 31 22:24:14 1999
|
||||||
|
+++ hacker/include/linux/sysctl.h Sat Mar 20 19:12:54 1999
|
||||||
|
@@ -56,7 +56,8 @@
|
||||||
|
CTL_PROC=4, /* Process info */
|
||||||
|
CTL_FS=5, /* Filesystems */
|
||||||
|
CTL_DEBUG=6, /* Debugging */
|
||||||
|
- CTL_DEV=7 /* Devices */
|
||||||
|
+ CTL_DEV=7, /* Devices */
|
||||||
|
+ CTL_LIBGTOP=408 /* LibGTop */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
diff -ru linux-2.2.1/kernel/sysctl.c hacker/kernel/sysctl.c
|
||||||
|
--- linux-2.2.1/kernel/sysctl.c Sun Jan 31 22:24:43 1999
|
||||||
|
+++ hacker/kernel/sysctl.c Sat Mar 20 19:24:34 1999
|
||||||
|
@@ -82,7 +82,9 @@
|
||||||
|
static ctl_table fs_table[];
|
||||||
|
static ctl_table debug_table[];
|
||||||
|
static ctl_table dev_table[];
|
||||||
|
-
|
||||||
|
+#ifdef CONFIG_LIBGTOP
|
||||||
|
+extern ctl_table libgtop_table[];
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* /proc declarations: */
|
||||||
|
|
||||||
|
@@ -148,6 +150,9 @@
|
||||||
|
{CTL_FS, "fs", NULL, 0, 0555, fs_table},
|
||||||
|
{CTL_DEBUG, "debug", NULL, 0, 0555, debug_table},
|
||||||
|
{CTL_DEV, "dev", NULL, 0, 0555, dev_table},
|
||||||
|
+#ifdef CONFIG_LIBGTOP
|
||||||
|
+ {CTL_LIBGTOP, "libgtop", NULL, 0, 0555, libgtop_table},
|
||||||
|
+#endif
|
||||||
|
{0}
|
||||||
|
};
|
||||||
|
|
188
kernel/table.h
Normal file
188
kernel/table.h
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
#ifndef _LINUX_TABLE_H
|
||||||
|
#define _LINUX_TABLE_H
|
||||||
|
|
||||||
|
#ifdef _KERNEL
|
||||||
|
#include <linux/types.h>
|
||||||
|
#else
|
||||||
|
#define NR_TASKS 512
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TABLE_KERN_PROC_ALL 0 /* all processes */
|
||||||
|
#define TABLE_KERN_PROC_PID 1
|
||||||
|
#define TABLE_KERN_PROC_PGRP 2
|
||||||
|
#define TABLE_KERN_PROC_SESSION 3
|
||||||
|
#define TABLE_KERN_PROC_TTY 4
|
||||||
|
#define TABLE_KERN_PROC_UID 5
|
||||||
|
#define TABLE_KERN_PROC_RUID 6
|
||||||
|
|
||||||
|
#define TABLE_KERN_PROC_MASK 15
|
||||||
|
|
||||||
|
#define TABLE_EXCLUDE_IDLE 0x1000
|
||||||
|
#define TABLE_EXCLUDE_SYSTEM 0x2000
|
||||||
|
#define TABLE_EXCLUDE_NOTTY 0x4000
|
||||||
|
|
||||||
|
#define TABLE_VERSION 0
|
||||||
|
#define TABLE_CPU 1
|
||||||
|
#define TABLE_MEM 2
|
||||||
|
#define TABLE_SWAP 3
|
||||||
|
#define TABLE_LOADAVG 4
|
||||||
|
#define TABLE_UPTIME 5
|
||||||
|
#define TABLE_PROCLIST 6
|
||||||
|
#define TABLE_PROC_UID 7
|
||||||
|
#define TABLE_PROC_MEM 8
|
||||||
|
#define TABLE_PROC_SEGMENT 9
|
||||||
|
#define TABLE_PROC_TIME 10
|
||||||
|
#define TABLE_PROC_STATE 11
|
||||||
|
#define TABLE_PROC_SIGNAL 12
|
||||||
|
#define TABLE_PROC_KERNEL 13
|
||||||
|
|
||||||
|
/* 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 */
|
||||||
|
unsigned long pagein; /* Total # of pages swapped in */
|
||||||
|
unsigned long pageout; /* Total # of pages swapped out */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Load average */
|
||||||
|
|
||||||
|
struct table_loadavg
|
||||||
|
{
|
||||||
|
double loadavg [3];
|
||||||
|
unsigned nr_running;
|
||||||
|
unsigned nr_tasks;
|
||||||
|
unsigned last_pid;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Uptime */
|
||||||
|
|
||||||
|
struct table_uptime
|
||||||
|
{
|
||||||
|
unsigned long uptime;
|
||||||
|
unsigned long idle;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Process list. */
|
||||||
|
|
||||||
|
struct proclist_args
|
||||||
|
{
|
||||||
|
int which, arg;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proclist
|
||||||
|
{
|
||||||
|
int nr_running, nr_tasks, last_pid;
|
||||||
|
unsigned pids [NR_TASKS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Information about processes. */
|
||||||
|
|
||||||
|
struct table_proc_state
|
||||||
|
{
|
||||||
|
long state;
|
||||||
|
unsigned long flags;
|
||||||
|
char comm[16];
|
||||||
|
int uid, gid;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proc_uid
|
||||||
|
{
|
||||||
|
int uid, euid, suid, fsuid;
|
||||||
|
int gid, egid, sgid, fsgid;
|
||||||
|
int pid, pgrp, ppid;
|
||||||
|
int session;
|
||||||
|
unsigned int tty;
|
||||||
|
int tpgid;
|
||||||
|
long priority;
|
||||||
|
long counter;
|
||||||
|
long def_priority;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proc_mem
|
||||||
|
{
|
||||||
|
unsigned long context;
|
||||||
|
unsigned long start_code, end_code, start_data, end_data;
|
||||||
|
unsigned long start_brk, brk, start_stack, start_mmap;
|
||||||
|
unsigned long arg_start, arg_end, env_start, env_end;
|
||||||
|
unsigned long rss, rlim, total_vm, locked_vm;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proc_segment
|
||||||
|
{
|
||||||
|
unsigned long vsize;
|
||||||
|
unsigned long size, resident, shared;
|
||||||
|
unsigned long trs, lrs, drs, srs, dt;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proc_time
|
||||||
|
{
|
||||||
|
long utime, stime, cutime, cstime, start_time;
|
||||||
|
unsigned long timeout, policy, rt_priority;
|
||||||
|
unsigned long it_real_value, it_prof_value, it_virt_value;
|
||||||
|
unsigned long it_real_incr, it_prof_incr, it_virt_incr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proc_signal
|
||||||
|
{
|
||||||
|
unsigned long long signal,
|
||||||
|
blocked, /* bitmap of masked signals */
|
||||||
|
ignored, /* mask of ignored signals */
|
||||||
|
caught; /* mask of caught signals */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct table_proc_kernel
|
||||||
|
{
|
||||||
|
unsigned long keip, kesp, wchan;
|
||||||
|
unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
|
||||||
|
unsigned long nswap, cnswap;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Union */
|
||||||
|
|
||||||
|
union table
|
||||||
|
{
|
||||||
|
struct table_cpu cpu;
|
||||||
|
struct table_mem mem;
|
||||||
|
struct table_swap swap;
|
||||||
|
struct table_loadavg loadavg;
|
||||||
|
struct table_uptime uptime;
|
||||||
|
struct table_proclist proclist;
|
||||||
|
struct table_proc_uid proc_uid;
|
||||||
|
struct table_proc_mem proc_mem;
|
||||||
|
struct table_proc_segment proc_segment;
|
||||||
|
struct table_proc_time proc_time;
|
||||||
|
struct table_proc_state proc_state;
|
||||||
|
struct table_proc_signal proc_signal;
|
||||||
|
struct table_proc_kernel proc_kernel;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _LINUX_IPC_H */
|
||||||
|
|
||||||
|
|
13
kernel/table20/Makefile
Normal file
13
kernel/table20/Makefile
Normal 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
|
21
kernel/table20/README
Normal file
21
kernel/table20/README
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
This is a new system call `table ()' for the Linux table. It is faster
|
||||||
|
than reading from /proc and can be used to fetch all information required
|
||||||
|
for libgtop until whe have some other function (extended sysctl, ...) in
|
||||||
|
standard kernels.
|
||||||
|
|
||||||
|
I didn't want to change sysctl or some other function myself cause this may
|
||||||
|
cause other applications relying upon those function to fail. This is
|
||||||
|
something for the ``real'' kernel gurus ...
|
||||||
|
|
||||||
|
To use this new system call for libgtop, do the following:
|
||||||
|
|
||||||
|
* Copy this directory to /usr/src/linux/table
|
||||||
|
* Make /usr/src/linux/include/linux/table.h symlink to /usr/src/linux/table/table.h
|
||||||
|
* Apply the patch `kernel.patch' to the kernel, compile, install and reboot
|
||||||
|
* Recompile libgtop (remove `config.cache' and run the `autogen.sh' again).
|
||||||
|
|
||||||
|
If you want to change and/or add something - feel free to do so !
|
||||||
|
|
||||||
|
Have fun,
|
||||||
|
|
||||||
|
Martin
|
706
kernel/table20/entry-i386.S
Normal file
706
kernel/table20/entry-i386.S
Normal file
@@ -0,0 +1,706 @@
|
|||||||
|
/*
|
||||||
|
* linux/arch/i386/entry.S
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991, 1992 Linus Torvalds
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* entry.S contains the system-call and fault low-level handling routines.
|
||||||
|
* This also contains the timer-interrupt handler, as well as all interrupts
|
||||||
|
* and faults that can result in a task-switch.
|
||||||
|
*
|
||||||
|
* NOTE: This code handles signal-recognition, which happens every time
|
||||||
|
* after a timer-interrupt and after each system call.
|
||||||
|
*
|
||||||
|
* I changed all the .align's to 4 (16 byte alignment), as that's faster
|
||||||
|
* on a 486.
|
||||||
|
*
|
||||||
|
* Stack layout in 'ret_from_system_call':
|
||||||
|
* ptrace needs to have all regs on the stack.
|
||||||
|
* if the order here is changed, it needs to be
|
||||||
|
* updated in fork.c:copy_process, signal.c:do_signal,
|
||||||
|
* ptrace.c and ptrace.h
|
||||||
|
*
|
||||||
|
* 0(%esp) - %ebx
|
||||||
|
* 4(%esp) - %ecx
|
||||||
|
* 8(%esp) - %edx
|
||||||
|
* C(%esp) - %esi
|
||||||
|
* 10(%esp) - %edi
|
||||||
|
* 14(%esp) - %ebp
|
||||||
|
* 18(%esp) - %eax
|
||||||
|
* 1C(%esp) - %ds
|
||||||
|
* 20(%esp) - %es
|
||||||
|
* 24(%esp) - %fs
|
||||||
|
* 28(%esp) - %gs
|
||||||
|
* 2C(%esp) - orig_eax
|
||||||
|
* 30(%esp) - %eip
|
||||||
|
* 34(%esp) - %cs
|
||||||
|
* 38(%esp) - %eflags
|
||||||
|
* 3C(%esp) - %oldesp
|
||||||
|
* 40(%esp) - %oldss
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/sys.h>
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/segment.h>
|
||||||
|
#define ASSEMBLY
|
||||||
|
#include <asm/smp.h>
|
||||||
|
|
||||||
|
EBX = 0x00
|
||||||
|
ECX = 0x04
|
||||||
|
EDX = 0x08
|
||||||
|
ESI = 0x0C
|
||||||
|
EDI = 0x10
|
||||||
|
EBP = 0x14
|
||||||
|
EAX = 0x18
|
||||||
|
DS = 0x1C
|
||||||
|
ES = 0x20
|
||||||
|
FS = 0x24
|
||||||
|
GS = 0x28
|
||||||
|
ORIG_EAX = 0x2C
|
||||||
|
EIP = 0x30
|
||||||
|
CS = 0x34
|
||||||
|
EFLAGS = 0x38
|
||||||
|
OLDESP = 0x3C
|
||||||
|
OLDSS = 0x40
|
||||||
|
|
||||||
|
CF_MASK = 0x00000001
|
||||||
|
IF_MASK = 0x00000200
|
||||||
|
NT_MASK = 0x00004000
|
||||||
|
VM_MASK = 0x00020000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* these are offsets into the task-struct.
|
||||||
|
*/
|
||||||
|
state = 0
|
||||||
|
counter = 4
|
||||||
|
priority = 8
|
||||||
|
signal = 12
|
||||||
|
blocked = 16
|
||||||
|
flags = 20
|
||||||
|
dbgreg6 = 52
|
||||||
|
dbgreg7 = 56
|
||||||
|
exec_domain = 60
|
||||||
|
|
||||||
|
ENOSYS = 38
|
||||||
|
|
||||||
|
#define SAVE_ALL \
|
||||||
|
cld; \
|
||||||
|
push %gs; \
|
||||||
|
push %fs; \
|
||||||
|
push %es; \
|
||||||
|
push %ds; \
|
||||||
|
pushl %eax; \
|
||||||
|
pushl %ebp; \
|
||||||
|
pushl %edi; \
|
||||||
|
pushl %esi; \
|
||||||
|
pushl %edx; \
|
||||||
|
pushl %ecx; \
|
||||||
|
pushl %ebx; \
|
||||||
|
movl $(KERNEL_DS),%edx; \
|
||||||
|
mov %dx,%ds; \
|
||||||
|
mov %dx,%es; \
|
||||||
|
movl $(USER_DS),%edx; \
|
||||||
|
mov %dx,%fs;
|
||||||
|
|
||||||
|
#ifdef __SMP__
|
||||||
|
|
||||||
|
#define GET_PROCESSOR_ID \
|
||||||
|
movl SYMBOL_NAME(apic_reg), %edx; \
|
||||||
|
movl 32(%edx), %eax;\
|
||||||
|
movl %eax,SYMBOL_NAME(apic_retval); \
|
||||||
|
shrl $24,%eax; \
|
||||||
|
andb $0x0F,%al;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the processor ID multiplied by 4
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define GET_PROCESSOR_OFFSET(x) \
|
||||||
|
movl SYMBOL_NAME(apic_reg), x ; \
|
||||||
|
movl 32( x ), x ; \
|
||||||
|
shrl $22, x ; \
|
||||||
|
andl $0x3C, x ;
|
||||||
|
|
||||||
|
/* macro LEAVE_KERNEL decrements kernel_counter and resets kernel_flag and
|
||||||
|
saves processor variables if zero */
|
||||||
|
#define LEAVE_KERNEL \
|
||||||
|
pushfl; \
|
||||||
|
cli; \
|
||||||
|
GET_PROCESSOR_ID \
|
||||||
|
btrl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
|
||||||
|
decl SYMBOL_NAME(syscall_count); \
|
||||||
|
decl SYMBOL_NAME(kernel_counter); \
|
||||||
|
jnz 1f; \
|
||||||
|
movb SYMBOL_NAME(saved_active_kernel_processor), %al; \
|
||||||
|
movb %al, SYMBOL_NAME(active_kernel_processor); \
|
||||||
|
cmpb $(NO_PROC_ID), %al; \
|
||||||
|
jnz 1f; \
|
||||||
|
lock; \
|
||||||
|
btrl $0, SYMBOL_NAME(kernel_flag); \
|
||||||
|
1: popfl;
|
||||||
|
|
||||||
|
/* macro ENTER_KERNEL waits for entering the kernel, increments
|
||||||
|
kernel_counter, and reloads the processor variables if necessary
|
||||||
|
uses : %eax, %edx (pushed and popped)
|
||||||
|
|
||||||
|
Note: We go to great pains to minimise the number of locked operations.
|
||||||
|
We want to spin without locking, and lock when we attempt an update.
|
||||||
|
The pentium has a MESI cache so the spin without lock will exit when
|
||||||
|
another CPU write invalidates our cache, and the lock is avoided when
|
||||||
|
possible so we don't play ping-pong games with the cache line.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SMP_PROF__
|
||||||
|
|
||||||
|
#define SMP_PROF_A
|
||||||
|
#define SMP_PROF_B
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define SMP_PROF_A movl $0,SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
|
||||||
|
#define SMP_PROF_B incl SYMBOL_NAME(smp_spins_syscall)(,%eax,4); \
|
||||||
|
incl SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ENTER_KERNEL \
|
||||||
|
pushl %eax; \
|
||||||
|
pushl %ebx; \
|
||||||
|
pushl %ecx; \
|
||||||
|
pushl %edx; \
|
||||||
|
pushfl; \
|
||||||
|
cli; \
|
||||||
|
movl $6000, %ebx; \
|
||||||
|
movl SYMBOL_NAME(smp_loops_per_tick), %ecx; \
|
||||||
|
GET_PROCESSOR_ID \
|
||||||
|
btsl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
|
||||||
|
SMP_PROF_A \
|
||||||
|
1: lock; \
|
||||||
|
btsl $0, SYMBOL_NAME(kernel_flag); \
|
||||||
|
jnc 3f; \
|
||||||
|
cmpb SYMBOL_NAME(active_kernel_processor), %al; \
|
||||||
|
je 4f; \
|
||||||
|
2: SMP_PROF_B \
|
||||||
|
btl %eax, SYMBOL_NAME(smp_invalidate_needed); \
|
||||||
|
jnc 5f; \
|
||||||
|
lock; \
|
||||||
|
btrl %eax, SYMBOL_NAME(smp_invalidate_needed); \
|
||||||
|
jnc 5f; \
|
||||||
|
movl %cr3,%edx; \
|
||||||
|
movl %edx,%cr3; \
|
||||||
|
5: sti; \
|
||||||
|
decl %ecx; \
|
||||||
|
cli; \
|
||||||
|
jne 7f; \
|
||||||
|
decl %ebx; \
|
||||||
|
jne 6f; \
|
||||||
|
call SYMBOL_NAME(non_irq_deadlock_detected); \
|
||||||
|
6: movl SYMBOL_NAME(smp_loops_per_tick), %ecx; \
|
||||||
|
cmpb SYMBOL_NAME(boot_cpu_id), %al; \
|
||||||
|
jne 7f; \
|
||||||
|
incl SYMBOL_NAME(jiffies); \
|
||||||
|
7: btl $0, SYMBOL_NAME(kernel_flag); \
|
||||||
|
jc 2b; \
|
||||||
|
jmp 1b; \
|
||||||
|
3: movb %al, SYMBOL_NAME(active_kernel_processor); \
|
||||||
|
4: incl SYMBOL_NAME(kernel_counter); \
|
||||||
|
incl SYMBOL_NAME(syscall_count); \
|
||||||
|
popfl; \
|
||||||
|
popl %edx; \
|
||||||
|
popl %ecx; \
|
||||||
|
popl %ebx; \
|
||||||
|
popl %eax;
|
||||||
|
|
||||||
|
|
||||||
|
#define RESTORE_ALL \
|
||||||
|
cmpw $(KERNEL_CS),CS(%esp); \
|
||||||
|
je 1f; \
|
||||||
|
GET_PROCESSOR_OFFSET(%edx) \
|
||||||
|
movl SYMBOL_NAME(current_set)(,%edx), %eax ; ; \
|
||||||
|
movl dbgreg7(%eax),%ebx; \
|
||||||
|
movl %ebx,%db7; \
|
||||||
|
1: LEAVE_KERNEL \
|
||||||
|
popl %ebx; \
|
||||||
|
popl %ecx; \
|
||||||
|
popl %edx; \
|
||||||
|
popl %esi; \
|
||||||
|
popl %edi; \
|
||||||
|
popl %ebp; \
|
||||||
|
popl %eax; \
|
||||||
|
pop %ds; \
|
||||||
|
pop %es; \
|
||||||
|
pop %fs; \
|
||||||
|
pop %gs; \
|
||||||
|
addl $4,%esp; \
|
||||||
|
iret
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define RESTORE_ALL \
|
||||||
|
cmpw $(KERNEL_CS),CS(%esp); \
|
||||||
|
je 1f; \
|
||||||
|
movl SYMBOL_NAME(current_set),%eax; \
|
||||||
|
movl dbgreg7(%eax),%ebx; \
|
||||||
|
movl %ebx,%db7; \
|
||||||
|
1: \
|
||||||
|
popl %ebx; \
|
||||||
|
popl %ecx; \
|
||||||
|
popl %edx; \
|
||||||
|
popl %esi; \
|
||||||
|
popl %edi; \
|
||||||
|
popl %ebp; \
|
||||||
|
popl %eax; \
|
||||||
|
pop %ds; \
|
||||||
|
pop %es; \
|
||||||
|
pop %fs; \
|
||||||
|
pop %gs; \
|
||||||
|
addl $4,%esp; \
|
||||||
|
iret
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ENTRY(lcall7)
|
||||||
|
pushfl # We get a different stack layout with call gates,
|
||||||
|
pushl %eax # which has to be cleaned up later..
|
||||||
|
SAVE_ALL
|
||||||
|
#ifdef __SMP__
|
||||||
|
ENTER_KERNEL
|
||||||
|
#endif
|
||||||
|
movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
|
||||||
|
movl CS(%esp),%edx # this is eip..
|
||||||
|
movl EFLAGS(%esp),%ecx # and this is cs..
|
||||||
|
movl %eax,EFLAGS(%esp) #
|
||||||
|
movl %edx,EIP(%esp) # Now we move them to their "normal" places
|
||||||
|
movl %ecx,CS(%esp) #
|
||||||
|
movl %esp,%eax
|
||||||
|
#ifdef __SMP__
|
||||||
|
GET_PROCESSOR_OFFSET(%edx) # Processor offset into edx
|
||||||
|
movl SYMBOL_NAME(current_set)(,%edx),%edx
|
||||||
|
#else
|
||||||
|
movl SYMBOL_NAME(current_set),%edx
|
||||||
|
#endif
|
||||||
|
pushl %eax
|
||||||
|
movl exec_domain(%edx),%edx # Get the execution domain
|
||||||
|
movl 4(%edx),%edx # Get the lcall7 handler for the domain
|
||||||
|
call *%edx
|
||||||
|
popl %eax
|
||||||
|
jmp ret_from_sys_call
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
handle_bottom_half:
|
||||||
|
incl SYMBOL_NAME(intr_count)
|
||||||
|
call SYMBOL_NAME(do_bottom_half)
|
||||||
|
decl SYMBOL_NAME(intr_count)
|
||||||
|
jmp 9f
|
||||||
|
ALIGN
|
||||||
|
reschedule:
|
||||||
|
pushl $ret_from_sys_call
|
||||||
|
jmp SYMBOL_NAME(schedule) # test
|
||||||
|
|
||||||
|
ENTRY(system_call)
|
||||||
|
pushl %eax # save orig_eax
|
||||||
|
SAVE_ALL
|
||||||
|
#ifdef __SMP__
|
||||||
|
ENTER_KERNEL
|
||||||
|
#endif
|
||||||
|
movl $-ENOSYS,EAX(%esp)
|
||||||
|
cmpl $(NR_syscalls),%eax
|
||||||
|
jae ret_from_sys_call
|
||||||
|
movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax
|
||||||
|
testl %eax,%eax
|
||||||
|
je ret_from_sys_call
|
||||||
|
#ifdef __SMP__
|
||||||
|
GET_PROCESSOR_OFFSET(%edx)
|
||||||
|
movl SYMBOL_NAME(current_set)(,%edx),%ebx
|
||||||
|
#else
|
||||||
|
movl SYMBOL_NAME(current_set),%ebx
|
||||||
|
#endif
|
||||||
|
andl $~CF_MASK,EFLAGS(%esp) # clear carry - assume no errors
|
||||||
|
movl %db6,%edx
|
||||||
|
movl %edx,dbgreg6(%ebx) # save current hardware debugging status
|
||||||
|
testb $0x20,flags(%ebx) # PF_TRACESYS
|
||||||
|
jne 1f
|
||||||
|
call *%eax
|
||||||
|
movl %eax,EAX(%esp) # save the return value
|
||||||
|
jmp ret_from_sys_call
|
||||||
|
ALIGN
|
||||||
|
1: call SYMBOL_NAME(syscall_trace)
|
||||||
|
movl ORIG_EAX(%esp),%eax
|
||||||
|
call SYMBOL_NAME(sys_call_table)(,%eax,4)
|
||||||
|
movl %eax,EAX(%esp) # save the return value
|
||||||
|
#ifdef __SMP__
|
||||||
|
GET_PROCESSOR_OFFSET(%eax)
|
||||||
|
movl SYMBOL_NAME(current_set)(,%eax),%eax
|
||||||
|
#else
|
||||||
|
movl SYMBOL_NAME(current_set),%eax
|
||||||
|
#endif
|
||||||
|
call SYMBOL_NAME(syscall_trace)
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
.globl ret_from_sys_call
|
||||||
|
ret_from_sys_call:
|
||||||
|
cmpl $0,SYMBOL_NAME(intr_count)
|
||||||
|
jne 2f
|
||||||
|
9: movl SYMBOL_NAME(bh_mask),%eax
|
||||||
|
andl SYMBOL_NAME(bh_active),%eax
|
||||||
|
jne handle_bottom_half
|
||||||
|
#ifdef __SMP__
|
||||||
|
cmpb $(NO_PROC_ID), SYMBOL_NAME(saved_active_kernel_processor)
|
||||||
|
jne 2f
|
||||||
|
#endif
|
||||||
|
movl EFLAGS(%esp),%eax # check VM86 flag: CS/SS are
|
||||||
|
testl $(VM_MASK),%eax # different then
|
||||||
|
jne 1f
|
||||||
|
cmpw $(KERNEL_CS),CS(%esp) # was old code segment supervisor ?
|
||||||
|
je 2f
|
||||||
|
1: sti
|
||||||
|
orl $(IF_MASK),%eax # these just try to make sure
|
||||||
|
andl $~NT_MASK,%eax # the program doesn't do anything
|
||||||
|
movl %eax,EFLAGS(%esp) # stupid
|
||||||
|
cmpl $0,SYMBOL_NAME(need_resched)
|
||||||
|
jne reschedule
|
||||||
|
#ifdef __SMP__
|
||||||
|
GET_PROCESSOR_OFFSET(%eax)
|
||||||
|
movl SYMBOL_NAME(current_set)(,%eax), %eax
|
||||||
|
#else
|
||||||
|
movl SYMBOL_NAME(current_set),%eax
|
||||||
|
#endif
|
||||||
|
cmpl SYMBOL_NAME(task),%eax # task[0] cannot have signals
|
||||||
|
je 2f
|
||||||
|
movl blocked(%eax),%ecx
|
||||||
|
movl %ecx,%ebx # save blocked in %ebx for signal handling
|
||||||
|
notl %ecx
|
||||||
|
andl signal(%eax),%ecx
|
||||||
|
jne signal_return
|
||||||
|
2: RESTORE_ALL
|
||||||
|
ALIGN
|
||||||
|
signal_return:
|
||||||
|
movl %esp,%ecx
|
||||||
|
pushl %ecx
|
||||||
|
testl $(VM_MASK),EFLAGS(%ecx)
|
||||||
|
jne v86_signal_return
|
||||||
|
pushl %ebx
|
||||||
|
call SYMBOL_NAME(do_signal)
|
||||||
|
popl %ebx
|
||||||
|
popl %ebx
|
||||||
|
RESTORE_ALL
|
||||||
|
ALIGN
|
||||||
|
v86_signal_return:
|
||||||
|
call SYMBOL_NAME(save_v86_state)
|
||||||
|
movl %eax,%esp
|
||||||
|
pushl %eax
|
||||||
|
pushl %ebx
|
||||||
|
call SYMBOL_NAME(do_signal)
|
||||||
|
popl %ebx
|
||||||
|
popl %ebx
|
||||||
|
RESTORE_ALL
|
||||||
|
|
||||||
|
ENTRY(divide_error)
|
||||||
|
pushl $0 # no error code
|
||||||
|
pushl $ SYMBOL_NAME(do_divide_error)
|
||||||
|
ALIGN
|
||||||
|
error_code:
|
||||||
|
push %fs
|
||||||
|
push %es
|
||||||
|
push %ds
|
||||||
|
pushl %eax
|
||||||
|
xorl %eax,%eax
|
||||||
|
pushl %ebp
|
||||||
|
pushl %edi
|
||||||
|
pushl %esi
|
||||||
|
pushl %edx
|
||||||
|
decl %eax # eax = -1
|
||||||
|
pushl %ecx
|
||||||
|
pushl %ebx
|
||||||
|
cld
|
||||||
|
xorl %ebx,%ebx # zero ebx
|
||||||
|
xchgl %eax, ORIG_EAX(%esp) # orig_eax (get the error code. )
|
||||||
|
mov %gs,%bx # get the lower order bits of gs
|
||||||
|
movl %esp,%edx
|
||||||
|
xchgl %ebx, GS(%esp) # get the address and save gs.
|
||||||
|
pushl %eax # push the error code
|
||||||
|
pushl %edx
|
||||||
|
movl $(KERNEL_DS),%edx
|
||||||
|
mov %dx,%ds
|
||||||
|
mov %dx,%es
|
||||||
|
movl $(USER_DS),%edx
|
||||||
|
mov %dx,%fs
|
||||||
|
#ifdef __SMP__
|
||||||
|
ENTER_KERNEL
|
||||||
|
GET_PROCESSOR_OFFSET(%eax)
|
||||||
|
movl SYMBOL_NAME(current_set)(,%eax), %eax
|
||||||
|
#else
|
||||||
|
movl SYMBOL_NAME(current_set),%eax
|
||||||
|
#endif
|
||||||
|
movl %db6,%edx
|
||||||
|
movl %edx,dbgreg6(%eax) # save current hardware debugging status
|
||||||
|
call *%ebx
|
||||||
|
addl $8,%esp
|
||||||
|
jmp ret_from_sys_call
|
||||||
|
|
||||||
|
ENTRY(coprocessor_error)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_coprocessor_error)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(device_not_available)
|
||||||
|
pushl $-1 # mark this as an int
|
||||||
|
SAVE_ALL
|
||||||
|
#ifdef __SMP__
|
||||||
|
ENTER_KERNEL
|
||||||
|
#endif
|
||||||
|
pushl $ret_from_sys_call
|
||||||
|
movl %cr0,%eax
|
||||||
|
testl $0x4,%eax # EM (math emulation bit)
|
||||||
|
je SYMBOL_NAME(math_state_restore)
|
||||||
|
pushl $0 # temporary storage for ORIG_EIP
|
||||||
|
call SYMBOL_NAME(math_emulate)
|
||||||
|
addl $4,%esp
|
||||||
|
ret
|
||||||
|
|
||||||
|
ENTRY(debug)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_debug)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(nmi)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_nmi)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(int3)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_int3)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(overflow)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_overflow)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(bounds)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_bounds)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(invalid_op)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_invalid_op)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(coprocessor_segment_overrun)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(reserved)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_reserved)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(double_fault)
|
||||||
|
pushl $ SYMBOL_NAME(do_double_fault)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(invalid_TSS)
|
||||||
|
pushl $ SYMBOL_NAME(do_invalid_TSS)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(segment_not_present)
|
||||||
|
pushl $ SYMBOL_NAME(do_segment_not_present)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(stack_segment)
|
||||||
|
pushl $ SYMBOL_NAME(do_stack_segment)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(general_protection)
|
||||||
|
pushl $ SYMBOL_NAME(do_general_protection)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(alignment_check)
|
||||||
|
pushl $ SYMBOL_NAME(do_alignment_check)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(page_fault)
|
||||||
|
pushl $ SYMBOL_NAME(do_page_fault)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
ENTRY(spurious_interrupt_bug)
|
||||||
|
pushl $0
|
||||||
|
pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
|
||||||
|
jmp error_code
|
||||||
|
|
||||||
|
.data
|
||||||
|
ENTRY(sys_call_table)
|
||||||
|
.long SYMBOL_NAME(sys_setup) /* 0 */
|
||||||
|
.long SYMBOL_NAME(sys_exit)
|
||||||
|
.long SYMBOL_NAME(sys_fork)
|
||||||
|
.long SYMBOL_NAME(sys_read)
|
||||||
|
.long SYMBOL_NAME(sys_write)
|
||||||
|
.long SYMBOL_NAME(sys_open) /* 5 */
|
||||||
|
.long SYMBOL_NAME(sys_close)
|
||||||
|
.long SYMBOL_NAME(sys_waitpid)
|
||||||
|
.long SYMBOL_NAME(sys_creat)
|
||||||
|
.long SYMBOL_NAME(sys_link)
|
||||||
|
.long SYMBOL_NAME(sys_unlink) /* 10 */
|
||||||
|
.long SYMBOL_NAME(sys_execve)
|
||||||
|
.long SYMBOL_NAME(sys_chdir)
|
||||||
|
.long SYMBOL_NAME(sys_time)
|
||||||
|
.long SYMBOL_NAME(sys_mknod)
|
||||||
|
.long SYMBOL_NAME(sys_chmod) /* 15 */
|
||||||
|
.long SYMBOL_NAME(sys_chown)
|
||||||
|
.long SYMBOL_NAME(sys_break)
|
||||||
|
.long SYMBOL_NAME(sys_stat)
|
||||||
|
.long SYMBOL_NAME(sys_lseek)
|
||||||
|
.long SYMBOL_NAME(sys_getpid) /* 20 */
|
||||||
|
.long SYMBOL_NAME(sys_mount)
|
||||||
|
.long SYMBOL_NAME(sys_umount)
|
||||||
|
.long SYMBOL_NAME(sys_setuid)
|
||||||
|
.long SYMBOL_NAME(sys_getuid)
|
||||||
|
.long SYMBOL_NAME(sys_stime) /* 25 */
|
||||||
|
.long SYMBOL_NAME(sys_ptrace)
|
||||||
|
.long SYMBOL_NAME(sys_alarm)
|
||||||
|
.long SYMBOL_NAME(sys_fstat)
|
||||||
|
.long SYMBOL_NAME(sys_pause)
|
||||||
|
.long SYMBOL_NAME(sys_utime) /* 30 */
|
||||||
|
.long SYMBOL_NAME(sys_stty)
|
||||||
|
.long SYMBOL_NAME(sys_gtty)
|
||||||
|
.long SYMBOL_NAME(sys_access)
|
||||||
|
.long SYMBOL_NAME(sys_nice)
|
||||||
|
.long SYMBOL_NAME(sys_ftime) /* 35 */
|
||||||
|
.long SYMBOL_NAME(sys_sync)
|
||||||
|
.long SYMBOL_NAME(sys_kill)
|
||||||
|
.long SYMBOL_NAME(sys_rename)
|
||||||
|
.long SYMBOL_NAME(sys_mkdir)
|
||||||
|
.long SYMBOL_NAME(sys_rmdir) /* 40 */
|
||||||
|
.long SYMBOL_NAME(sys_dup)
|
||||||
|
.long SYMBOL_NAME(sys_pipe)
|
||||||
|
.long SYMBOL_NAME(sys_times)
|
||||||
|
.long SYMBOL_NAME(sys_prof)
|
||||||
|
.long SYMBOL_NAME(sys_brk) /* 45 */
|
||||||
|
.long SYMBOL_NAME(sys_setgid)
|
||||||
|
.long SYMBOL_NAME(sys_getgid)
|
||||||
|
.long SYMBOL_NAME(sys_signal)
|
||||||
|
.long SYMBOL_NAME(sys_geteuid)
|
||||||
|
.long SYMBOL_NAME(sys_getegid) /* 50 */
|
||||||
|
.long SYMBOL_NAME(sys_acct)
|
||||||
|
.long SYMBOL_NAME(sys_phys)
|
||||||
|
.long SYMBOL_NAME(sys_lock)
|
||||||
|
.long SYMBOL_NAME(sys_ioctl)
|
||||||
|
.long SYMBOL_NAME(sys_fcntl) /* 55 */
|
||||||
|
.long SYMBOL_NAME(sys_mpx)
|
||||||
|
.long SYMBOL_NAME(sys_setpgid)
|
||||||
|
.long SYMBOL_NAME(sys_ulimit)
|
||||||
|
.long SYMBOL_NAME(sys_olduname)
|
||||||
|
.long SYMBOL_NAME(sys_umask) /* 60 */
|
||||||
|
.long SYMBOL_NAME(sys_chroot)
|
||||||
|
.long SYMBOL_NAME(sys_ustat)
|
||||||
|
.long SYMBOL_NAME(sys_dup2)
|
||||||
|
.long SYMBOL_NAME(sys_getppid)
|
||||||
|
.long SYMBOL_NAME(sys_getpgrp) /* 65 */
|
||||||
|
.long SYMBOL_NAME(sys_setsid)
|
||||||
|
.long SYMBOL_NAME(sys_sigaction)
|
||||||
|
.long SYMBOL_NAME(sys_sgetmask)
|
||||||
|
.long SYMBOL_NAME(sys_ssetmask)
|
||||||
|
.long SYMBOL_NAME(sys_setreuid) /* 70 */
|
||||||
|
.long SYMBOL_NAME(sys_setregid)
|
||||||
|
.long SYMBOL_NAME(sys_sigsuspend)
|
||||||
|
.long SYMBOL_NAME(sys_sigpending)
|
||||||
|
.long SYMBOL_NAME(sys_sethostname)
|
||||||
|
.long SYMBOL_NAME(sys_setrlimit) /* 75 */
|
||||||
|
.long SYMBOL_NAME(sys_getrlimit)
|
||||||
|
.long SYMBOL_NAME(sys_getrusage)
|
||||||
|
.long SYMBOL_NAME(sys_gettimeofday)
|
||||||
|
.long SYMBOL_NAME(sys_settimeofday)
|
||||||
|
.long SYMBOL_NAME(sys_getgroups) /* 80 */
|
||||||
|
.long SYMBOL_NAME(sys_setgroups)
|
||||||
|
.long SYMBOL_NAME(old_select)
|
||||||
|
.long SYMBOL_NAME(sys_symlink)
|
||||||
|
.long SYMBOL_NAME(sys_lstat)
|
||||||
|
.long SYMBOL_NAME(sys_readlink) /* 85 */
|
||||||
|
.long SYMBOL_NAME(sys_uselib)
|
||||||
|
.long SYMBOL_NAME(sys_swapon)
|
||||||
|
.long SYMBOL_NAME(sys_reboot)
|
||||||
|
.long SYMBOL_NAME(old_readdir)
|
||||||
|
.long SYMBOL_NAME(old_mmap) /* 90 */
|
||||||
|
.long SYMBOL_NAME(sys_munmap)
|
||||||
|
.long SYMBOL_NAME(sys_truncate)
|
||||||
|
.long SYMBOL_NAME(sys_ftruncate)
|
||||||
|
.long SYMBOL_NAME(sys_fchmod)
|
||||||
|
.long SYMBOL_NAME(sys_fchown) /* 95 */
|
||||||
|
.long SYMBOL_NAME(sys_getpriority)
|
||||||
|
.long SYMBOL_NAME(sys_setpriority)
|
||||||
|
.long SYMBOL_NAME(sys_profil)
|
||||||
|
.long SYMBOL_NAME(sys_statfs)
|
||||||
|
.long SYMBOL_NAME(sys_fstatfs) /* 100 */
|
||||||
|
.long SYMBOL_NAME(sys_ioperm)
|
||||||
|
.long SYMBOL_NAME(sys_socketcall)
|
||||||
|
.long SYMBOL_NAME(sys_syslog)
|
||||||
|
.long SYMBOL_NAME(sys_setitimer)
|
||||||
|
.long SYMBOL_NAME(sys_getitimer) /* 105 */
|
||||||
|
.long SYMBOL_NAME(sys_newstat)
|
||||||
|
.long SYMBOL_NAME(sys_newlstat)
|
||||||
|
.long SYMBOL_NAME(sys_newfstat)
|
||||||
|
.long SYMBOL_NAME(sys_uname)
|
||||||
|
.long SYMBOL_NAME(sys_iopl) /* 110 */
|
||||||
|
.long SYMBOL_NAME(sys_vhangup)
|
||||||
|
.long SYMBOL_NAME(sys_idle)
|
||||||
|
.long SYMBOL_NAME(sys_vm86old)
|
||||||
|
.long SYMBOL_NAME(sys_wait4)
|
||||||
|
.long SYMBOL_NAME(sys_swapoff) /* 115 */
|
||||||
|
.long SYMBOL_NAME(sys_sysinfo)
|
||||||
|
.long SYMBOL_NAME(sys_ipc)
|
||||||
|
.long SYMBOL_NAME(sys_fsync)
|
||||||
|
.long SYMBOL_NAME(sys_sigreturn)
|
||||||
|
.long SYMBOL_NAME(sys_clone) /* 120 */
|
||||||
|
.long SYMBOL_NAME(sys_setdomainname)
|
||||||
|
.long SYMBOL_NAME(sys_newuname)
|
||||||
|
.long SYMBOL_NAME(sys_modify_ldt)
|
||||||
|
.long SYMBOL_NAME(sys_adjtimex)
|
||||||
|
.long SYMBOL_NAME(sys_mprotect) /* 125 */
|
||||||
|
.long SYMBOL_NAME(sys_sigprocmask)
|
||||||
|
.long SYMBOL_NAME(sys_create_module)
|
||||||
|
.long SYMBOL_NAME(sys_init_module)
|
||||||
|
.long SYMBOL_NAME(sys_delete_module)
|
||||||
|
.long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
|
||||||
|
.long SYMBOL_NAME(sys_quotactl)
|
||||||
|
.long SYMBOL_NAME(sys_getpgid)
|
||||||
|
.long SYMBOL_NAME(sys_fchdir)
|
||||||
|
.long SYMBOL_NAME(sys_bdflush)
|
||||||
|
.long SYMBOL_NAME(sys_sysfs) /* 135 */
|
||||||
|
.long SYMBOL_NAME(sys_personality)
|
||||||
|
.long 0 /* for afs_syscall */
|
||||||
|
.long SYMBOL_NAME(sys_setfsuid)
|
||||||
|
.long SYMBOL_NAME(sys_setfsgid)
|
||||||
|
.long SYMBOL_NAME(sys_llseek) /* 140 */
|
||||||
|
.long SYMBOL_NAME(sys_getdents)
|
||||||
|
.long SYMBOL_NAME(sys_select)
|
||||||
|
.long SYMBOL_NAME(sys_flock)
|
||||||
|
.long SYMBOL_NAME(sys_msync)
|
||||||
|
.long SYMBOL_NAME(sys_readv) /* 145 */
|
||||||
|
.long SYMBOL_NAME(sys_writev)
|
||||||
|
.long SYMBOL_NAME(sys_getsid)
|
||||||
|
.long SYMBOL_NAME(sys_fdatasync)
|
||||||
|
.long SYMBOL_NAME(sys_sysctl)
|
||||||
|
.long SYMBOL_NAME(sys_mlock) /* 150 */
|
||||||
|
.long SYMBOL_NAME(sys_munlock)
|
||||||
|
.long SYMBOL_NAME(sys_mlockall)
|
||||||
|
.long SYMBOL_NAME(sys_munlockall)
|
||||||
|
.long SYMBOL_NAME(sys_sched_setparam)
|
||||||
|
.long SYMBOL_NAME(sys_sched_getparam) /* 155 */
|
||||||
|
.long SYMBOL_NAME(sys_sched_setscheduler)
|
||||||
|
.long SYMBOL_NAME(sys_sched_getscheduler)
|
||||||
|
.long SYMBOL_NAME(sys_sched_yield)
|
||||||
|
.long SYMBOL_NAME(sys_sched_get_priority_max)
|
||||||
|
.long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
|
||||||
|
.long SYMBOL_NAME(sys_sched_rr_get_interval)
|
||||||
|
.long SYMBOL_NAME(sys_nanosleep)
|
||||||
|
.long SYMBOL_NAME(sys_mremap)
|
||||||
|
.long 0,0
|
||||||
|
.long SYMBOL_NAME(sys_vm86)
|
||||||
|
.long 0,0,0,0 /* 170 */
|
||||||
|
.long 0,0,0,0,0,0,0,0,0,0 /* 180 */
|
||||||
|
.long 0,0,0,0,0,0,0
|
||||||
|
.long SYMBOL_NAME(sys_table)
|
||||||
|
.space (NR_syscalls-188)*4
|
51
kernel/table20/kernel.patch
Normal file
51
kernel/table20/kernel.patch
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
diff -ur linux-2.0.32/Makefile linux-hacked/Makefile
|
||||||
|
--- linux-2.0.32/Makefile Fri Nov 7 19:51:05 1997
|
||||||
|
+++ linux-hacked/Makefile Thu Jun 11 20:41:12 1998
|
||||||
|
@@ -87,7 +87,7 @@
|
||||||
|
# standard CFLAGS
|
||||||
|
#
|
||||||
|
|
||||||
|
-CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce
|
||||||
|
+CFLAGS = -Wall -Wstrict-prototypes -g -O2 -fomit-frame-pointer -fno-strength-reduce
|
||||||
|
|
||||||
|
ifdef CONFIG_CPP
|
||||||
|
CFLAGS := $(CFLAGS) -x c++
|
||||||
|
@@ -113,12 +113,12 @@
|
||||||
|
# Include the make variables (CC, etc...)
|
||||||
|
#
|
||||||
|
|
||||||
|
-ARCHIVES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o net/network.a
|
||||||
|
+ARCHIVES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o net/network.a table/table.o
|
||||||
|
FILESYSTEMS =fs/filesystems.a
|
||||||
|
DRIVERS =drivers/block/block.a \
|
||||||
|
drivers/char/char.a
|
||||||
|
LIBS =$(TOPDIR)/lib/lib.a
|
||||||
|
-SUBDIRS =kernel drivers mm fs net ipc lib
|
||||||
|
+SUBDIRS =kernel drivers mm fs net ipc lib table
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ISDN),y)
|
||||||
|
DRIVERS := $(DRIVERS) drivers/isdn/isdn.a
|
||||||
|
diff -ur linux-2.0.32/arch/i386/kernel/entry.S linux-hacked/arch/i386/kernel/entry.S
|
||||||
|
--- linux-2.0.32/arch/i386/kernel/entry.S Tue Sep 16 23:42:45 1997
|
||||||
|
+++ linux-hacked/arch/i386/kernel/entry.S Thu Jun 11 21:37:20 1998
|
||||||
|
@@ -699,4 +699,8 @@
|
||||||
|
.long SYMBOL_NAME(sys_mremap)
|
||||||
|
.long 0,0
|
||||||
|
.long SYMBOL_NAME(sys_vm86)
|
||||||
|
- .space (NR_syscalls-166)*4
|
||||||
|
+ .long 0,0,0,0 /* 170 */
|
||||||
|
+ .long 0,0,0,0,0,0,0,0,0,0 /* 180 */
|
||||||
|
+ .long 0,0,0,0,0,0,0
|
||||||
|
+ .long SYMBOL_NAME(sys_table)
|
||||||
|
+ .space (NR_syscalls-188)*4
|
||||||
|
diff -ur linux-2.0.32/include/asm-i386/unistd.h linux-hacked/include/asm-i386/unistd.h
|
||||||
|
--- linux-2.0.32/include/asm-i386/unistd.h Fri Mar 22 07:34:02 1996
|
||||||
|
+++ linux-hacked/include/asm-i386/unistd.h Thu Jun 11 21:37:03 1998
|
||||||
|
@@ -169,6 +169,7 @@
|
||||||
|
#define __NR_sched_rr_get_interval 161
|
||||||
|
#define __NR_nanosleep 162
|
||||||
|
#define __NR_mremap 163
|
||||||
|
+#define __NR_table 188
|
||||||
|
|
||||||
|
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
|
||||||
|
#define _syscall0(type,name) \
|
468
kernel/table20/main.c
Normal file
468
kernel/table20/main.c
Normal file
@@ -0,0 +1,468 @@
|
|||||||
|
/*
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
#if defined(__i386__)
|
||||||
|
# define KSTK_EIP(tsk) (((unsigned long *)tsk->kernel_stack_page)[1019])
|
||||||
|
# define KSTK_ESP(tsk) (((unsigned long *)tsk->kernel_stack_page)[1022])
|
||||||
|
#elif defined(__alpha__)
|
||||||
|
/*
|
||||||
|
* See arch/alpha/kernel/ptrace.c for details.
|
||||||
|
*/
|
||||||
|
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
|
||||||
|
+ (long)&((struct pt_regs *)0)->reg)
|
||||||
|
# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc)))
|
||||||
|
# define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp)
|
||||||
|
#elif defined(__sparc__)
|
||||||
|
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
|
||||||
|
+ (long)&((struct pt_regs *)0)->reg)
|
||||||
|
# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc)))
|
||||||
|
# define KSTK_ESP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(u_regs[UREG_FP])))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static struct task_struct *
|
||||||
|
get_task (pid_t pid)
|
||||||
|
{
|
||||||
|
struct task_struct ** p;
|
||||||
|
|
||||||
|
p = task;
|
||||||
|
while (++p < task+NR_TASKS) {
|
||||||
|
if (*p && (*p)->pid == pid)
|
||||||
|
return *p;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void statm_pte_range(pmd_t * pmd, unsigned long address, unsigned long size,
|
||||||
|
int * pages, int * shared, int * dirty, int * total)
|
||||||
|
{
|
||||||
|
pte_t * pte;
|
||||||
|
unsigned long end;
|
||||||
|
|
||||||
|
if (pmd_none(*pmd))
|
||||||
|
return;
|
||||||
|
if (pmd_bad(*pmd)) {
|
||||||
|
printk("statm_pte_range: bad pmd (%08lx)\n", pmd_val(*pmd));
|
||||||
|
pmd_clear(pmd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pte = pte_offset(pmd, address);
|
||||||
|
address &= ~PMD_MASK;
|
||||||
|
end = address + size;
|
||||||
|
if (end > PMD_SIZE)
|
||||||
|
end = PMD_SIZE;
|
||||||
|
do {
|
||||||
|
pte_t page = *pte;
|
||||||
|
|
||||||
|
address += PAGE_SIZE;
|
||||||
|
pte++;
|
||||||
|
if (pte_none(page))
|
||||||
|
continue;
|
||||||
|
++*total;
|
||||||
|
if (!pte_present(page))
|
||||||
|
continue;
|
||||||
|
++*pages;
|
||||||
|
if (pte_dirty(page))
|
||||||
|
++*dirty;
|
||||||
|
if (pte_page(page) >= high_memory)
|
||||||
|
continue;
|
||||||
|
if (mem_map[MAP_NR(pte_page(page))].count > 1)
|
||||||
|
++*shared;
|
||||||
|
} while (address < end);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void statm_pmd_range(pgd_t * pgd, unsigned long address, unsigned long size,
|
||||||
|
int * pages, int * shared, int * dirty, int * total)
|
||||||
|
{
|
||||||
|
pmd_t * pmd;
|
||||||
|
unsigned long end;
|
||||||
|
|
||||||
|
if (pgd_none(*pgd))
|
||||||
|
return;
|
||||||
|
if (pgd_bad(*pgd)) {
|
||||||
|
printk("statm_pmd_range: bad pgd (%08lx)\n", pgd_val(*pgd));
|
||||||
|
pgd_clear(pgd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pmd = pmd_offset(pgd, address);
|
||||||
|
address &= ~PGDIR_MASK;
|
||||||
|
end = address + size;
|
||||||
|
if (end > PGDIR_SIZE)
|
||||||
|
end = PGDIR_SIZE;
|
||||||
|
do {
|
||||||
|
statm_pte_range(pmd, address, end - address, pages, shared, dirty, total);
|
||||||
|
address = (address + PMD_SIZE) & PMD_MASK;
|
||||||
|
pmd++;
|
||||||
|
} while (address < end);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void statm_pgd_range(pgd_t * pgd, unsigned long address, unsigned long end,
|
||||||
|
int * pages, int * shared, int * dirty, int * total)
|
||||||
|
{
|
||||||
|
while (address < end) {
|
||||||
|
statm_pmd_range(pgd, address, end - address, pages, shared, dirty, total);
|
||||||
|
address = (address + PGDIR_SIZE) & PGDIR_MASK;
|
||||||
|
pgd++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned long
|
||||||
|
get_wchan (struct task_struct *p)
|
||||||
|
{
|
||||||
|
if (!p || p == current || p->state == TASK_RUNNING)
|
||||||
|
return 0;
|
||||||
|
#if defined(__i386__)
|
||||||
|
{
|
||||||
|
unsigned long ebp, eip;
|
||||||
|
unsigned long stack_page;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
stack_page = p->kernel_stack_page;
|
||||||
|
if (!stack_page)
|
||||||
|
return 0;
|
||||||
|
ebp = p->tss.ebp;
|
||||||
|
do {
|
||||||
|
if (ebp < stack_page || ebp >= 4092+stack_page)
|
||||||
|
return 0;
|
||||||
|
eip = *(unsigned long *) (ebp+4);
|
||||||
|
if (eip < (unsigned long) interruptible_sleep_on
|
||||||
|
|| eip >= (unsigned long) add_timer)
|
||||||
|
return eip;
|
||||||
|
ebp = *(unsigned long *) ebp;
|
||||||
|
} while (count++ < 16);
|
||||||
|
}
|
||||||
|
#elif defined(__alpha__)
|
||||||
|
/*
|
||||||
|
* This one depends on the frame size of schedule(). Do a
|
||||||
|
* "disass schedule" in gdb to find the frame size. Also, the
|
||||||
|
* code assumes that sleep_on() follows immediately after
|
||||||
|
* interruptible_sleep_on() and that add_timer() follows
|
||||||
|
* immediately after interruptible_sleep(). Ugly, isn't it?
|
||||||
|
* Maybe adding a wchan field to task_struct would be better,
|
||||||
|
* after all...
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
unsigned long schedule_frame;
|
||||||
|
unsigned long pc;
|
||||||
|
|
||||||
|
pc = thread_saved_pc(&p->tss);
|
||||||
|
if (pc >= (unsigned long) interruptible_sleep_on && pc < (unsigned long) add_timer) {
|
||||||
|
schedule_frame = ((unsigned long *)p->tss.ksp)[6];
|
||||||
|
return ((unsigned long *)schedule_frame)[12];
|
||||||
|
}
|
||||||
|
return pc;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
asmlinkage int
|
||||||
|
sys_table (int type, union table *buf, const void *param)
|
||||||
|
{
|
||||||
|
union table tbl;
|
||||||
|
struct sysinfo i;
|
||||||
|
struct task_struct *tsk = NULL;
|
||||||
|
struct ip_chain *chain;
|
||||||
|
struct ip_fwkernel *rule;
|
||||||
|
char devname [9];
|
||||||
|
int index, err;
|
||||||
|
pid_t pid;
|
||||||
|
|
||||||
|
if (type == TABLE_VERSION)
|
||||||
|
return _TABLE_VERSION;
|
||||||
|
|
||||||
|
if (!buf)
|
||||||
|
return -EFAULT;
|
||||||
|
|
||||||
|
memset (&tbl, 0, sizeof (union table));
|
||||||
|
|
||||||
|
/* For TABLE_PROC_*, read pid and get task_struct */
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case TABLE_PROC_UID:
|
||||||
|
case TABLE_PROC_MEM:
|
||||||
|
case TABLE_PROC_SEGMENT:
|
||||||
|
case TABLE_PROC_TIME:
|
||||||
|
case TABLE_PROC_STATE:
|
||||||
|
case TABLE_PROC_SIGNAL:
|
||||||
|
case TABLE_PROC_KERNEL:
|
||||||
|
err = verify_area (VERIFY_READ, param, sizeof (pid_t));
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
memcpy_fromfs (&pid, param, sizeof (pid_t));
|
||||||
|
|
||||||
|
tsk = get_task (pid);
|
||||||
|
if (tsk == NULL)
|
||||||
|
return -ESRCH;
|
||||||
|
break;
|
||||||
|
case TABLE_NETACCT:
|
||||||
|
err = verify_area (VERIFY_READ, param, 5);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
copy_from_user (devname, param, 5);
|
||||||
|
devname [5] = 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Main function dispatcher */
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case TABLE_PROCLIST:
|
||||||
|
tsk = task [0];
|
||||||
|
for (index = 0; index < nr_tasks; index++) {
|
||||||
|
tbl.proclist.pids [index] = tsk->pid;
|
||||||
|
tsk = tsk->next_task;
|
||||||
|
}
|
||||||
|
tbl.proclist.nr_running = nr_running;
|
||||||
|
tbl.proclist.nr_tasks = nr_tasks;
|
||||||
|
tbl.proclist.last_pid = last_pid;
|
||||||
|
break;
|
||||||
|
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;
|
||||||
|
tbl.swap.pagein = kstat.pswpin;
|
||||||
|
tbl.swap.pageout = kstat.pswpout;
|
||||||
|
break;
|
||||||
|
case TABLE_LOADAVG:
|
||||||
|
tbl.loadavg.loadavg [0] = (double) avenrun [0] / (1 << FSHIFT);
|
||||||
|
tbl.loadavg.loadavg [1] = (double) avenrun [1] / (1 << FSHIFT);
|
||||||
|
tbl.loadavg.loadavg [2] = (double) avenrun [2] / (1 << FSHIFT);
|
||||||
|
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;
|
||||||
|
case TABLE_PROC_STATE:
|
||||||
|
tbl.proc_state.state = tsk->state;
|
||||||
|
tbl.proc_state.flags = tsk->flags;
|
||||||
|
memcpy (tbl.proc_state.comm, tsk->comm,
|
||||||
|
sizeof (tbl.proc_state.comm));
|
||||||
|
break;
|
||||||
|
case TABLE_PROC_UID:
|
||||||
|
tbl.proc_uid.uid = tsk->uid;
|
||||||
|
tbl.proc_uid.euid = tsk->euid;
|
||||||
|
tbl.proc_uid.suid = tsk->suid;
|
||||||
|
tbl.proc_uid.fsuid = tsk->fsuid;
|
||||||
|
|
||||||
|
tbl.proc_uid.gid = tsk->gid;
|
||||||
|
tbl.proc_uid.egid = tsk->egid;
|
||||||
|
tbl.proc_uid.sgid = tsk->sgid;
|
||||||
|
tbl.proc_uid.fsgid = tsk->fsgid;
|
||||||
|
|
||||||
|
tbl.proc_uid.pid = tsk->pid;
|
||||||
|
tbl.proc_uid.pgrp = tsk->pgrp;
|
||||||
|
tbl.proc_uid.ppid = tsk->p_pptr->pid;
|
||||||
|
|
||||||
|
tbl.proc_uid.session = tsk->session;
|
||||||
|
tbl.proc_uid.tty = tsk->tty ?
|
||||||
|
kdev_t_to_nr (tsk->tty->device) : 0;
|
||||||
|
tbl.proc_uid.tpgid = tsk->tty ? tsk->tty->pgrp : -1;
|
||||||
|
|
||||||
|
tbl.proc_uid.priority = tsk->priority;
|
||||||
|
tbl.proc_uid.counter = tsk->counter;
|
||||||
|
tbl.proc_uid.def_priority = DEF_PRIORITY;
|
||||||
|
break;
|
||||||
|
case TABLE_PROC_SIGNAL:
|
||||||
|
tbl.proc_signal.signal = tsk->signal;
|
||||||
|
tbl.proc_signal.blocked = tsk->blocked;
|
||||||
|
|
||||||
|
if (tsk->sig) {
|
||||||
|
struct sigaction * action = tsk->sig->action;
|
||||||
|
unsigned long sig_ign = 0, sig_caught = 0;
|
||||||
|
unsigned long bit = 1;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 32; i++) {
|
||||||
|
switch((unsigned long) action->sa_handler) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sig_ign |= bit;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sig_caught |= bit;
|
||||||
|
}
|
||||||
|
bit <<= 1;
|
||||||
|
action++;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbl.proc_signal.ignored = sig_ign;
|
||||||
|
tbl.proc_signal.caught = sig_caught;
|
||||||
|
} else {
|
||||||
|
tbl.proc_signal.ignored = 0;
|
||||||
|
tbl.proc_signal.caught = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TABLE_PROC_MEM:
|
||||||
|
if (tsk->mm && tsk->mm != &init_mm) {
|
||||||
|
tbl.proc_mem.context = tsk->mm->context;
|
||||||
|
tbl.proc_mem.start_code = tsk->mm->start_code;
|
||||||
|
tbl.proc_mem.end_code = tsk->mm->end_code;
|
||||||
|
tbl.proc_mem.start_data = tsk->mm-> start_data;
|
||||||
|
tbl.proc_mem.end_data = tsk->mm->end_data;
|
||||||
|
tbl.proc_mem.start_brk = tsk->mm->start_brk;
|
||||||
|
tbl.proc_mem.brk = tsk->mm->brk;
|
||||||
|
tbl.proc_mem.start_stack = tsk->mm->start_stack;
|
||||||
|
tbl.proc_mem.start_mmap = tsk->mm->start_mmap;
|
||||||
|
tbl.proc_mem.arg_start = tsk->mm->arg_start;
|
||||||
|
tbl.proc_mem.arg_end = tsk->mm->arg_end;
|
||||||
|
tbl.proc_mem.env_start = tsk->mm->env_start;
|
||||||
|
tbl.proc_mem.env_end = tsk->mm->env_end;
|
||||||
|
tbl.proc_mem.rss = tsk->mm->rss;
|
||||||
|
tbl.proc_mem.total_vm = tsk->mm->total_vm;
|
||||||
|
tbl.proc_mem.locked_vm = tsk->mm->locked_vm;
|
||||||
|
}
|
||||||
|
tbl.proc_mem.rlim = tsk->rlim ?
|
||||||
|
tsk->rlim[RLIMIT_RSS].rlim_cur : 0;
|
||||||
|
break;
|
||||||
|
case TABLE_PROC_SEGMENT:
|
||||||
|
if (tsk->mm && tsk->mm != &init_mm) {
|
||||||
|
unsigned long vsize = 0;
|
||||||
|
int size = 0, resident = 0, share = 0;
|
||||||
|
int trs = 0, lrs = 0, drs = 0, dt = 0;
|
||||||
|
struct vm_area_struct * vma = tsk->mm->mmap;
|
||||||
|
|
||||||
|
while (vma) {
|
||||||
|
pgd_t *pgd = pgd_offset(tsk->mm, vma->vm_start);
|
||||||
|
int pages = 0, shared = 0, dirty = 0, total = 0;
|
||||||
|
|
||||||
|
vsize += vma->vm_end - vma->vm_start;
|
||||||
|
|
||||||
|
statm_pgd_range (pgd, vma->vm_start, vma->vm_end,
|
||||||
|
&pages, &shared, &dirty, &total);
|
||||||
|
resident += pages;
|
||||||
|
share += shared;
|
||||||
|
dt += dirty;
|
||||||
|
size += total;
|
||||||
|
if (vma->vm_flags & VM_EXECUTABLE)
|
||||||
|
trs += pages; /* text */
|
||||||
|
else if (vma->vm_flags & VM_GROWSDOWN)
|
||||||
|
drs += pages; /* stack */
|
||||||
|
else if (vma->vm_end > 0x60000000)
|
||||||
|
lrs += pages; /* library */
|
||||||
|
else
|
||||||
|
drs += pages;
|
||||||
|
vma = vma->vm_next;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbl.proc_segment.vsize = vsize;
|
||||||
|
tbl.proc_segment.size = size;
|
||||||
|
tbl.proc_segment.resident = resident;
|
||||||
|
tbl.proc_segment.shared = share;
|
||||||
|
tbl.proc_segment.trs = trs;
|
||||||
|
tbl.proc_segment.lrs = lrs;
|
||||||
|
tbl.proc_segment.dt = dt;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TABLE_PROC_TIME:
|
||||||
|
tbl.proc_time.utime = tsk->utime;
|
||||||
|
tbl.proc_time.stime = tsk->stime;
|
||||||
|
tbl.proc_time.cutime = tsk->cutime;
|
||||||
|
tbl.proc_time.cstime = tsk->cstime;
|
||||||
|
|
||||||
|
tbl.proc_time.start_time = tsk->start_time;
|
||||||
|
tbl.proc_time.timeout = tsk->timeout;
|
||||||
|
tbl.proc_time.policy = tsk->policy;
|
||||||
|
tbl.proc_time.rt_priority = tsk->rt_priority;
|
||||||
|
|
||||||
|
tbl.proc_time.it_real_value = tsk->it_real_value;
|
||||||
|
tbl.proc_time.it_prof_value = tsk->it_prof_value;
|
||||||
|
tbl.proc_time.it_virt_value = tsk->it_virt_value;
|
||||||
|
tbl.proc_time.it_real_incr = tsk->it_real_incr;
|
||||||
|
tbl.proc_time.it_prof_incr = tsk->it_prof_incr;
|
||||||
|
tbl.proc_time.it_virt_incr = tsk->it_virt_incr;
|
||||||
|
break;
|
||||||
|
case TABLE_PROC_KERNEL:
|
||||||
|
tbl.proc_kernel.min_flt = tsk->min_flt;
|
||||||
|
tbl.proc_kernel.cmin_flt = tsk->cmin_flt;
|
||||||
|
tbl.proc_kernel.maj_flt = tsk->maj_flt;
|
||||||
|
tbl.proc_kernel.cmaj_flt = tsk->cmaj_flt;
|
||||||
|
|
||||||
|
tbl.proc_kernel.kesp = tsk->kernel_stack_page ? KSTK_EIP(tsk) : 0;
|
||||||
|
tbl.proc_kernel.keip = tsk->kernel_stack_page ? KSTK_ESP(tsk) : 0;
|
||||||
|
|
||||||
|
tbl.proc_kernel.nswap = tsk->nswap;
|
||||||
|
tbl.proc_kernel.cnswap = tsk->cnswap;
|
||||||
|
|
||||||
|
tbl.proc_kernel.wchan = get_wchan (tsk);
|
||||||
|
break;
|
||||||
|
case TABLE_NETACCT:
|
||||||
|
for (chain = ip_fw_chains; chain; chain = chain->next) {
|
||||||
|
for (rule = chain->chain; rule; rule = rule->next) {
|
||||||
|
const char *name = rule->ipfw.fw_vianame;
|
||||||
|
int k;
|
||||||
|
|
||||||
|
if (name [0] && !strncmp (param, name, 5))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (k = 0; k < NUM_SLOTS; k++) {
|
||||||
|
tbl.netacct.packets +=
|
||||||
|
rule->counters[k].pcnt;
|
||||||
|
tbl.netacct.bytes +=
|
||||||
|
rule->counters[k].bcnt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user