Compare commits
15 Commits
gnome-2-4
...
LIBGTOP_1_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22a2289d00 | ||
|
|
6fae8502b9 | ||
|
|
f835defa4f | ||
|
|
bf217abf64 | ||
|
|
b210a6b707 | ||
|
|
020842ccad | ||
|
|
d25bf7628d | ||
|
|
18442bf377 | ||
|
|
f948d8f193 | ||
|
|
84965bc3e8 | ||
|
|
7880078382 | ||
|
|
1b8d205eb0 | ||
|
|
bc86c09ede | ||
|
|
ad536313f1 | ||
|
|
caf17330b3 |
35
.cvsignore
35
.cvsignore
@@ -1,35 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
aclocal.m4
|
|
||||||
config.cache
|
|
||||||
config.h
|
|
||||||
config.h.in
|
|
||||||
config.log
|
|
||||||
config.sub
|
|
||||||
config.guess
|
|
||||||
config.status
|
|
||||||
configure
|
|
||||||
gtopConf.sh
|
|
||||||
i386-bsdi
|
|
||||||
i686-pc-linux-gnu
|
|
||||||
intl
|
|
||||||
libgtop-mirror.sh.swp
|
|
||||||
libgtopConf.sh
|
|
||||||
libtool
|
|
||||||
ltconfig
|
|
||||||
ltmain.sh
|
|
||||||
macros
|
|
||||||
stamp-h
|
|
||||||
stamp-h.in
|
|
||||||
sun4
|
|
||||||
sun4sol2
|
|
||||||
support
|
|
||||||
i386-freebsd
|
|
||||||
alpha-dec-osf3.0
|
|
||||||
i686-pc-linux-gnu-linux
|
|
||||||
libgtop-config
|
|
||||||
ABOUT-NLS
|
|
||||||
libgtop.spec
|
|
||||||
libgtop*.tar.gz
|
|
||||||
*-debstamp
|
|
||||||
libgtop*.pc
|
|
||||||
2
AUTHORS
2
AUTHORS
@@ -1,2 +0,0 @@
|
|||||||
Martin Baulig (martin@home-of-linux.org)
|
|
||||||
Drazen Kacar (dave@srce.hr)
|
|
||||||
634
ChangeLog
634
ChangeLog
@@ -1,443 +1,64 @@
|
|||||||
2003-12-19 Bastien Nocera <hadess@hadess.net>
|
2001-02-26 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||||
|
|
||||||
* configure.in: 2.0.8 (huh?)
|
<EFBFBD> configure.in,po/*.po: added various languages from CVS head
|
||||||
|
|
||||||
2003-11-04 Žygimantas Beručka <uid0@tuxfamily.org>
|
2001-02-13 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
|
||||||
|
|
||||||
* configure.in: Added "lt" to ALL_LINGUAS.
|
* configure.in: Added sk to ALL_LINGUAS.
|
||||||
|
|
||||||
2003-10-21 Bastien Nocera <hadess@hadess.net>
|
2000-02-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* lib/read.c: (glibtop_read_l):
|
Released LibGTop 1.1.2.1 "Hardangervidda goes Paris".
|
||||||
* lib/read_data.c: (glibtop_read_data_l):
|
|
||||||
* lib/write.c: (glibtop_write_l):
|
|
||||||
reverted string freeze breakage
|
|
||||||
|
|
||||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
* LIBGTOP-VERSION: Set version number to 1.1.2.1 and let the
|
||||||
|
tarball be called `libgtop-1.1.2.1-solaris.tar.gz'.
|
||||||
|
|
||||||
* lib/read.c: (glibtop_read_l):
|
2000-01-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
* lib/read_data.c: (glibtop_read_data_l):
|
|
||||||
* lib/write.c: (glibtop_write_l): apply patch for ngettext support
|
|
||||||
by Christian Neumair <chris@gnome-de.org>
|
|
||||||
|
|
||||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
|
||||||
|
|
||||||
* src/inodedb/Makefile.am: link to libgtop_suid_common-2.0.la
|
|
||||||
(Closes: #107990)
|
|
||||||
|
|
||||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
|
||||||
|
|
||||||
* configure.in: make it compile
|
|
||||||
|
|
||||||
2003-10-19 Carlos Perelló Marín <carlos@gnome.org>
|
|
||||||
|
|
||||||
* support/*: Reverted libgtop changes. It's a common module
|
|
||||||
and I should not modify it.
|
|
||||||
* Added/removed files. Now the move should be done.
|
|
||||||
|
|
||||||
2003-10-19 Carlos Perelló Marín <carlos@gnome.org>
|
|
||||||
|
|
||||||
* libgtop-GNOME-2-0-branch moved to HEAD.
|
|
||||||
|
|
||||||
2003-09-30 Laurent Dhima <laurenti@alblinux.net>
|
|
||||||
|
|
||||||
* configure.in: Added "sq" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-09-17 Fatih Demir <kabalak@gtranslator.org>
|
|
||||||
|
|
||||||
* configure.in: Added "ta" (Tamil) to the languages' list.
|
|
||||||
|
|
||||||
2003-09-13 Carlos Perelló Marín <carlos@gnome.org>
|
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): Removed es_ES.
|
|
||||||
|
|
||||||
2003-09-08 Kevin Vandersloot
|
|
||||||
|
|
||||||
* configure.in: release 2.0.5
|
|
||||||
|
|
||||||
2003-09-06 Taneem Ahmed <taneem@bengalinux.org>
|
|
||||||
|
|
||||||
* configure.in: Added "bn" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-08-24 Kevin Vandersloot
|
|
||||||
|
|
||||||
* configure.in: release 2.0.4
|
|
||||||
|
|
||||||
2003-08-13 Guntupalli Karunakar <karunakar@freedomink.org>
|
|
||||||
|
|
||||||
* configure.in: Added "hi" (Hindi) in ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-08-13 Andrew Sobala <aes@gnome.org>
|
|
||||||
|
|
||||||
* configure.in: release 2.0.3
|
|
||||||
|
|
||||||
2003-08-09 Dafydd Harries <daf@parnassus.ath.cx>
|
|
||||||
|
|
||||||
* configure.in: Added "cy" (Welsh) to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-08-03 Malcolm Tredinnick <malcolm@commsecure.com.au>
|
|
||||||
|
|
||||||
* Makefile.am: Change subdirectory build order so that
|
|
||||||
'distclean' target work (and other targets remain working).
|
|
||||||
Fixes bug #84622.
|
|
||||||
|
|
||||||
2003-06-10 Kjartan Maraas <set EMAIL_ADDRESS environment variable>
|
|
||||||
|
|
||||||
* libgtop-2.0.pc.in: Fix missing build flags. Patch from
|
|
||||||
Julio Merino. Fixes bug #103086.
|
|
||||||
* sysdeps/linux/mem.c: (glibtop_get_mem_s): Fix memory calculation
|
|
||||||
under Linux. Patch from <rwahl@gmx.de>. Fixes bug #68626.
|
|
||||||
|
|
||||||
2003-06-10 Kjartan Maraas <kmaraas@gnome.org>
|
|
||||||
|
|
||||||
* sysdeps/freebsd/glibtop_machine.h:
|
|
||||||
* sysdeps/kernel/glibtop_private.h:
|
|
||||||
* sysdeps/solaris/glibtop_machine.h:
|
|
||||||
* sysdeps/solaris/glibtop_private.h: Comment out text after
|
|
||||||
#endif to make some compilers happy.
|
|
||||||
|
|
||||||
2003-05-11 Andrew Sobala <aes@gnome.org>
|
|
||||||
|
|
||||||
* configure.in: release 2.0.2
|
|
||||||
|
|
||||||
2003-05-10 Danilo Šegan <dsegan@gmx.net>
|
|
||||||
|
|
||||||
* configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-04-17 Abel Cheung <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* configure.in: Added "mk" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-03-13 Christian Rose <menthos@menthos.com>
|
|
||||||
|
|
||||||
* configure.in: Added "ml" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-03-10 Roozbeh Pournader <roozbeh@sharif.edu>
|
|
||||||
|
|
||||||
* configure.in: Added "fa" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-03-08 Gil "Dolfin" Osher <dolfin@rpg.org.il>
|
|
||||||
|
|
||||||
* configure.in: Added he to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-02-25 T?µivo Leedj?¤rv <toivo@linux.ee>
|
|
||||||
|
|
||||||
* configure.in: Added et to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-02-16 Mohammad DAMT <mdamt@bisnisweb.com>
|
|
||||||
|
|
||||||
* po/id.po: Added Indonesian translation
|
|
||||||
* configure.in: Added "id" to ALL_LINGUAS
|
|
||||||
|
|
||||||
2003-01-31 James Henstridge <james@daa.com.au>
|
|
||||||
|
|
||||||
* acinclude.m4 (GNOME_SUPPORT_CHECKS): use AC_LIBOBJ() to set
|
|
||||||
LIBOBJS variable, since newer autoconf's barf on direct access.
|
|
||||||
This also takes care of setting LTLIBOBJS for us.
|
|
||||||
|
|
||||||
2003-01-29 Abel Cheung <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* configure.in: Added ar to ALL_LINGUAS
|
|
||||||
|
|
||||||
2003-01-25 Alessio Frusciante <algol@firenze.linux.it>
|
|
||||||
|
|
||||||
* configure.in: Added "it" (Italian) to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-01-23 Marius Andreiana <marius galuna.ro>
|
|
||||||
|
|
||||||
* configure.in: Added "ro" to ALL_LINGUAS
|
|
||||||
|
|
||||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
|
||||||
|
|
||||||
* configure.in: Added "mn" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2003-01-16 Daniel Yacob <locales@geez.org>
|
|
||||||
|
|
||||||
* configure.in: added am to ALL_LINGUAS
|
|
||||||
|
|
||||||
2003-01-12 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* configure.in: release 2.0.1
|
|
||||||
|
|
||||||
2002-12-30 Bastien Nocera <hadess@hadess.net>
|
|
||||||
|
|
||||||
* Added sysdeps/aix directory that was missing
|
|
||||||
|
|
||||||
2002-10-08 Laurent Vivier <Laurent.Vivier@bull.net>
|
|
||||||
|
|
||||||
* Framework for AIX support
|
|
||||||
|
|
||||||
2002-08-07 Vincent Berger <Vincent.Berger@ext.bull.net>
|
|
||||||
|
|
||||||
* support/: Add alloca management for AIX
|
|
||||||
* configure.in: correct checking for nm
|
|
||||||
|
|
||||||
2002-11-03 Dmitry G. Mastrukov <dmitry@taurussoft.org>
|
|
||||||
|
|
||||||
* configure.in: Added Belarusian to ALL_LINGUAS
|
|
||||||
|
|
||||||
2002-09-26 Stanislav Brabec <sbrabec@suse.cz>
|
|
||||||
|
|
||||||
* configure.in: Added cs to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2002-09-26 jacob berkman <jacob@ximian.com>
|
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): remove cs until the file actually
|
|
||||||
gets added
|
|
||||||
|
|
||||||
2002-09-26 Stanislav Brabec <sbrabec@suse.cz>
|
|
||||||
|
|
||||||
* configure.in: Added cs to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2002-08-20 Peteris Krisjanis <peteris.krisjanis@os.lv>
|
|
||||||
|
|
||||||
* configure.in: (ALL_LINGUAS) Added Latvian (lv).
|
|
||||||
|
|
||||||
2002-06-25 Yanko Kaneti <yaneti@declera.com>
|
|
||||||
|
|
||||||
* configure.in: (ALL_LINGUAS) Added Bulgarian (bg).
|
|
||||||
|
|
||||||
2002-05-10 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* configure.in: release 2.0.0
|
|
||||||
|
|
||||||
2002-05-28 Carlos Perello Marin <carlos@gnome-db.org>
|
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): Removed all es_* and added only es_ES.
|
|
||||||
|
|
||||||
2002-05-08 Pablo Saratxaga <pablo@mandrakesoft.com>
|
|
||||||
|
|
||||||
* configure.in: Added Vietnamese (vi) to ALL_LINGUAS
|
|
||||||
|
|
||||||
2002-03-12 James Henstridge <james@daa.com.au>
|
|
||||||
|
|
||||||
* acinclude.m4 (LIBGTOP_HEACKER_TESTS): AM_CONDITIONAL()
|
|
||||||
statements can't be conditionally executed (automake compat fix).
|
|
||||||
(GNOME_LIBGTOP_SYSDEPS): move the conditional here so that it is
|
|
||||||
always executed.
|
|
||||||
|
|
||||||
2002-02-10 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* configure.in: bump version
|
|
||||||
|
|
||||||
* release 1.90.2
|
|
||||||
|
|
||||||
2002-02-09 Bastien Nocera <hadess@hadess.net>
|
|
||||||
|
|
||||||
reviewed by: Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* configure.in: remove need for dc, and clean up
|
|
||||||
* stamp-h.in, .cvsignore: remove
|
|
||||||
|
|
||||||
2002-02-05 Abel Cheung <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): zh_CN.GB2312 -> zh_CN
|
|
||||||
|
|
||||||
2001-01-14 Hasbullah bin Pit <sebol@ikhlas.com>
|
|
||||||
|
|
||||||
* configure.in: Added ms in ALL_LINGUAS.
|
|
||||||
* po/ms.po: Added Malay Translation.
|
|
||||||
* po/.cvsignore: Added 'libgtop-2.0.pot'.
|
|
||||||
|
|
||||||
2001-01-14 Abel Cheung <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* configure.in: Sync'ed ALL_LINGUAS with files in po directory,
|
|
||||||
and renamed GETTEXT_PACKAGE to avoid conflict with libgtop 1.0.x.
|
|
||||||
|
|
||||||
2002-01-10 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* acininclude.m4: add back the support stuf but make it really
|
|
||||||
work
|
|
||||||
|
|
||||||
* configure.in: bump version number, add back GNOME_SUPPORT
|
|
||||||
check since that was causing a build failure
|
|
||||||
|
|
||||||
* release 1.90.1
|
|
||||||
|
|
||||||
2002-01-09 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* acinclude.m4: remove gnome support check. Fixes the build
|
|
||||||
for those with automake < 1.4p5.
|
|
||||||
|
|
||||||
* configure.in: remove check for GNOME_SUPPORT
|
|
||||||
|
|
||||||
2001-14-27 Miles Lane <miles@megapathdsl.net>
|
|
||||||
|
|
||||||
* acconfig.h: Added "#undef HAVE_GETTEXT" entry.
|
|
||||||
* LIBGTOP_VERSION: Removed file.
|
|
||||||
* configure.in: added glib-gettextize support and
|
|
||||||
moved in the *VERSION* stuff from LIBGTOP_VERSION.
|
|
||||||
|
|
||||||
2001-11-27 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* acinclude.m4: copy some of the macros that were formerly
|
|
||||||
in gnome-macros
|
|
||||||
|
|
||||||
* configure.in, sysdeps/Makefile.am: comment out guile
|
|
||||||
support for now.
|
|
||||||
|
|
||||||
* release 1.90.0
|
|
||||||
|
|
||||||
2001-11-26 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* src/daemon/gnuserv.c: Apply patch fixing security issue from
|
|
||||||
intexxia labs - #1048-261101
|
|
||||||
|
|
||||||
2001-11-26 Abel Cheung <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* src/inodedb/file_by_inode.c: Rename to file_by_inode2.c
|
|
||||||
* src/inodedb/mkinodedb.c: Rename to mkinodedb2.c
|
|
||||||
|
|
||||||
* po/POTFILES.in: Reflect above change
|
|
||||||
|
|
||||||
* */.cvsignore: Add various files
|
|
||||||
|
|
||||||
2001-11-25 Kevin Vandersloot <kfv101@psu.edu>
|
|
||||||
|
|
||||||
* port stable libgtop to GNOME 2.0. Too much to detail.
|
|
||||||
pkgconfig is now used. Libs are named libgtop-2.0 etc for
|
|
||||||
parallel install.
|
|
||||||
|
|
||||||
2001-10-17 Abel Chueng <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* configure.in, Makefile.am, include/glibtop/Makefile.am: headers
|
|
||||||
moved to $(includedir)/libgtop-1.0/glibtop.
|
|
||||||
|
|
||||||
2001-09-16 Abel Chueng <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* configure.in: Added "zh_TW" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2001-02-13 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.12 "Gerolzhofen".
|
|
||||||
|
|
||||||
* NEWS: Added news entry to 1.0.12.
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.12, binary age 11,
|
|
||||||
interface age 11.
|
|
||||||
|
|
||||||
2001-02-19 Simos Xenitellis <simos@hellug.gr>
|
|
||||||
|
|
||||||
* configure.in: Added "el" to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2001-02-15 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.11 "Jasmin".
|
|
||||||
|
|
||||||
* NEWS: Added news entry for 1.0.11.
|
|
||||||
|
|
||||||
2001-02-14 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
Merged from LIBGTOP_1_1_2_PATCHES.
|
|
||||||
|
|
||||||
* libgtop-sysdeps.m4 (GLIBTOP_SOLARIS_RELEASE): Define this on Solaris;
|
|
||||||
we use version codes like 270 for SunOS 5.7 and 251 for SunOS 2.5.1.
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION (LIBGTOP_VERSION_SUFFIX): Added this so you can
|
* LIBGTOP-VERSION (LIBGTOP_VERSION_SUFFIX): Added this so you can
|
||||||
have your tarballs called `libgtop-1.x.y-snap.tar.gz' or whatever.
|
have your tarballs called `libgtop-1.x.y-snap.tar.gz' or whatever.
|
||||||
This only affects the `VERSION' variable and thus how the resulting
|
This only affects the `VERSION' variable and thus how the resulting
|
||||||
tarball will be called, but not `LIBGTOP_VERSION_CODE' etc.
|
tarball will be called, but not `LIBGTOP_VERSION_CODE' etc.
|
||||||
|
|
||||||
* configure.in, acconfig.h: Added checks for <procfs.h>
|
|
||||||
and <sys/procfs.h>
|
|
||||||
|
|
||||||
* configure.in (DL_LIB): Check for dlopen() and AC_SUBST this.
|
|
||||||
|
|
||||||
* Makefile.am: Make `aclocal.m4' also depend on `LIBGTOP-VERSION'
|
* Makefile.am: Make `aclocal.m4' also depend on `LIBGTOP-VERSION'
|
||||||
when in maintainer-mode.
|
when in maintainer-mode.
|
||||||
|
|
||||||
2001-02-14 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
* include/glibtop/limits.h: Removed; this file doesn't exist
|
|
||||||
in the stable branch.
|
|
||||||
|
|
||||||
2001-02-13 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.11, binary age 10,
|
|
||||||
interface age 10.
|
|
||||||
|
|
||||||
2001-02-13 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
|
|
||||||
|
|
||||||
* configure.in: Added sk to ALL_LINGUAS
|
|
||||||
|
|
||||||
2001-02-08 Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
|
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): Added pt_BR to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2000-11-21 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs'
|
|
||||||
parameters.
|
|
||||||
|
|
||||||
2000-11-20 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.10 "November Rain".
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.10, binary age 9,
|
|
||||||
interface age 9.
|
|
||||||
|
|
||||||
2000-05-25 Martin Baulig <baulig@suse.de>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.9 "Stuttgart".
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.9 binary age 8,
|
|
||||||
interface age 8.
|
|
||||||
|
|
||||||
(LibGTop 1.0.8 "Frankfurt" was not publically released.)
|
|
||||||
|
|
||||||
2000-02-20 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.8 binary age 7,
|
|
||||||
interface age 7.
|
|
||||||
|
|
||||||
2000-02-15 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.7 "Copenhagen".
|
|
||||||
|
|
||||||
1999-10-19 Martin Baulig <martin@home-of-linux.org>
|
1999-10-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.7 binary age 6,
|
Released LibGTop 1.1.2 "Hardangervidda".
|
||||||
interface age 6.
|
|
||||||
|
|
||||||
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
Released LibGTop 1.0.6 "October LibGTop".
|
* RELNOTES-1.1.x: New file. We also track all changes since
|
||||||
|
1.0.x here.
|
||||||
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* NEWS.old: Removed obsolete file.
|
|
||||||
|
|
||||||
* RELNOTES-1.0.x: Added release notes for LibGTop 1.0.6.
|
|
||||||
|
|
||||||
* TODO: Removed obsolete file.
|
|
||||||
|
|
||||||
* NEWS: We start maintaining a NEWS file now :)
|
* NEWS: We start maintaining a NEWS file now :)
|
||||||
|
|
||||||
|
* NEWS.old: Removed obsolete file.
|
||||||
|
|
||||||
|
* TODO: Nuked it. We may need this file later ...
|
||||||
|
|
||||||
|
1999-10-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (DL_LIB): Check for dlopen() and AC_SUBST this.
|
||||||
|
|
||||||
|
1999-10-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in: Fixed typedef syntax for glibtop-config.h.
|
||||||
|
Thanks to Drazen Kacar for pointing this out.
|
||||||
|
|
||||||
1999-10-16 Martin Baulig <martin@home-of-linux.org>
|
1999-10-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.6 binary age 5,
|
* LIBGTOP-VERSION: Set version number to 1.1.2, binary age 2,
|
||||||
interface age 5.
|
interface age 2.
|
||||||
|
|
||||||
1999-10-09 Jesus Bravo Alvarez <jba@pobox.com>
|
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): Added Galician (gl)
|
|
||||||
|
|
||||||
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.5.
|
|
||||||
|
|
||||||
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* configure.in (libgtop_top_builddir): AC_SUBST this.
|
* configure.in (libgtop_top_builddir): AC_SUBST this.
|
||||||
|
|
||||||
1999-09-24 Martin Baulig <martin@home-of-linux.org>
|
1999-09-27 Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br>
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4,
|
* configure.in: Added "pt_BR" to ALL_LINGUAS.
|
||||||
interface age 4.
|
|
||||||
|
|
||||||
1999-09-24 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Released LibGTop 1.0.4.
|
|
||||||
|
|
||||||
1999-09-22 Kjartan Maraas <kmaraas@online.no>
|
1999-09-22 Kjartan Maraas <kmaraas@online.no>
|
||||||
|
|
||||||
@@ -450,23 +71,13 @@
|
|||||||
|
|
||||||
1999-09-18 Pablo Saratxaga <pablo@mandrakesoft.com>
|
1999-09-18 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||||
|
|
||||||
* configure.in, po/*.po: merged *.po files from HEAD CVS
|
* configure.in, po/pl.po: copied pl.po from stable CVS tree
|
||||||
|
|
||||||
1999-09-17 Martin Baulig <martin@home-of-linux.org>
|
1999-09-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* configure.in: Make it work if we have GNOME and the user
|
* configure.in: Make it work if we have GNOME and the user
|
||||||
gave use --without-gnome (fixes bug #1735).
|
gave use --without-gnome (fixes bug #1735).
|
||||||
|
|
||||||
1999-09-17 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.4 binary age 3,
|
|
||||||
interface age 3.
|
|
||||||
|
|
||||||
1999-09-16 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Merged everything since May 31 from HEAD and released
|
|
||||||
LibGTop 1.0.3.
|
|
||||||
|
|
||||||
1999-07-29 Martin Baulig <martin@home-of-linux.org>
|
1999-07-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* include/glibtop/error.h: Use G_GNUC_UNUSED.
|
* include/glibtop/error.h: Use G_GNUC_UNUSED.
|
||||||
@@ -474,6 +85,17 @@
|
|||||||
* configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake
|
* configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake
|
||||||
conditionals.
|
conditionals.
|
||||||
|
|
||||||
|
1999-07-27 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (LT_VERSION_INFO): Add `-release ${LT_RELEASE}'.
|
||||||
|
This way you can have both 1.0.x and 1.1.x libraries under the
|
||||||
|
same ${prefix}.
|
||||||
|
|
||||||
|
1999-07-27 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.1 binary age 1,
|
||||||
|
interface age 1.
|
||||||
|
|
||||||
1999-07-11 Tomas Ogren <stric@ing.umu.se>
|
1999-07-11 Tomas Ogren <stric@ing.umu.se>
|
||||||
|
|
||||||
* configure.in: Added sv to ALL_LINGUAS
|
* configure.in: Added sv to ALL_LINGUAS
|
||||||
@@ -482,14 +104,21 @@
|
|||||||
|
|
||||||
* sysdeps/names/procmem.c: Fixed a tyop
|
* sysdeps/names/procmem.c: Fixed a tyop
|
||||||
|
|
||||||
1999-05-31 Martin Baulig <martin@home-of-linux.org>
|
1999-06-22 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2,
|
* configure.in: Some versions of Solaris require -lelf for -lkvm;
|
||||||
interface age 2.
|
added appropriate check for this situation.
|
||||||
|
|
||||||
1999-05-31 Martin Baulig <martin@home-of-linux.org>
|
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
|
||||||
|
|
||||||
Released LibGTop 1.0.2.
|
* include/glibtop/sysdeps.h: Remove the `GLIBTOP_SYSDEPS_FEATURES'
|
||||||
|
and `GLIBTOP_SYSDEPS_POINTER_SIZE' constants and let numbering
|
||||||
|
start at zero for `GLIBTOP_SYSDEPS_CPU'.
|
||||||
|
|
||||||
|
1999-05-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop.h (GLIBTOP_MOUNTENTRY_LEN): Move this
|
||||||
|
* include/glibtop/limits.h: here.
|
||||||
|
|
||||||
1999-05-26 Martin Baulig <martin@home-of-linux.org>
|
1999-05-26 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
@@ -500,9 +129,162 @@
|
|||||||
|
|
||||||
* libgtop-sysdeps.m4: Make the I4B check work for NetBSD.
|
* libgtop-sysdeps.m4: Make the I4B check work for NetBSD.
|
||||||
|
|
||||||
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
1999-05-15 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* doc: Merged the LibGTop Manual from the HEAD.
|
* libgtop-sysdeps.m4: Remove the `--enable-hacker-mode' requirement
|
||||||
|
for the BSDI, Solaris and Digital Unix ports.
|
||||||
|
|
||||||
|
1999-05-13 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4 (GLIBTOP_SOLARIS_RELEASE): Define this on Solaris;
|
||||||
|
we use version codes like 270 for SunOS 5.7 and 251 for SunOS 2.5.1.
|
||||||
|
|
||||||
|
1999-05-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop-config.h: This is a new generated file which will be
|
||||||
|
included from <glibtop.h>. We define things like `u_int64_t' and
|
||||||
|
LIBGTOP_*_VERSION here so we can compile LibGTop applications with
|
||||||
|
`libgtop-config --cflags`.
|
||||||
|
|
||||||
|
* configure.in: Create glibtop-config.h.
|
||||||
|
(GLIBTOP_*_INCS): Added `-I $(pkglibdir)/include'.
|
||||||
|
|
||||||
|
* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs'
|
||||||
|
parameter so you can now use LibGTop even in no-autoconf apps.
|
||||||
|
|
||||||
|
* Makefile.am: Install `glibtop-config.h' in `$(pkglibdir)/include'.
|
||||||
|
|
||||||
|
1999-05-09 Drazen Kacar <dave@srce.hr>
|
||||||
|
|
||||||
|
* configure.in, acconfig.h: Added checks for <procfs.h>
|
||||||
|
and <sys/procfs.h>
|
||||||
|
|
||||||
|
1999-05-09 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* doc: One should ship the documentation of a package together with
|
||||||
|
the tarball, so I added this back.
|
||||||
|
|
||||||
|
1999-05-08 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/limits.h (GLIBTOP_MAX_GROUPS): Define this here.
|
||||||
|
* include/glibtop/procuid.h (GLIBTOP_MAX_GROUPS): Moved to limits.h.
|
||||||
|
|
||||||
|
* features.def: We can use constants from <glibtop/limits.h> here.
|
||||||
|
|
||||||
|
1999-05-08 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Use the setgid sys server for Solaris.
|
||||||
|
|
||||||
|
1999-05-06 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/sysdeps.h (glibtop_sysdeps): Added `pointer_size'
|
||||||
|
which is the number of bits of a `void *'.
|
||||||
|
|
||||||
|
1999-05-03 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Set version number to 1.1.0. Also made a `LIBGTOP_STABLE_1_0'
|
||||||
|
branch in CVS while development will go on here in the HEAD.
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.0 binary age 0,
|
||||||
|
interface age 0. Set LIBGTOP_SERVER_VERSION to 50.
|
||||||
|
|
||||||
|
1999-04-18 Tuomas J. Lukka <lukka@iki.fi>
|
||||||
|
|
||||||
|
* Add missing comma in sysdeps/names/proctime.c
|
||||||
|
|
||||||
|
1999-04-18 Tuomas J. Lukka <lukka@iki.fi>
|
||||||
|
|
||||||
|
* Add missing comma in sysdeps/names/cpu.c
|
||||||
|
|
||||||
|
1999-04-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Thanks to Drazen Kacar for pointing out that not all processors must
|
||||||
|
be running all the time under Solaris, so we need to have some flag
|
||||||
|
to find out which processors are running.
|
||||||
|
|
||||||
|
* (glibtop_cpu): Added `xcpu_flags' bitmask of running processors.
|
||||||
|
* (glibtop_proc_time): Added `xcpu_flags'.
|
||||||
|
|
||||||
|
1999-04-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/limits.h: New file.
|
||||||
|
(GLIBTOP_NCPU): Define this here and increase it to 64.
|
||||||
|
|
||||||
|
1999-03-30 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Added some new features.
|
||||||
|
|
||||||
|
* (glibtop_uptime): Added `boot_time', boot time in seconds
|
||||||
|
since the epoch.
|
||||||
|
|
||||||
|
* (glibtop_proc_state): Changed `state' from char to unsigned.
|
||||||
|
`uid' and `gid' are effective uid and gid; added comment.
|
||||||
|
Added `ruid' and `rgid' for guaranteed-to-be-correct real uid/gid.
|
||||||
|
For SMP systems: added `has_cpu', `processor' and `last_processor'.
|
||||||
|
|
||||||
|
* (glibtop_proc_uid): Added suid, sgid, fsuid, fsgid, ngroups, groups.
|
||||||
|
|
||||||
|
* (glibtop_proc_segment): Added start_data, end_data, start_brk,
|
||||||
|
end_brk, start_mmap, arg_start, arg_end, env_start, env_end.
|
||||||
|
|
||||||
|
* include/glibtop/procstate.h: Define some constants for the `state'
|
||||||
|
field of glibtop_proc_state.
|
||||||
|
|
||||||
|
* include/glibtop/prockernel.h: Define some constants for the
|
||||||
|
`k_flags' field of glibtop_proc_kernel.
|
||||||
|
|
||||||
|
1999-03-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in: Check for getloadavg () and swapctl () for
|
||||||
|
Solaris.
|
||||||
|
|
||||||
|
1999-03-23 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop.h (glibtop): Added `wanted'. Applications can set the
|
||||||
|
features they are interested in here. This way we don't waste CPU
|
||||||
|
getting expensive data that aren't really needed.
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: This breaks backward compatibility and also
|
||||||
|
added new functions; set binary age and interface age to 0.
|
||||||
|
|
||||||
|
1999-03-21 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Added a new sysctl () interface to the Linux Kernel.
|
||||||
|
|
||||||
|
* kernel/sysctl: Imported.
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: If `--enable-hacker-mode' is given, check
|
||||||
|
for my new sysctl () interface.
|
||||||
|
|
||||||
|
1999-03-20 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Removed all traces of my old table () Linux kernel hack.
|
||||||
|
|
||||||
|
* kernel: Removed.
|
||||||
|
* sysdeps/kernel: Removed.
|
||||||
|
* libgtop-sysdeps.m4: Don't check for table (); it does not
|
||||||
|
exist any longer.
|
||||||
|
|
||||||
|
1999-03-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
This is *untested* - please read "sysdeps/freebsd/ChangeLog" !
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Use the `freebsd' sysdeps directory for
|
||||||
|
BSDI as well if the `--enable-hacker-mode' parameter was given.
|
||||||
|
|
||||||
|
1999-03-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.0.2 binary age 1,
|
||||||
|
intergace age 1.
|
||||||
|
|
||||||
|
1999-03-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Imported first version of my Solaris port.
|
||||||
|
|
||||||
|
* configure.in: Check for `kstat_open' in `-lkstat'.
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Recognize the `solaris' sysdeps directory
|
||||||
|
when the `--enable-hacker-mode' parameter was given.
|
||||||
|
|
||||||
1999-03-01 Martin Baulig <martin@home-of-linux.org>
|
1999-03-01 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
|||||||
@@ -7,17 +7,18 @@
|
|||||||
# 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=90
|
LIBGTOP_MINOR_VERSION=1
|
||||||
LIBGTOP_MICRO_VERSION=0
|
LIBGTOP_MICRO_VERSION=2
|
||||||
|
|
||||||
LIBGTOP_INTERFACE_AGE=0
|
|
||||||
LIBGTOP_BINARY_AGE=0
|
|
||||||
# you can set this to `-snap' for instance to create
|
# you can set this to `-snap' for instance to create
|
||||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||||
LIBGTOP_VERSION_SUFFIX=
|
LIBGTOP_VERSION_SUFFIX=.1-solaris
|
||||||
|
|
||||||
|
LIBGTOP_INTERFACE_AGE=2
|
||||||
|
LIBGTOP_BINARY_AGE=2
|
||||||
|
|
||||||
# Increase each time you change the client/server protocol.
|
# Increase each time you change the client/server protocol.
|
||||||
LIBGTOP_SERVER_VERSION=5
|
LIBGTOP_SERVER_VERSION=50
|
||||||
|
|
||||||
# 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
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
Email: martin@home-of-linux.org
|
|
||||||
Email: dave@srce.hr
|
|
||||||
51
Makefile.am
51
Makefile.am
@@ -10,18 +10,28 @@ if BUILD_GNOME_SUPPORT
|
|||||||
support = support
|
support = support
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUBDIRS = . po $(support) misc include sysdeps lib src \
|
SUBDIRS = po intl $(support) macros misc include sysdeps lib src \
|
||||||
$(examples_SUBDIRS) doc
|
$(examples_SUBDIRS) doc
|
||||||
|
|
||||||
libgtopinclude_HEADERS = glibtop.h
|
include_HEADERS = glibtop.h
|
||||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
configincludedir = $(pkglibdir)/include
|
||||||
|
|
||||||
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 libgtop-config.in RELNOTES-0.25 \
|
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
|
||||||
RELNOTES-1.0 RELNOTES-1.0.x libgtop-sysdeps.m4 README \
|
RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \
|
||||||
libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4
|
libgtop-mirror.sh
|
||||||
|
|
||||||
dist-hook:
|
configinclude_DATA = \
|
||||||
|
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:
|
||||||
@@ -29,22 +39,19 @@ 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
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = libgtop-2.0.pc
|
|
||||||
|
|
||||||
CLEANFILES=libgtopConf.sh
|
CLEANFILES=libgtopConf.sh
|
||||||
|
|
||||||
## bin_SCRIPTS = $(top_builddir)/libgtop-config
|
bin_SCRIPTS = $(top_builddir)/libgtop-config
|
||||||
|
|
||||||
## to automatically rebuild aclocal.m4 if any of the macros in
|
## to automatically rebuild aclocal.m4 if any of the macros in
|
||||||
## `macros/' change
|
## `macros/' change
|
||||||
## @MAINT@ include macros/macros.dep
|
@MAINT@ include macros/macros.dep
|
||||||
## @MAINT@macros/macros.dep: macros/Makefile.am
|
@MAINT@macros/macros.dep: macros/Makefile.am
|
||||||
## @MAINT@ cd macros && $(MAKE) macros.dep
|
@MAINT@ cd macros && $(MAKE) macros.dep
|
||||||
|
|
||||||
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION
|
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION
|
||||||
|
|
||||||
@@ -55,7 +62,7 @@ CLEANFILES=libgtopConf.sh
|
|||||||
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)/libgtop-2.0#g' \
|
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#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' \
|
||||||
@@ -82,11 +89,11 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
|
|||||||
< $(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@ $< $@
|
||||||
|
|||||||
68
NEWS
68
NEWS
@@ -1,68 +1,16 @@
|
|||||||
February 27, 2001:
|
February 16, 2000:
|
||||||
=================
|
=================
|
||||||
|
|
||||||
* Released LibGTop 1.0.12 "Gerolzhofen".
|
* Released LibGTop 1.1.2.1 "Hardangervidda goes Paris"
|
||||||
|
|
||||||
- fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits).
|
This is a bug fixed version of 1.1.2 for Solaris users
|
||||||
|
of the GUADEC CD.
|
||||||
|
|
||||||
- fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses
|
October 19, 1999:
|
||||||
`_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.0.6 "October LibGTop":
|
* Released LibGTop 1.1.2 "Hardangervidda"
|
||||||
|
|
||||||
- compilation fixes for FreeBSD.
|
This is a stable release from the development branch
|
||||||
- updated reference manual.
|
of LibGTop for Solaris users of October GNOME.
|
||||||
|
|
||||||
September 29, 1999:
|
|
||||||
==================
|
|
||||||
|
|
||||||
* Released LibGTop 1.0.5.
|
|
||||||
|
|
||||||
|
|||||||
8
README
8
README
@@ -1,8 +0,0 @@
|
|||||||
$Id$
|
|
||||||
|
|
||||||
LATEST NEWS:
|
|
||||||
===========
|
|
||||||
|
|
||||||
Please look also in the file 'NEWS' for latest news.
|
|
||||||
|
|
||||||
Martin
|
|
||||||
146
RELNOTES-0.25
146
RELNOTES-0.25
@@ -1,146 +0,0 @@
|
|||||||
RELEASE NOTES FOR LIBGTOP 0.25 STABLE
|
|
||||||
=====================================
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
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_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 priviledges for the calling
|
|
||||||
proces 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 priviledges, 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.
|
|
||||||
|
|
||||||
GNOME APPLETS:
|
|
||||||
--------------
|
|
||||||
|
|
||||||
There are some applets and applications which already use LibGTop. They can
|
|
||||||
be found in the `libgtop-apps' module in the GNOME CVS tree:
|
|
||||||
|
|
||||||
* Applets: cpuload, cpumemusage - they need LibGTop to get their information
|
|
||||||
on all systems other than Linux.
|
|
||||||
|
|
||||||
* Applets: diskusage - just uses the mountlist/fsusage features of LibGTop,
|
|
||||||
the one in gnome-core also works on other systems.
|
|
||||||
|
|
||||||
* Applets: multiload - I enhanced the cpuload applet a little bit, it is
|
|
||||||
now a multi applet and can display CPU, Memory and
|
|
||||||
Swap usages.
|
|
||||||
|
|
||||||
GTOP:
|
|
||||||
----
|
|
||||||
|
|
||||||
This cool GNOME app has been ported to use LibGTop. It can be found in
|
|
||||||
`libgtop-apps/gtop' in the GNOME CVS tree.
|
|
||||||
|
|
||||||
You can now use nearly the full functionality of GTop on FreeBSD !
|
|
||||||
|
|
||||||
|
|
||||||
PLATTFORM SPECIFIC NOTES FOR LINUX:
|
|
||||||
==================================
|
|
||||||
|
|
||||||
Under Linux, LibGTop should work without problems and read everything
|
|
||||||
from /proc.
|
|
||||||
|
|
||||||
There is also an experimental kernel interface to read this information
|
|
||||||
directly from the kernel with a system call - but this is still experimental
|
|
||||||
and not well tested while I made this release.
|
|
||||||
|
|
||||||
PLATTFORM SPECIFIC NOTES FOR FREEBSD:
|
|
||||||
====================================
|
|
||||||
|
|
||||||
LibGTop should now work under FreeBSD and give you the full functionality
|
|
||||||
of GTop.
|
|
||||||
|
|
||||||
There are a few caveats:
|
|
||||||
|
|
||||||
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to kmem
|
|
||||||
after installation and mount the /proc filesystem of FreeBSD
|
|
||||||
(/proc/<pid>/mem is used withing 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 to
|
|
||||||
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 everythink 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>
|
|
||||||
163
RELNOTES-1.0
163
RELNOTES-1.0
@@ -1,163 +0,0 @@
|
|||||||
RELEASE NOTES FOR LIBGTOP 1.0 STABLE
|
|
||||||
====================================
|
|
||||||
|
|
||||||
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:
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
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 ...
|
|
||||||
|
|
||||||
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
|
|
||||||
so this is the primary use for LibGTop (and currently the only one).
|
|
||||||
|
|
||||||
However, you can also give its configure.in script the `--without-gnome'
|
|
||||||
parameter and then use it fully without GNOME in your own applications.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Currently my primary aim is to help the GNOME people with our 1.0 release
|
|
||||||
so I won't have much time to test it with any other system than Linux.
|
|
||||||
|
|
||||||
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:
|
|
||||||
==================================
|
|
||||||
|
|
||||||
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:
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Since so many people were asking me about this:
|
|
||||||
|
|
||||||
LibGTop currently does not have any support for Solaris, and it will
|
|
||||||
never have until some volunteer writes the code for it. I can't do this
|
|
||||||
myself since I do not have any machine to test it on.
|
|
||||||
|
|
||||||
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>
|
|
||||||
172
RELNOTES-1.0.x
172
RELNOTES-1.0.x
@@ -1,172 +0,0 @@
|
|||||||
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>
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
RELEASE NOTES FOR LIBGTOP 1.1.2
|
|
||||||
===============================
|
|
||||||
|
|
||||||
This is a snapshot release for Solaris users of October GNOME. It contains
|
|
||||||
a first version of the Solaris port of LibGTop which works at least on
|
|
||||||
Solaris 7.
|
|
||||||
|
|
||||||
Please use LibGTop 1.0.x if you're not on a Solaris system
|
|
||||||
(look at the README file for details).
|
|
||||||
|
|
||||||
IMPORTANT CHANGES SINCE 1.0:
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
* All `glibtop_get_<feature>_* ()' and all `glibtop_init_<feature>_* ()'
|
|
||||||
functions now have an `int' return value and return 0 on success and -1
|
|
||||||
on failure.
|
|
||||||
|
|
||||||
* glibtop_cpu: Added `xcpu_flags'
|
|
||||||
|
|
||||||
* glibtop_proc_state: Changed `state' from char to unsigned and added
|
|
||||||
GLIBTOP_PROCESS_RUNNING, GLIBTOP_PROCESS_INTERRUPTIBLE,
|
|
||||||
GLIBTOP_PROCESS_UNINTERRUPTIBLE, GLIBTOP_PROCESS_ZOMBIE,
|
|
||||||
GLIBTOP_PROCESS_STOPPED, GLIBTOP_PROCESS_SWAPPING constants for it.
|
|
||||||
|
|
||||||
* `GLIBTOP_MOUNTENTRY_LEN' and `GLIBTOP_MAX_GROUPS' are now defined in
|
|
||||||
<glibtop/limits.h>
|
|
||||||
|
|
||||||
* Removed the `GLIBTOP_SYSDEPS_FEATURES' and `GLIBTOP_SYSDEPS_POINTER_SIZE'
|
|
||||||
constants from <glibtop/sysdeps.h> and let numbering start at zero for
|
|
||||||
`GLIBTOP_SYSDEPS_CPU'.
|
|
||||||
|
|
||||||
OTHER CHANGES SINCE 1.0:
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
* Use G_GNUC_UNUSED in <glibtop/error.h> to avoid compiler warnings.
|
|
||||||
|
|
||||||
* The `libgtop-config' script now accepts `--cflags', `--libs' and
|
|
||||||
`--extra-libs' parameter.
|
|
||||||
|
|
||||||
* The libraries are now called -lgtop-1.1 etc. so you can use 1.0.x and
|
|
||||||
1.1.x in parallel.
|
|
||||||
|
|
||||||
CHANGES SINCE 1.0 MAINLY INTERESTING FOR DEVELOPERS:
|
|
||||||
---------------------------------------------------
|
|
||||||
|
|
||||||
* We create a `glibtop-config.h' now which gets included from <glibtop.h>
|
|
||||||
when we're _IN_LIBGTOP. It contains things such as `u_int64_t' etc.
|
|
||||||
|
|
||||||
October 1999
|
|
||||||
Martin Baulig
|
|
||||||
170
acconfig.h
170
acconfig.h
@@ -1,170 +0,0 @@
|
|||||||
|
|
||||||
/* 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 HAVE_CATGETS
|
|
||||||
#undef GETTEXT_PACKAGE
|
|
||||||
#undef HAVE_GETTEXT
|
|
||||||
#undef HAVE_LC_MESSAGES
|
|
||||||
#undef HAVE_STPCPY
|
|
||||||
#undef HAVE_STRUCT_OSOCKADDR
|
|
||||||
#undef PACKAGE
|
|
||||||
#undef VERSION
|
|
||||||
#undef HAVE_LIBSM
|
|
||||||
#undef HAVE_LIBINTL_H
|
|
||||||
#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. */
|
|
||||||
#undef AFS
|
|
||||||
|
|
||||||
/* Define one of the following to indicate how a program can
|
|
||||||
get a list of mounted filesystems. */
|
|
||||||
|
|
||||||
/* Define if there is no specific function for reading the list of
|
|
||||||
mounted filesystems. fread will be used to read /etc/mnttab. [SVR2] */
|
|
||||||
#undef MOUNTED_FREAD
|
|
||||||
|
|
||||||
/* Define if (like SVR2) there is no specific function for reading the
|
|
||||||
list of mounted filesystems, and your system has these header files:
|
|
||||||
<sys/fstyp.h> and <sys/statfs.h>. [SVR3] */
|
|
||||||
#undef MOUNTED_FREAD_FSTYP
|
|
||||||
|
|
||||||
/* Define if there is a function named getfsstat for reading the list
|
|
||||||
of mounted filesystems. [DEC Alpha running OSF/1] */
|
|
||||||
#undef MOUNTED_GETFSSTAT
|
|
||||||
|
|
||||||
/* Define if there is a function named getmnt for reading the list of
|
|
||||||
mounted filesystems. [Ultrix] */
|
|
||||||
#undef MOUNTED_GETMNT
|
|
||||||
|
|
||||||
/* Define if there is a function named getmntent for reading the list
|
|
||||||
of mounted filesystems, and that function takes a single argument.
|
|
||||||
[4.3BSD, SunOS, HP-UX, Dynix, Irix] */
|
|
||||||
#undef MOUNTED_GETMNTENT1
|
|
||||||
|
|
||||||
/* Define if there is a function named getmntent for reading the list of
|
|
||||||
mounted filesystems, and that function takes two arguments. [SVR4] */
|
|
||||||
#undef MOUNTED_GETMNTENT2
|
|
||||||
|
|
||||||
/* Define if there is a function named getmntinfo for reading the list
|
|
||||||
of mounted filesystems. [4.4BSD] */
|
|
||||||
#undef MOUNTED_GETMNTINFO
|
|
||||||
|
|
||||||
/* Define if there is a function named listmntent that can be used to
|
|
||||||
list all mounted filesystems. [UNICOS] */
|
|
||||||
#undef MOUNTED_LISTMNTENT
|
|
||||||
|
|
||||||
/* Define if there is a function named mntctl that can be used to read
|
|
||||||
the list of mounted filesystems, and there is a system header file
|
|
||||||
that declares `struct vmount.' [AIX] */
|
|
||||||
#undef MOUNTED_VMOUNT
|
|
||||||
|
|
||||||
/* Define one of the following to indicate how a program can obtain
|
|
||||||
filesystems usage information. */
|
|
||||||
|
|
||||||
/* Define if statfs takes 3 args. [DEC Alpha running OSF/1] */
|
|
||||||
#undef STAT_STATFS3_OSF1
|
|
||||||
|
|
||||||
/* Define if there is no specific function for reading filesystems usage
|
|
||||||
information and you have the <sys/filsys.h> header file. [SVR2] */
|
|
||||||
#undef STAT_READ_FILSYS
|
|
||||||
|
|
||||||
/* Define if statfs takes 2 args and struct statfs has a field named f_bsize.
|
|
||||||
[4.3BSD, SunOS 4, HP-UX, AIX PS/2] */
|
|
||||||
#undef STAT_STATFS2_BSIZE
|
|
||||||
|
|
||||||
/* Define if statfs takes 2 args and struct statfs has a field named f_fsize.
|
|
||||||
[4.4BSD, NetBSD] */
|
|
||||||
#undef STAT_STATFS2_FSIZE
|
|
||||||
|
|
||||||
/* Define if statfs takes 2 args and the second argument has
|
|
||||||
type struct fs_data. [Ultrix] */
|
|
||||||
#undef STAT_STATFS2_FS_DATA
|
|
||||||
|
|
||||||
/* Define if statfs takes 4 args. [SVR3, Dynix, Irix, Dolphin] */
|
|
||||||
#undef STAT_STATFS4
|
|
||||||
|
|
||||||
/* Define if there is a function named statvfs. [SVR4] */
|
|
||||||
#undef STAT_STATVFS
|
|
||||||
|
|
||||||
/* Define if the block counts reported by statfs may be truncated to 2GB
|
|
||||||
and the correct values may be stored in the f_spare array.
|
|
||||||
[SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
|
|
||||||
SunOS 4.1.1 seems not to be affected.] */
|
|
||||||
#undef STATFS_TRUNCATES_BLOCK_COUNTS
|
|
||||||
|
|
||||||
|
|
||||||
/* to fix a bug in autoheader on DEC OSF1. */
|
|
||||||
#undef HAVE_PROGRAM_INVOCATION_NAME
|
|
||||||
|
|
||||||
#undef HAVE_SOCKETS
|
|
||||||
#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 u_int64_t
|
|
||||||
#undef int64_t
|
|
||||||
|
|
||||||
#undef HAVE_GLIBTOP_MACHINE_H
|
|
||||||
|
|
||||||
#undef GLIBTOP_NAMES
|
|
||||||
#undef GLIBTOP_GUILE
|
|
||||||
#undef GLIBTOP_GUILE_NAMES
|
|
||||||
#undef GLIBTOP_EXAMPLES
|
|
||||||
#undef GLIBTOP_INODEDB
|
|
||||||
|
|
||||||
#undef NEED_LIBGTOP
|
|
||||||
|
|
||||||
#undef HAVE_LINUX_TABLE
|
|
||||||
#undef HAVE_LIBGTOP_SMP
|
|
||||||
|
|
||||||
#undef HAVE_XAUTH
|
|
||||||
|
|
||||||
/* Define if your have the I4B package. */
|
|
||||||
#undef HAVE_I4B
|
|
||||||
#undef HAVE_I4B_ACCT
|
|
||||||
|
|
||||||
/* Define to enable debugging. */
|
|
||||||
#undef LIBGTOP_ENABLE_DEBUG
|
|
||||||
#undef LIBGTOP_FATAL_WARNINGS
|
|
||||||
|
|
||||||
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
|
|
||||||
* 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
|
|
||||||
880
acinclude.m4
880
acinclude.m4
@@ -1,880 +0,0 @@
|
|||||||
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 GNOME_FILEUTILS_CHECKS
|
|
||||||
dnl
|
|
||||||
dnl checks that are needed for the diskusage applet.
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_DEFUN([GNOME_FILEUTILS_CHECKS],
|
|
||||||
[
|
|
||||||
AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \
|
|
||||||
mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \
|
|
||||||
sys/filsys.h sys/fs_types.h sys/fs/s5param.h)
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \
|
|
||||||
getcwd getmntinfo gettimeofday isascii lchown \
|
|
||||||
listmntent memcpy mkfifo strchr strerror strrchr vprintf)
|
|
||||||
|
|
||||||
dnl Set some defaults when cross-compiling
|
|
||||||
|
|
||||||
if test x$cross_compiling = xyes ; then
|
|
||||||
case "$host_os" in
|
|
||||||
linux*)
|
|
||||||
fu_cv_sys_mounted_getmntent1=yes
|
|
||||||
fu_cv_sys_stat_statfs2_bsize=yes
|
|
||||||
;;
|
|
||||||
sunos*)
|
|
||||||
fu_cv_sys_stat_statfs4=yes
|
|
||||||
;;
|
|
||||||
freebsd*)
|
|
||||||
fu_cv_sys_stat_statfs2_bsize=yes
|
|
||||||
;;
|
|
||||||
osf*)
|
|
||||||
fu_cv_sys_stat_statfs3_osf1=yes
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Determine how to get the list of mounted filesystems.
|
|
||||||
list_mounted_fs=
|
|
||||||
|
|
||||||
# If the getmntent function is available but not in the standard library,
|
|
||||||
# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX).
|
|
||||||
AC_FUNC_GETMNTENT
|
|
||||||
|
|
||||||
# This test must precede the ones for getmntent because Unicos-9 is
|
|
||||||
# reported to have the getmntent function, but its support is incompatible
|
|
||||||
# with other getmntent implementations.
|
|
||||||
|
|
||||||
# NOTE: Normally, I wouldn't use a check for system type as I've done for
|
|
||||||
# `CRAY' below since that goes against the whole autoconf philosophy. But
|
|
||||||
# I think there is too great a chance that some non-Cray system has a
|
|
||||||
# function named listmntent to risk the false positive.
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# Cray UNICOS 9
|
|
||||||
AC_MSG_CHECKING([for listmntent of Cray/Unicos-9])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent,
|
|
||||||
[fu_cv_sys_mounted_cray_listmntent=no
|
|
||||||
AC_EGREP_CPP(yes,
|
|
||||||
[#ifdef _CRAY
|
|
||||||
yes
|
|
||||||
#endif
|
|
||||||
], [test $ac_cv_func_listmntent = yes \
|
|
||||||
&& fu_cv_sys_mounted_cray_listmntent=yes]
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
|
|
||||||
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_LISTMNTENT)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $ac_cv_func_getmntent = yes; then
|
|
||||||
|
|
||||||
# This system has the getmntent function.
|
|
||||||
# Determine whether it's the one-argument variant or the two-argument one.
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# 4.3BSD, SunOS, HP-UX, Dynix, Irix
|
|
||||||
AC_MSG_CHECKING([for one-argument getmntent function])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
|
|
||||||
[test $ac_cv_header_mntent_h = yes \
|
|
||||||
&& fu_cv_sys_mounted_getmntent1=yes \
|
|
||||||
|| fu_cv_sys_mounted_getmntent1=no])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
|
|
||||||
if test $fu_cv_sys_mounted_getmntent1 = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_GETMNTENT1)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# SVR4
|
|
||||||
AC_MSG_CHECKING([for two-argument getmntent function])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2,
|
|
||||||
[AC_EGREP_HEADER(getmntent, sys/mnttab.h,
|
|
||||||
fu_cv_sys_mounted_getmntent2=yes,
|
|
||||||
fu_cv_sys_mounted_getmntent2=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
|
|
||||||
if test $fu_cv_sys_mounted_getmntent2 = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_GETMNTENT2)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# DEC Alpha running OSF/1.
|
|
||||||
AC_MSG_CHECKING([for getfsstat function])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_getsstat,
|
|
||||||
[AC_TRY_LINK([
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#include <sys/fs_types.h>],
|
|
||||||
[struct statfs *stats;
|
|
||||||
int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ],
|
|
||||||
fu_cv_sys_mounted_getsstat=yes,
|
|
||||||
fu_cv_sys_mounted_getsstat=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
|
|
||||||
if test $fu_cv_sys_mounted_getsstat = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_GETFSSTAT)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# AIX.
|
|
||||||
AC_MSG_CHECKING([for mntctl function and struct vmount])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_vmount,
|
|
||||||
[AC_TRY_CPP([#include <fshelp.h>],
|
|
||||||
fu_cv_sys_mounted_vmount=yes,
|
|
||||||
fu_cv_sys_mounted_vmount=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
|
|
||||||
if test $fu_cv_sys_mounted_vmount = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_VMOUNT)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# SVR3
|
|
||||||
AC_MSG_CHECKING([for FIXME existence of three headers])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp,
|
|
||||||
[AC_TRY_CPP([
|
|
||||||
#include <sys/statfs.h>
|
|
||||||
#include <sys/fstyp.h>
|
|
||||||
#include <mnttab.h>],
|
|
||||||
fu_cv_sys_mounted_fread_fstyp=yes,
|
|
||||||
fu_cv_sys_mounted_fread_fstyp=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
|
|
||||||
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_FREAD_FSTYP)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# 4.4BSD and DEC OSF/1.
|
|
||||||
AC_MSG_CHECKING([for getmntinfo function])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
|
|
||||||
[
|
|
||||||
ok=
|
|
||||||
if test $ac_cv_func_getmntinfo = yes; then
|
|
||||||
AC_EGREP_HEADER(f_type;, sys/mount.h,
|
|
||||||
ok=yes)
|
|
||||||
fi
|
|
||||||
test -n "$ok" \
|
|
||||||
&& fu_cv_sys_mounted_getmntinfo=yes \
|
|
||||||
|| fu_cv_sys_mounted_getmntinfo=no
|
|
||||||
])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
|
|
||||||
if test $fu_cv_sys_mounted_getmntinfo = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_GETMNTINFO)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# FIXME: add a test for netbsd-1.1 here
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# Ultrix
|
|
||||||
AC_MSG_CHECKING([for getmnt function])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmnt,
|
|
||||||
[AC_TRY_CPP([
|
|
||||||
#include <sys/fs_types.h>
|
|
||||||
#include <sys/mount.h>],
|
|
||||||
fu_cv_sys_mounted_getmnt=yes,
|
|
||||||
fu_cv_sys_mounted_getmnt=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
|
|
||||||
if test $fu_cv_sys_mounted_getmnt = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_GETMNT)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
# SVR2
|
|
||||||
AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_mounted_fread,
|
|
||||||
[AC_TRY_CPP([#include <mnttab.h>],
|
|
||||||
fu_cv_sys_mounted_fread=yes,
|
|
||||||
fu_cv_sys_mounted_fread=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
|
|
||||||
if test $fu_cv_sys_mounted_fread = yes; then
|
|
||||||
list_mounted_fs=found
|
|
||||||
AC_DEFINE(MOUNTED_FREAD)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$list_mounted_fs"; then
|
|
||||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
|
||||||
# FIXME -- no need to abort building the whole package
|
|
||||||
# Cannot build mountlist.c or anything that needs its functions
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_CHECKING(how to get filesystem space usage)
|
|
||||||
space=no
|
|
||||||
|
|
||||||
# Perform only the link test since it seems there are no variants of the
|
|
||||||
# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
|
|
||||||
# because that got a false positive on SCO OSR5. Adding the declaration
|
|
||||||
# of a `struct statvfs' causes this test to fail (as it should) on such
|
|
||||||
# systems. That system is reported to work fine with STAT_STATFS4 which
|
|
||||||
# is what it gets when this test fails.
|
|
||||||
if test $space = no; then
|
|
||||||
# SVR4
|
|
||||||
AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
|
|
||||||
[AC_TRY_LINK([#include <sys/types.h>
|
|
||||||
#include <sys/statvfs.h>],
|
|
||||||
[struct statvfs fsd; statvfs (0, &fsd);],
|
|
||||||
fu_cv_sys_stat_statvfs=yes,
|
|
||||||
fu_cv_sys_stat_statvfs=no)])
|
|
||||||
if test $fu_cv_sys_stat_statvfs = yes; then
|
|
||||||
space=yes
|
|
||||||
AC_DEFINE(STAT_STATVFS)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $space = no; then
|
|
||||||
# DEC Alpha running OSF/1
|
|
||||||
AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
|
|
||||||
[AC_TRY_RUN([
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/mount.h>
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
struct statfs fsd;
|
|
||||||
fsd.f_fsize = 0;
|
|
||||||
return (statfs (".", &fsd, sizeof (struct statfs)));
|
|
||||||
}],
|
|
||||||
fu_cv_sys_stat_statfs3_osf1=yes,
|
|
||||||
fu_cv_sys_stat_statfs3_osf1=no,
|
|
||||||
fu_cv_sys_stat_statfs3_osf1=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
|
|
||||||
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
|
|
||||||
space=yes
|
|
||||||
AC_DEFINE(STAT_STATFS3_OSF1)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $space = no; then
|
|
||||||
# AIX
|
|
||||||
AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
|
|
||||||
member (AIX, 4.3BSD)])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
|
|
||||||
[AC_TRY_RUN([
|
|
||||||
#ifdef HAVE_SYS_PARAM_H
|
|
||||||
#include <sys/param.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_MOUNT_H
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_VFS_H
|
|
||||||
#include <sys/vfs.h>
|
|
||||||
#endif
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
struct statfs fsd;
|
|
||||||
fsd.f_bsize = 0;
|
|
||||||
return (statfs (".", &fsd));
|
|
||||||
}],
|
|
||||||
fu_cv_sys_stat_statfs2_bsize=yes,
|
|
||||||
fu_cv_sys_stat_statfs2_bsize=no,
|
|
||||||
fu_cv_sys_stat_statfs2_bsize=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
|
|
||||||
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
|
|
||||||
space=yes
|
|
||||||
AC_DEFINE(STAT_STATFS2_BSIZE)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $space = no; then
|
|
||||||
# SVR3
|
|
||||||
AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
|
|
||||||
[AC_TRY_RUN([#include <sys/types.h>
|
|
||||||
#include <sys/statfs.h>
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
struct statfs fsd;
|
|
||||||
return (statfs (".", &fsd, sizeof fsd, 0));
|
|
||||||
}],
|
|
||||||
fu_cv_sys_stat_statfs4=yes,
|
|
||||||
fu_cv_sys_stat_statfs4=no,
|
|
||||||
fu_cv_sys_stat_statfs4=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
|
|
||||||
if test $fu_cv_sys_stat_statfs4 = yes; then
|
|
||||||
space=yes
|
|
||||||
AC_DEFINE(STAT_STATFS4)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $space = no; then
|
|
||||||
# 4.4BSD and NetBSD
|
|
||||||
AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
|
|
||||||
member (4.4BSD and NetBSD)])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
|
|
||||||
[AC_TRY_RUN([#include <sys/types.h>
|
|
||||||
#ifdef HAVE_SYS_PARAM_H
|
|
||||||
#include <sys/param.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_MOUNT_H
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#endif
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
struct statfs fsd;
|
|
||||||
fsd.f_fsize = 0;
|
|
||||||
return (statfs (".", &fsd));
|
|
||||||
}],
|
|
||||||
fu_cv_sys_stat_statfs2_fsize=yes,
|
|
||||||
fu_cv_sys_stat_statfs2_fsize=no,
|
|
||||||
fu_cv_sys_stat_statfs2_fsize=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
|
|
||||||
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
|
|
||||||
space=yes
|
|
||||||
AC_DEFINE(STAT_STATFS2_FSIZE)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $space = no; then
|
|
||||||
# Ultrix
|
|
||||||
AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
|
|
||||||
[AC_TRY_RUN([#include <sys/types.h>
|
|
||||||
#ifdef HAVE_SYS_PARAM_H
|
|
||||||
#include <sys/param.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_MOUNT_H
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_FS_TYPES_H
|
|
||||||
#include <sys/fs_types.h>
|
|
||||||
#endif
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
struct fs_data fsd;
|
|
||||||
/* Ultrix's statfs returns 1 for success,
|
|
||||||
0 for not mounted, -1 for failure. */
|
|
||||||
return (statfs (".", &fsd) != 1);
|
|
||||||
}],
|
|
||||||
fu_cv_sys_stat_fs_data=yes,
|
|
||||||
fu_cv_sys_stat_fs_data=no,
|
|
||||||
fu_cv_sys_stat_fs_data=no)])
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
|
|
||||||
if test $fu_cv_sys_stat_fs_data = yes; then
|
|
||||||
space=yes
|
|
||||||
AC_DEFINE(STAT_STATFS2_FS_DATA)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $space = no; then
|
|
||||||
# SVR2
|
|
||||||
AC_TRY_CPP([#include <sys/filsys.h>],
|
|
||||||
AC_DEFINE(STAT_READ_FILSYS) space=yes)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -n "$list_mounted_fs" && test $space != no; then
|
|
||||||
DF_PROG="df"
|
|
||||||
# AC_LIBOBJ(fsusage)
|
|
||||||
# AC_LIBOBJ(mountlist)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
|
|
||||||
# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
|
|
||||||
# enable the work-around code in fsusage.c.
|
|
||||||
AC_MSG_CHECKING([for statfs that truncates block counts])
|
|
||||||
AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
|
|
||||||
[AC_TRY_COMPILE([
|
|
||||||
#if !defined(sun) && !defined(__sun)
|
|
||||||
choke -- this is a workaround for a Sun-specific problem
|
|
||||||
#endif
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/vfs.h>],
|
|
||||||
[struct statfs t; long c = *(t.f_spare);],
|
|
||||||
fu_cv_sys_truncating_statfs=yes,
|
|
||||||
fu_cv_sys_truncating_statfs=no,
|
|
||||||
)])
|
|
||||||
if test $fu_cv_sys_truncating_statfs = yes; then
|
|
||||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
|
||||||
|
|
||||||
AC_CHECKING(for 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)
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
21
autogen.sh
21
autogen.sh
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Run this to generate all the initial makefiles, etc.
|
|
||||||
|
|
||||||
srcdir=`dirname $0`
|
|
||||||
test -z "$srcdir" && srcdir=.
|
|
||||||
|
|
||||||
PKG_NAME="Gnome Top Library"
|
|
||||||
|
|
||||||
(test -f $srcdir/configure.in \
|
|
||||||
&& test -f $srcdir/copyright.txt \
|
|
||||||
&& test -d $srcdir/sysdeps) || {
|
|
||||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
|
||||||
echo " top-level gnome directory"
|
|
||||||
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
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
*.lo
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
if NEED_LIBGTOP
|
|
||||||
server_dir = server
|
|
||||||
else
|
|
||||||
server_dir =
|
|
||||||
endif
|
|
||||||
|
|
||||||
if HAVE_SYSDEPS
|
|
||||||
sysdeps_dir = sysdeps
|
|
||||||
else
|
|
||||||
sysdeps_dir =
|
|
||||||
endif
|
|
||||||
|
|
||||||
SUBDIRS = $(server_dir) $(sysdeps_dir) common
|
|
||||||
|
|
||||||
DIST_SUBDIRS = server sysdeps common
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
marshal.c
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
2000-11-26 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* glibtop-backend-private.h: Removed.
|
|
||||||
|
|
||||||
* backend-common.h: New files.
|
|
||||||
|
|
||||||
* backend-common.c (_open_common): Don't overwrite
|
|
||||||
`backend->_priv'.
|
|
||||||
|
|
||||||
2000-11-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Link libgtop_backend_common.la against
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la and
|
|
||||||
$(top_builddir)/lib/libgtop_server.la.
|
|
||||||
|
|
||||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* backend-sysdeps.c (LibGTopBackendInfo): Call this
|
|
||||||
`LibGTopBackendInfo_Common' when we don't use gmodule.
|
|
||||||
|
|
||||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
|
|
||||||
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
|
|
||||||
|
|
||||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
|
|
||||||
|
|
||||||
* libgtop-common.backend: New file.
|
|
||||||
|
|
||||||
* backend-common.c (glibtop_backend_common): Renamed to
|
|
||||||
`LibGTopBackendInfo'.
|
|
||||||
|
|
||||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Initial version of the "glibtop-backend-common" backend.
|
|
||||||
|
|
||||||
* backend-common.c: New file.
|
|
||||||
* glibtop-backend-private.h: New file.
|
|
||||||
* marshal.pl: New file. Automatically creates `marshal.c'.
|
|
||||||
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
INCLUDES = @INCLUDES@
|
|
||||||
|
|
||||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
|
||||||
|
|
||||||
if LIBGTOP_USE_GMODULE
|
|
||||||
backendlibdir = $(backenddir)
|
|
||||||
else
|
|
||||||
backendlibdir = $(libdir)
|
|
||||||
endif
|
|
||||||
|
|
||||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
|
||||||
|
|
||||||
backend_DATA = \
|
|
||||||
libgtop-common.backend
|
|
||||||
|
|
||||||
noinst_HEADERS = \
|
|
||||||
backend-common.h
|
|
||||||
|
|
||||||
backendlib_LTLIBRARIES = \
|
|
||||||
libgtop_backend_common.la
|
|
||||||
|
|
||||||
libgtop_backend_common_la_SOURCES = \
|
|
||||||
backend-common.c \
|
|
||||||
marshal.c
|
|
||||||
|
|
||||||
libgtop_backend_common_la_LDFLAGS = \
|
|
||||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
|
||||||
|
|
||||||
libgtop_backend_common_la_LIBADD = \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/lib/libgtop_server.la
|
|
||||||
|
|
||||||
BUILT_SOURCES = \
|
|
||||||
marshal.c
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
marshal.pl \
|
|
||||||
libgtop-common.backend
|
|
||||||
|
|
||||||
CLEANFILES = $(BUILT_SOURCES)
|
|
||||||
|
|
||||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
|
||||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
|
||||||
mv tmp-t marshal.c
|
|
||||||
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-common.h>
|
|
||||||
|
|
||||||
static int
|
|
||||||
_open_common (glibtop_server *, glibtop_backend *, u_int64_t, const char **);
|
|
||||||
|
|
||||||
static int
|
|
||||||
_close_common (glibtop_server *, glibtop_backend *, void *closure);
|
|
||||||
|
|
||||||
extern glibtop_call_vector glibtop_backend_common_call_vector;
|
|
||||||
|
|
||||||
#ifdef LIBGTOP_USE_GMODULE
|
|
||||||
glibtop_backend_info LibGTopBackendInfo = {
|
|
||||||
"glibtop-backend-common", _open_common, _close_common,
|
|
||||||
&glibtop_backend_common_call_vector
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
glibtop_backend_info LibGTopBackendInfo_Common = {
|
|
||||||
"glibtop-backend-common", _open_common, _close_common,
|
|
||||||
&glibtop_backend_common_call_vector
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int
|
|
||||||
_open_common (glibtop_server *server, glibtop_backend *backend,
|
|
||||||
u_int64_t features, const char **backend_args)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_close_common (glibtop_server *server, glibtop_backend *backend,
|
|
||||||
void *closure)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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_BACKEND_COMMON_H__
|
|
||||||
#define __GLIBTOP_BACKEND_COMMON_H__
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/global.h>
|
|
||||||
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
#include <glibtop/glibtop-backend.h>
|
|
||||||
#include <glibtop/glibtop-backend-info.h>
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
|
||||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
|
||||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
|
||||||
|
|
||||||
<libgtop:Backend>
|
|
||||||
<libgtop:Name>glibtop-backend-common</libgtop:Name>
|
|
||||||
<libgtop:Location>
|
|
||||||
<libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName>
|
|
||||||
<libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName>
|
|
||||||
</libgtop:Location>
|
|
||||||
</libgtop:Backend>
|
|
||||||
|
|
||||||
</libgtop:Backends>
|
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
require 'c_types.pl';
|
|
||||||
|
|
||||||
$[ = 1; # set array base to 1
|
|
||||||
$, = ' '; # set output field separator
|
|
||||||
$\ = "\n"; # set output record separator
|
|
||||||
|
|
||||||
$always_use_temp_storage = 1;
|
|
||||||
|
|
||||||
sub toupper {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/a-z/A-Z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tolower {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/A-Z/a-z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
print '/* marshal.c */';
|
|
||||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
|
||||||
print '';
|
|
||||||
|
|
||||||
print '#include <backend-common.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/sysdeps.h>';
|
|
||||||
print '#include <glibtop/union.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/call-vector.h>';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
$feature_count = 0;
|
|
||||||
|
|
||||||
while (<>) {
|
|
||||||
chop; # strip record separator
|
|
||||||
|
|
||||||
if (/^[^#]/) {
|
|
||||||
&output($_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub output {
|
|
||||||
local($line) = @_;
|
|
||||||
@line_fields = split(/\|/, $line, 9999);
|
|
||||||
$retval = $line_fields[1];
|
|
||||||
$feature = $line_fields[2];
|
|
||||||
$param_def = $line_fields[4];
|
|
||||||
|
|
||||||
$orig = $feature;
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
$space = $feature;
|
|
||||||
$space =~ s/./ /g;
|
|
||||||
|
|
||||||
$features{++$feature_count} = $orig;
|
|
||||||
|
|
||||||
return unless $orig =~ /^@/;
|
|
||||||
|
|
||||||
if ($retval eq 'retval') {
|
|
||||||
$retval_param = '&retval';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$retval = 'int';
|
|
||||||
}
|
|
||||||
elsif ($retval !~ /^void$/) {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$call_prefix = 'retval = ';
|
|
||||||
$call_prefix_space = ' ';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = '';
|
|
||||||
$prefix_space = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
|
||||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
|
||||||
}
|
|
||||||
|
|
||||||
$need_temp_storage = $always_use_temp_storage;
|
|
||||||
$first_param_name = '';
|
|
||||||
|
|
||||||
$call_param = '';
|
|
||||||
$param_decl = '';
|
|
||||||
$need_temp_len = 0;
|
|
||||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
|
||||||
for ($param = 1; $param <= $nr_params; $param++) {
|
|
||||||
$list = $params[$param];
|
|
||||||
$type = $params[$param];
|
|
||||||
$type =~ s/\(.*//;
|
|
||||||
$list =~ s/^.*\(//;
|
|
||||||
$list =~ s/\)$//;
|
|
||||||
$count = (@fields = split(/,/, $list, 9999));
|
|
||||||
for ($field = 1; $field <= $count; $field++) {
|
|
||||||
my $c_type = $typeinfo->{$type}->[1];
|
|
||||||
|
|
||||||
if ($first_param_name eq '') {
|
|
||||||
$first_param_name = $fields[$field];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$need_temp_storage = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($param_decl eq '') {
|
|
||||||
$param_decl = ",\n " . $space . ' ';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$param_decl = $param_decl . ', ';
|
|
||||||
}
|
|
||||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
|
||||||
$call_param = $call_param . ', ' . $fields[$field];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
|
||||||
} else {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
|
||||||
}
|
|
||||||
|
|
||||||
$func_decl = 'static '.$retval."\n";
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
|
||||||
$feature, $param_decl);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
|
||||||
$feature, $param_decl);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
|
||||||
$feature, 'glibtop_'.$feature, $param_decl);
|
|
||||||
} else {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
|
||||||
$feature, 'glibtop_'.$feature, $param_decl);
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
|
||||||
|
|
||||||
print $total_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
$call_vector_code = '';
|
|
||||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
|
||||||
$feature = $features{$nr};
|
|
||||||
|
|
||||||
if ($feature =~ /^@/) {
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
|
|
||||||
$call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature);
|
|
||||||
} else {
|
|
||||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print 'glibtop_call_vector glibtop_backend_common_call_vector = {';
|
|
||||||
print $call_vector_code;
|
|
||||||
print '};';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
marshal.c
|
|
||||||
demarshal.c
|
|
||||||
libgtop_server
|
|
||||||
command.h
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
2000-11-27 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* backend-server.c (backend_server_quark): New global variable.
|
|
||||||
(_open_server, _close_server): Use the quark.
|
|
||||||
* commands.c: Likewise.
|
|
||||||
|
|
||||||
2000-11-26 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* backend-server.h: New file.
|
|
||||||
(backend_server_private): New struct, formerly known
|
|
||||||
as glibtop_backend_private.
|
|
||||||
|
|
||||||
* glibtop-backend-private.h: Removed.
|
|
||||||
|
|
||||||
* backend-server.c: (_open_server): Use g_object_set_data()
|
|
||||||
to set add the backend_server_private data to the glibtop_backend,
|
|
||||||
don't override `backend->_priv'.
|
|
||||||
(_close_server): Use g_object_get_data() to get the data.
|
|
||||||
[FIXME: Use quarks directly.]
|
|
||||||
|
|
||||||
* read.c: (glibtop_read_i): Replaced the glibtop_server and
|
|
||||||
glibtop_backend arguments with backend_server_private.
|
|
||||||
* read_data.c: (glibtop_read_data_i): Likewise.
|
|
||||||
* write.c: (glibtop_write_i): Likewise.
|
|
||||||
|
|
||||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* backend-sysdeps.c (LibGTopBackendInfo): Call this
|
|
||||||
`LibGTopBackendInfo_Server' when we don't use gmodule.
|
|
||||||
|
|
||||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
|
|
||||||
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
|
|
||||||
|
|
||||||
2000-01-18 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* demarshal.pl: Only emit code for functions which are
|
|
||||||
really suid/sgid.
|
|
||||||
|
|
||||||
2000-01-13 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* write.c (glibtop_write_i): The buffer which we write is
|
|
||||||
now a `const'.
|
|
||||||
|
|
||||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Install everything except the server binary
|
|
||||||
in $(LIBGTOP_BACKEND_DIR).
|
|
||||||
|
|
||||||
* libgtop-server.backend: New file.
|
|
||||||
|
|
||||||
* backend-server.c (glibtop_backend_server): Renamed to
|
|
||||||
`LibGTopBackendInfo'.
|
|
||||||
|
|
||||||
2000-01-08 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* command.h.in (glibtop_response): New structure.
|
|
||||||
|
|
||||||
2000-01-02 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* command.pl: New file. Creates `command.h' from `command.h.in'.
|
|
||||||
* command.h.in: New file. Template file for `command.h'.
|
|
||||||
|
|
||||||
* io.c, version.c: New files. Copied here from `src/daemon'.
|
|
||||||
|
|
||||||
* demarshal.pl: New file. Automatically creates `demarshal.c'.
|
|
||||||
* demarshal.c: This automatically created file handles the
|
|
||||||
demarshalling in the libgtop_server.
|
|
||||||
|
|
||||||
* Makefile.am: Build the `libgtop_server' here.
|
|
||||||
* server.c, server.h: New files. Copied here from `src/daemon'.
|
|
||||||
|
|
||||||
2000-01-01 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Initial version of the "glibtop-backend-server" backend.
|
|
||||||
|
|
||||||
* command.c, read.c, read_data.c, write.c: New files. Moved here
|
|
||||||
from the `lib' directory.
|
|
||||||
|
|
||||||
* backend-server.c: New file.
|
|
||||||
* glibtop-backend-private.h: New file.
|
|
||||||
|
|
||||||
* marshal.pl: New file. Automatically creates `marshal.c'.
|
|
||||||
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
INCLUDES = @INCLUDES@ -D_BSD \
|
|
||||||
-DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
|
|
||||||
-DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
|
|
||||||
-DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
|
|
||||||
|
|
||||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
|
||||||
|
|
||||||
if LIBGTOP_USE_GMODULE
|
|
||||||
backendlibdir = $(backenddir)
|
|
||||||
else
|
|
||||||
backendlibdir = $(libdir)
|
|
||||||
endif
|
|
||||||
|
|
||||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
|
||||||
|
|
||||||
backend_DATA = \
|
|
||||||
libgtop-server.backend
|
|
||||||
|
|
||||||
noinst_HEADERS = \
|
|
||||||
backend-server.h
|
|
||||||
|
|
||||||
backendlib_LTLIBRARIES = \
|
|
||||||
libgtop_backend_server.la
|
|
||||||
|
|
||||||
bin_PROGRAMS = \
|
|
||||||
@server_programs@
|
|
||||||
|
|
||||||
EXTRA_PROGRAMS = \
|
|
||||||
libgtop_server
|
|
||||||
|
|
||||||
libgtop_backend_server_la_SOURCES = \
|
|
||||||
backend-server.c \
|
|
||||||
marshal.c \
|
|
||||||
command.c \
|
|
||||||
read.c \
|
|
||||||
read_data.c \
|
|
||||||
write.c
|
|
||||||
|
|
||||||
libgtop_backend_server_la_LDFLAGS = \
|
|
||||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
|
||||||
|
|
||||||
libgtop_server_SOURCES = \
|
|
||||||
server.c \
|
|
||||||
server.h \
|
|
||||||
demarshal.c \
|
|
||||||
version.c \
|
|
||||||
io.c
|
|
||||||
|
|
||||||
libgtop_server_LDADD = \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_suid_common.la \
|
|
||||||
@LIBSUPPORT@
|
|
||||||
|
|
||||||
if ENABLE_STATIC
|
|
||||||
libgtop_server_LDFLAGS = -static
|
|
||||||
endif
|
|
||||||
|
|
||||||
BUILT_SOURCES = \
|
|
||||||
marshal.c \
|
|
||||||
demarshal.c \
|
|
||||||
command.h
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
marshal.pl \
|
|
||||||
demarshal.pl \
|
|
||||||
command.pl \
|
|
||||||
command.h.in \
|
|
||||||
libgtop-server.backend
|
|
||||||
|
|
||||||
CLEANFILES = $(BUILT_SOURCES)
|
|
||||||
|
|
||||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
|
||||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
|
||||||
mv tmp-t marshal.c
|
|
||||||
|
|
||||||
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
|
||||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
|
|
||||||
mv tmp-t demarshal.c
|
|
||||||
|
|
||||||
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
|
||||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
|
|
||||||
mv tmp-t command.h
|
|
||||||
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-server.h>
|
|
||||||
|
|
||||||
static int
|
|
||||||
_open_server (glibtop_server *, glibtop_backend *, u_int64_t, const char **);
|
|
||||||
|
|
||||||
static int
|
|
||||||
_close_server (glibtop_server *, glibtop_backend *, void *);
|
|
||||||
|
|
||||||
extern glibtop_call_vector glibtop_backend_server_call_vector;
|
|
||||||
|
|
||||||
#ifdef LIBGTOP_USE_GMODULE
|
|
||||||
glibtop_backend_info LibGTopBackendInfo = {
|
|
||||||
"glibtop-backend-server", _open_server, _close_server,
|
|
||||||
&glibtop_backend_server_call_vector
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
glibtop_backend_info LibGTopBackendInfo_Server = {
|
|
||||||
"glibtop-backend-server", _open_server, _close_server,
|
|
||||||
&glibtop_backend_server_call_vector
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int
|
|
||||||
_open_server (glibtop_server *server, glibtop_backend *backend,
|
|
||||||
u_int64_t features, const char **backend_args)
|
|
||||||
{
|
|
||||||
backend_server_private *priv;
|
|
||||||
|
|
||||||
priv = glibtop_calloc_r (server, 1, sizeof (backend_server_private));
|
|
||||||
|
|
||||||
glibtop_backend_set_closure_data (backend, priv);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv);
|
|
||||||
|
|
||||||
fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (pipe (priv->input) || pipe (priv->output)) {
|
|
||||||
glibtop_warn_io_r (server, "cannot make a pipe");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
priv->pid = fork ();
|
|
||||||
|
|
||||||
if (priv->pid < 0) {
|
|
||||||
glibtop_warn_io_r (server, "fork failed");
|
|
||||||
return -1;
|
|
||||||
} else if (priv->pid == 0) {
|
|
||||||
close (0); close (1);
|
|
||||||
close (priv->input [0]);
|
|
||||||
close (priv->output [1]);
|
|
||||||
dup2 (priv->input [1], 1);
|
|
||||||
dup2 (priv->output [0], 0);
|
|
||||||
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
|
|
||||||
glibtop_error_io_r (server, "execl (%s)",
|
|
||||||
LIBGTOP_SERVER);
|
|
||||||
_exit (2);
|
|
||||||
}
|
|
||||||
|
|
||||||
close (priv->input [1]);
|
|
||||||
close (priv->output [0]);
|
|
||||||
|
|
||||||
glibtop_server_ref (server);
|
|
||||||
priv->server = server;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_close_server (glibtop_server *server, glibtop_backend *backend,
|
|
||||||
void *closure)
|
|
||||||
{
|
|
||||||
backend_server_private *priv = closure;
|
|
||||||
|
|
||||||
kill (priv->pid, SIGKILL);
|
|
||||||
close (priv->input [0]);
|
|
||||||
close (priv->output [1]);
|
|
||||||
|
|
||||||
glibtop_server_unref (priv->server);
|
|
||||||
|
|
||||||
priv->pid = 0;
|
|
||||||
|
|
||||||
g_free (priv);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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_BACKEND_COMMON_H__
|
|
||||||
#define __GLIBTOP_BACKEND_COMMON_H__
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/global.h>
|
|
||||||
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
#include <glibtop/glibtop-backend.h>
|
|
||||||
#include <glibtop/glibtop-backend-info.h>
|
|
||||||
|
|
||||||
typedef struct _backend_server_private backend_server_private;
|
|
||||||
|
|
||||||
struct _backend_server_private
|
|
||||||
{
|
|
||||||
u_int64_t flags;
|
|
||||||
int input [2]; /* Pipe client <- server */
|
|
||||||
int output [2]; /* Pipe client -> server */
|
|
||||||
pid_t pid; /* PID of the server */
|
|
||||||
|
|
||||||
glibtop_server *server;
|
|
||||||
};
|
|
||||||
|
|
||||||
void *
|
|
||||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
|
|
||||||
unsigned command, size_t send_size, const void *send_ptr,
|
|
||||||
size_t data_size, const void *data_ptr,
|
|
||||||
size_t recv_size, void *recv_ptr,
|
|
||||||
int *retval_ptr);
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf);
|
|
||||||
|
|
||||||
void *
|
|
||||||
glibtop_read_data_i (backend_server_private *priv);
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-server.h>
|
|
||||||
|
|
||||||
#include "command.h"
|
|
||||||
|
|
||||||
void *
|
|
||||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
|
|
||||||
unsigned command, size_t send_size, const void *send_buf,
|
|
||||||
size_t data_size, const void *data_buf,
|
|
||||||
size_t recv_size, void *recv_ptr,
|
|
||||||
int *retval_ptr)
|
|
||||||
{
|
|
||||||
glibtop_command cmnd;
|
|
||||||
glibtop_response resp;
|
|
||||||
#if 0
|
|
||||||
int retval;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memset (&cmnd, 0, sizeof (glibtop_command));
|
|
||||||
memset (&resp, 0, sizeof (glibtop_response));
|
|
||||||
|
|
||||||
cmnd.command = command;
|
|
||||||
|
|
||||||
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
|
|
||||||
* send it together with command, so we only need one system call instead
|
|
||||||
* of two. */
|
|
||||||
|
|
||||||
if (send_size <= _GLIBTOP_PARAM_SIZE) {
|
|
||||||
memcpy (cmnd.parameter, send_buf, send_size);
|
|
||||||
cmnd.param_size = send_size;
|
|
||||||
} else {
|
|
||||||
cmnd.send_size = send_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmnd.data_size = data_size;
|
|
||||||
|
|
||||||
glibtop_write_i (priv, sizeof (glibtop_command), &cmnd);
|
|
||||||
|
|
||||||
if (data_size) {
|
|
||||||
#ifdef SLAVE_DEBUG
|
|
||||||
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
|
|
||||||
#endif
|
|
||||||
glibtop_write_i (priv, data_size, data_buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
glibtop_read_i (priv, sizeof (glibtop_response), &resp);
|
|
||||||
|
|
||||||
#ifdef SLAVE_DEBUG
|
|
||||||
fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
|
|
||||||
resp.retval, resp.glibtop_errno,
|
|
||||||
(long) resp.recv_size, (long) resp.data_size,
|
|
||||||
recv_ptr, (long) recv_size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (retval_ptr)
|
|
||||||
*retval_ptr = resp.glibtop_errno;
|
|
||||||
|
|
||||||
if (resp.recv_size != recv_size) {
|
|
||||||
glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
|
|
||||||
(long) recv_size, (long) resp.recv_size);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (recv_ptr)
|
|
||||||
glibtop_read_i (priv, recv_size, recv_ptr);
|
|
||||||
|
|
||||||
if (resp.data_size) {
|
|
||||||
void *ptr = glibtop_malloc_r (server, resp.data_size);
|
|
||||||
|
|
||||||
glibtop_read_i (priv, resp.data_size, ptr);
|
|
||||||
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
@@AUTOGEN_COMMENT@@
|
|
||||||
|
|
||||||
/* 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/union.h>
|
|
||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
@@GLIBTOP_COMMAND_CONSTANTS@@
|
|
||||||
|
|
||||||
#define _GLIBTOP_PARAM_SIZE 16
|
|
||||||
|
|
||||||
typedef struct _glibtop_command glibtop_command;
|
|
||||||
typedef struct _glibtop_response glibtop_response;
|
|
||||||
|
|
||||||
struct _glibtop_command
|
|
||||||
{
|
|
||||||
u_int64_t command;
|
|
||||||
u_int64_t param_size, send_size, data_size;
|
|
||||||
char parameter [_GLIBTOP_PARAM_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _glibtop_response
|
|
||||||
{
|
|
||||||
int retval;
|
|
||||||
int glibtop_errno;
|
|
||||||
u_int64_t recv_size, data_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
require 'c_types.pl';
|
|
||||||
|
|
||||||
die "Usage: $0 features.def command.h.in" unless $#ARGV == 1;
|
|
||||||
|
|
||||||
$[ = 1; # set array base to 1
|
|
||||||
$, = ' '; # set output field separator
|
|
||||||
$\ = "\n"; # set output record separator
|
|
||||||
|
|
||||||
sub toupper {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/a-z/A-Z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tolower {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/A-Z/a-z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
$constants_decl_code = '';
|
|
||||||
|
|
||||||
open FEATURESDEF, $ARGV[1] or
|
|
||||||
die "open ($ARGV[1]): $!";
|
|
||||||
|
|
||||||
while (<FEATURESDEF>) {
|
|
||||||
chop; # strip record separator
|
|
||||||
|
|
||||||
if (/^[^\#]/) {
|
|
||||||
&parse_features_def ($_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close FEATURESDEF;
|
|
||||||
|
|
||||||
sub parse_features_def {
|
|
||||||
local($line) = @_;
|
|
||||||
@line_fields = split(/\|/, $line, 9999);
|
|
||||||
$retval = $line_fields[1];
|
|
||||||
$element_def = $line_fields[3];
|
|
||||||
$feature = $line_fields[2];
|
|
||||||
$param_def = $line_fields[4];
|
|
||||||
|
|
||||||
$orig = $feature;
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
$space = $feature;
|
|
||||||
$space =~ s/./ /g;
|
|
||||||
|
|
||||||
$constants_decl_code .= sprintf
|
|
||||||
(qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature),
|
|
||||||
++$feature_count);
|
|
||||||
|
|
||||||
$features{$feature_count} = $feature;
|
|
||||||
}
|
|
||||||
|
|
||||||
chop $constants_decl_code;
|
|
||||||
|
|
||||||
$auto_gen_comment = sprintf
|
|
||||||
(qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]);
|
|
||||||
|
|
||||||
open COMMAND, $ARGV[2] or
|
|
||||||
die "open ($ARGV[2]): $!";
|
|
||||||
|
|
||||||
while (<COMMAND>) {
|
|
||||||
chop;
|
|
||||||
|
|
||||||
s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/;
|
|
||||||
|
|
||||||
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
|
|
||||||
} continue {
|
|
||||||
print $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
close COMMAND;
|
|
||||||
@@ -1,386 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
require 'c_types.pl';
|
|
||||||
|
|
||||||
$[ = 1; # set array base to 1
|
|
||||||
$, = ' '; # set output field separator
|
|
||||||
$\ = "\n"; # set output record separator
|
|
||||||
|
|
||||||
$always_use_temp_storage = 0;
|
|
||||||
|
|
||||||
sub toupper {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/a-z/A-Z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tolower {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/A-Z/a-z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
print '/* demarshal.c */';
|
|
||||||
print "/* This is a generated file. Please modify `demarshal.pl' */";
|
|
||||||
print '';
|
|
||||||
|
|
||||||
print '#include <glibtop.h>';
|
|
||||||
print '#include <glibtop/open.h>';
|
|
||||||
print '#include <glibtop/xmalloc.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/sysdeps.h>';
|
|
||||||
print '#include <glibtop/union.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/backend.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop-backend-private.h>';
|
|
||||||
print '#include "server.h"';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
$feature_count = 0;
|
|
||||||
|
|
||||||
while (<>) {
|
|
||||||
chop; # strip record separator
|
|
||||||
|
|
||||||
if (/^[^\#]/) {
|
|
||||||
&output($_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub output {
|
|
||||||
local($line) = @_;
|
|
||||||
@line_fields = split(/\|/, $line, 9999);
|
|
||||||
$retval = $line_fields[1];
|
|
||||||
$element_def = $line_fields[3];
|
|
||||||
$feature = $line_fields[2];
|
|
||||||
$param_def = $line_fields[4];
|
|
||||||
|
|
||||||
return if $feature =~ /^@/;
|
|
||||||
$name = 'glibtop_'.$feature;
|
|
||||||
|
|
||||||
$orig = $feature;
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
$space = $feature;
|
|
||||||
$space =~ s/./ /g;
|
|
||||||
|
|
||||||
$features{++$feature_count} = $feature;
|
|
||||||
|
|
||||||
$orig_retval = $retval;
|
|
||||||
|
|
||||||
if ($retval eq 'retval') {
|
|
||||||
$retval_param = '&retval';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$retval = 'int';
|
|
||||||
} elsif ($retval !~ /^void$/) {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$call_prefix = 'retval = ';
|
|
||||||
$call_prefix_space = ' ';
|
|
||||||
} else {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = '';
|
|
||||||
$prefix_space = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
|
||||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
|
||||||
}
|
|
||||||
|
|
||||||
$need_temp_storage = $always_use_temp_storage;
|
|
||||||
$first_param_name = '';
|
|
||||||
$size_code = "\t/* send size */\n";
|
|
||||||
$size_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
|
||||||
|
|
||||||
$local_var_decl_code = '';
|
|
||||||
$local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n";
|
|
||||||
$local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n";
|
|
||||||
$local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n";
|
|
||||||
$local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n";
|
|
||||||
$local_var_decl_code .= sprintf
|
|
||||||
(qq[\tglibtop_%s %s;\n], $feature, $feature);
|
|
||||||
if ($retval !~ /^void$/) {
|
|
||||||
$local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
|
||||||
$retval, $retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
$init_local_var_code = "\t/* variable initialization */\n";
|
|
||||||
$init_local_var_code .= sprintf
|
|
||||||
(qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature);
|
|
||||||
$init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
|
||||||
$init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ".
|
|
||||||
"(char *) send_ptr;\n";
|
|
||||||
|
|
||||||
$demarshal_code = '';
|
|
||||||
|
|
||||||
$call_param = '';
|
|
||||||
$param_decl = '';
|
|
||||||
$need_temp_len = 0;
|
|
||||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
|
||||||
for ($param = 1; $param <= $nr_params; $param++) {
|
|
||||||
$list = $params[$param];
|
|
||||||
$type = $params[$param];
|
|
||||||
$type =~ s/\(.*//;
|
|
||||||
$list =~ s/^.*\(//;
|
|
||||||
$list =~ s/\)$//;
|
|
||||||
$count = (@fields = split(/,/, $list, 9999));
|
|
||||||
for ($field = 1; $field <= $count; $field++) {
|
|
||||||
my $c_type = $typeinfo->{$type}->[1];
|
|
||||||
|
|
||||||
if ($first_param_name eq '') {
|
|
||||||
$first_param_name = $fields[$field];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$need_temp_storage = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($param_decl eq '') {
|
|
||||||
$param_decl = ",\n " . $space . ' ';
|
|
||||||
} else {
|
|
||||||
$param_decl = $param_decl . ', ';
|
|
||||||
}
|
|
||||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
|
||||||
$call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field];
|
|
||||||
|
|
||||||
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$size_code .= sprintf ("sizeof (size_t)");
|
|
||||||
} else {
|
|
||||||
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
|
||||||
}
|
|
||||||
$size_code .= ";\n";
|
|
||||||
|
|
||||||
$local_var_decl_code .= sprintf
|
|
||||||
(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]);
|
|
||||||
$init_local_var_code .= sprintf
|
|
||||||
(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n],
|
|
||||||
$fields[$field], $c_type);
|
|
||||||
|
|
||||||
$demarshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
|
||||||
"(char *) send_ptr + _LIBGTOP_SEND_offset;\n";
|
|
||||||
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n");
|
|
||||||
$demarshal_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]);
|
|
||||||
$demarshal_code .= sprintf
|
|
||||||
(qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]);
|
|
||||||
$demarshal_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined $demarshal_funcs->{$type}) {
|
|
||||||
$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
|
||||||
} else {
|
|
||||||
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n",
|
|
||||||
$fields[$field], "sizeof ($c_type)");
|
|
||||||
}
|
|
||||||
|
|
||||||
$demarshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$demarshal_code .= sprintf ("sizeof (size_t)");
|
|
||||||
} else {
|
|
||||||
$demarshal_code .= sprintf ("sizeof (%s)", $c_type);
|
|
||||||
}
|
|
||||||
$demarshal_code .= ";\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!($demarshal_code eq '')) {
|
|
||||||
$demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n],
|
|
||||||
$demarshal_code);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$call_code = sprintf
|
|
||||||
("\tretval = glibtop_get_%s_p (server%s);\n",
|
|
||||||
$feature, $call_param);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$call_code = sprintf
|
|
||||||
("\tretval = glibtop_get_%s_p (server, &array%s);\n",
|
|
||||||
$feature, $call_param);
|
|
||||||
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$call_code = sprintf
|
|
||||||
("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n",
|
|
||||||
$feature, $feature, $call_param);
|
|
||||||
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
|
|
||||||
} else {
|
|
||||||
$call_code = sprintf
|
|
||||||
("\tretval = glibtop_get_%s_p (server, &%s%s);\n",
|
|
||||||
$feature, $feature, $call_param);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($orig_retval eq 'retval') {
|
|
||||||
$call_code .= sprintf
|
|
||||||
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]);
|
|
||||||
} else {
|
|
||||||
$call_code .= sprintf
|
|
||||||
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$size_code .= sprintf
|
|
||||||
(qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]);
|
|
||||||
|
|
||||||
$size_code .= "\t/* recv size */\n";
|
|
||||||
$size_code .= "\t_LIBGTOP_RECV_len = 0;\n";
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
|
|
||||||
$size_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
|
|
||||||
} else {
|
|
||||||
$size_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
|
|
||||||
}
|
|
||||||
$size_code .= "\n";
|
|
||||||
|
|
||||||
$size_code .= "\t/* recv buffer */\n";
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n";
|
|
||||||
} else {
|
|
||||||
$size_code .= "\t_LIBGTOP_RECV_buf = glibtop_malloc_r (server, _LIBGTOP_RECV_len);\n";
|
|
||||||
}
|
|
||||||
$size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n";
|
|
||||||
|
|
||||||
$recv_buf_code = '';
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$recv_buf_code = "\t/* write recv buffer */\n";
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$recv_buf_code = "\t/* write recv buffer */\n";
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
|
|
||||||
$feature, $feature);
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
|
|
||||||
} else {
|
|
||||||
$recv_buf_code = "\t/* write recv buffer */\n";
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
|
|
||||||
$feature, $feature);
|
|
||||||
$recv_buf_code .= sprintf
|
|
||||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
$recv_buf_code .= "\n";
|
|
||||||
$recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n";
|
|
||||||
$recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n";
|
|
||||||
|
|
||||||
if ($orig_retval eq 'pointer(string)') {
|
|
||||||
$need_temp_storage = 1;
|
|
||||||
$local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n";
|
|
||||||
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n";
|
|
||||||
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n";
|
|
||||||
$local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n";
|
|
||||||
$local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
|
|
||||||
|
|
||||||
$recv_buf_code .= "\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n";
|
|
||||||
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n";
|
|
||||||
$recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
|
||||||
$recv_buf_code .= "\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_base = glibtop_malloc_r (server, _LIBGTOP_TEMP_len);";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n";
|
|
||||||
$recv_buf_code .= "\n";
|
|
||||||
$recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
|
|
||||||
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
|
|
||||||
$recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
|
|
||||||
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
|
||||||
$recv_buf_code .= "\t}\n\n";
|
|
||||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n";
|
|
||||||
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
|
|
||||||
$recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n";
|
|
||||||
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
|
||||||
$recv_buf_code .= "\t}\n\n";
|
|
||||||
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
|
|
||||||
$recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n";
|
|
||||||
$recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n";
|
|
||||||
$recv_buf_code .= "\t}\n";
|
|
||||||
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$recv_buf_code .= "\n";
|
|
||||||
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
|
|
||||||
$recv_buf_code .= "\t\t*recv_data_ptr = retval;\n";
|
|
||||||
$recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n";
|
|
||||||
$recv_buf_code .= "\t}\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($need_temp_storage) {
|
|
||||||
$local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n";
|
|
||||||
$local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n";
|
|
||||||
$local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n";
|
|
||||||
$local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n";
|
|
||||||
|
|
||||||
$init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
|
||||||
$init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n";
|
|
||||||
$init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ".
|
|
||||||
"(char *) data_ptr;\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$func_decl_code = sprintf
|
|
||||||
(qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature);
|
|
||||||
|
|
||||||
if (!($call_code eq '')) {
|
|
||||||
$call_code .= "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$func_body_code = sprintf
|
|
||||||
(qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code);
|
|
||||||
|
|
||||||
$total_code = sprintf
|
|
||||||
(qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n],
|
|
||||||
$func_decl_code, $local_var_decl_code, $init_local_var_code,
|
|
||||||
$func_body_code);
|
|
||||||
|
|
||||||
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
|
|
||||||
&toupper($feature), $total_code,
|
|
||||||
&toupper($feature));
|
|
||||||
|
|
||||||
print $total_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
$func_decl_code = sprintf
|
|
||||||
(qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]);
|
|
||||||
|
|
||||||
$switch_body_code = '';
|
|
||||||
|
|
||||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
|
||||||
$feature = $features{$nr};
|
|
||||||
|
|
||||||
$switch_body_code .= sprintf
|
|
||||||
(qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n],
|
|
||||||
&toupper ($feature), &toupper ($feature), $feature, &toupper ($feature));
|
|
||||||
}
|
|
||||||
|
|
||||||
$switch_code = sprintf
|
|
||||||
(qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code);
|
|
||||||
|
|
||||||
$total_code = sprintf
|
|
||||||
(qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code);
|
|
||||||
|
|
||||||
print $total_code;
|
|
||||||
|
|
||||||
1;
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 "server.h"
|
|
||||||
|
|
||||||
void
|
|
||||||
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
|
||||||
const void *data_ptr)
|
|
||||||
{
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Really writing %d bytes.\n",
|
|
||||||
sizeof (glibtop_response));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (s == 0) {
|
|
||||||
if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0)
|
|
||||||
glibtop_warn_io ("write");
|
|
||||||
} else {
|
|
||||||
if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0)
|
|
||||||
glibtop_warn_io ("send");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (resp->recv_size) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Writing %ld bytes of data.\n",
|
|
||||||
(long) resp->recv_size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (s == 0) {
|
|
||||||
if (write (1, recv_ptr, resp->recv_size) < 0)
|
|
||||||
glibtop_warn_io ("write");
|
|
||||||
} else {
|
|
||||||
if (send (s, recv_ptr, resp->recv_size, 0) < 0)
|
|
||||||
glibtop_warn_io ("send");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (resp->data_size) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Writing %ld bytes of extra data.\n",
|
|
||||||
(long) resp->data_size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (s == 0) {
|
|
||||||
if (write (1, data_ptr, resp->data_size) < 0)
|
|
||||||
glibtop_warn_io ("write");
|
|
||||||
} else {
|
|
||||||
if (send (s, data_ptr, resp->data_size, 0) < 0)
|
|
||||||
glibtop_warn_io ("send");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
do_read (int s, void *ptr, size_t total_size)
|
|
||||||
{
|
|
||||||
int nread;
|
|
||||||
char *tmp_ptr;
|
|
||||||
size_t already_read = 0, remaining = total_size;
|
|
||||||
|
|
||||||
while (already_read < total_size) {
|
|
||||||
if (s)
|
|
||||||
nread = recv (s, ptr, remaining, 0);
|
|
||||||
else
|
|
||||||
nread = read (0, ptr, remaining);
|
|
||||||
|
|
||||||
if ((already_read == 0) && (nread == 0)) {
|
|
||||||
glibtop_warn ("pid %d received eof.", getpid ());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread <= 0) {
|
|
||||||
glibtop_warn_io ("recv");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
already_read += nread;
|
|
||||||
remaining -= nread;
|
|
||||||
/* (char *) ptr += nread; */
|
|
||||||
tmp_ptr = ptr;
|
|
||||||
tmp_ptr += nread;
|
|
||||||
ptr = tmp_ptr;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "READ (%d): %d - %d - %d\n",
|
|
||||||
nread, already_read, remaining, total_size);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return already_read;
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
|
||||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
|
||||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
|
||||||
|
|
||||||
<libgtop:Backend>
|
|
||||||
<libgtop:Name>glibtop-backend-server</libgtop:Name>
|
|
||||||
<libgtop:Location>
|
|
||||||
<libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName>
|
|
||||||
<libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName>
|
|
||||||
</libgtop:Location>
|
|
||||||
</libgtop:Backend>
|
|
||||||
|
|
||||||
</libgtop:Backends>
|
|
||||||
@@ -1,305 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
require 'c_types.pl';
|
|
||||||
|
|
||||||
$[ = 1; # set array base to 1
|
|
||||||
$, = ' '; # set output field separator
|
|
||||||
$\ = "\n"; # set output record separator
|
|
||||||
|
|
||||||
$always_use_temp_storage = 1;
|
|
||||||
|
|
||||||
sub toupper {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/a-z/A-Z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tolower {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/A-Z/a-z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
print '/* marshal.c */';
|
|
||||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
|
||||||
print '';
|
|
||||||
|
|
||||||
print '#include <backend-server.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/sysdeps.h>';
|
|
||||||
print '#include <glibtop/union.h>';
|
|
||||||
print '';
|
|
||||||
print '#include "command.h"';
|
|
||||||
print '#include <glibtop/call-vector.h>';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
$feature_count = 0;
|
|
||||||
|
|
||||||
while (<>) {
|
|
||||||
chop; # strip record separator
|
|
||||||
|
|
||||||
if (/^[^#]/) {
|
|
||||||
&output($_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub output {
|
|
||||||
local($line) = @_;
|
|
||||||
@line_fields = split(/\|/, $line, 9999);
|
|
||||||
$retval = $line_fields[1];
|
|
||||||
$feature = $line_fields[2];
|
|
||||||
$param_def = $line_fields[4];
|
|
||||||
|
|
||||||
$orig = $feature;
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
$space = $feature;
|
|
||||||
$space =~ s/./ /g;
|
|
||||||
|
|
||||||
$features{++$feature_count} = $orig;
|
|
||||||
return if $orig =~ /^@/;
|
|
||||||
|
|
||||||
$orig_retval = $retval;
|
|
||||||
if ($retval eq 'retval') {
|
|
||||||
$retval_param = '&retval';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$retval = 'int';
|
|
||||||
}
|
|
||||||
elsif ($retval !~ /^void$/) {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$call_prefix = 'retval = ';
|
|
||||||
$call_prefix_space = ' ';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = '';
|
|
||||||
$prefix_space = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
|
||||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
|
||||||
}
|
|
||||||
|
|
||||||
$need_temp_storage = $always_use_temp_storage;
|
|
||||||
$local_var_init_code = "\t/* variable initialization */\n";
|
|
||||||
$local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
|
||||||
$local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
|
||||||
$local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
|
||||||
$local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ".
|
|
||||||
"(char *) _LIBGTOP_SEND_buf;\n";
|
|
||||||
$marshal_code = "\t/* marshal start */\n";
|
|
||||||
$marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
|
|
||||||
$first_param_name = '';
|
|
||||||
$size_code = '';
|
|
||||||
|
|
||||||
$call_param = '';
|
|
||||||
$param_decl = '';
|
|
||||||
$need_temp_len = 0;
|
|
||||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
|
||||||
for ($param = 1; $param <= $nr_params; $param++) {
|
|
||||||
$list = $params[$param];
|
|
||||||
$type = $params[$param];
|
|
||||||
$type =~ s/\(.*//;
|
|
||||||
$list =~ s/^.*\(//;
|
|
||||||
$list =~ s/\)$//;
|
|
||||||
$count = (@fields = split(/,/, $list, 9999));
|
|
||||||
for ($field = 1; $field <= $count; $field++) {
|
|
||||||
my $c_type = $typeinfo->{$type}->[1];
|
|
||||||
|
|
||||||
if ($first_param_name eq '') {
|
|
||||||
$first_param_name = $fields[$field];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$need_temp_storage = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($param_decl eq '') {
|
|
||||||
$param_decl = ",\n " . $space . ' ';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$param_decl = $param_decl . ', ';
|
|
||||||
}
|
|
||||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
|
||||||
$call_param = $call_param . ', ' . $fields[$field];
|
|
||||||
|
|
||||||
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$size_code .= sprintf ("sizeof (size_t)");
|
|
||||||
} else {
|
|
||||||
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
|
||||||
}
|
|
||||||
$size_code .= ";\n";
|
|
||||||
|
|
||||||
if (defined $sizeof_funcs->{$type}) {
|
|
||||||
$size_code .= "\t_LIBGTOP_DATA_len += ";
|
|
||||||
$size_code .= $sizeof_funcs->{$type}->($fields[$field]);
|
|
||||||
$size_code .= ";\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
|
||||||
"(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
|
|
||||||
|
|
||||||
if (defined $marshal_funcs->{$type}) {
|
|
||||||
$marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
|
||||||
} else {
|
|
||||||
$marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
|
|
||||||
'&'.$fields[$field], "sizeof ($c_type)");
|
|
||||||
}
|
|
||||||
|
|
||||||
$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$marshal_code .= sprintf ("sizeof (size_t)");
|
|
||||||
} else {
|
|
||||||
$marshal_code .= sprintf ("sizeof (%s)", $c_type);
|
|
||||||
}
|
|
||||||
$marshal_code .= ";\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$local_var_code = "";
|
|
||||||
$local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
|
|
||||||
$local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
|
|
||||||
if ($need_temp_len) {
|
|
||||||
$local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
|
|
||||||
}
|
|
||||||
$local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
|
|
||||||
$local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
|
|
||||||
if ($retval !~ /^void$/) {
|
|
||||||
$local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
|
||||||
$retval, $retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_code = '';
|
|
||||||
|
|
||||||
$send_buf_code = "\t/* send buffer */\n";
|
|
||||||
$send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
|
|
||||||
if ($need_temp_storage) {
|
|
||||||
$send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)";
|
|
||||||
} else {
|
|
||||||
$send_buf_code .= '(void *) &'.$first_param_name;
|
|
||||||
}
|
|
||||||
$send_buf_code .= ";\n\n";
|
|
||||||
|
|
||||||
$send_buf_code .= "\t/* data buffer */\n";
|
|
||||||
$send_buf_code .= "\t_LIBGTOP_DATA_buf = ";
|
|
||||||
if ($need_temp_storage) {
|
|
||||||
$send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)";
|
|
||||||
} else {
|
|
||||||
$send_buf_code .= 'NULL';
|
|
||||||
}
|
|
||||||
$send_buf_code .= ";\n";
|
|
||||||
$send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n";
|
|
||||||
|
|
||||||
$call_code = '';
|
|
||||||
$call_code .= sprintf ("\t%sglibtop_call_i (server, closure, GLIBTOP_CMND_%s,\n",
|
|
||||||
$call_prefix, &toupper($feature));
|
|
||||||
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
|
|
||||||
"_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf");
|
|
||||||
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
|
|
||||||
"_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf");
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n",
|
|
||||||
$call_prefix_space);
|
|
||||||
} else {
|
|
||||||
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n",
|
|
||||||
$call_prefix_space, $feature);
|
|
||||||
}
|
|
||||||
$call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param);
|
|
||||||
|
|
||||||
if ($need_temp_storage) {
|
|
||||||
$send_buf_free_code = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n";
|
|
||||||
$send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n";
|
|
||||||
} else {
|
|
||||||
$send_buf_free_code = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!($size_code eq '')) {
|
|
||||||
$size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($orig_retval eq 'pointer(string)') {
|
|
||||||
$call_code .= "\n";
|
|
||||||
$local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n";
|
|
||||||
$local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
|
|
||||||
$local_var_code .= "\tint i;\n";
|
|
||||||
$call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n";
|
|
||||||
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n";
|
|
||||||
$call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n";
|
|
||||||
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n";
|
|
||||||
$call_code .= "\tfor (i = 0; i < array->number; i++)\n";
|
|
||||||
$call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
|
|
||||||
$call_code .= "\tptrlist [array->number] = NULL;\n\n";
|
|
||||||
$call_code .= "\tglibtop_free_r (server, retval);\n";
|
|
||||||
$call_code .= "\tretval = ptrlist;\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
|
|
||||||
$size_code, $send_buf_code, $marshal_code,
|
|
||||||
$call_code, $send_buf_free_code);
|
|
||||||
|
|
||||||
$return_code = '';
|
|
||||||
if ($retval !~ /^void$/) {
|
|
||||||
$return_code .= "\treturn retval;\n";
|
|
||||||
} else {
|
|
||||||
$return_code .= "\treturn;\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_code .= $return_code;
|
|
||||||
|
|
||||||
$func_decl = 'static '.$retval."\n";
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
|
||||||
$feature, $param_decl);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
|
||||||
$feature, $param_decl);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
|
||||||
$feature, 'glibtop_'.$feature, $param_decl);
|
|
||||||
} else {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
|
||||||
$feature, 'glibtop_'.$feature, $param_decl);
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
|
|
||||||
$local_var_code, $local_var_init_code,
|
|
||||||
$total_code);
|
|
||||||
|
|
||||||
|
|
||||||
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
|
|
||||||
&toupper($feature), $total_code,
|
|
||||||
&toupper($feature));
|
|
||||||
|
|
||||||
print $total_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
$call_vector_code = '';
|
|
||||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
|
||||||
$feature = $features{$nr};
|
|
||||||
|
|
||||||
$orig = $feature;
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
|
|
||||||
if ($orig =~ /^@/) {
|
|
||||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
|
||||||
} else {
|
|
||||||
$call_vector_code .= sprintf
|
|
||||||
(qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
|
|
||||||
&toupper($feature), $feature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
|
|
||||||
print $call_vector_code;
|
|
||||||
print '};';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-server.h>
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
|
|
||||||
size, priv->input [0]);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = read (priv->input [0], buf, size);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
glibtop_error_io_r (priv->server, "read %d bytes", size);
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-server.h>
|
|
||||||
|
|
||||||
void *
|
|
||||||
glibtop_read_data_i (backend_server_private *priv)
|
|
||||||
{
|
|
||||||
size_t size;
|
|
||||||
void *ptr;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = read (priv->input [0], (void *)&size, sizeof (size_t));
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
glibtop_error_io_r (priv->server, "read data size");
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!size) return NULL;
|
|
||||||
|
|
||||||
ptr = glibtop_malloc_r (priv->server, size);
|
|
||||||
|
|
||||||
ret = read (priv->input [0], ptr, size);
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
glibtop_error_io_r (priv->server, "read data %d bytes");
|
|
||||||
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
@@ -1,190 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 "server.h"
|
|
||||||
|
|
||||||
static glibtop _glibtop_global_server;
|
|
||||||
glibtop *glibtop_global_server = &_glibtop_global_server;
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/union.h>
|
|
||||||
#include <glibtop/sysdeps.h>
|
|
||||||
|
|
||||||
#include <sys/utsname.h>
|
|
||||||
|
|
||||||
const unsigned long glibtop_server_features =
|
|
||||||
GLIBTOP_SUID_CPU +
|
|
||||||
GLIBTOP_SUID_MEM +
|
|
||||||
GLIBTOP_SUID_SWAP +
|
|
||||||
GLIBTOP_SUID_UPTIME +
|
|
||||||
GLIBTOP_SUID_LOADAVG +
|
|
||||||
GLIBTOP_SUID_SHM_LIMITS +
|
|
||||||
GLIBTOP_SUID_MSG_LIMITS +
|
|
||||||
GLIBTOP_SUID_SEM_LIMITS +
|
|
||||||
GLIBTOP_SUID_PROCLIST +
|
|
||||||
GLIBTOP_SUID_PROC_STATE +
|
|
||||||
GLIBTOP_SUID_PROC_UID +
|
|
||||||
GLIBTOP_SUID_PROC_MEM +
|
|
||||||
GLIBTOP_SUID_PROC_TIME +
|
|
||||||
GLIBTOP_SUID_PROC_SIGNAL +
|
|
||||||
GLIBTOP_SUID_PROC_KERNEL +
|
|
||||||
GLIBTOP_SUID_PROC_SEGMENT +
|
|
||||||
GLIBTOP_SUID_PROC_ARGS +
|
|
||||||
GLIBTOP_SUID_PROC_MAP +
|
|
||||||
GLIBTOP_SUID_NETINFO +
|
|
||||||
GLIBTOP_SUID_NETLOAD +
|
|
||||||
GLIBTOP_SUID_INTERFACE_NAMES +
|
|
||||||
GLIBTOP_SUID_PPP;
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
struct utsname uts;
|
|
||||||
int uid, euid, gid, egid;
|
|
||||||
glibtop *server;
|
|
||||||
|
|
||||||
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
|
|
||||||
|
|
||||||
uid = getuid (); euid = geteuid ();
|
|
||||||
gid = getgid (); egid = getegid ();
|
|
||||||
|
|
||||||
if (uname (&uts) < 0) _exit (1);
|
|
||||||
|
|
||||||
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
|
|
||||||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
|
|
||||||
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
|
|
||||||
fprintf (stderr, "Can only run on %s %s %s\n",
|
|
||||||
LIBGTOP_COMPILE_SYSTEM,
|
|
||||||
LIBGTOP_COMPILE_RELEASE,
|
|
||||||
LIBGTOP_COMPILE_MACHINE);
|
|
||||||
_exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
server = glibtop_global_server;
|
|
||||||
|
|
||||||
if (!server->_priv)
|
|
||||||
server->_priv = glibtop_calloc_r
|
|
||||||
(server, 1, sizeof (glibtop_server_private));
|
|
||||||
|
|
||||||
glibtop_init_p (server, 0, 0);
|
|
||||||
|
|
||||||
if (setreuid (euid, uid)) _exit (1);
|
|
||||||
|
|
||||||
if (setregid (egid, gid)) _exit (1);
|
|
||||||
|
|
||||||
/* !!! END OF SUID ROOT PART !!! */
|
|
||||||
|
|
||||||
handle_slave_connection (0, 0);
|
|
||||||
|
|
||||||
_exit (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
handle_slave_connection (int input, int output)
|
|
||||||
{
|
|
||||||
glibtop_command _cmnd, *cmnd = &_cmnd;
|
|
||||||
glibtop *server = glibtop_global_server;
|
|
||||||
|
|
||||||
// glibtop_send_version_i (glibtop_global_server, output);
|
|
||||||
|
|
||||||
while (do_read (input, cmnd, sizeof (glibtop_command))) {
|
|
||||||
size_t recv_size = 0, send_size = 0, recv_data_size = 0;
|
|
||||||
void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL;
|
|
||||||
char parameter [BUFSIZ];
|
|
||||||
int retval, func_retval;
|
|
||||||
glibtop_response resp;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Slave %d received command "
|
|
||||||
"%ld from client.\n", getpid (), (long) cmnd->command);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (cmnd->send_size >= BUFSIZ)
|
|
||||||
glibtop_error ("Client sent %d bytes, but buffer is %d",
|
|
||||||
cmnd->send_size, BUFSIZ);
|
|
||||||
else if (cmnd->param_size >= BUFSIZ)
|
|
||||||
glibtop_error ("Client sent %d bytes, but buffer is %d",
|
|
||||||
cmnd->param_size, BUFSIZ);
|
|
||||||
|
|
||||||
memset (parameter, 0, sizeof (parameter));
|
|
||||||
|
|
||||||
if (cmnd->send_size) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Client has %d bytes of data.\n",
|
|
||||||
cmnd->send_size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
send_size = cmnd->send_size;
|
|
||||||
do_read (input, parameter, send_size);
|
|
||||||
} else if (cmnd->param_size) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Client has %d bytes of parameter data.\n",
|
|
||||||
cmnd->param_size);
|
|
||||||
#endif
|
|
||||||
send_size = cmnd->param_size;
|
|
||||||
memcpy (parameter, cmnd->parameter, send_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cmnd->data_size) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n",
|
|
||||||
cmnd->data_size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
data_ptr = glibtop_malloc_r (server, cmnd->data_size);
|
|
||||||
do_read (input, data_ptr, cmnd->data_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
retval = glibtop_demarshal_func_i (server, NULL,
|
|
||||||
cmnd->command,
|
|
||||||
parameter, send_size,
|
|
||||||
data_ptr, cmnd->data_size,
|
|
||||||
&recv_ptr, &recv_size,
|
|
||||||
&recv_data_ptr, &recv_data_size,
|
|
||||||
&func_retval);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "Retval %d / %d - %p - %d\n",
|
|
||||||
retval, func_retval, recv_ptr, recv_size);
|
|
||||||
|
|
||||||
if (recv_data_size) {
|
|
||||||
fprintf (stderr, "Returning %d bytes of data from %p.\n",
|
|
||||||
recv_data_size, recv_data_ptr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memset (&resp, 0, sizeof (glibtop_response));
|
|
||||||
|
|
||||||
resp.retval = retval;
|
|
||||||
resp.glibtop_errno = func_retval;
|
|
||||||
resp.recv_size = recv_size;
|
|
||||||
resp.data_size = recv_data_size;
|
|
||||||
|
|
||||||
do_output (output, &resp, recv_ptr, recv_data_ptr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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_DAEMON_H__
|
|
||||||
#define __GLIBTOP_DAEMON_H__
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/error.h>
|
|
||||||
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/union.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
#include <glibtop/parameter.h>
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <syslog.h>
|
|
||||||
|
|
||||||
#include <glibtop/backend.h>
|
|
||||||
#include <glibtop-backend-private.h>
|
|
||||||
|
|
||||||
#include "command.h"
|
|
||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
/* Some don't have LOG_PERROR */
|
|
||||||
#ifndef LOG_PERROR
|
|
||||||
#define LOG_PERROR 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
|
|
||||||
|
|
||||||
#if defined(HAVE_GETDTABLESIZE)
|
|
||||||
#define GET_MAX_FDS() getdtablesize()
|
|
||||||
#else
|
|
||||||
/* Fallthrough case - please add other #elif cases above
|
|
||||||
for different OS's as necessary */
|
|
||||||
#define GET_MAX_FDS() 256
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
|
||||||
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
|
||||||
const void *data_ptr);
|
|
||||||
|
|
||||||
int
|
|
||||||
do_read (int s, void *ptr, size_t total_size);
|
|
||||||
|
|
||||||
void
|
|
||||||
handle_slave_connection (int input, int output);
|
|
||||||
|
|
||||||
int
|
|
||||||
glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr);
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_send_version_i (glibtop *server, int fd);
|
|
||||||
|
|
||||||
extern int enable_debug;
|
|
||||||
extern int verbose_output;
|
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 "server.h"
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_send_version_i (glibtop *server, int fd)
|
|
||||||
{
|
|
||||||
char buffer [BUFSIZ];
|
|
||||||
size_t size;
|
|
||||||
|
|
||||||
sprintf (buffer, LIBGTOP_VERSION_STRING,
|
|
||||||
LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
|
|
||||||
sizeof (glibtop_command),
|
|
||||||
sizeof (glibtop_response),
|
|
||||||
sizeof (glibtop_union),
|
|
||||||
sizeof (glibtop_sysdeps));
|
|
||||||
|
|
||||||
size = strlen (buffer) + 1;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "SERVER ID: |%s|\n", buffer);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (fd == 0) {
|
|
||||||
if (write (1, (const void *) &size, sizeof (size)) < 0)
|
|
||||||
glibtop_warn_io_r (server, "write");
|
|
||||||
} else {
|
|
||||||
if (send (fd, (const void *) &size, sizeof (size), 0) < 0)
|
|
||||||
glibtop_warn_io_r (server, "send");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fd == 0) {
|
|
||||||
if (write (1, (const void *) buffer, size) < 0)
|
|
||||||
glibtop_warn_io_r (server, "write");
|
|
||||||
} else {
|
|
||||||
if (send (fd, (const void *) buffer, size, 0) < 0)
|
|
||||||
glibtop_warn_io_r (server, "send");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-server.h>
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (size == 0) return;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = write (priv->output [1], buf, size);
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
glibtop_error_io_r (priv->server, "write %d bytes", size);
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
marshal.c
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
2000-11-26 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* glibtop-backend-private.h: Removed.
|
|
||||||
|
|
||||||
* backend-sysdeps.h: New files.
|
|
||||||
|
|
||||||
* backend-sysdeps.c (_open_sysdeps): Don't overwrite
|
|
||||||
`backend->_priv'.
|
|
||||||
|
|
||||||
2000-11-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Link libgtop_backend_sysdeps.la against
|
|
||||||
$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and
|
|
||||||
$(top_builddir)/lib/libgtop_server.la.
|
|
||||||
|
|
||||||
* libgtop-sysdeps.backend: Removed the ExtraLibs section.
|
|
||||||
|
|
||||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* backend-sysdeps.c (LibGTopBackendInfo): Call this
|
|
||||||
`LibGTopBackendInfo_Sysdeps' when we don't use gmodule.
|
|
||||||
|
|
||||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
|
|
||||||
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
|
|
||||||
|
|
||||||
2000-01-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* libgtop-sysdeps.backend: Added "ExtraLibs" section to
|
|
||||||
load `-lgtop_sysdeps'.
|
|
||||||
|
|
||||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
|
|
||||||
|
|
||||||
* libgtop-sysdeps.backend: New file.
|
|
||||||
|
|
||||||
* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to
|
|
||||||
`LibGTopBackendInfo'.
|
|
||||||
|
|
||||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* marshal.pl: Create the `_glibtop_init_hook_s' as well.
|
|
||||||
|
|
||||||
* marshal.pl: Don't create code for things which are now
|
|
||||||
in the new `glibtop-backend-common' backend.
|
|
||||||
|
|
||||||
2000-01-02 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* marshal.pl: New file. Automatically creates `marshal.c'.
|
|
||||||
* call-vector.c: Removed.
|
|
||||||
|
|
||||||
2000-01-01 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
Initial version of the "glibtop-backend-sysdeps" backend.
|
|
||||||
|
|
||||||
* backend-sysdeps.c: New file.
|
|
||||||
* glibtop-backend-private.h: New file.
|
|
||||||
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
INCLUDES = @INCLUDES@
|
|
||||||
|
|
||||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
|
||||||
|
|
||||||
if LIBGTOP_USE_GMODULE
|
|
||||||
backendlibdir = $(backenddir)
|
|
||||||
else
|
|
||||||
backendlibdir = $(libdir)
|
|
||||||
endif
|
|
||||||
|
|
||||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
|
||||||
|
|
||||||
backend_DATA = \
|
|
||||||
libgtop-sysdeps.backend
|
|
||||||
|
|
||||||
noinst_HEADERS = \
|
|
||||||
backend-sysdeps.h
|
|
||||||
|
|
||||||
backendlib_LTLIBRARIES = \
|
|
||||||
libgtop_backend_sysdeps.la
|
|
||||||
|
|
||||||
libgtop_backend_sysdeps_la_SOURCES = \
|
|
||||||
backend-sysdeps.c \
|
|
||||||
marshal.c
|
|
||||||
|
|
||||||
libgtop_backend_sysdeps_la_LDFLAGS = \
|
|
||||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
|
||||||
|
|
||||||
libgtop_backend_sysdeps_la_LIBADD = \
|
|
||||||
$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la
|
|
||||||
$(top_builddir)/lib/libgtop_server.la
|
|
||||||
|
|
||||||
BUILT_SOURCES = \
|
|
||||||
marshal.c
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
marshal.pl \
|
|
||||||
libgtop-sysdeps.backend
|
|
||||||
|
|
||||||
CLEANFILES = $(BUILT_SOURCES)
|
|
||||||
|
|
||||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
|
||||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
|
||||||
mv tmp-t marshal.c
|
|
||||||
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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 <backend-sysdeps.h>
|
|
||||||
|
|
||||||
static int
|
|
||||||
_open_sysdeps (glibtop_server *, glibtop_backend *, u_int64_t, const char **);
|
|
||||||
|
|
||||||
static int
|
|
||||||
_close_sysdeps (glibtop_server *, glibtop_backend *, void *);
|
|
||||||
|
|
||||||
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
|
|
||||||
|
|
||||||
#ifdef LIBGTOP_USE_GMODULE
|
|
||||||
glibtop_backend_info LibGTopBackendInfo = {
|
|
||||||
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
|
|
||||||
&glibtop_backend_sysdeps_call_vector
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
glibtop_backend_info LibGTopBackendInfo_Sysdeps = {
|
|
||||||
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
|
|
||||||
&glibtop_backend_sysdeps_call_vector
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int
|
|
||||||
_open_sysdeps (glibtop_server *server, glibtop_backend *backend,
|
|
||||||
u_int64_t features, const char **backend_args)
|
|
||||||
{
|
|
||||||
glibtop_init_func_t *init_fkt;
|
|
||||||
|
|
||||||
/* Do the initialization, but only if not already initialized. */
|
|
||||||
|
|
||||||
if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
|
|
||||||
glibtop_open_s (server, "glibtop", features, 0);
|
|
||||||
|
|
||||||
for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
|
|
||||||
(*init_fkt) (server);
|
|
||||||
|
|
||||||
server->info->sysdeps.pointer_size = sizeof (void*)*8;
|
|
||||||
|
|
||||||
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_close_sysdeps (glibtop_server *server, glibtop_backend *backend,
|
|
||||||
void *closure)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
||||||
|
|
||||||
/* $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_BACKEND_SYSDEPS_H__
|
|
||||||
#define __GLIBTOP_BACKEND_SYSDEPS_H__
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/global.h>
|
|
||||||
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
#include <glibtop/glibtop-backend.h>
|
|
||||||
#include <glibtop/glibtop-backend-info.h>
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
|
||||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
|
||||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
|
||||||
|
|
||||||
<libgtop:Backend>
|
|
||||||
<libgtop:Name>glibtop-backend-sysdeps</libgtop:Name>
|
|
||||||
<libgtop:Location>
|
|
||||||
<libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName>
|
|
||||||
<libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName>
|
|
||||||
</libgtop:Location>
|
|
||||||
</libgtop:Backend>
|
|
||||||
|
|
||||||
</libgtop:Backends>
|
|
||||||
@@ -1,195 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
require 'c_types.pl';
|
|
||||||
|
|
||||||
$[ = 1; # set array base to 1
|
|
||||||
$, = ' '; # set output field separator
|
|
||||||
$\ = "\n"; # set output record separator
|
|
||||||
|
|
||||||
$always_use_temp_storage = 1;
|
|
||||||
|
|
||||||
sub toupper {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/a-z/A-Z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tolower {
|
|
||||||
local($_) = @_;
|
|
||||||
tr/A-Z/a-z/;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
print '/* marshal.c */';
|
|
||||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
|
||||||
print '';
|
|
||||||
|
|
||||||
print '#include <backend-sysdeps.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/sysdeps.h>';
|
|
||||||
print '#include <glibtop/union.h>';
|
|
||||||
print '';
|
|
||||||
print '#include <glibtop/call-vector.h>';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
$feature_count = 0;
|
|
||||||
|
|
||||||
while (<>) {
|
|
||||||
chop; # strip record separator
|
|
||||||
|
|
||||||
if (/^[^#]/) {
|
|
||||||
&output($_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub output {
|
|
||||||
local($line) = @_;
|
|
||||||
@line_fields = split(/\|/, $line, 9999);
|
|
||||||
$retval = $line_fields[1];
|
|
||||||
$feature = $line_fields[2];
|
|
||||||
$param_def = $line_fields[4];
|
|
||||||
|
|
||||||
$orig = $feature;
|
|
||||||
$feature =~ s/^@//;
|
|
||||||
$space = $feature;
|
|
||||||
$space =~ s/./ /g;
|
|
||||||
|
|
||||||
$features{++$feature_count} = $orig;
|
|
||||||
|
|
||||||
return if $orig =~ /^@/;
|
|
||||||
|
|
||||||
if ($retval eq 'retval') {
|
|
||||||
$retval_param = '&retval';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$retval = 'int';
|
|
||||||
}
|
|
||||||
elsif ($retval !~ /^void$/) {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$prefix = 'retval = ';
|
|
||||||
$prefix_space = ' ';
|
|
||||||
$call_prefix = 'retval = ';
|
|
||||||
$call_prefix_space = ' ';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$retval_param = 'NULL';
|
|
||||||
$call_prefix = '';
|
|
||||||
$call_prefix_space = '';
|
|
||||||
$prefix = '';
|
|
||||||
$prefix_space = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
|
||||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
|
||||||
}
|
|
||||||
|
|
||||||
$need_temp_storage = $always_use_temp_storage;
|
|
||||||
$first_param_name = '';
|
|
||||||
|
|
||||||
$call_param = '';
|
|
||||||
$param_decl = '';
|
|
||||||
$need_temp_len = 0;
|
|
||||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
|
||||||
for ($param = 1; $param <= $nr_params; $param++) {
|
|
||||||
$list = $params[$param];
|
|
||||||
$type = $params[$param];
|
|
||||||
$type =~ s/\(.*//;
|
|
||||||
$list =~ s/^.*\(//;
|
|
||||||
$list =~ s/\)$//;
|
|
||||||
$count = (@fields = split(/,/, $list, 9999));
|
|
||||||
for ($field = 1; $field <= $count; $field++) {
|
|
||||||
my $c_type = $typeinfo->{$type}->[1];
|
|
||||||
|
|
||||||
if ($first_param_name eq '') {
|
|
||||||
$first_param_name = $fields[$field];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($typeinfo->{$type}->[2]) {
|
|
||||||
$need_temp_storage = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($param_decl eq '') {
|
|
||||||
$param_decl = ",\n " . $space . ' ';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$param_decl = $param_decl . ', ';
|
|
||||||
}
|
|
||||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
|
||||||
$call_param = $call_param . ', ' . $fields[$field];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
|
||||||
} else {
|
|
||||||
$total_code = sprintf
|
|
||||||
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
|
||||||
}
|
|
||||||
|
|
||||||
$func_decl = 'static '.$retval."\n";
|
|
||||||
if ($line_fields[3] eq '') {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
|
||||||
$feature, $param_decl);
|
|
||||||
} elsif ($line_fields[3] eq 'array') {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
|
||||||
$feature, $param_decl);
|
|
||||||
} elsif ($line_fields[3] =~ /^array/) {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
|
||||||
$feature, 'glibtop_'.$feature, $param_decl);
|
|
||||||
} else {
|
|
||||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
|
||||||
$feature, 'glibtop_'.$feature, $param_decl);
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
|
||||||
|
|
||||||
$total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n",
|
|
||||||
&toupper($feature), $total_code,
|
|
||||||
&toupper($feature));
|
|
||||||
|
|
||||||
print $total_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
$init_hook_code = '';
|
|
||||||
$call_vector_code = '';
|
|
||||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
|
||||||
$feature = $features{$nr};
|
|
||||||
|
|
||||||
if ($feature =~ /^@/) {
|
|
||||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
|
||||||
} else {
|
|
||||||
$call_vector_code .= sprintf
|
|
||||||
(qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n],
|
|
||||||
&toupper($feature), $feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!($feature =~ /^@/)) {
|
|
||||||
$init_hook_code .= sprintf
|
|
||||||
(qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n],
|
|
||||||
&toupper($feature), $feature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$init_hook_code .= sprintf (qq[\tNULL\n]);
|
|
||||||
|
|
||||||
chop $init_hook_code;
|
|
||||||
chop $call_vector_code;
|
|
||||||
|
|
||||||
print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {';
|
|
||||||
print $call_vector_code;
|
|
||||||
print '};';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
print 'glibtop_init_func_t _glibtop_init_hook_s [] = {';
|
|
||||||
print $init_hook_code;
|
|
||||||
print '};';
|
|
||||||
print '';
|
|
||||||
|
|
||||||
294
configure.in
294
configure.in
@@ -5,32 +5,25 @@ 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
|
||||||
# Making releases:
|
|
||||||
# LIBGTOP_MICRO_VERSION += 1;
|
|
||||||
# LIBGTOP_INTERFACE_AGE += 1;
|
|
||||||
# LIBGTOP_BINARY_AGE += 1;
|
|
||||||
# if any functions have been added, set LIBGTOP_INTERFACE_AGE to 0.
|
|
||||||
# if backwards compatibility has been broken,
|
|
||||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
LIBGTOP_MAJOR_VERSION=2
|
dnl This is required at several places
|
||||||
LIBGTOP_MINOR_VERSION=0
|
AC_CHECK_PROG(ac_dc_found, dc, yes, no)
|
||||||
LIBGTOP_MICRO_VERSION=8
|
if test x$ac_dc_found != xyes ; then
|
||||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
AC_MSG_ERROR([
|
||||||
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
|
*** The "dc" utility was not found on your system.
|
||||||
LIBGTOP_INTERFACE_AGE=8
|
***
|
||||||
LIBGTOP_BINARY_AGE=8
|
*** 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
|
||||||
|
|
||||||
# you can set this to `-snap' for instance to create
|
. $srcdir/LIBGTOP-VERSION
|
||||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
|
||||||
LIBGTOP_VERSION_SUFFIX=
|
|
||||||
|
|
||||||
# Increase each time you change the client/server protocol.
|
|
||||||
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)
|
||||||
@@ -47,19 +40,19 @@ 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}'
|
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} -release ${LT_RELEASE}'
|
||||||
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)
|
||||||
|
|
||||||
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
|
AM_ACLOCAL_INCLUDE(. macros)
|
||||||
|
|
||||||
AC_ISC_POSIX
|
AC_ISC_POSIX
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_STDC_HEADERS
|
AC_STDC_HEADERS
|
||||||
dnl AC_ARG_PROGRAM
|
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`
|
||||||
@@ -78,8 +71,10 @@ 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)
|
||||||
|
|
||||||
export CC CXX RANLIB LD AS AR
|
NM=`which $NM`
|
||||||
|
export CC CXX RANLIB LD AS AR NM
|
||||||
|
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
@@ -90,44 +85,42 @@ export cross_compiling
|
|||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
dnl Let the user enable compiler warnings
|
dnl Let the user enable compiler warnings
|
||||||
dnl GNOME_COMPILE_WARNINGS
|
GNOME_COMPILE_WARNINGS
|
||||||
|
|
||||||
dnl GNOME_INIT_HOOK(gnome_found=yes)
|
GNOME_INIT_HOOK(gnome_found=yes)
|
||||||
|
|
||||||
dnl if test "x$gnome_found" != xyes; then
|
if test "x$gnome_found" != xyes; then
|
||||||
dnl if test "x$want_gnome" != xno ; then
|
if test "x$want_gnome" != xno ; then
|
||||||
dnl AC_MSG_ERROR([
|
AC_MSG_ERROR([
|
||||||
dnl *** GNOME was not found on this system. ***
|
*** 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)
|
*** If you want to use LibGTop without GNOME, you need
|
||||||
|
*** to give configure the --without-gnome parameter.
|
||||||
|
])
|
||||||
|
else
|
||||||
|
AC_DEFINE(WITHOUT_GNOME)
|
||||||
|
fi
|
||||||
|
GNOME_SUPPORT_CHECKS
|
||||||
|
else
|
||||||
|
if test "x$want_gnome" != xno ; then
|
||||||
|
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
||||||
|
else
|
||||||
|
GNOME_SUPPORT_CHECKS
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
||||||
|
|
||||||
GNOME_LIBGTOP_SYSDEPS
|
GNOME_LIBGTOP_SYSDEPS
|
||||||
GNOME_LIBGTOP_TYPES
|
GNOME_LIBGTOP_TYPES
|
||||||
|
|
||||||
dnl AC_ARG_WITH(libgtop-guile,
|
AC_ARG_WITH(libgtop-guile,
|
||||||
dnl [ --with-libgtop-guile Build the libgtop guile interface (default=no)],
|
[ --with-libgtop-guile Build the libgtop guile interface (default=no)],
|
||||||
dnl [build_guile="$withval"], [build_guile=yes])
|
[build_guile="$withval"], [build_guile=yes])
|
||||||
|
|
||||||
dnl if test x$build_guile != xno ; then
|
if test x$build_guile != xno ; then
|
||||||
dnl GNOME_CHECK_GUILE
|
GNOME_CHECK_GUILE
|
||||||
dnl fi
|
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)],
|
||||||
@@ -185,17 +178,11 @@ AC_SUBST(guile_subdirs)
|
|||||||
|
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
GLIB_REQUIRED=2.0.0
|
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
|
||||||
|
|
||||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
|
||||||
AC_SUBST(GLIB_CFLAGS)
|
|
||||||
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 You need to uncomment the following line if you want to use
|
||||||
dnl libGTop without Gnome.
|
dnl libGTop without Gnome.
|
||||||
GNOME_SUPPORT_CHECKS
|
dnl 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
|
||||||
@@ -229,10 +216,6 @@ AC_CHECK_FUNCS(dlerror,,)
|
|||||||
LIBS="$oLIBS"
|
LIBS="$oLIBS"
|
||||||
AC_SUBST(DL_LIB)
|
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
|
dnl Solaris
|
||||||
AC_CHECK_LIB(kstat, kstat_open)
|
AC_CHECK_LIB(kstat, kstat_open)
|
||||||
AC_CHECK_FUNCS(getloadavg swapctl)
|
AC_CHECK_FUNCS(getloadavg swapctl)
|
||||||
@@ -269,9 +252,9 @@ GCC_NEED_DECLARATION(program_invocation_name, [
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
])
|
])
|
||||||
|
|
||||||
CFLAGS=$saved_CFLAGS
|
CFLAGS=$saved_CFLAGS
|
||||||
|
|
||||||
|
dnl Check for Internet sockets.
|
||||||
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, [
|
||||||
@@ -293,13 +276,9 @@ AC_TYPE_SIGNAL
|
|||||||
AC_FUNC_STRFTIME
|
AC_FUNC_STRFTIME
|
||||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||||
|
|
||||||
ALL_LINGUAS="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 lt 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"
|
dnl ## all 'es_??' are only needed for format numbers different of 'es'
|
||||||
|
ALL_LINGUAS="az ca da de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr ga gl hu ja ko nl no pl pt_BR ru sk sv tr uk zh_CN.GB2312"
|
||||||
GETTEXT_PACKAGE=libgtop-2.0
|
AM_GNOME_GETTEXT
|
||||||
AC_SUBST(GETTEXT_PACKAGE)
|
|
||||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
|
|
||||||
|
|
||||||
AM_GLIB_GNU_GETTEXT
|
|
||||||
|
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
|
|
||||||
@@ -343,7 +322,7 @@ if test "x$gnome_found" = xyes ; then
|
|||||||
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
||||||
SUPPORTINCS="$GNOME_INCLUDEDIR"
|
SUPPORTINCS="$GNOME_INCLUDEDIR"
|
||||||
else
|
else
|
||||||
LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la'
|
LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la'
|
||||||
SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
|
SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -359,7 +338,7 @@ 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)/libgtop-2.0'
|
LIBGTOP_INCS='-I$(includedir) -I$(pkglibdir)/include'
|
||||||
|
|
||||||
if test x$libgtop_use_machine_h = xyes ; then
|
if test x$libgtop_use_machine_h = xyes ; then
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||||
@@ -382,13 +361,13 @@ LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
|
|||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
|
||||||
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
|
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
|
||||||
LIBGTOP_BINDIR='$(bindir)'
|
LIBGTOP_BINDIR='$(bindir)'
|
||||||
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
|
LIBGTOP_SERVER='$(bindir)/libgtop_server'
|
||||||
|
|
||||||
sysdeps_dir="$libgtop_sysdeps_dir"
|
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||||
AC_SUBST(sysdeps_dir)
|
AC_SUBST(sysdeps_dir)
|
||||||
|
|
||||||
if test x$ac_cv_guile_found = xyes ; then
|
if test x$ac_cv_guile_found = xyes ; then
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0"
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile"
|
||||||
libgtop_guile_found=yes
|
libgtop_guile_found=yes
|
||||||
else
|
else
|
||||||
libgtop_guile_found=no
|
libgtop_guile_found=no
|
||||||
@@ -404,11 +383,11 @@ fi
|
|||||||
|
|
||||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
|
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
|
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
|
||||||
|
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names-2.0"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
|
||||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names-2.0 -lgtop_names-2.0"
|
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names"
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
||||||
@@ -432,12 +411,12 @@ else
|
|||||||
guile_def=""
|
guile_def=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
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"'\"'
|
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 -I\$(top_srcdir)/intl $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(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)
|
||||||
@@ -450,8 +429,8 @@ AC_SUBST(LIBGTOP_BINDIR)
|
|||||||
AC_SUBST(LIBGTOP_SERVER)
|
AC_SUBST(LIBGTOP_SERVER)
|
||||||
|
|
||||||
if test x$libgtop_need_server = xyes ; then
|
if test x$libgtop_need_server = xyes ; then
|
||||||
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la"
|
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la"
|
||||||
server_programs='libgtop_server2'
|
server_programs='libgtop_server'
|
||||||
else
|
else
|
||||||
sysdeps_suid_lib=
|
sysdeps_suid_lib=
|
||||||
server_programs=
|
server_programs=
|
||||||
@@ -459,10 +438,144 @@ fi
|
|||||||
AC_SUBST(sysdeps_suid_lib)
|
AC_SUBST(sysdeps_suid_lib)
|
||||||
AC_SUBST(server_programs)
|
AC_SUBST(server_programs)
|
||||||
|
|
||||||
|
|
||||||
|
dnl The following one is copied from glib/configure.in
|
||||||
|
|
||||||
|
AC_OUTPUT_COMMANDS([
|
||||||
|
|
||||||
|
## Generate `glibconfig.h' in two cases
|
||||||
|
## 1. `config.status' is run either explicitly, or via configure.
|
||||||
|
## Esp. not when it is run in `Makefile' to generate makefiles and
|
||||||
|
## config.h
|
||||||
|
## 2. CONFIG_OTHER is set explicitly
|
||||||
|
##
|
||||||
|
## Case 1 is difficult. We know that `automake' sets one of
|
||||||
|
## CONFIG_FILES or CONFIG_HEADERS to empty. This heuristic works
|
||||||
|
## only when AM_CONFIG_HEADER is set, however.
|
||||||
|
|
||||||
|
if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
|
||||||
|
# Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
|
||||||
|
CONFIG_OTHER=${CONFIG_OTHER:-glibtop-config.h}
|
||||||
|
fi
|
||||||
|
case "$CONFIG_OTHER" in
|
||||||
|
*glibtop-config.h*)
|
||||||
|
echo creating glibtop-config.h
|
||||||
|
outfile=glibtop-config.h-tmp
|
||||||
|
cat > $outfile <<\_______EOF
|
||||||
|
/* glibtop-config.h
|
||||||
|
*
|
||||||
|
* This is a generated file. Please modify `configure.in'
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GLIBTOP_CONFIG_H
|
||||||
|
#define GLIBTOP_CONFIG_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
did_typedefs=no
|
||||||
|
|
||||||
|
if test x$glibtop_uint64_t != xyes ; then
|
||||||
|
did_typedefs=yes
|
||||||
|
cat >> $outfile <<\_______EOF
|
||||||
|
|
||||||
|
#ifndef u_int64_t
|
||||||
|
typedef unsigned long long int u_int64_t;
|
||||||
|
#endif
|
||||||
|
_______EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$glibtop_int64_t != xyes ; then
|
||||||
|
did_typedefs=yes
|
||||||
|
cat >> $outfile <<\_______EOF
|
||||||
|
|
||||||
|
#ifndef int64_t
|
||||||
|
typedef signed long long int int64_t;
|
||||||
|
#endif
|
||||||
|
_______EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$did_typedefs = xyes ; then
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: If your application checks for "u_int64_t" or "int64_t" in its own
|
||||||
|
* config.h, you must not include it after any of the LibGTop headers.
|
||||||
|
*/
|
||||||
|
_______EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/* Define if we need the LibGTop server. */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
if test x$glibtop_need_libgtop = xyes ; then
|
||||||
|
echo '#define NEED_LIBGTOP 1' >> $outfile
|
||||||
|
else
|
||||||
|
echo '#undef NEED_LIBGTOP' >> $outfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/* Define if LibGTop has support for multiple processors. */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
if test x$glibtop_have_smp = xyes ; then
|
||||||
|
echo '#define HAVE_LIBGTOP_SMP 1' >> $outfile
|
||||||
|
else
|
||||||
|
echo '#undef HAVE_LIBGTOP_SMP' >> $outfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/* LibGTop major, minor and micro version. */
|
||||||
|
#define LIBGTOP_MAJOR_VERSION $libgtop_major_version
|
||||||
|
#define LIBGTOP_MINOR_VERSION $libgtop_minor_version
|
||||||
|
#define LIBGTOP_MICRO_VERSION $libgtop_micro_version
|
||||||
|
|
||||||
|
/* LibGTop version and numerical version code ("1.234.567" -> 1234567). */
|
||||||
|
#define LIBGTOP_VERSION "$libgtop_version"
|
||||||
|
#define LIBGTOP_VERSION_CODE $libgtop_version_code
|
||||||
|
|
||||||
|
/* LibGTop server version, increased each time the protocol changes. */
|
||||||
|
#define LIBGTOP_SERVER_VERSION $libgtop_server_version
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* GLIBCONFIG_H */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
if cmp -s $outfile glibtop-config.h; then
|
||||||
|
echo glibtop-config.h is unchanged
|
||||||
|
rm -f $outfile
|
||||||
|
else
|
||||||
|
mv $outfile glibtop-config.h
|
||||||
|
fi ;;
|
||||||
|
esac
|
||||||
|
],[
|
||||||
|
glibtop_uint64_t=$ac_cv_type_u_int64_t
|
||||||
|
glibtop_int64_t=$ac_cv_type_int64_t
|
||||||
|
libgtop_major_version=$LIBGTOP_MAJOR_VERSION
|
||||||
|
libgtop_minor_version=$LIBGTOP_MINOR_VERSION
|
||||||
|
libgtop_micro_version=$LIBGTOP_MICRO_VERSION
|
||||||
|
libgtop_version_code=$LIBGTOP_VERSION_CODE
|
||||||
|
libgtop_server_version=$LIBGTOP_SERVER_VERSION
|
||||||
|
libgtop_version=$LIBGTOP_VERSION
|
||||||
|
glibtop_need_libgtop=$libgtop_need_server
|
||||||
|
glibtop_have_smp=$libgtop_smp
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
Makefile
|
Makefile
|
||||||
libgtop.spec
|
libgtop.spec
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
|
intl/Makefile
|
||||||
misc/Makefile
|
misc/Makefile
|
||||||
include/Makefile
|
include/Makefile
|
||||||
include/glibtop/Makefile
|
include/glibtop/Makefile
|
||||||
@@ -479,7 +592,6 @@ sysdeps/linux/Makefile
|
|||||||
sysdeps/kernel/Makefile
|
sysdeps/kernel/Makefile
|
||||||
sysdeps/freebsd/Makefile
|
sysdeps/freebsd/Makefile
|
||||||
sysdeps/solaris/Makefile
|
sysdeps/solaris/Makefile
|
||||||
sysdeps/aix/Makefile
|
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/daemon/Makefile
|
src/daemon/Makefile
|
||||||
src/inodedb/Makefile
|
src/inodedb/Makefile
|
||||||
@@ -487,6 +599,4 @@ lib/Makefile
|
|||||||
examples/Makefile
|
examples/Makefile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
support/Makefile
|
support/Makefile
|
||||||
support/gnome-support-2.0.pc
|
macros/Makefile])
|
||||||
libgtop-2.0.pc
|
|
||||||
])
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
/* $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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
9
debian/.cvsignore
vendored
9
debian/.cvsignore
vendored
@@ -1,9 +0,0 @@
|
|||||||
control
|
|
||||||
rules
|
|
||||||
build
|
|
||||||
tmp
|
|
||||||
*.postinst
|
|
||||||
*.debhelper
|
|
||||||
*.files
|
|
||||||
files
|
|
||||||
substvars
|
|
||||||
9
debian/README.Debian
vendored
9
debian/README.Debian
vendored
@@ -1,9 +0,0 @@
|
|||||||
LibGTop CVS snapshots for Debian
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
This is a debian package made from a stable release of LibGTop, but it
|
|
||||||
should be considered "unofficial" since I'm not a Debian Maintainer.
|
|
||||||
|
|
||||||
|
|
||||||
Martin Baulig <martin@home-of-linux.org>, Wed, 16 Feb 2000 16:40:50 +0100
|
|
||||||
|
|
||||||
121
debian/changelog
vendored
121
debian/changelog
vendored
@@ -1,121 +0,0 @@
|
|||||||
libgtop (1.0.7-1) unstable; urgency=low
|
|
||||||
* New upstream source (1.0.7 "Copenhagen" release)
|
|
||||||
* Non-maintainer upload; since I'm not a Debian maintainer, this is some
|
|
||||||
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> Wed, 16 Feb 2000 16:40:50 +0100
|
|
||||||
|
|
||||||
libgtop (1.0.6-1) unstable; urgency=low
|
|
||||||
* New upstream source
|
|
||||||
|
|
||||||
-- Ian Lynagh (wibble) <igloo@debian.org> Wed, 20 Oct 1999 16:16:27 +0100
|
|
||||||
|
|
||||||
libgtop (1.0.4.5pre1-1) frozen unstable; urgency=low
|
|
||||||
* New upstream source (1.0.5 pre release)
|
|
||||||
* Maintainer e-mail address changed to igloo@debian.org
|
|
||||||
|
|
||||||
-- Ian Lynagh (wibble) <igloo@debian.org> Thu, 30 Sep 1999 22:37:33 +0100
|
|
||||||
|
|
||||||
libgtop (1.0.4-1) frozen unstable; urgency=low
|
|
||||||
* New upstream source
|
|
||||||
* Removed nasty sed stuff from the rules in favour of make install prefix=...
|
|
||||||
* Added .la files to libgtop-dev
|
|
||||||
* Added info to the copyright file
|
|
||||||
* Wrote simple man page for libgtop-config.
|
|
||||||
* Recompiled with later debhelper so docs go to /usr/share/doc as per FHS
|
|
||||||
* changed infodir to /usr/share/info
|
|
||||||
|
|
||||||
-- Ian Lynagh (wibble) <igloo@debian.org> Mon, 20 Sep 1999 00:06:16 +0100
|
|
||||||
|
|
||||||
libgtop (1.0.1-2) frozen unstable; urgency=low
|
|
||||||
|
|
||||||
* Didn't actually use wildcards in libgtop-dev.files because tar complained
|
|
||||||
* Set section names properly
|
|
||||||
|
|
||||||
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 7 Mar 1999 00:53:50 +0000
|
|
||||||
|
|
||||||
libgtop (1.0.1-1) frozen unstable; urgency=low
|
|
||||||
|
|
||||||
* SONAME changed back to 1. Fun fun fun.
|
|
||||||
* Added RELNOTES-1.0 to debian/libgtop1.docs and debian/rules
|
|
||||||
* Changed libgtop1.README.Debian to at least make sense
|
|
||||||
* Used wildcards in libgtop-dev.files
|
|
||||||
|
|
||||||
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 7 Mar 1999 00:53:50 +0000
|
|
||||||
|
|
||||||
libgtop (1.0.1-0.1) unstable; urgency=low
|
|
||||||
|
|
||||||
* Non-maintainer upload for GNOME 1.0
|
|
||||||
|
|
||||||
-- Jules Bean <jules@debian.org> Thu, 4 Mar 1999 22:34:12 +0000
|
|
||||||
|
|
||||||
libgtop (0.99.2-0.2) unstable; urgency=low
|
|
||||||
|
|
||||||
* Oops, forgot some files.
|
|
||||||
|
|
||||||
-- Jim Pick <jim@jimpick.com> Sun, 24 Jan 1999 02:12:24 -0800
|
|
||||||
|
|
||||||
libgtop (0.99.2-0.1) unstable; urgency=low
|
|
||||||
|
|
||||||
* Non-maintainer upload.
|
|
||||||
* New upstream source.
|
|
||||||
* SONAME is now 0 again. Hmmm.
|
|
||||||
|
|
||||||
-- Jim Pick <jim@jimpick.com> Sat, 23 Jan 1999 20:21:38 -0800
|
|
||||||
|
|
||||||
libgtop (0.26.2-4) frozen unstable; urgency=low
|
|
||||||
|
|
||||||
* Upstream changelog installed as changelog
|
|
||||||
* debian/shlibs.local removed in favour of the LD_LIBRARY_PATH line
|
|
||||||
|
|
||||||
-- Ian Lynagh <ian@lynagh.demon.co.uk> Thu, 26 Nov 1998 17:20:24 +0000
|
|
||||||
|
|
||||||
libgtop (0.26.2-3.1) frozen unstable; urgency=low
|
|
||||||
|
|
||||||
* Non-maintainer upload.
|
|
||||||
* Upload to frozen, corrects Bug #29110, Bug #29111, which were
|
|
||||||
already fixed.
|
|
||||||
* Noticed that guile option is no longer being used, so I removed
|
|
||||||
the dependency.
|
|
||||||
* Added changelog (to fix lintian error).
|
|
||||||
* Changed control file to use macro substitutions. This is a much
|
|
||||||
less error-prone way of building dependencies than doing them by
|
|
||||||
hand.
|
|
||||||
* Added -V option to dh_makeshlibs to put version number on shlibs
|
|
||||||
file.
|
|
||||||
* Added shlibs.local file with null entry for "libgtop 1" (and
|
|
||||||
others) so libgtop1 doesn't declare a relationship on itself.
|
|
||||||
|
|
||||||
-- Jim Pick <jim@jimpick.com> Wed, 25 Nov 1998 12:03:12 -0800
|
|
||||||
|
|
||||||
libgtop (0.26.2-3) frozen unstable; urgency=low
|
|
||||||
|
|
||||||
* libgtop0 changed to libgtop1
|
|
||||||
* Added an #ifndef strstr around the prototype of strstr in
|
|
||||||
sysdeps/common/mountlist.c as this is a macro under glibc 2.1.
|
|
||||||
|
|
||||||
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 8 Nov 1998 12:06:09 +0000
|
|
||||||
|
|
||||||
libgtop (0.26.2-2) frozen unstable; urgency=low
|
|
||||||
|
|
||||||
* Fixes minor bugs in debian/rules
|
|
||||||
|
|
||||||
-- Ian Lynagh <ian@lynagh.demon.co.uk> Fri, 16 Oct 1998 05:30:16 +0200
|
|
||||||
|
|
||||||
libgtop (0.26.2-1) unstable; urgency=low
|
|
||||||
|
|
||||||
* New upstream version
|
|
||||||
* Non-maintainer release
|
|
||||||
|
|
||||||
-- Martin Schulze <joey@finlandia.infodrom.north.de> Fri, 16 Oct 1998 05:30:16 +0200
|
|
||||||
|
|
||||||
libgtop (0.26.0-1) unstable; urgency=low
|
|
||||||
|
|
||||||
* Initial Release.
|
|
||||||
|
|
||||||
-- Jim Pick <jim@jimpick.com> Thu, 24 Sep 1998 18:42:48 -0700
|
|
||||||
|
|
||||||
Local variables:
|
|
||||||
mode: debian-changelog
|
|
||||||
End:
|
|
||||||
33
debian/control.in
vendored
33
debian/control.in
vendored
@@ -1,33 +0,0 @@
|
|||||||
Source: libgtop@SUFFIX@
|
|
||||||
Maintainer: Martin Baulig <martin@home-of-linux.org>
|
|
||||||
Section: libs
|
|
||||||
Priority: optional
|
|
||||||
Standards-Version: 3.0.0
|
|
||||||
|
|
||||||
Package: libgtop1@SUFFIX@
|
|
||||||
Architecture: any
|
|
||||||
Section: libs
|
|
||||||
Depends: ${shlibs:Depends}
|
|
||||||
Description: Portable system access library (part of Gnome)
|
|
||||||
Gnome is the "GNU Network Object Model Environment"
|
|
||||||
.
|
|
||||||
It is a project to build a complete, user-friendly desktop based
|
|
||||||
entirely on free software.
|
|
||||||
.
|
|
||||||
This package contains the gtop libraries which read information about
|
|
||||||
processes and the running systems.
|
|
||||||
|
|
||||||
Package: libgtop-dev@SUFFIX@
|
|
||||||
Architecture: any
|
|
||||||
Section: devel
|
|
||||||
Depends: libgtop1@SUFFIX@ (= ${Source-Version})
|
|
||||||
Description: Dev libraries for the portable system access library (part of Gnome)
|
|
||||||
Gnome is the "GNU Network Object Model Environment"
|
|
||||||
.
|
|
||||||
It is a project to build a complete, user-friendly desktop based
|
|
||||||
entirely on free software.
|
|
||||||
.
|
|
||||||
This package contains the include files and static library for the
|
|
||||||
gtop libraries which read information about processes and the running
|
|
||||||
systems.
|
|
||||||
|
|
||||||
109
debian/debconfigure
vendored
109
debian/debconfigure
vendored
@@ -1,109 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# debconfigure
|
|
||||||
#
|
|
||||||
# A script to generate a debian/rules file, with options.
|
|
||||||
#
|
|
||||||
# By Jim Pick <jim@jimpick.com>, GPL'd of course.
|
|
||||||
# Adjusted for LibGTop by Martin Baulig <martin@home-of-linux.org>
|
|
||||||
#
|
|
||||||
|
|
||||||
if [ ! -r rules.in ]; then
|
|
||||||
echo "Please run the debconfigure script in the debian directory" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
debtype='official'
|
|
||||||
prefix='/usr'
|
|
||||||
gnomeprefix='/usr'
|
|
||||||
localstatedir='/var/lib'
|
|
||||||
pkgsuffix=''
|
|
||||||
|
|
||||||
for dc_option
|
|
||||||
do
|
|
||||||
case "$dc_option" in
|
|
||||||
-*=*) dc_optarg=`echo "$dc_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
||||||
*) dc_optarg= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$dc_option" in
|
|
||||||
|
|
||||||
--clean)
|
|
||||||
rm -f control rules *~ core *files *menu *substvars *.postinst *.debhelper
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
--prefix=*)
|
|
||||||
prefix="$dc_optarg" ;;
|
|
||||||
|
|
||||||
--localstatedir=*)
|
|
||||||
prefix="$dc_optarg" ;;
|
|
||||||
|
|
||||||
--pkgsuffix=*)
|
|
||||||
pkgsuffix="$dc_optarg" ;;
|
|
||||||
|
|
||||||
--gnome-prefix=*)
|
|
||||||
gnomeprefix="$dc_optarg" ;;
|
|
||||||
|
|
||||||
--debtype=*)
|
|
||||||
debtype="$dc_optarg" ;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
cat <<EOF 1>&2
|
|
||||||
Usage: debconfigure [options]
|
|
||||||
Options: [defaults in brackets after descriptions]
|
|
||||||
--help print this message
|
|
||||||
--clean remove generated files
|
|
||||||
--prefix=PREFIX install files under under PREFIX dir [/usr]
|
|
||||||
--gnome-prefix=PREFIX look for GNOME under PREFIX dir [/usr]
|
|
||||||
--localstatedir=DIR directory for things like game scores [/var/lib]
|
|
||||||
--pkgsuffix=SUFFIX append SUFFIX onto package names []
|
|
||||||
--debtype=DEBTYPE enable macros with the name of DEBTYPE [official]
|
|
||||||
EOF
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Strip leading slash
|
|
||||||
prefix=`expr $prefix : '/\(.*\)'`
|
|
||||||
gnomeprefix=`expr $gnomeprefix : '/\(.*\)'`
|
|
||||||
localstatedir=`expr $localstatedir : '/\(.*\)'`
|
|
||||||
|
|
||||||
for infile in `ls control.in rules.in`
|
|
||||||
do
|
|
||||||
tofile=`expr $infile : '\(.*\)\.in'`
|
|
||||||
cat $infile | \
|
|
||||||
sed "s,@SUFFIX@,$pkgsuffix,g" | \
|
|
||||||
sed "s,@PREFIX@,$prefix,g" | \
|
|
||||||
sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \
|
|
||||||
sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \
|
|
||||||
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
|
|
||||||
done
|
|
||||||
chmod +x rules
|
|
||||||
|
|
||||||
for filesfile in `ls *.files.in`
|
|
||||||
do
|
|
||||||
tofile=`expr $filesfile : '\(.*\)\.files\.in'`
|
|
||||||
tofile=`echo $tofile$pkgsuffix.files`
|
|
||||||
cat $filesfile | \
|
|
||||||
sed "s,@SUFFIX@,$pkgsuffix,g" | \
|
|
||||||
sed "s,@PREFIX@,$prefix,g" | \
|
|
||||||
sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \
|
|
||||||
sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \
|
|
||||||
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
|
|
||||||
done
|
|
||||||
|
|
||||||
for postinst in libgtop1$pkgsuffix
|
|
||||||
do
|
|
||||||
|
|
||||||
cat > $postinst.postinst <<EOF
|
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
ldconfig
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
EOF
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
34
debian/libgtop-config.1
vendored
34
debian/libgtop-config.1
vendored
@@ -1,34 +0,0 @@
|
|||||||
.TH GTOP l "15 September 1999"
|
|
||||||
.SH NAME
|
|
||||||
\fBlibgtop-config\fP \- libgtop libraries and component information retrieval.
|
|
||||||
.SH SYNTAX
|
|
||||||
.B libgtop-config
|
|
||||||
.RI [ --version ]
|
|
||||||
.RI [ --config ]
|
|
||||||
.RI [ --features-def-file ]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B libgtop-config
|
|
||||||
is used to retrieve information from installed libraries in the system.
|
|
||||||
|
|
||||||
This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page.
|
|
||||||
.LP
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
.B \-\-version
|
|
||||||
.PD
|
|
||||||
Prints the version of libgtop that you're using.
|
|
||||||
.TP
|
|
||||||
.B \-\-config
|
|
||||||
.PD
|
|
||||||
Prints the location of libgtopConf.sh.
|
|
||||||
.TP
|
|
||||||
.B \-\-version
|
|
||||||
.PD
|
|
||||||
Prints the location of libgtop-features.def.
|
|
||||||
.SH BUGS
|
|
||||||
None known
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
Martin Baulig (martin@home-of-linux.org)
|
|
||||||
.TP
|
|
||||||
Josh Sled (jsled@scam.XCF.Berkeley.EDU)
|
|
||||||
24
debian/libgtop-dev.files.in
vendored
24
debian/libgtop-dev.files.in
vendored
@@ -1,24 +0,0 @@
|
|||||||
@PREFIX@/lib/libgtop.a
|
|
||||||
@PREFIX@/lib/libgtop_common.a
|
|
||||||
@PREFIX@/lib/libgtop_names.a
|
|
||||||
@PREFIX@/lib/libgtop_suid_common.a
|
|
||||||
@PREFIX@/lib/libgtop_sysdeps.a
|
|
||||||
@PREFIX@/lib/libgtop.la
|
|
||||||
@PREFIX@/lib/libgtop_common.la
|
|
||||||
@PREFIX@/lib/libgtop_names.la
|
|
||||||
@PREFIX@/lib/libgtop_suid_common.la
|
|
||||||
@PREFIX@/lib/libgtop_sysdeps.la
|
|
||||||
@PREFIX@/lib/libgtopConf.sh
|
|
||||||
@PREFIX@/lib/libgtop.so
|
|
||||||
@PREFIX@/lib/libgtop_common.so
|
|
||||||
@PREFIX@/lib/libgtop_names.so
|
|
||||||
@PREFIX@/lib/libgtop_suid_common.so
|
|
||||||
@PREFIX@/lib/libgtop_sysdeps.so
|
|
||||||
@PREFIX@/lib/libgtop-features.def
|
|
||||||
@PREFIX@/lib/libgtop/include/*.h
|
|
||||||
@PREFIX@/include/glibtop/*.h
|
|
||||||
@PREFIX@/include/glibtop.h
|
|
||||||
@PREFIX@/include/glibtop_server.h
|
|
||||||
@PREFIX@/include/glibtop_machine.h
|
|
||||||
@PREFIX@/info/libgtop.info
|
|
||||||
@PREFIX@/bin/libgtop-config
|
|
||||||
5
debian/libgtop1.README.Debian
vendored
5
debian/libgtop1.README.Debian
vendored
@@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
The Debian package of libgtop, a GNOME library.
|
|
||||||
|
|
||||||
--
|
|
||||||
Martin Baulig <martin@home-of-linux.org>
|
|
||||||
12
debian/libgtop1.copyright
vendored
12
debian/libgtop1.copyright
vendored
@@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
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
5
debian/libgtop1.docs
vendored
@@ -1,5 +0,0 @@
|
|||||||
RELNOTES-0.25
|
|
||||||
RELNOTES-1.0.x
|
|
||||||
NEWS
|
|
||||||
AUTHORS
|
|
||||||
debian/changelog
|
|
||||||
4
debian/libgtop1.files.in
vendored
4
debian/libgtop1.files.in
vendored
@@ -1,4 +0,0 @@
|
|||||||
@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
|
|
||||||
5
debian/libgtop2.README.Debian
vendored
5
debian/libgtop2.README.Debian
vendored
@@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
The Debian package of libgtop, a GNOME library.
|
|
||||||
|
|
||||||
--
|
|
||||||
Ian Lynagh <ian@lynagh.demon.co.uk>
|
|
||||||
12
debian/libgtop2.copyright
vendored
12
debian/libgtop2.copyright
vendored
@@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
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.
|
|
||||||
7
debian/libgtop2.docs
vendored
7
debian/libgtop2.docs
vendored
@@ -1,7 +0,0 @@
|
|||||||
RELNOTES-0.25
|
|
||||||
RELNOTES-1.0
|
|
||||||
RELNOTES-1.1.x
|
|
||||||
NEWS
|
|
||||||
AUTHORS
|
|
||||||
TODO
|
|
||||||
debian/changelog
|
|
||||||
2
debian/libgtop2.files.in
vendored
2
debian/libgtop2.files.in
vendored
@@ -1,2 +0,0 @@
|
|||||||
@PREFIX@/lib/libgtop*-1.1.so.*.*
|
|
||||||
@PREFIX@/lib/libgtop*-1.1.so.*
|
|
||||||
115
debian/rules.in
vendored
115
debian/rules.in
vendored
@@ -1,115 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
|
|
||||||
# This version is for a hypothetical package that builds an
|
|
||||||
# architecture-dependant package, as well as an architecture-independent
|
|
||||||
# package.
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
#export DH_VERBOSE=1
|
|
||||||
|
|
||||||
i=$(shell pwd)/debian/tmp
|
|
||||||
b=$(shell pwd)/debian/build
|
|
||||||
|
|
||||||
configure: configure.in
|
|
||||||
@echo "--- Making configure script and configuring"
|
|
||||||
chmod +x autogen.sh
|
|
||||||
./autogen.sh --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
|
|
||||||
--localstatedir=/@LOCALSTATEDIR@
|
|
||||||
|
|
||||||
Makefile: configure
|
|
||||||
@echo "--- Configuring"
|
|
||||||
./configure --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
|
|
||||||
--localstatedir=/@LOCALSTATEDIR@
|
|
||||||
|
|
||||||
build: configure Makefile build-debstamp
|
|
||||||
build-debstamp:
|
|
||||||
@echo "--- Compiling"
|
|
||||||
dh_testdir
|
|
||||||
$(MAKE) all
|
|
||||||
touch build-debstamp
|
|
||||||
|
|
||||||
clean: Makefile
|
|
||||||
@echo "--- Cleaning"
|
|
||||||
dh_testdir
|
|
||||||
dh_clean
|
|
||||||
-rm -rf static shared
|
|
||||||
-rm -f build-debstamp install-debstamp
|
|
||||||
-make -k distclean
|
|
||||||
-rm -f `find . -name "*~"`
|
|
||||||
-rm -f `find . -name "*\.la"`
|
|
||||||
-rm -rf `find . -name "\.deps"`
|
|
||||||
-rm -rf `find . -name "\.libs"`
|
|
||||||
-rm -rf `find . -name "*\.rej"`
|
|
||||||
-rm -rf debian/tmp `find debian/* -type d ! -name CVS` debian/files* core
|
|
||||||
-rm -f debian/*substvars
|
|
||||||
|
|
||||||
install: build install-debstamp
|
|
||||||
install-debstamp:
|
|
||||||
@echo "--- Installing"
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
rm -rf $(b)
|
|
||||||
$(MAKE) install prefix=$(i)/@PREFIX@ exec_prefix=$(i)/@PREFIX@ \
|
|
||||||
localstatedir=$(i)/@LOCALSTATEDIR@
|
|
||||||
touch install-debstamp
|
|
||||||
|
|
||||||
install-save: install
|
|
||||||
rm -rf $(i).saved
|
|
||||||
cp -a $(i) $(i).saved
|
|
||||||
|
|
||||||
install-saved:
|
|
||||||
rm -rf $(i)
|
|
||||||
cp -a $(i).saved $(i)
|
|
||||||
rm -rf $(b)
|
|
||||||
touch install-debstamp
|
|
||||||
|
|
||||||
binary-indep: build install
|
|
||||||
|
|
||||||
binary-arch: build install \
|
|
||||||
libgtop1@SUFFIX@ \
|
|
||||||
libgtop-dev@SUFFIX@
|
|
||||||
|
|
||||||
#
|
|
||||||
# libgtop1@SUFFIX@
|
|
||||||
#
|
|
||||||
|
|
||||||
libgtop1@SUFFIX@: install
|
|
||||||
@echo "--- Building: $@"
|
|
||||||
dh_installdocs -p$@ -P$(b)/$@ README NEWS AUTHORS
|
|
||||||
dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog
|
|
||||||
dh_movefiles -p$@ -P$(b)/$@
|
|
||||||
dh_strip -p$@ -P$(b)/$@
|
|
||||||
dh_compress -p$@ -P$(b)/$@
|
|
||||||
dh_fixperms -p$@ -P$(b)/$@
|
|
||||||
dh_installdeb -p$@ -P$(b)/$@
|
|
||||||
dh_shlibdeps -p$@ -P$(b)/$@
|
|
||||||
dh_gencontrol -p$@ -P$(b)/$@
|
|
||||||
dh_makeshlibs -p$@ -P$(b)/$@ -V
|
|
||||||
dh_md5sums -p$@ -P$(b)/$@
|
|
||||||
dh_builddeb -p$@ -P$(b)/$@
|
|
||||||
|
|
||||||
#
|
|
||||||
# libgtop-dev
|
|
||||||
#
|
|
||||||
|
|
||||||
libgtop-dev@SUFFIX@: install
|
|
||||||
@echo "--- Building: $@"
|
|
||||||
mkdir -p $(b)/$@/usr/doc
|
|
||||||
cd $(b)/$@/usr/doc; ln -s libgtop1@SUFFIX@ $@
|
|
||||||
dh_movefiles -p$@ -P$(b)/$@
|
|
||||||
dh_strip -p$@ -P$(b)/$@
|
|
||||||
dh_compress -p$@ -P$(b)/$@
|
|
||||||
dh_fixperms -p$@ -P$(b)/$@
|
|
||||||
dh_installdeb -p$@ -P$(b)/$@
|
|
||||||
dh_shlibdeps -p$@ -P$(b)/$@
|
|
||||||
dh_gencontrol -p$@ -P$(b)/$@
|
|
||||||
dh_makeshlibs -p$@ -P$(b)/$@ -V
|
|
||||||
dh_undocumented -p$@ -P$(b)/$@ \
|
|
||||||
libgtop-config.1
|
|
||||||
dh_md5sums -p$@ -P$(b)/$@
|
|
||||||
dh_builddeb -p$@ -P$(b)/$@
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
|
||||||
.PHONY: binary clean binary-indep binary-arch build install install-save install-saved
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
texinfo.tex
|
|
||||||
*.info
|
|
||||||
Makefile.in
|
|
||||||
Makefile
|
|
||||||
*.log *.toc *.dvi *.aux *.cp *.fn *.vr *.tp *.ky *.pg
|
|
||||||
*.ps
|
|
||||||
auto-macros.texi
|
|
||||||
version.texi
|
|
||||||
stamp-vti
|
|
||||||
*.html *.pdf
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
2002-03-12 James Henstridge <james@daa.com.au>
|
|
||||||
|
|
||||||
* Makefile.am (MAKEINFO): using += seems to screw up the build
|
|
||||||
with newer automakes. Set it explicitly (using @MAKEINFO@) seems
|
|
||||||
to be compatible with both.
|
|
||||||
|
|
||||||
2001-11-26 Abel Cheung <maddog@linux.org.hk>
|
|
||||||
|
|
||||||
* libgtop.texi, Makefile.am: Renamed to libgtop2.texi
|
|
||||||
* about.texi: Very minor update.
|
|
||||||
|
|
||||||
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* about.texi: Added a note about LibGTop and GNOME.
|
|
||||||
|
|
||||||
* reference.texi (glibtop_proc_state): Fix description of the `state'
|
|
||||||
field for LibGTop 1.0.x.
|
|
||||||
|
|
||||||
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here.
|
|
||||||
|
|
||||||
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* main.texi: This is now the main file which will @include all
|
|
||||||
chapter files so we can use `texinfo-multiple-files-update'.
|
|
||||||
|
|
||||||
* reference.texi: Added all missing sections with a "not yet written"
|
|
||||||
notice.
|
|
||||||
|
|
||||||
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* white-paper.texi: Initial version of the LibGTop White Paper.
|
|
||||||
|
|
||||||
* Makefile.am: Create `auto-macros.texi' from `auto-macros.texi.in'
|
|
||||||
which will contain some `@set' commands for the LibGTop version etc.
|
|
||||||
|
|
||||||
* auto-macros.texi.in: New file. This is a template for
|
|
||||||
`auto-macros.texi' which will be automatically generated.
|
|
||||||
|
|
||||||
1999-05-09 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* about.texi: Split the `libgtop.texi' into one file pro chapter,
|
|
||||||
this is the "About LibGTop".
|
|
||||||
|
|
||||||
* reference.texi: The "LibGTop Reference Manual".
|
|
||||||
|
|
||||||
* libgtop.texi: Initial version of the new LibGTop Manual.
|
|
||||||
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
info_TEXINFOS = libgtop2.texi
|
|
||||||
|
|
||||||
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.texi \
|
|
||||||
auto-macros.texi version.texi main.texi \
|
|
||||||
white-paper.texi
|
|
||||||
|
|
||||||
MAKEINFO = @MAKEINFO@ -I @libgtop_top_builddir@/doc
|
|
||||||
|
|
||||||
EXTRA_DIST = auto-macros.texi.in
|
|
||||||
|
|
||||||
auto-macros.texi: auto-macros.texi.in Makefile
|
|
||||||
## Use sed and then mv to avoid problems if the user interrupts.
|
|
||||||
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
|
||||||
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \
|
|
||||||
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
|
||||||
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
|
||||||
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
|
||||||
-e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \
|
|
||||||
-e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#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_SERVER\%#$(LIBGTOP_SERVER)#g' \
|
|
||||||
-e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \
|
|
||||||
-e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \
|
|
||||||
-e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \
|
|
||||||
-e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \
|
|
||||||
-e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \
|
|
||||||
-e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \
|
|
||||||
-e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \
|
|
||||||
-e 's#\%libgtop_need_server\%#$(libgtop_need_server)#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)/auto-macros.texi.in > auto-macros.tmp
|
|
||||||
echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp
|
|
||||||
if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \
|
|
||||||
echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \
|
|
||||||
else \
|
|
||||||
echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \
|
|
||||||
fi
|
|
||||||
mv auto-macros.tmp auto-macros.texi
|
|
||||||
123
doc/about.texi
123
doc/about.texi
@@ -1,123 +0,0 @@
|
|||||||
@node About, White Paper, Top, Top
|
|
||||||
@chapter About LibGTop
|
|
||||||
|
|
||||||
LibGTop is a library to get system specific data such as CPU and Memory Usage
|
|
||||||
and information about running Processes.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Even if LibGTop is a part of the GNOME desktop environment
|
|
||||||
(@uref{http://www.gnome.org}), the main interface of LibGTop is totally
|
|
||||||
independent from any particular desktop environment, so you can also use it
|
|
||||||
as a standalone library in any piece of GPLed software.
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* Availability:: Where to get LibGTop
|
|
||||||
* Supported Platforms:: Supported Platforms
|
|
||||||
* Mailing List:: Helping with LibGTop development
|
|
||||||
* Thanks:: People who contributed to LibGTop
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Availability, Supported Platforms, About, About
|
|
||||||
@section Availability
|
|
||||||
|
|
||||||
The master source of LibGTop is the GNOME CVS tree
|
|
||||||
(see @uref{http://www.gnome.org} for details), but you can also get the
|
|
||||||
latest release tarballs from
|
|
||||||
|
|
||||||
@display
|
|
||||||
@uref{ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/}
|
|
||||||
@end display
|
|
||||||
|
|
||||||
@noindent
|
|
||||||
or any of its mirror sites.
|
|
||||||
|
|
||||||
The latest stable version of LibGTop is 1.0.12 which is also the one that comes
|
|
||||||
together with GNOME 1.0. It belongs to @code{LIBGTOP_STABLE_1_0} branch in CVS.
|
|
||||||
Actual development occurs in the @code{libgtop-GNOME-2-0-port} which is
|
|
||||||
currently versioned 1.90.0.
|
|
||||||
|
|
||||||
@node Supported Platforms, Mailing List, Availability, About
|
|
||||||
@section Supported Platforms
|
|
||||||
|
|
||||||
The stable branch currently supports the following platforms:
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item All versions of Linux
|
|
||||||
|
|
||||||
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 or Linux 2.4.x.
|
|
||||||
|
|
||||||
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
|
|
||||||
|
|
||||||
@item FreeBSD, NetBSD and OpenBSD
|
|
||||||
|
|
||||||
LibGTop was tested under FreeBSD 2.2.6 and 3.0, NetBSD 1.3.2 and OpenBSD 2.4.
|
|
||||||
Support for NetBSD 1.4 was added in LibGTop 1.0.2.
|
|
||||||
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
The platforms listed above are known to be stable and working. However, if
|
|
||||||
you're using the latest development version, you can use it on the following
|
|
||||||
platforms as well:
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item BSD/OS
|
|
||||||
|
|
||||||
There is a port for BSD/OS (aka BSDI) 2.x and 3.x from Timur Bakeyev which
|
|
||||||
should also work with 4.x. This isn't tested very well, but it should be
|
|
||||||
working.
|
|
||||||
|
|
||||||
@item Digital Unix
|
|
||||||
|
|
||||||
There is some basic support for Digital Unix (formerly DEC OSF/1) V3.2C, but
|
|
||||||
this may still be a bit unstable. I'm currently working on this port as time
|
|
||||||
permits so it should be fully supported soon.
|
|
||||||
|
|
||||||
@item Solaris
|
|
||||||
|
|
||||||
The Solaris port currently works on Solaris 7 and maybe also on other releases.
|
|
||||||
Thanks a lot to Drazen Kacar and everyone who helped working on this port. They
|
|
||||||
have really done excellent work here and I'm pretty sure that this port will be
|
|
||||||
fully functional on most Solaris versions in near future.
|
|
||||||
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@node Mailing List, Thanks, Supported Platforms, About
|
|
||||||
@section Mailing List
|
|
||||||
|
|
||||||
There is a @email{libgtop-devel-list@@egroups.com} mailing list for people who
|
|
||||||
want to help with the development of LibGTop.
|
|
||||||
|
|
||||||
It is meant as a low-traffic, but high content-list where we can discuss
|
|
||||||
technical details such as adding new sysdeps ports etc.
|
|
||||||
|
|
||||||
Especially, I'd like to see people with a deeper knowledge of operating systems
|
|
||||||
internals joining my list so we can discuss technical details of the sysdeps
|
|
||||||
code.
|
|
||||||
|
|
||||||
It is *not* for users that want to know how to compile LibGTop etc.
|
|
||||||
|
|
||||||
You can subscribe to this mailing list and view the mailing list archives
|
|
||||||
on the LibGTop Page at @uref{http://www.home-of-linux.org/gnome/libgtop}.
|
|
||||||
|
|
||||||
@node Thanks, , Mailing List, About
|
|
||||||
@section Thanks
|
|
||||||
|
|
||||||
At the place I'd like to thank the following people who contributed to
|
|
||||||
LibGTop (listed in chronological order):
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item Sebastian Wilhelmi who had the initial idea of LibGTop and helped
|
|
||||||
me a lot in the early beginning.
|
|
||||||
@item Josh Sled for the initial FreeBSD port.
|
|
||||||
@item Jeremy Lea for his BSD patches.
|
|
||||||
@item Timur Bakeyev for the BSDI port.
|
|
||||||
@item Drazen Kacar and the other people on the LibGTop development mailing
|
|
||||||
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 Everyone I have forgotten in this list ...
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
@c LibGTop major, minor and micro version.
|
|
||||||
@set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION%
|
|
||||||
@set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION%
|
|
||||||
@set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION%
|
|
||||||
|
|
||||||
@c LibGTop version and numerical version code ("1.234.567" -> 1234567).
|
|
||||||
@set LIBGTOP_VERSION "%LIBGTOP_VERSION%"
|
|
||||||
@set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE%
|
|
||||||
|
|
||||||
@c LibGTop server version, increased each time the protocol changes.
|
|
||||||
@set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION%
|
|
||||||
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
@node LibGTop Internals, , Reference Manual, Top
|
|
||||||
@chapter LibGTop Internals
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* General Internals:: General Internals
|
|
||||||
* Sysdeps Internals:: Sysdeps Internals
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals
|
|
||||||
@section General Internals
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* glibtop:: The server structure
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node glibtop, , General Internals, General Internals
|
|
||||||
@subsection The server structure - @code{glibtop}
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
typedef struct _glibtop glibtop;
|
|
||||||
|
|
||||||
struct _glibtop
|
|
||||||
@{
|
|
||||||
unsigned flags;
|
|
||||||
unsigned method;
|
|
||||||
unsigned error_method;
|
|
||||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
|
||||||
glibtop_machine machine;
|
|
||||||
#endif
|
|
||||||
int input [2];
|
|
||||||
int output [2];
|
|
||||||
int socket;
|
|
||||||
int ncpu;
|
|
||||||
unsigned long os_version_code;
|
|
||||||
const char *name;
|
|
||||||
const char *server_command;
|
|
||||||
const char *server_host;
|
|
||||||
const char *server_user;
|
|
||||||
const char *server_rsh;
|
|
||||||
unsigned long features;
|
|
||||||
unsigned long server_port;
|
|
||||||
glibtop_sysdeps sysdeps;
|
|
||||||
glibtop_sysdeps required;
|
|
||||||
glibtop_sysdeps wanted;
|
|
||||||
pid_t pid;
|
|
||||||
@};
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@node Sysdeps Internals, , General Internals, LibGTop Internals
|
|
||||||
@section Sysdeps Internals
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* glibtop_open_s:: Non-privileged initializations
|
|
||||||
* glibtop_close_s:: Non-privileged cleanups
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals
|
|
||||||
@subsection glibtop_open_s
|
|
||||||
|
|
||||||
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
|
||||||
initialize a server. It should do all initializations that do not need any
|
|
||||||
privileges.
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
void
|
|
||||||
glibtop_open_s (glibtop *server, const char *program_name,
|
|
||||||
const unsigned long features,
|
|
||||||
const unsigned flags);
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@table @code
|
|
||||||
@item server
|
|
||||||
Pointer to the @code{glibtop} server structure.
|
|
||||||
@item program_name
|
|
||||||
Name of the calling program; the implementation will usually
|
|
||||||
set @samp{server->name} to this so it'll be used as the program
|
|
||||||
name in error messages.
|
|
||||||
@end table
|
|
||||||
|
|
||||||
Typically, this function will set @code{server->name}, @code{server->ncpu} and
|
|
||||||
@code{server->os_version_code} and initialize any of the @code{server->machine}
|
|
||||||
fields which do not need any privileges.
|
|
||||||
|
|
||||||
It is normally implemented in @file{open.c} in the sysdeps directory.
|
|
||||||
|
|
||||||
@node glibtop_close_s, , glibtop_open_s, Sysdeps Internals
|
|
||||||
@subsection glibtop_close_s
|
|
||||||
|
|
||||||
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
|
||||||
clean-up a server when it's no longer used.
|
|
||||||
|
|
||||||
It must free all resources that were allocated in @code{glibtop_open_s}.
|
|
||||||
|
|
||||||
@example
|
|
||||||
@cartouche
|
|
||||||
void
|
|
||||||
glibtop_close_s (glibtop *server);
|
|
||||||
@end cartouche
|
|
||||||
@end example
|
|
||||||
|
|
||||||
It is normally implemented in @file{close.c} in the sysdeps directory, but may
|
|
||||||
be empty.
|
|
||||||
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
\input texinfo @c -*-texinfo-*-
|
|
||||||
@c %**start of header
|
|
||||||
@setfilename libgtop2.info
|
|
||||||
@settitle LibGTop Reference Manual
|
|
||||||
@setchapternewpage odd
|
|
||||||
@c %**end of header
|
|
||||||
|
|
||||||
@include auto-macros.texi
|
|
||||||
@include version.texi
|
|
||||||
|
|
||||||
@ifinfo
|
|
||||||
This is the LibGTop Reference Manual version @value{VERSION}
|
|
||||||
(last modified @value{UPDATED}).
|
|
||||||
|
|
||||||
Copyright 1999 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Permission is granted to make and distribute verbatim
|
|
||||||
copies of this manual provided the copyright notice and
|
|
||||||
this permission notice are preserved on all copies.
|
|
||||||
|
|
||||||
@ignore
|
|
||||||
Permission is granted to process this file through TeX
|
|
||||||
and print the results, provided the printed document
|
|
||||||
carries a copying permission notice identical to this
|
|
||||||
one except for the removal of this paragraph (this
|
|
||||||
paragraph not being relevant to the printed manual).
|
|
||||||
|
|
||||||
@end ignore
|
|
||||||
Permission is granted to copy and distribute modified
|
|
||||||
versions of this manual under the conditions for
|
|
||||||
verbatim copying, provided also that the sections
|
|
||||||
entitled ``Copying'' and ``GNU General Public License''
|
|
||||||
are included exactly as in the original, and provided
|
|
||||||
that the entire resulting derived work is distributed
|
|
||||||
under the terms of a permission notice identical to this
|
|
||||||
one.
|
|
||||||
|
|
||||||
Permission is granted to copy and distribute
|
|
||||||
translations of this manual into another language,
|
|
||||||
under the above conditions for modified versions,
|
|
||||||
except that this permission notice may be stated in a
|
|
||||||
translation approved by the Free Software Foundation.
|
|
||||||
|
|
||||||
@format
|
|
||||||
@dircategory Libraries:
|
|
||||||
@direntry
|
|
||||||
* LibGTop2: (libgtop2). Library to get system specific data
|
|
||||||
such as cpu and memory usage, active
|
|
||||||
processes
|
|
||||||
@end direntry
|
|
||||||
@end format
|
|
||||||
|
|
||||||
@end ifinfo
|
|
||||||
|
|
||||||
@titlepage
|
|
||||||
@title LibGTop Reference Manual
|
|
||||||
@subtitle Version @value{VERSION} - @value{UPDATED}
|
|
||||||
@author Martin Baulig
|
|
||||||
|
|
||||||
@page
|
|
||||||
@vskip 0pt plus 1filll
|
|
||||||
Copyright @copyright{} 1999 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Permission is granted to make and distribute verbatim
|
|
||||||
copies of this manual provided the copyright notice and
|
|
||||||
this permission notice are preserved on all copies.
|
|
||||||
|
|
||||||
Permission is granted to copy and distribute modified
|
|
||||||
versions of this manual under the conditions for
|
|
||||||
verbatim copying, provided also that the sections
|
|
||||||
entitled ``Copying'' and ``GNU General Public License''
|
|
||||||
are included exactly as in the original, and provided
|
|
||||||
that the entire resulting derived work is distributed
|
|
||||||
under the terms of a permission notice identical to this
|
|
||||||
one.
|
|
||||||
|
|
||||||
Permission is granted to copy and distribute
|
|
||||||
translations of this manual into another language,
|
|
||||||
under the above conditions for modified versions,
|
|
||||||
except that this permission notice may be stated in a
|
|
||||||
translation approved by the Free Software Foundation.
|
|
||||||
@end titlepage
|
|
||||||
|
|
||||||
@contents
|
|
||||||
|
|
||||||
@include main.texi
|
|
||||||
|
|
||||||
@bye
|
|
||||||
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
@node Top, About, (dir), (dir)
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* About:: About LibGTop
|
|
||||||
* White Paper:: LibGTop White Paper
|
|
||||||
* Reference Manual:: LibGTop Reference Manual
|
|
||||||
|
|
||||||
--- The Detailed Node Listing ---
|
|
||||||
|
|
||||||
About LibGTop
|
|
||||||
|
|
||||||
* Availability:: Where to get LibGTop
|
|
||||||
* Supported Platforms:: Supported Platforms
|
|
||||||
* Mailing List:: Helping with LibGTop development
|
|
||||||
* Thanks:: People who contributed to LibGTop
|
|
||||||
|
|
||||||
LibGTop White Paper
|
|
||||||
|
|
||||||
* Introduction:: Introduction
|
|
||||||
* Overview:: Overview
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
* Interface Design:: Things that need to be considered
|
|
||||||
* Server Implementation:: The LibGTop "server"
|
|
||||||
|
|
||||||
LibGTop Reference Manual
|
|
||||||
|
|
||||||
* System Dependent:: System Dependent Functions.
|
|
||||||
* Common Functions:: Common Functions.
|
|
||||||
* Library Functions:: Library Functions.
|
|
||||||
|
|
||||||
System Dependent Functions
|
|
||||||
|
|
||||||
* glibtop_cpu:: CPU Usage.
|
|
||||||
* glibtop_mem:: Memory Usage.
|
|
||||||
* glibtop_swap:: Swap Usage.
|
|
||||||
* glibtop_uptime:: System Uptime.
|
|
||||||
* glibtop_loadavg:: Load Average.
|
|
||||||
* glibtop_proclist:: Process List.
|
|
||||||
* glibtop_proc_state:: Process State.
|
|
||||||
* glibtop_proc_uid:: Process UID and TTY Information.
|
|
||||||
* glibtop_proc_mem:: Process Memory Information.
|
|
||||||
* glibtop_proc_time:: Process Time Information.
|
|
||||||
* glibtop_proc_signal:: Process Signal Information.
|
|
||||||
* glibtop_proc_kernel:: Process Kernel Data Information.
|
|
||||||
* glibtop_proc_segment:: Process Segment Information.
|
|
||||||
* glibtop_proc_args:: Process Arguments.
|
|
||||||
* glibtop_proc_map:: Process Memory Maps.
|
|
||||||
* glibtop_netload:: Network Load.
|
|
||||||
* glibtop_ppp:: PPP Usage.
|
|
||||||
|
|
||||||
Common Functions
|
|
||||||
|
|
||||||
* glibtop_mountlist:: Mount List.
|
|
||||||
* glibtop_fsusage:: File System Usage.
|
|
||||||
|
|
||||||
Library Functions
|
|
||||||
|
|
||||||
* glibtop_init:: Server Initialization.
|
|
||||||
* glibtop_sysdeps:: Server Sysdeps.
|
|
||||||
* Library Parameters:: Library Parameters.
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@include about.texi
|
|
||||||
@include white-paper.texi
|
|
||||||
@include reference.texi
|
|
||||||
|
|
||||||
1807
doc/reference.texi
1807
doc/reference.texi
File diff suppressed because it is too large
Load Diff
@@ -1,90 +0,0 @@
|
|||||||
@node White Paper, Reference Manual, About, Top
|
|
||||||
@chapter LibGTop White Paper
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* Introduction:: Introduction
|
|
||||||
* Overview:: Overview
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Introduction, Overview, White Paper, White Paper
|
|
||||||
@section Introduction
|
|
||||||
|
|
||||||
Many modern UNIX systems like Solaris, BSD or Digitial Unix only allow
|
|
||||||
priviledged processes to read information like CPU and Memory Usage or
|
|
||||||
information about running processes.
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item
|
|
||||||
BSD, for instance, doesn't have any other way to get those data than reading
|
|
||||||
directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to
|
|
||||||
be able to read this.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Other systems, like Digital Unix, allow all users to get things like CPU and
|
|
||||||
Memory statistics, but only root may read information about any process other
|
|
||||||
than the current one (you may not even get information about your own processes
|
|
||||||
if you're not root).
|
|
||||||
|
|
||||||
@item
|
|
||||||
Linux has a very nice @file{/proc} filesystem, but reading and parsing
|
|
||||||
@file{/proc} is very slow and inefficient.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Solaris is a bit better, but you still need to be in the @code{sys} group or
|
|
||||||
even root to get some data.
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
Because of this system utilities like @code{ps}, @code{uptime} or @code{top}
|
|
||||||
often are setgid kmem or setuid root. Usually, they're also very specific to
|
|
||||||
the system they're written for and not easily portable to other systems without
|
|
||||||
a lot of work.
|
|
||||||
|
|
||||||
This, of cause, becomes a problem for graphical tools like @code{gtop} - making
|
|
||||||
a GTK+ program setgid or even setuid would be a security hole as big as you can
|
|
||||||
drive the entire X11 source code through. For the GNOME project, we also needed
|
|
||||||
some kind of library which provides all the required information in a portable
|
|
||||||
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
|
|
||||||
@code{netload} panel applets.
|
|
||||||
|
|
||||||
@node Overview, , Introduction, White Paper
|
|
||||||
@section Overview
|
|
||||||
|
|
||||||
This section should give you a short overview on how LibGTop was developed, which
|
|
||||||
things needed to be considered and how it works.
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* Interface Design:: Things that need to be considered
|
|
||||||
* Server Implementation:: The LibGTop "server"
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Interface Design, Server Implementation, Overview, Overview
|
|
||||||
@subsection Interface Design
|
|
||||||
|
|
||||||
At the very beginning, it was necessary to collect all the data the library part
|
|
||||||
should provide and put them into some C structures. This was not that easiy as it
|
|
||||||
might sound since LibGTop should be portable to any modern UNIX system with a common
|
|
||||||
library part on all those systems, but the data that should be returned vary from
|
|
||||||
system to system. For instance some systems support shared memory, but some others
|
|
||||||
may not.
|
|
||||||
|
|
||||||
The header files where we define these C structures (which are system-independent) are
|
|
||||||
shared between client and server. This way we can call the system dependent code
|
|
||||||
directly where we do not need any special privileges to do so.
|
|
||||||
|
|
||||||
All of those structures contain a @code{flags} member which is interpreted as a bit
|
|
||||||
mask and tells the caller of the library functions which of the fields in the returned
|
|
||||||
structure are valid and which are not.
|
|
||||||
|
|
||||||
@node Server Implementation, , Interface Design, Overview
|
|
||||||
@subsection Server Implementation
|
|
||||||
|
|
||||||
The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system
|
|
||||||
dependent code which needs special privileges. It is only build if it's required
|
|
||||||
on the current system (for instance, the Linux kernel provides all the required
|
|
||||||
data via its @file{/proc} filesystem so we do not need the server at all) and it
|
|
||||||
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
|
|
||||||
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
|
||||||
rather than using the server.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile.in
|
|
||||||
Makefile
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
|
||||||
|
|
||||||
backend_DATA = \
|
|
||||||
libgtop-backends.dtd \
|
|
||||||
libgtop-backend-info.dtd
|
|
||||||
|
|
||||||
EXTRA_DIST = |
|
|
||||||
$(backend_DATA)
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)>
|
|
||||||
<!ELEMENT name (short_name,long_name?)>
|
|
||||||
<!ELEMENT short_name (#PCDATA)>
|
|
||||||
<!ELEMENT long_name (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT description (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT authors (author)+>
|
|
||||||
<!ELEMENT author (author_name,author_email?)>
|
|
||||||
<!ELEMENT author_name (#PCDATA)>
|
|
||||||
<!ELEMENT author_email (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT legalnotice (license,copyright?)>
|
|
||||||
<!ELEMENT license (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT copyright (holder)+>
|
|
||||||
<!ELEMENT holder (holder_year?,holder_name,holder_email?)>
|
|
||||||
<!ELEMENT holder_year (#PCDATA)>
|
|
||||||
<!ELEMENT holder_name (#PCDATA)>
|
|
||||||
<!ELEMENT holder_email (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT comments (comment)+>
|
|
||||||
<!ELEMENT comment (#PCDATA)>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<!ELEMENT Backends (Backend)+>
|
|
||||||
|
|
||||||
<!ELEMENT Backend (Name,Location)>
|
|
||||||
<!ELEMENT Name (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)>
|
|
||||||
<!ELEMENT LibtoolName (#PCDATA)>
|
|
||||||
<!ELEMENT ShlibName (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT ExtraLibs (ExtraLib)+>
|
|
||||||
<!ELEMENT ExtraLib (LibtoolName?,ShlibName)>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
.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
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
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.
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
## 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
575
examples/first.c
@@ -1,575 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,300 +0,0 @@
|
|||||||
/* $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
127
examples/smp.c
@@ -1,127 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
(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)
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
@@ -1,357 +0,0 @@
|
|||||||
/* $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);
|
|
||||||
}
|
|
||||||
22
features.def
22
features.def
@@ -1,22 +0,0 @@
|
|||||||
void|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4])
|
|
||||||
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
|
||||||
void|swap|ulong(total,used,free,pagein,pageout)
|
|
||||||
void|uptime|double(uptime,idletime)
|
|
||||||
void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
|
||||||
void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
|
||||||
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
|
||||||
void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
|
||||||
unsigned *|proclist|ulong(number,size,total)|long(which,arg)
|
|
||||||
void|proc_state|str(cmd):char(state):ulong(uid,gid)|pid_t(pid)
|
|
||||||
void|proc_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid)
|
|
||||||
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|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)
|
|
||||||
void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|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)
|
|
||||||
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_args|ulong(size)|pid_t(pid):unsigned(max_len)
|
|
||||||
glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid)
|
|
||||||
glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs)
|
|
||||||
void|@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
|
|
||||||
void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
|
||||||
107
glibtop.h
107
glibtop.h
@@ -1,107 +0,0 @@
|
|||||||
/* $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_H__
|
|
||||||
#define __GLIBTOP_H__
|
|
||||||
|
|
||||||
#include <glibtop/global.h>
|
|
||||||
|
|
||||||
#include <glibtop_server.h>
|
|
||||||
#include <glibtop/types.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
|
||||||
#include <glibtop_machine.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLIBTOP_MOUNTENTRY_LEN
|
|
||||||
#define GLIBTOP_MOUNTENTRY_LEN 79
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct _glibtop glibtop;
|
|
||||||
|
|
||||||
#include <glibtop/sysdeps.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_init_r (glibtop **server_ptr,
|
|
||||||
unsigned long features,
|
|
||||||
unsigned flags);
|
|
||||||
|
|
||||||
glibtop *
|
|
||||||
glibtop_init_s (glibtop **server_ptr,
|
|
||||||
unsigned long features,
|
|
||||||
unsigned flags);
|
|
||||||
|
|
||||||
#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
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
SUBDIRS = glibtop
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user