Compare commits

..

253 Commits

Author SHA1 Message Date
Kevin Vandersloot
78add589c6 release 2.0.0
2002-05-10  Kevin Vandersloot <kfv101@psu.edu>

	* configure.in: release 2.0.0
2002-06-10 21:48:54 +00:00
Pablo Saratxaga
c234586bfa updated Vietnamese file 2002-06-10 09:09:27 +00:00
Germn Poo Caamao
8d25899dc6 Updated Spanish translation from Juan Manuel Garca Molina
2002-06-02  Germn Poo Caamao <gpoo@ubiobio.cl>

	* es.po: Updated Spanish translation from
	Juan Manuel Garca Molina <juanma_gm@wanadoo.es>
2002-06-02 23:48:18 +00:00
Chyla Zbigniew
b7def65c7a Updated Polish translation by GNOME PL Team <translators@gnome.pl> 2002-06-02 18:57:15 +00:00
Carlos Perell Marn
9939d070b9 Fixed.
2002-06-02  Carlos Perell Marn <carlos@gnome-db.org>

	* es.po: Fixed.
2002-06-01 22:41:15 +00:00
Isam Bayazidi
206c620fd6 adding a no accelerator PO 2002-05-31 20:42:09 +00:00
Carlos Perello Marin
057b16ec01 Updated.
2002-05-28  Carlos Perello Marin <carlos@gnome-db.org>

	* LEEME.es: Updated.
2002-05-28 14:15:47 +00:00
Carlos Perello Marin
ef899af6f3 Removed all es_* and added only es_ES.
2002-05-28  Carlos Perello Marin <carlos@gnome-db.org>

	* configure.in (ALL_LINGUAS): Removed all es_* and added only es_ES.
2002-05-28 14:01:57 +00:00
Carlos Perello Marin
730c36e1fd Updated so the contry dependent string is placed at es_ES.po for Spain and
2002-05-28  Carlos Perello Marin <carlos@gnome-db.org>

	* es.po, es_ES.po: Updated so the contry dependent string is
	placed at es_ES.po for Spain and the US like number notation is
	stored at es.po. It's much more easy mantain the es_ES.po file than
	4 or 5 files from American countries.
	* es_DO.pom, es_GT.po, es_HN.po, es_MX.po, es_PA.po, es_PE.po,
	es_SV.po: Removed, we only need to update es.po and es_ES.po now.
2002-05-28 13:59:55 +00:00
Isam Bayazidi
96f9b4f199 adding Arabic file 2002-05-26 22:57:11 +00:00
Isam Bayazidi
3dbb6f1eca - adding Arabic translation file 2002-05-24 22:16:23 +00:00
Vlad Harchev
52ea02ba87 ru.po: updated russian translation from Dmitry G. Mastrukov <dmitry@taurussoft.org> 2002-05-19 04:35:28 +00:00
Vincent van Adrighem
1b5fe965df Updated Dutch translation fom Jeroen van der Vegt.
2002-05-15 Vincent van Adrighem <V.vanAdrighem@dirck.mine.nu>

	* nl.po: Updated Dutch translation fom Jeroen van der Vegt.
2002-05-15 20:29:21 +00:00
Valek Frob
7b274d19e4 Updated russian translation. 2002-05-10 15:11:28 +00:00
Chyla Zbigniew
934c7dca93 Updated Polish translation by GNOME PL Team <translators@gnome.pl> 2002-05-08 14:36:53 +00:00
Pablo Saratxaga
5fe502317e Added Vietnamese file 2002-05-08 11:41:26 +00:00
Duarte Loreto
0e5efea6f1 Updated Portuguese translation and converted to UTF-8.
2002-05-06  Duarte Loreto <happyguy_pt@hotmail.com>

        * pt.po: Updated Portuguese translation and converted to UTF-8.
2002-05-06 00:13:11 +00:00
Christian Rose
b1111e2b2a Updated Swedish translation.
2002-05-05  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2002-05-05 19:02:04 +00:00
Andraz Tori
64af09a8a2 Updated Slovenian translation 2002-04-29 23:32:11 +00:00
Changwoo Ryu
77ced38c16 Updated Korean translation.
* ko.po: Updated Korean translation.
2002-04-25 05:17:30 +00:00
Stanislav Visnovsky
8963e38a7c Updated Slovak translation by Marcel Telka <marcel@telka.sk>.
2002-04-24  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz>

        * sk.po: Updated Slovak translation by Marcel Telka <marcel@telka.sk>.
2002-04-24 11:40:52 +00:00
Kjartan Maraas
a8f4eec9e6 Updated Norwegian (bokml) translation.
2002-04-23  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian (bokml) translation.
2002-04-23 18:22:37 +00:00
Ole Laursen
a9e9fe07ef Updated Danish translation.
2002-04-19  Ole Laursen  <olau@hardworking.dk>

	* da.po: Updated Danish translation.
2002-04-19 18:58:38 +00:00
Pauli Virtanen
85b34b98af Updated Finnish translation.
2002-04-19  Pauli Virtanen  <pauli.virtanen@hut.fi>

	* fi.po: Updated Finnish translation.
2002-04-19 18:16:29 +00:00
Valek Frob
ab8bd67cdf Updated russian translation from Dmitry Mastrukov. 2002-04-09 10:04:24 +00:00
Duarte Loreto
5650b49719 Updated Portuguese translation.
2002-04-02  Duarte Loreto <happyguy_pt@hotmail.com>

        * pt.po: Updated Portuguese translation.
2002-04-01 23:56:56 +00:00
Abel Cheung
71426ed454 Added file. Added missing popt files.
2002-03-31  Abel Cheung  <maddog@linux.org.hk>

	* .cvsignore: Added file.
	* POTFILES.in: Added missing popt files.
2002-03-31 15:11:03 +00:00
Duarte Loreto
4458d6ba13 Updated Portuguese translation.
2002-03-25  Duarte Loreto <happyguy_pt@hotmail.com>

        * pt.po: Updated Portuguese translation.
2002-03-25 12:50:30 +00:00
Hasbullah Bin Pit
70210721e0 Updated Malay Translation.
2002-03-23  Hasbullah Bin Pit <sebol@ikhlas.com>

* ms.po: Updated Malay Translation.
2002-03-24 05:19:21 +00:00
Valek Frob
b81f82e9a2 Updated russian translation. 2002-03-15 15:41:04 +00:00
James Henstridge
4df359b9d3 AM_CONDITIONAL() statements can't be conditionally executed (automake
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-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.
2002-03-12 14:57:12 +00:00
Vincent van Adrighem
1c248d7e93 nl.po Dutch translation updated (Jeroen van der Vegt).
2002-03-07 Vincent van Adrighem <V.vanAdrighem@dirck.mine.nu>
* nl.po Dutch translation updated (Jeroen van der Vegt).
2002-03-08 20:53:06 +00:00
Vincent van Adrighem
b2368f46ca nl.po Translation updated by Jeroen van der Vegt
2002-03-06 Vincent van Adrighem <V.vanAdrighem@dirck.mine.nu>
* nl.po Translation updated by Jeroen van der Vegt
2002-03-07 00:28:15 +00:00
Kjartan Maraas
890398bbb5 Updated Norwegian (bokml) translation.
2002-03-06  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian (bokml) translation.
2002-03-06 15:03:16 +00:00
Germán Poó Caamaño
84cc3242fc Fixed spanish translation encoding 2002-03-06 14:02:40 +00:00
Germán Poó Caamaño
2456c458c2 es.po: Updated spanish translation. 2002-03-06 04:19:39 +00:00
Matthias Warkus
a6710fbfad Updated German translation 2002-03-05 13:11:26 +00:00
Chyla Zbigniew
6dca1e55d8 Updated Polish translation by GNOME PL Team <translators@gnome.pl> 2002-03-01 14:30:32 +00:00
Kjartan Maraas
1516e5e192 Updated Norwegian (bokml) translation.
2002-02-12  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian (bokml) translation.
2002-02-12 01:07:53 +00:00
Kevin Vandersloot
f659523856 bump version
2002-02-10  Kevin Vandersloot <kfv101@psu.edu>

        * configure.in: bump version

        * release 1.90.2
2002-02-10 14:35:48 +00:00
Bastien Nocera
6b81006d08 - remove stamp-h.in, remove need for dc in configure.in 2002-02-09 19:11:35 +00:00
Kwok-Koon Cheung
b70be80aca Updated traditional Chinese translation. 2002-02-08 18:52:16 +00:00
Kwok-Koon Cheung
f8fb49a428 Rename simplified Chinese translation 2002-02-05 09:24:45 +00:00
Christian Rose
18356c6ae6 Removed, they are obsoleted by intltool. Updated and converted to UTF-8.
2002-01-27  Christian Rose  <menthos@menthos.com>

	* README.tools, update.pl, update.sh: Removed, they are
	obsoleted by intltool.
	* sv.po: Updated and converted to UTF-8.
2002-01-27 01:57:53 +00:00
Roy-Magne Mo
807d4bf6ae Updated Norwegian nynorsk translation 2002-01-25 04:51:21 +00:00
Hasbullah Bin Pit
c0350d38ae "Hasbullah Bin Pit (sebol)" <sebol@ikhlas.com> Tag: libgtop-GNOME-2-0-port
"Hasbullah Bin Pit (sebol)" <sebol@ikhlas.com>
Tag: libgtop-GNOME-2-0-port
        * configure.in: Added ms in ALL_LINGUAS.
        * po/ms.po: Added Malay Translation.
        * po/.cvsignore: Added 'libgtop-2.0.pot'.
2002-01-14 20:27:53 +00:00
Kwok-Koon Cheung
d3a9e47ffb Fix previous changelog. 2002-01-14 00:59:46 +00:00
Kwok-Koon Cheung
c8a3e46433 Make examples at least compile under glib 1.3.x, and make use of
* Make examples at least compile under glib 1.3.x, and make use
	  of GETTEXT_PACKAGE.
	* Don't install popt* header.
	* Add nn to ALL_LINGUAS.
2002-01-14 00:56:50 +00:00
Kevin Vandersloot
222706a0d4 add back the support stuf but make it really work
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-11 04:25:27 +00:00
Kevin Vandersloot
2168cc5f71 remove gnome support check. Fixes the build for those with automake <
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
2002-01-10 02:30:57 +00:00
Miles Lane
08808384f4 Added "#undef HAVE_GETTEXT" entry. Removed file. added glib-gettextize
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-12-16 02:40:42 +00:00
Yuri Syrota
0f1306a20f Updated Ukrainian Translation 2001-12-07 09:25:07 +00:00
Yuri Syrota
84b05c0219 Updated Ukrainian Translation 2001-12-05 13:12:48 +00:00
Yuri Syrota
6916ada308 Updated Ukrainian Translation 2001-12-05 13:11:35 +00:00
Kevin Vandersloot
5943c96d35 copy some of the macros that were formerly in gnome-macros
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-28 02:00:37 +00:00
Kevin Vandersloot
909a3e6512 ChangeLog 2001-11-26 22:17:21 +00:00
Kevin Vandersloot
ca94618e27 Apply patch fixing security issue from intexxia labs - #1048-261101
2001-11-26  Kevin Vandersloot <kfv101@psu.edu>

        * gnuserv.c: Apply patch fixing security issue from
        intexxia labs - #1048-261101
2001-11-26 22:16:57 +00:00
Kwok-Koon Cheung
a478d380f4 Various cleanup as well as a few fixes for parallel install 2001-11-26 06:15:53 +00:00
Kwok-Koon Cheung
af80d4d3d2 Bye-bye stamp-cat-id 2001-11-26 05:13:45 +00:00
Kevin Vandersloot
973dc2d37c port stable libgtop to GNOME 2.0. Too much to detail. pkgconfig is now
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-11-26 03:23:22 +00:00
Chyla Zbigniew
97b32c7046 Updated Polish translation by GNOME PL Team <translators@gnome.pl> 2001-10-30 22:56:35 +00:00
Carlos Perelló Marín
fb8184afba *** empty log message *** 2001-10-18 00:53:25 +00:00
Carlos Perell Marn
16643866cf Added by Duarte Loreto <happyguy_pt@hotmail.com>
2001-10-17  Carlos Perell Marn <carlos@gnome-db.org>

	* pt.po: Added by Duarte Loreto <happyguy_pt@hotmail.com>
2001-10-18 00:47:22 +00:00
Kwok-Koon Cheung
aa9299f344 Parallel installation fix {moved headers to $(includedir)/libgtop-1.0/ } 2001-10-17 03:53:56 +00:00
Kwok-Koon Cheung
6f69cd863b New traditional Chinese translation. 2001-09-15 23:20:45 +00:00
Kjartan Maraas
7262bf39d8 Added Norwegian (nynorsk) translation.
2001-07-16  Kjartan Maraas  <kmaraas@gnome.org>

	* nn.po: Added Norwegian (nynorsk) translation.
2001-07-16 20:25:25 +00:00
Andraz Tori
9e773390cc Updated Slovenian translation 2001-05-03 21:59:35 +00:00
Yuri Syrota
54cbdb8158 Updated Ukrainian transaltion 2001-03-30 10:23:17 +00:00
Yuri Syrota
c70b11ee00 Updated Ukrainian transaltion 2001-03-28 13:02:47 +00:00
Andraz Tori
965b26c926 Updated Slovenian translation 2001-03-25 13:11:30 +00:00
Fatih Demir
384cd6b2db Full tr.po 2001-03-25 10:56:03 +00:00
Fatih Demir
b055e3710b Updated tr.po from Grkem 2001-03-23 21:29:49 +00:00
Yuri Syrota
669c6fd670 Updated Ukrainian transaltion 2001-03-22 10:49:57 +00:00
Valek Frob
617c4568d2 Updated russian translation. 2001-03-15 18:49:12 +00:00
Pablo Saratxaga
93c998cf7a fixed chars 2001-03-15 10:52:29 +00:00
Pablo Saratxaga
46a0750736 corrected charset line 2001-03-15 10:42:32 +00:00
Andraz Tori
e9227d1a2e Updated Slovenian translation 2001-03-11 22:18:24 +00:00
Pablo Saratxaga
41b7120527 Converted az.po to 8bit encoding
added tr.po from HEAD branch
fixed the ALL_LINGUAS to match the available languages
2001-03-09 16:39:21 +00:00
Andraz Tori
0ad6ae0a12 Updated Slovenian translation 2001-03-01 23:29:52 +00:00
Martin Baulig
6197e3ad47 Released LibGTop 1.0.12 "Gerolzhofen". 2001-02-27 14:14:03 +00:00
Martin Baulig
e577717013 Released LibGTop 1.0.12 "Gerolzhofen".
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-27 14:01:13 +00:00
Martin Baulig
6b19a0090a February 27, 2001: =================
February 27, 2001:
=================

* Released LibGTop 1.0.12 "Gerolzhofen".

  - fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits).

  - fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses
    `_KERNEL' instead of `KERNEL'). Bug #51334.

  - for BSDI, comment out `subnet' field in netload; this should make
    it compile, but there may be other problems. Bug #13345.

  This release is for GNOME 1.4 Beta2.
2001-02-27 14:00:40 +00:00
Martin Baulig
a515242f17 Comment out the `subnet' field on BSDI; this should make it compile. Bug
2001-02-27  Martin Baulig  <baulig@suse.de>

	* netload.c: Comment out the `subnet' field on BSDI; this should
	make it compile. Bug #13345.
2001-02-27 13:52:56 +00:00
Martin Baulig
a7b13c7d83 Applied a patch from Rolf Grossmann (grossman@securitas.net) for FreeBSD
2001-02-27  Martin Baulig  <baulig@suse.de>

	* shm_limits.c, msg_limits.c, sem_limits.c: Applied a patch
	from Rolf Grossmann (grossman@securitas.net) for FreeBSD 4.2.
	Fixes #51334.
2001-02-27 13:40:10 +00:00
Simos Xenitellis
849d2da085 Update of Greek translation 2001-02-25 20:18:16 +00:00
Simos Xenitellis
d4b195045a More Greek messages 2001-02-23 13:32:00 +00:00
Yuri Syrota
c269f0adb8 Updated Ukrainian translation 2001-02-20 07:43:11 +00:00
Andraz Tori
4f65ee018c Updated Slovenian translation 2001-02-19 23:08:08 +00:00
Simos Xenitellis
8a8b975d08 Update of Greek translation 2001-02-19 03:03:22 +00:00
Andraz Tori
64955004a0 Updated Slovenian translation 2001-02-18 19:44:35 +00:00
Martin Baulig
4ef82847fe Applied a patch from Laszlo PETER <Laszlo.Peter@ireland.sun.com> for
2001-02-18  Martin Baulig  <baulig@suse.de>

	Applied a patch from Laszlo PETER <Laszlo.Peter@ireland.sun.com>
	for Solaris 8.

	* msg_limits.c: `struct msginfo' no longer has msgmap and msgssz.
	* sem_limits.c: `struct seminfo' no longer has a semmap field.
2001-02-18 14:27:27 +00:00
Andraz Tori
9da5658ba1 Updated Slovenian translation 2001-02-16 21:47:18 +00:00
Christian Meyer
b300842f47 Some minor changes for German translation. 2001-02-15 16:08:51 +00:00
Yuri Syrota
9a49872026 Updated Ukrainian translation 2001-02-15 13:07:35 +00:00
Martin Baulig
1aa7aae2f6 Released LibGTop 1.0.11 "Jasmin".
2001-02-15  Martin Baulig  <baulig@suse.de>

	Released LibGTop 1.0.11 "Jasmin".
2001-02-15 01:40:58 +00:00
Martin Baulig
70ba9e2559 Released LibGTop 1.0.11 "Jasmin".
2001-02-15  Martin Baulig  <baulig@suse.de>

	Released LibGTop 1.0.11 "Jasmin".

	* NEWS: Added news entry for 1.0.11.
2001-02-15 01:20:08 +00:00
Martin Baulig
13323e55ee February 14, 2001: =================
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.
2001-02-15 01:19:36 +00:00
Martin Baulig
57d96878de February 15, 2001: =================
February 15, 2001:
=================

* This will be LibGTop 1.1.11 "Gerolzhofen":

  - merged in the Solaris code from LIBGTOP_1_1_2_PATCHES.

  - minor OpenBSD fixes.

  - again a bunch of updated translations.
2001-02-15 00:29:30 +00:00
Martin Baulig
10de82e256 Added solaris to the DIST_SUBDIRS. 2001-02-14 23:56:16 +00:00
Martin Baulig
29240a5a96 Ooops, set LIBGTOP_VERSION_SUFFIX to -cvs. 2001-02-14 23:50:32 +00:00
Martin Baulig
1baa2ef8ff Merged from LIBGTOP_1_1_2_PATCHES.
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
	have your tarballs called `libgtop-1.x.y-snap.tar.gz' or whatever.
	This only affects the `VERSION' variable and thus how the resulting
	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'
	when in maintainer-mode.
2001-02-14 23:42:19 +00:00
Martin Baulig
0bd5a6c082 **** Merged from LIBGTOP_1_1_2_PATCHES **** 2001-02-14 23:07:41 +00:00
Martin Baulig
2698263164 Removed; this file doesn't exist in the stable branch.
2001-02-14  Martin Baulig  <baulig@suse.de>

	* include/glibtop/limits.h: Removed; this file doesn't exist
	in the stable branch.
2001-02-14 22:42:00 +00:00
Martin Baulig
85d53a69cf Added *.mo. 2001-02-14 21:40:08 +00:00
Martin Baulig
0a42a8d018 Make things work on OpenBSD 2.6; this is basically the same than on
2001-02-14  Martin Baulig  <baulig@suse.de>

	* proctime.c (glibtop_get_proc_time_p): Make things work on
	OpenBSD 2.6; this is basically the same than on NetBSD.
2001-02-14 21:36:42 +00:00
Martin Baulig
9d772e3c07 Removed @LIBSUPPORT@.
2001-02-14  Martin Baulig  <baulig@suse.de>

	* Makefile.am (libgtop_server_LDADD): Removed @LIBSUPPORT@.
2001-02-14 21:35:45 +00:00
jjranta
ddd9d11c71 Updated Finnish translation 2001-02-14 19:11:58 +00:00
Stano Visnovsky
b161b5bb72 Updated Slovak translation from Marcel Telka <marcel@telka.sk> 2001-02-14 11:01:39 +00:00
Andraz Tori
5607fefe30 Updated Slovenian translation 2001-02-13 13:47:21 +00:00
Szabolcs Ban
9d9aed4023 Updated hu.po by Robert Vanyi 2001-02-13 13:07:24 +00:00
Martin Baulig
62edf91314 Set version number to 1.0.11, binary age 10, interface age 10.
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 12:41:42 +00:00
Martin Baulig
38e55efd2d Fix bug #14076.
2001-02-13  Martin Baulig  <baulig@suse.de>

	Fix bug #14076.

	* open.c (glibtop_open_s): Check whether /proc/1/cpu exists to
	detect SMP support rather than reading /proc/stat; on Linux 2.4.x,
	/proc/stat has "cpu" and "cpu0" entries even for non-SMP systems.
2001-02-13 12:31:57 +00:00
Stano Visnovsky
67c9c8e3e3 Added sk to ALL_LINGUAS 2001-02-13 11:08:06 +00:00
Stano Visnovsky
013ab1841d Added Slovak translation from Marcel Telka <marcel@telka.sk> 2001-02-13 11:05:42 +00:00
Martin Baulig
88c5d4fd61 Reverted Jarkko Ranta's change; please do not commit any compressed files
2001-02-13  Martin Baulig  <baulig@suse.de>

	* fi.po: Reverted Jarkko Ranta's change; please do
	not commit any compressed files in future.
2001-02-13 10:57:50 +00:00
Christophe Merlet
adbe42cda3 Updated French translation. 2001-02-10 09:30:48 +00:00
Gustavo Maciel Dias Vieira
2e6e310a3e Updated Brazilian Portuguese translation.
2001-02-09  Gustavo Maciel Dias Vieira  <gdvieira@zaz.com.br>

* pt_BR.po: Updated Brazilian Portuguese translation.
2001-02-09 16:18:26 +00:00
Nam SungHyun
818e941413 updated 2001-02-09 04:52:08 +00:00
jjranta
dfa868ce82 Updated Finnish translation by Pauli Virtanen 2001-02-08 18:17:42 +00:00
Gustavo Maciel Dias Vieira
dc353a4172 Added pt_BR to ALL_LINGUAS.
2001-02-08  Gustavo Maciel Dias Vieira  <gdvieira@zaz.com.br>

* configure.in (ALL_LINGUAS): Added pt_BR to ALL_LINGUAS.
2001-02-08 14:51:34 +00:00
Valek Frob
4da65d5d0b Updated russian translation. 2001-02-08 11:52:07 +00:00
Christophe Merlet
a2043e3aaf Updated French translation. 2001-02-05 17:32:57 +00:00
Andraz Tori
f03304a920 Updated Slovenian translation 2001-01-25 21:02:22 +00:00
Andraz Tori
beedc57724 Added sl translations 2001-01-23 11:57:17 +00:00
Pablo Saratxaga
3049619931 updated Azeri file 2001-01-06 22:23:52 +00:00
Pablo Saratxaga
ddb0c913c1 Added Azeri file 2001-01-05 15:35:25 +00:00
Martin Baulig
c7244ba1ba Added --cflags', --libs' and `--extra-libs' parameters.
2000-11-21  Martin Baulig  <baulig@suse.de>

	* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs'
	parameters.
2000-11-21 15:27:18 +00:00
Yuri Syrota
146ccb2511 Updated Ukrainian translation 2000-11-21 13:59:26 +00:00
Martin Baulig
91c35548e4 Released LibGTop 1.0.10 "November Rain".
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-11-20 15:13:45 +00:00
Yuri Syrota
8705ef6b65 Updated Ukrainian translation 2000-11-20 08:41:28 +00:00
Yuri Syrota
d5b27269d8 Updated Ukrainian translation 2000-11-16 08:06:57 +00:00
Yuri Syrota
6915f098ca Updated Ukrainian translation 2000-10-31 11:43:08 +00:00
Yuri Syrota
376613ddd4 Updated Ukrainian translation 2000-10-23 07:44:18 +00:00
Yuri Syrota
6a9cd61fd9 Updated Ukrainian translation 2000-10-23 07:28:59 +00:00
Yukihiro Nakai
18a3526ea7 ja.po: Update Japanese translation. 2000-10-14 18:37:58 +00:00
Szabolcs Ban
333c85736c Updated, thanx Robi 2000-10-11 11:44:49 +00:00
Yukihiro Nakai
df5ec3c02a ja.po: commit the right one. 2000-10-11 06:21:03 +00:00
Yukihiro Nakai
368e94c8e1 ja.po: Update Japanese translation. 2000-10-11 06:14:51 +00:00
Yuri Syrota
f5de8e4ead Updated Ukrainian translation 2000-10-04 08:04:36 +00:00
Szabolcs Ban
715975f7ed Added stable version 2000-10-04 07:13:11 +00:00
Christian Meyer
f13099194c Minor fix in German translation. 2000-09-20 10:51:08 +00:00
Christian Meyer
1dd8a8e8fc Updated German translation. 2000-09-19 22:13:22 +00:00
Christian Meyer
d9fb27e57c Updates German translation, Added update.pl and README.tools from menesis. 2000-09-10 15:07:26 +00:00
Kenneth Christiansen
dde1a2c1aa Translations from Keld
bonobo/po/da.po dia/po/da.po dr-genius/po/da.po eog/po/da.po
gconf/po/da.po gdict/po/da.po gdm2/po/da.po gfax/po/da.po
gimp/po/da.po gimp/po-libgimp/da.po gimp/po-plug-ins/da.po
gnome-applets/po/da.po gnome-chess/po/da.po gnome-db/po/da.po
gnome-iconedit/po/da.po gnome-lokkit/po/da.po
gnome-media/po/da.po gnome-pilot/po/da.po gnomeicu/po/da.po
gnop/po/da.po gphoto/po/da.po gtkhtml/po/da.po gxsnmp/po/da.po
libgtop/po/da.po
mc/po/da.po oaf/po/da.po rp3/po/da.po sodipodi/po/da.po
2000-09-09 00:06:12 +00:00
Kjartan Maraas
5bff21b7b4 Updated Norwegian translation.
2000-08-16  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian translation.
2000-08-16 11:58:54 +00:00
Takayuki KUSANO
e58c732f54 Updated Japanese translation.
2000-06-25  Takayuki KUSANO  <AE5T-KSN@asahi-net.or.jp>

	* ja.po: Updated Japanese translation.
2000-08-16 11:57:56 +00:00
Takayuki KUSANO
48404428a2 ' field.
* fix 'Language-Team:' field.
2000-06-25 12:51:01 +00:00
Takayuki KUSANO
d009071e40 Updated Japanese translation.
* ja.po: Updated Japanese translation.
2000-06-25 12:48:10 +00:00
Yuri Syrota
33b1fcf4f9 Updated Ukrainian translation 2000-05-26 07:59:40 +00:00
Martin Baulig
c0a9dedc4b Released LibGTop 1.0.9 "Stuttgart". 2000-05-25 15:42:24 +00:00
Martin Baulig
7ab96d212d Released LibGTop 1.0.9 "Stuttgart".
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-05-25 14:27:14 +00:00
Martin Baulig
bd6e248adf Released LibGTop 1.0.8 "Stuttgart".
2000-05-25  Martin Baulig  <baulig@suse.de>

	Released LibGTop 1.0.8 "Stuttgart".
2000-05-25 14:20:31 +00:00
Manuel de Vega Barreiro
9abfb85080 *** empty log message *** 2000-05-20 15:27:39 +00:00
Manuel de Vega Barreiro
fdef2d5b38 Spanish translation 2000-05-20 15:26:47 +00:00
Kenneth Christiansen
641eb24a8b Translations from Keld
Tag: LIBGTOP_STABLE_1_0
libgtop/po/da.po
2000-05-18 12:42:24 +00:00
Martin Norback
8754f434d1 Updated Swedish translation 2000-05-18 12:26:46 +00:00
Kenneth Christiansen
f656208234 New update 2000-05-18 11:18:37 +00:00
Jesus Bravo Alvarez
0df1594f31 Updated Galician translation 2000-05-17 22:17:19 +00:00
Kjartan Maraas
1ab7936ced Updated translation.
2000-05-17  Kjartan Maraas  <kmaraas@online.no>

	* no.po: Updated translation.
2000-05-17 21:14:35 +00:00
Kenneth Christiansen
dcd43f8a15 Not good, since new POTFILES.in, but much better that 20 minutes ago :) 2000-05-16 22:16:00 +00:00
Kenneth Christiansen
7f7c5506f7 New strings added Added list of files which should not be in POTFILES.in
2000-05-16  Kenneth Christiansen  <kenneth@gnome.org>

        * POTFILES.in: New strings added
        * POTFILES.ignore: Added list of files which should
          not be in POTFILES.in of some reason
2000-05-16 22:05:02 +00:00
Kenneth Christiansen
b0a4cb2379 New Danish translation + update.sh script 2000-05-16 19:29:56 +00:00
Jesus Bravo Alvarez
8c06ed1516 Added some translations from HEAD branch 2000-05-16 09:09:59 +00:00
Andreas Hydén
56154e50f2 Added update.sh script 2000-05-09 21:51:05 +00:00
Jesus Bravo Alvarez
902670623f Updated Galician translation 2000-04-01 18:18:26 +00:00
Martin Baulig
0e5d856065 Set version number to 1.0.8 binary age 7, interface age 7.
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-19 23:18:05 +00:00
Martin Baulig
35b6acfc22 Updated this a bit. 2000-02-16 15:41:37 +00:00
Martin Baulig
0830a0b8a7 Released LibGTop 1.0.7 "Copenhagen".
2000-02-15  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.0.7 "Copenhagen".
2000-02-15 11:09:36 +00:00
Martin Baulig
f4be080d63 *** empty log message *** 2000-02-15 11:07:33 +00:00
Martin Baulig
a599e04eb6 *** empty log message *** 2000-02-14 16:41:14 +00:00
Martin Baulig
0dec9a7b70 First version of a debian/ directory for LibGTop 1.0.x. 2000-02-14 14:54:13 +00:00
Martin Baulig
75958ce2ab Make sure we close all open files. 2000-02-14 14:34:33 +00:00
Martin Baulig
20bbc17f6b 1.0.7 again :) 2000-02-13 22:39:54 +00:00
Martin Baulig
19ffa1419a Only #include <osreldate.h> on FreeBSD. 2000-02-13 21:31:39 +00:00
Martin Baulig
1e568f294e **** Merged from HEAD ****
2000-02-13  Martin Baulig  <martin@home-of-linux.org>

	* *.c: kvm_nlist () returns -1 on error, but a positive return value
	does not necessarily mean failure. Fixes #3302 which was reported by
	Matthias Scheler some time ago.
2000-02-13 15:47:59 +00:00
Martin Baulig
7752a312e9 Set correct buf->size' and buf->flags' fields when `max_length' was
2000-01-22  Martin Baulig  <martin@home-of-linux.org>

	* procargs.c (glibtop_get_proc_args_s): Set correct `buf->size' and
	`buf->flags' fields when `max_length' was given. Fixes #5183.
2000-01-21 23:27:08 +00:00
Martin Baulig
23c7449898 **** Merged from HEAD ****
2000-01-20  Martin Baulig  <martin@home-of-linux.org>

	* fsusage.c (adjust_blocks): Use `u_int64_t' arguments and
	return value to avoid long int overflows on machines with large
	disks.

	* fsusage.h (struct fs_usage): Use `u_int64_t' here as well.
2000-01-20 21:54:28 +00:00
Martin Baulig
64b3db2dc0 **** Merged from Hardangervidda ****
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* gnuserv.c (setup_table): Don't dump core when the table of
	permitted host names contains a NULL pointer.
1999-11-28 16:43:00 +00:00
Martin Baulig
e94b4882b6 **** Merged from Hardangervidda ****
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* procstate.c (glibtop_get_procstate_s): Stat "/proc/<pid>" instead
	of "/proc/<pid>/state" to get `uid' and `gid'. Thanks to Jason Becker
	for pointing out that GTop reported wrong uid's.
1999-11-28 11:57:11 +00:00
Martin Baulig
1e629c9a86 **** Merged from HEAD ****
Fix bug #2909; I made some little mistake when applying a patch here.
1999-10-20 14:46:32 +00:00
Martin Baulig
6b6e1261f1 **** Merged from HEAD ****
1999-10-19  Martin Baulig  <martin@home-of-linux.org>

	* uptime.c (glibtop_get_uptime_s): Don't cast uptime and idletime
	to float as suggested by John Kodis.
1999-10-19 00:16:29 +00:00
Martin Baulig
bbc872138b Set version number to 1.0.7 binary age 6, interface age 6.
1999-10-19  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.7 binary age 6,
	interface age 6.
1999-10-19 00:04:38 +00:00
Martin Baulig
3555a6ca0c Released LibGTop 1.0.6 "October LibGTop".
1999-10-18  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.0.6 "October LibGTop".
1999-10-18 20:03:58 +00:00
Martin Baulig
e5928d0b13 Let's call it "October LibGTop" ... :) 1999-10-18 20:02:36 +00:00
Martin Baulig
5bb7e07e95 One should not touch release notes of released versions ... but
this was really neccessary to avoid some confusion.
1999-10-18 19:51:30 +00:00
Martin Baulig
043f4a498f *** empty log message *** 1999-10-18 19:49:56 +00:00
Martin Baulig
94297b8460 Added release notes for LibGTop 1.0.6. 1999-10-18 19:49:38 +00:00
Martin Baulig
0f5b941b15 Removed obsolete file.
1999-10-18  Martin Baulig  <martin@home-of-linux.org>

	* NEWS.old: Removed obsolete file.
1999-10-18 19:47:12 +00:00
Martin Baulig
df6d645afd Removed obsolete file.
1999-10-18  Martin Baulig  <martin@home-of-linux.org>

	* TODO: Removed obsolete file.
1999-10-18 19:35:39 +00:00
Martin Baulig
9ac47c7839 We start maintaining a NEWS file now :)
1999-10-18  Martin Baulig  <martin@home-of-linux.org>

	* NEWS: We start maintaining a NEWS file now :)
1999-10-18 19:34:20 +00:00
Martin Baulig
8d734d1296 This is an ordinary branch now. 1999-10-18 18:57:39 +00:00
Martin Baulig
7fa43bba5d C-u 1 texinfo-multiple-files-update 1999-10-18 18:54:50 +00:00
Martin Baulig
e2e01a9405 Remove internals.texi from the stable branch. 1999-10-18 18:49:28 +00:00
Martin Baulig
5530697ab8 **** Merged from HEAD ****
1999-10-16  Martin Baulig  <martin@home-of-linux.org>

	Applied all patches from the FreeBSD 3.3 ports collection.

	* swap.c: Only #include <rlist.h> for __FreeBSD_version < 400005.

	* prockernel.c: Make it compile on FreeBSD / alpha.

	* procsignal.c: Some fixes for FreeBSD-current.
1999-10-16 18:31:43 +00:00
Martin Baulig
95f279d1a7 Set version number to 1.0.6 binary age 5, interface age 5.
1999-10-16  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.6 binary age 5,
	interface age 5.
1999-10-16 18:03:12 +00:00
Martin Baulig
1904a463e2 **** Merged from HEAD ****
1999-10-16  Martin Baulig  <martin@home-of-linux.org>

	* procstate.c (glibtop_get_proc_state_p): Don't use the
	`GLIBTOP_PROCESS_*' constants for process states for
	LibGTop 1.0.x.
1999-10-16 18:01:39 +00:00
Jesus Bravo Alvarez
7ce1f9e9d7 Added Galician translation 1999-10-09 21:41:12 +00:00
Martin Baulig
5221f6d4f8 Released LibGTop 1.0.5.
1999-09-29  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.0.5.
1999-09-29 00:46:31 +00:00
Martin Baulig
ac175a4cbf updated po files for 1.0.5. 1999-09-29 00:43:54 +00:00
Martin Baulig
f53d1a69bc **** Merged from HEAD ****
1999-09-29  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (libgtop_top_builddir): AC_SUBST this.
1999-09-28 23:29:47 +00:00
Kenneth llphaane Christiansen
adaa9cad97 Updated.
1999-09-29  Kenneth llphaane Christiansen  <kenneth@ripen.dk>

	* da.po: Updated.
1999-09-28 23:02:35 +00:00
Elliot Lee
7201ec7790 Remove %{prefix}/lib/libgtop
Remove %{prefix}/lib/libgtop
1999-09-27 22:43:10 +00:00
Chyla Zbigniew
113525a7d7 Updated Polish translation 1999-09-26 22:31:18 +00:00
Martin Baulig
d6e62e85d2 Set version number to 1.0.5 binary age 4, interface age 4.
1999-09-24  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4,
	interface age 4.
1999-09-24 06:32:28 +00:00
Martin Baulig
ee153445f0 1.0.4. 1999-09-24 06:08:35 +00:00
Martin Baulig
50b43a0f41 Released LibGTop 1.0.4.
1999-09-24  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.0.4.
1999-09-24 05:53:40 +00:00
Kjartan Maraas
25c26a6620 doh 1999-09-21 22:55:09 +00:00
Kjartan Maraas
0438b9d69a Added Danish translation from Kenneth Christiansen <kenneth@ripen.dk>.
1999-09-22  Kjartan Maraas  <kmaraas@online.no>

	* da.po: Added Danish translation from Kenneth
	Christiansen <kenneth@ripen.dk>.
1999-09-21 22:54:44 +00:00
Vincent Renardias
90c01f24fe Updated.
* Updated.
1999-09-20 14:00:34 +00:00
Martin Baulig
dc0f442247 **** Merged from HEAD ****
1999-09-19  Martin Baulig  <martin@home-of-linux.org>

	* libgtopConf.sh.in: Added MODULE_VERSION on Miguel's
	request (set it to "libgtop-@LIBGTOP_VERSION@").
1999-09-18 23:09:05 +00:00
Pablo Saratxaga
017f4d20c7 merged files from head cvs for translations 1999-09-18 17:09:00 +00:00
Chyla Zbigniew
c021ce7851 Added pl to ALL_LINGUAS 1999-09-17 03:37:44 +00:00
Chyla Zbigniew
93ab9882c3 Added Polish translation 1999-09-17 03:35:23 +00:00
Martin Baulig
a0477c6212 **** Merged from HEAD **** 1999-09-17 00:37:41 +00:00
Martin Baulig
6780e78a6b Set version number to 1.0.4 binary age 3, interface age 3.
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 22:25:54 +00:00
Martin Baulig
d8871029eb Merged everything since May 31 from HEAD and released LibGTop 1.0.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-09-16 21:49:18 +00:00
Martin Baulig
6799ce187b **** Merged from HEAD **** 1999-09-16 21:38:03 +00:00
Tomas Ogren
2b6b2578be Synced
1999-09-16  Tomas Ogren  <stric@ing.umu.se>

* sv.po: Synced
1999-09-16 21:37:45 +00:00
Martin Baulig
1b0a9fd291 Should be ok now. 1999-09-16 21:37:20 +00:00
Martin Baulig
43e070dd8b make update-po. 1999-09-16 21:33:27 +00:00
Martin Baulig
b0d18119ff **** Merged from HEAD **** 1999-09-16 21:31:36 +00:00
Kjartan Maraas
be05f8163a Updated translation.
1999-07-11  Kjartan Maraas  <kmaraas@online.no>

		* no.po: Updated translation.
1999-07-11 12:27:13 +00:00
Tomas Ogren
d6cdf95d83 New file
1999-07-11  Tomas Ogren  <stric@ing.umu.se>

* sv.po: New file
1999-07-11 01:41:44 +00:00
Tomas Ögren
2256a9127f darn typo 1999-07-11 01:41:01 +00:00
Tomas Ögren
e6507a80be 1999-07-11 Tomas Ogren <stric@ing.umu.se>e
* configure.in: Added sv to ALL_LINGUAS
1999-07-11 01:40:47 +00:00
Tomas Ogren
8411e566b4 Fixed a tyop
1999-07-11  Tomas Ogren  <stric@ing.umu.se>

* sysdeps/names/procmem.c: Fixed a tyop
1999-07-11 01:35:40 +00:00
Martin Baulig
40854f4179 Set version number to 1.0.3 binary age 2, interface age 2.
1999-05-31  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2,
	interface age 2.
1999-05-31 14:11:07 +00:00
Martin Baulig
41062d0262 Released LibGTop 1.0.2. 1999-05-31 13:34:18 +00:00
Martin Baulig
58c882a860 Enable Timur's BSDI port by default. 1999-05-28 00:43:40 +00:00
Martin Baulig
789d156972 1.0.2. 1999-05-28 00:26:38 +00:00
Martin Baulig
19c24da036 **** Merged from HEAD ****
1999-05-07  Martin Baulig  <martin@home-of-linux.org>

	* server.c (main): There's some problem with uname () - some systems
	like Solaris or Digital Unix return a nonnegative value on success,
	some others like Linux return 0. Since all known systems seem to return
	a negative value on failure, we simply check whether the return value is
	not negative here.
1999-05-27 23:30:48 +00:00
Martin Baulig
929a025f53 **** Merged from HEAD ****
Use `(1L << feature)' instead of `(1 << feature)' to avoid problems
with integer overflows when we add more fields.
1999-05-27 23:30:11 +00:00
Martin Baulig
6a7c289305 *** empty log message *** 1999-05-27 23:26:43 +00:00
Martin Baulig
b65a4a7dcb **** Merged from HEAD **** 1999-05-27 23:23:30 +00:00
Martin Baulig
39b2fffe83 **** Merged from HEAD ****
1999-05-07  Martin Baulig  <martin@home-of-linux.org>

	* timings.c (timersub): Renamed this to `libgtop_timersub' and define
	it on all systems.
1999-05-27 23:19:38 +00:00
Martin Baulig
efb913acff **** Merged from HEAD ****
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-27 22:34:24 +00:00
Martin Baulig
79e756a2f7 **** Merged from HEAD ****
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.
1999-05-27 21:42:13 +00:00
Martin Baulig
b08968e644 **** Merged from HEAD **** 1999-05-27 21:23:18 +00:00
Martin Baulig
dff497d2fa **** Merged from HEAD ****
Use `(1L << feature)' instead of `(1 << feature)' to avoid problems
with integer overflows when we add more fields.
1999-05-27 19:30:30 +00:00
Martin Baulig
38de742ca4 **** Merged from HEAD ****
Merged everything from HEAD for the upcoming release.
1999-05-27 18:56:53 +00:00
Martin Baulig
e0d3401bc4 Only #include <sys/param.h> when inside LibGTop. 1999-05-27 18:41:50 +00:00
Martin Baulig
aae2b5a94d *** empty log message *** 1999-05-27 18:39:32 +00:00
Martin Baulig
a5bd38fc19 **** Merged from HEAD ****
Use `(1L << feature)' instead of `(1 << feature)' to avoid problems
with integer overflows when we add more fields.
1999-05-27 14:04:16 +00:00
Martin Baulig
931b8f065e Merged from HEAD. 1999-05-26 15:31:35 +00:00
Martin Baulig
f7885e488f Merged this from HEAD.
1999-05-26  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (INCLUDES): Define `LIBGTOP_VERSION_CODE' here so we
	can use version conditionals in the sysdeps code.
1999-05-26 13:19:03 +00:00
Martin Baulig
8122db69ee Merged I4B fixes for NetBSD from the HEAD. 1999-05-25 17:32:08 +00:00
Martin Baulig
ab13d4919d Make that "dc" think a bit more clean. 1999-05-21 08:19:58 +00:00
Martin Baulig
1d955fbf1f *** empty log message *** 1999-05-20 10:10:32 +00:00
Martin Baulig
8af25a2003 Merged the LibGTop Manual from the HEAD.
1999-05-16  Martin Baulig  <martin@home-of-linux.org>

	* doc: Merged the LibGTop Manual from the HEAD.
1999-05-16 13:48:14 +00:00
Martin Baulig
12eb6a25ec Applied a patch from David Kaelbling:
some compilers (like the SGI IRIX 6.x native one) enfore the
  "casts are not lvalues" maxim.
1999-05-06 22:09:26 +00:00
Martin Baulig
77ced087a1 This is the `LIBGTOP_STABLE_1_0' branch in CVS; please do only commit bug
1999-05-03  Martin Baulig  <martin@home-of-linux.org>

	This is the `LIBGTOP_STABLE_1_0' branch in CVS; please do only
	commit bug fixes here.

	* LIBGTOP-VERSION: Set version number to 1.0.2 binary age 1,
	interface age 0.
1999-05-03 20:31:51 +00:00
Martin Baulig
983475d0c1 Minor Alpha fixes. 1999-05-03 20:27:25 +00:00
Martin Baulig
70b65c05e5 Merged a few bug fixes from the HEAD. 1999-05-03 20:06:40 +00:00
550 changed files with 56975 additions and 36634 deletions

View File

@@ -1,7 +1,5 @@
Makefile
Makefile.in
call-vector.h
call-vector.h
aclocal.m4
config.cache
config.h
@@ -15,8 +13,6 @@ gtopConf.sh
i386-bsdi
i686-pc-linux-gnu
intl
libgtop-1.*.*.tar.gz
libgtop-1.*.*
libgtop-mirror.sh.swp
libgtopConf.sh
libtool
@@ -34,12 +30,6 @@ i686-pc-linux-gnu-linux
libgtop-config
ABOUT-NLS
libgtop.spec
install-sh
mkinstalldirs
missing
INSTALL
COPYING
glibtop-config.h
stamp-gc-h
build-debstamp
install-debstamp
libgtop*.tar.gz
*-debstamp
libgtop*.pc

802
ChangeLog
View File

@@ -1,508 +1,245 @@
2000-01-14 Martin Baulig <martin@home-of-linux.org>
2002-05-10 Kevin Vandersloot <kfv101@psu.edu>
Released LibGTop 1.1.4 "Earthquake".
* configure.in: release 2.0.0
1999-01-13 Yuri Syrota <rasta@renome.rovno.ua>
2002-05-28 Carlos Perello Marin <carlos@gnome-db.org>
* configure.in: Added Ukrainian (uk) to ALL_LINGUAS
* configure.in (ALL_LINGUAS): Removed all es_* and added only es_ES.
2000-01-13 Martin Baulig <martin@home-of-linux.org>
2002-05-08 Pablo Saratxaga <pablo@mandrakesoft.com>
* include/glibtop/compat_10.h: Add compatibility #defines for
`GLIBTOP_XCPU_TOTAL', `GLIBTOP_XCPU_USER', `GLIBTOP_XCPU_NICE',
`GLIBTOP_XCPU_SYS', `GLIBTOP_XCPU_IDLE' and `GLIBTOP_XCPU_FLAGS'
* configure.in: Added Vietnamese (vi) to ALL_LINGUAS
* LIBGTOP-VERSION: Set version number to 1.1.4, binary age 0,
interface age 0 and increased LIBGTOP_SERVER_VERSION to 52.
2002-03-12 James Henstridge <james@daa.com.au>
2000-01-13 Martin Baulig <martin@home-of-linux.org>
* 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.
* lib/sysdeps-init-freebsd.c: New file.
* lib/sysdeps-init-kernel.c: New file.
* lib/sysdeps-init-linux.c: New file.
* lib/sysdeps-init-solaris.c: New file.
* lib/sysdeps-init-stub-suid.c: New file.
* lib/sysdeps-init-stub.c: New file.
2002-02-10 Kevin Vandersloot <kfv101@psu.edu>
* lib/open.c (glibtop_open_l): Call glibtop_init_backend () and
_glibtop_open_sysdeps () here.
* configure.in: bump version
* lib/init.c (glibtop_init_s): Call `_glibtop_open_sysdeps'.
* release 1.90.2
* include/glibtop/open.h (_glibtop_open_sysdeps): Declare this
when we are _IN_LIBGTOP.
2002-02-09 Bastien Nocera <hadess@hadess.net>
* configure.in (sysdeps_name): Define and AC_SUBST this.
(sysdeps_init_file): Define and AC_SUBST this to
`sysdeps-init-${sysdeps_name}.c'.
reviewed by: Kevin Vandersloot <kfv101@psu.edu>
* libgtop-sysdeps.m4 (GNOME_LIBGTOP_SYSDEPS): Define and AC_SUBST
`libgtop_sysdeps_name'.
* configure.in: remove need for dc, and clean up
* stamp-h.in, .cvsignore: remove
2000-01-12 Martin Baulig <martin@home-of-linux.org>
2002-02-05 Abel Cheung <maddog@linux.org.hk>
* include/glibtop/errors.h (GLIBTOP_ERROR_NO_BACKEND_OPENED):
New error constant.
* configure.in (ALL_LINGUAS): zh_CN.GB2312 -> zh_CN
* lib/lib.pl (glibtop_get_<feature>_l): Don't dump core when there
is no backend opened, but return GLIBTOP_ERROR_NO_BACKEND_OPENED.
2001-01-14 Hasbullah bin Pit <sebol@ikhlas.com>
* include/glibtop/backend.h (glibtop_backend): Added `_priv_module'
pointer (type glibtop_backend_module). Made the `info' field const
since this now points to gmodule loaded memory
(glibtop_backend_entry): Made the `info' field const since it points
to gmodule loaded memory.
* configure.in: Added ms in ALL_LINGUAS.
* po/ms.po: Added Malay Translation.
* po/.cvsignore: Added 'libgtop-2.0.pot'.
* lib/close.c (glibtop_close_r): Close all currently opened backends.
2001-01-14 Abel Cheung <maddog@linux.org.hk>
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* configure.in: Sync'ed ALL_LINGUAS with files in po directory,
and renamed GETTEXT_PACKAGE to avoid conflict with libgtop 1.0.x.
* include/glibtop/backend.h (glibtop_backend_entry): New type.
(glibtop_backend_module): New private type.
2002-01-10 Kevin Vandersloot <kfv101@psu.edu>
* lib/backend.c (glibtop_register_backend): This now takes a
`glibtop_backend_entry' argument, not a `glibtop_backend_info' one.
(glibtop_backend_by_id): Return a `glibtop_backend_entry' type,
not a `glibtop_backend_info' one.
(glibtop_backend_by_name): Likewise.
* acininclude.m4: add back the support stuf but make it really
work
* lib/init-backends.c: If we have libxml, read all `.backend' files
in $(LIBGTOP_BACKEND_DIR), XML parse them and register them via
`glibtop_backend_register'. This builds a list of all currently
supported backends without actually loading them into memory.
* configure.in: bump version number, add back GNOME_SUPPORT
check since that was causing a build failure
* lib/open-backend.c (glibtop_open_backend_l): GModule load the
backend if it's not already in memory.
* release 1.90.1
2000-01-12 Martin Baulig <martin@home-of-linux.org>
2002-01-09 Kevin Vandersloot <kfv101@psu.edu>
* lib/init.c (glibtop_init_s): Comment out `_glibtop_init_hook_s'.
* acinclude.m4: remove gnome support check. Fixes the build
for those with automake < 1.4p5.
* configure.in: We now require libxml.
(LIBGTOP_LIBS): Remove all backend libraries.
(LIBGTOP_EXTRA_LIBS): Add $(LIBGTOP_XML_LIB) here.
* configure.in: remove check for GNOME_SUPPORT
* configure.in: Don't check for -lXau any longer.
2001-14-27 Miles Lane <miles@megapathdsl.net>
* configure.in (LIBGTOP_BACKEND_DIR): Define this to be
`$(datadir)/libgtop/backends' and AC_SUBST it.
* 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.
* libgtopConf.sh.in (LIBGTOP_BACKEND_DIR): Added.
2001-11-27 Kevin Vandersloot <kfv101@psu.edu>
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* acinclude.m4: copy some of the macros that were formerly
in gnome-macros
* xml.m4: New file to check for libxml.
* configure.in, sysdeps/Makefile.am: comment out guile
support for now.
* acconfig.h (HAVE_LIBXML): Define this if we have libxml.
* release 1.90.0
* configure.in: Call `LIBGTOP_XML_HOOK' from `xml.m4' and
add libxml libraries to `LIBGTOP_EXTRA_LIBS' when found.
2001-11-26 Kevin Vandersloot <kfv101@psu.edu>
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* src/daemon/gnuserv.c: Apply patch fixing security issue from
intexxia labs - #1048-261101
* lib/sysdeps.c (_glibtop_init_hook_s): This has been moved
into the sysdeps backend.
2001-11-26 Abel Cheung <maddog@linux.org.hk>
* configure.in (LIBGTOP_LIBS): Added `-lgtop_backend_common'.
* lib/init-backends.c (glibtop_init_backends): Initialize
`glibtop_backend_common' backend.
* src/inodedb/file_by_inode.c: Rename to file_by_inode2.c
* src/inodedb/mkinodedb.c: Rename to mkinodedb2.c
* backends/common/: New directory.
* po/POTFILES.in: Reflect above change
2000-01-10 Martin Baulig <martin@home-of-linux.org>
* */.cvsignore: Add various files
* src/daemon/: Removed everything in this directory. This has
been obsoleted by the new server code in backends/server.
2001-11-25 Kevin Vandersloot <kfv101@psu.edu>
2000-01-09 Martin Baulig <martin@bergen.home-of-linux.org>
* 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.
* include/glibtop/global.h: Unconditionally #include <sys/types.h>.
2001-10-17 Abel Chueng <maddog@linux.org.hk>
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* configure.in, Makefile.am, include/glibtop/Makefile.am: headers
moved to $(includedir)/libgtop-1.0/glibtop.
* include/glibtop/errors.h
(GLIBTOP_ERROR_DEMARSHAL_ERROR): New error constant.
2001-09-16 Abel Chueng <maddog@linux.org.hk>
* src/Makefile.am: Disable compilation of the `daemon' directory.
* configure.in: Added "zh_TW" to ALL_LINGUAS.
* include/glibtop/command.h: Removed.
* include/glibtop/version.h: Removed.
2001-02-13 Martin Baulig <baulig@suse.de>
2000-01-02 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.0.12 "Gerolzhofen".
* include/glibtop/call-vector.pl: All functions in the
`glibtop_call_vector' now take an additional `glibtop_backend *'
argument.
* NEWS: Added news entry to 1.0.12.
2000-01-01 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.0.12, binary age 11,
interface age 11.
* backends/: New directory.
* backends/server/: New directory.
* backends/sysdeps/: New directory.
2001-02-19 Simos Xenitellis <simos@hellug.gr>
* include/glibtop/backend.h: New file.
* configure.in: Added "el" to ALL_LINGUAS.
* include/glibtop/call-vector.h.in: New file. Template file
for `call-vector.h'.
* include/glibtop/call-vector.pl: New file. Creates 'call-vector.h'
from `call-vector.h.in'.
2001-02-15 Martin Baulig <baulig@suse.de>
* include/glibtop/errors.h
(GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant.
(GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant.
Released LibGTop 1.0.11 "Jasmin".
* include/glibtop/limits.h
(GLIBTOP_BACKEND_NAME_LEN): New constant.
* NEWS: Added news entry for 1.0.11.
* glibtop-server-private.h (glibtop_server_private):
Added `GSList *backend_list' and removed `input', `output',
`socket' and `pid'.
2001-02-14 Martin Baulig <baulig@suse.de>
* lib/command.c: Removed. Moved to `backends/server/'.
* lib/read.c: Removed. Moved to `backends/server/'.
* lib/read_data.c: Removed. Moved to `backends/server/'.
* lib/write.c: Removed. Moved to `backends/server/'.
Merged from LIBGTOP_1_1_2_PATCHES.
* include/glibtop/read.h: Removed.
* include/glibtop/read_data.h: Removed.
* include/glibtop/write.h: Removed.
* 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-12-26 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION (LIBGTOP_VERSION_SUFFIX): Added this so you can
have your tarballs called `libgtop-1.x.y-snap.tar.gz' or whatever.
This only affects the `VERSION' variable and thus how the resulting
tarball will be called, but not `LIBGTOP_VERSION_CODE' etc.
* libgtop-sysdeps.m4 (LIBGTOP_CHECK_SYSDEPS_DIR): New macro;
moved check for the sysdeps directory here.
(--with-sysdeps-dir): New hacker mode command line option to
manually override the sysdeps dir. Use of this option is highly
deprecated; I only added it to be able to do `stub_suid' hackings
on my GNU/Linux machine.
1999-12-23 Martin Baulig <martin@home-of-linux.org>
Removed all remote communication support from LibGTop.
* include/glibtop/gnuserv.h: Removed.
* sysdeps/common/gnuslib.c: Removed.
* src/daemon/Makefile.am: Don't build the `libgtop_daemon'
binary any longer.
* src/daemon/server_config.pl: Removed.
* src/daemon/server_config.h.in: Removed.
* src/daemon/server_config.h: Removed.
1999-12-22 Martin Baulig <martin@home-of-linux.org>
* lib/errors.c (glibtop_get_errno_l): New global function
to return `server->glibtop_errno'.
(glibtop_clear_errno_l): New global function to return
`server->glibtop_errno' and set it back to 0.
* include/glibtop/errors.h
(GLIBTOP_ERROR_SERVER_COMM_FAILURE): New error constant.
(GLIBTOP_ERROR_NO_SUCH_PROCESS): New error constant.
(GLIBTOP_ERROR_NO_KERNEL_SUPPORT): New error constant.
(GLIBTOP_ERROR_INCOMPATIBLE_KERNEL): New error constant.
* lib/lib.pl: For functions with a `retval' return type, set
`server->glibtop_errno' to the error code on error or to zero
on success.
* glibtop.h (glibtop): Added `glibtop_errno' field.
1999-12-19 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/glib-arrays.h: New file.
* lib/glib-arrays.c: New file.
(glibtop_get_proclist_as_array_l): New function.
(glibtop_get_proc_args_as_array_l): New function.
(glibtop_get_proc_map_as_array_l): New function.
(glibtop_get_mountlist_as_array_l): New function.
1999-12-19 Martin Baulig <martin@home-of-linux.org>
* glibtop-server-private.h: New file. This is a private header
file which defines `struct _glibtop_server_private'.
* glibtop.h (glibtop): Added `glibtop_server_private *_priv' field
and moved some private fields there.
1999-12-12 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/procargs.h (glibtop_proc_args): Removed.
(glibtop_get_proc_args_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_proc_args one and returns a `char **'.
1999-12-13 Martin Baulig <martin@home-of-linux.org>
* configure.in (LIBGTOP_LIBS): Put `-lgtop' after `-lgtop_common'.
1999-12-19 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/errors.h: New file. We define `GLIBTOP_ERROR_*'
error constants here.
* lib/errors.c: New file.
(glibtop_error_strings): Array of error messages.
(glibtop_get_error_string_l): Get error message.
* include/glibtop/parameter.h: Added `GLIBTOP_PARAM_REMOTE_USER' and
`GLIBTOP_PARAM_PATH_RSH'.
* lib/parameter.c (glibtop_get_parameter_l): Changed return value
from `size_t' to `ssize_t' and let it return an error constant.
(glibtop_get_parameter_size_l): New function.
(glibtop_set_parameter_l): Changed return value from `void' to `int'
and let it return an error constant on error.
* structures.def (glibtop_sysdeps): Added.
1999-12-12 Martin Baulig <martin@home-of-linux.org>
All functions which return an array now take a `glibtop_array *array'
parameter instead of a `glibtop_<feature> *buf' one.
For compatibility, we typedef the corresponding `glibtop_<feature>'s
to `glibtop_array' in <glibtop/compat_10.h>.
This has the advantage that scripting languages like Guile with an
array implementation which stores the length of an array in the
array don't need the `glibtop_array' parameter at all any longer.
We'll also add convenient functions which return GPtrArray's here.
* include/glibtop/proclist.h (glibtop_proclist): Removed.
(glibtop_get_proclist_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_proclist' one.
* include/glibtop/procmap.h (glibtop_proc_map): Removed.
(glibtop_get_proc_map_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_proc_map' one.
* include/glibtop/mountlist.h (glibtop_mountlist): Removed.
(glibtop_get_mountlist_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_mountlist' one.
* include/glibtop/interfaces.h (glibtop_interface_names): Removed.
(glibtop_get_interface_names_*): This now takes a `glibtop_array'
parameter instead of a `glibtop_interface_name' one.
* include/glibtop/compat_10.h: New file. Contains some typedefs and
#defines to keep compatibility until the big restructurement is
completely done.
1999-12-12 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/array.h: New file.
1999-12-11 Martin Baulig <martin@home-of-linux.org>
This is a larger source-incompatible commit, but it'll make it
easier to write automatically generated code (for instance for
scripting languages).
Renamed all constants for the flags field to match the field names
from the features.def and structures.def where this was not already
the case.
* include/glibtop/cpu.h: s/GLIBTOP_XCPU_/GLIBTOP_CPU_XCPU_/g.
* include/glibtop/shm_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SHM_LIMITS_/g.
* include/glibtop/sem_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SEM_LIMITS_/g.
* include/glibtop/msg_limits.h: s/GLIBTOP_IPC_/GLIBTOP_MSG_LIMITS_/g.
1999-12-11 Martin Baulig <martin@home-of-linux.org>
* features.def: Use `string' instead of `str' as type name.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
Moved all Guile code to the libgtop-bindings module.
* sysdeps/guile/*: Removed.
* sysdeps/guile/names/*: Removed.
* libgtopConf.sh.in: Removed all guile variables.
* configure.in: Don't check for guile any longer.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* lib/structures.pl: New script to create `structures.h' which will
be used in language bindings code.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* features.def: Use `pointer(<type>)' as return value for functions
returning an array of scalar values (such as `unsigned' etc.).
* features.def: Use `array(<type>)' as return value for functions
returning an array of structures.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* includes/glibtop/interfaces.h (glibtop_get_interface_names):
Return array of `glibtop_interface' structures.
(glibtop_interface): New structure.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/limits.h (GLIBTOP_INTERFACE_LEN): New #define.
(GLIBTOP_UNLIMITED): #define this to be `(~(u_int64_t)0)'.
* glibtop.h (glibtop): Added `refcount' field.
* lib/init.c (glibtop_server_ref, glibtop_server_unref): New
functions to deal with refcounts.
* structures.def: New file. This is used by the language bindings
code to get the definitions of some of LibGTop's structures.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/netload.h (glibtop_get_netload): Added
`transport' and `protocol' argument to specify transport method
and protocol.
* include/glibtop/netinfo.h (glibtop_get_netinfo): Added
`transport' argument to specify the transport method.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/netinfo.h (glibtop_netinfo): Added `transport'
field for the transport method.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
Split netload into netload and netinfo.
* include/glibtop/netinfo.h: New file.
* include/glibtop/netload.h (glibtop_netload): Moved `if_flags',
`mtu', `subnet' and `address' into the new `glibtop_netinfo'.
* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_NETINFO): Added.
(glibtop_sysdeps): Added `netinfo.
* include/glibtop/union.h (glibtop_union): Added `netinfo.
* include/glibtop/command.h (GLIBTOP_CMND_NETINFO): Added.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/interfaces.h (glibtop_get_interface_names):
Added `instance' argument.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* lib/lib.pl: We now have a new, more extensible client/server
communication model. Include `$(top_srcdir)/scripts/c_types.pl' here.
1999-11-21 Martin Baulig <martin@home-of-linux.org>
Added new feature to get a list of network interface names.
* features.def: Added `interface_names' feature.
* include/glibtop/interfaces.h: New file.
* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_INTERFACE_NAMES): Added.
(glibtop_sysdeps): Added `interface_names'.
* include/glibtop/union.h (glibtop_union): Added `interface_names'.
* include/glibtop/command.h (GLIBTOP_CMND_INTERFACE_NAMES): Added.
1999-11-21 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/sysdeps.h (glibtop_init_func_t): Use `int'
as return type, not `void'.
* include/glibtop/proclist.h (GLIBTOP_KERN_PROC_PPID): On a
suggestion from Sebastian Fischmeister added a way to return
all children of a given process.
1999-11-02 Jesus Bravo Alvarez <jba@pobox.com>
* configure.in: Added Galician (gl) to ALL_LINGUAS
1999-10-24 Martin Baulig <martin@home-of-linux.org>
* features.def: Use `retval' for the default retval.
* include/glibtop/command.h (glibtop_command_h): Added
`int *retval_ptr' parameter to return the retval from the
sysdeps functions.
* include/glibtop/*.h (glibtop_get_*, glibtop_init*): Changed
the return value of all `glibtop_get_<feature>_* ()' and all
`glibtop_init_<feature>_* ()' functions from void to int.
* features.def: Reflect changes of the return values.
* sysdeps/*/*.c: Reflect changes of the return values.
1999-10-24 Martin Baulig <martin@home-of-linux.org>
* acconfig.h (LIBGTOP_USE_GLIB_MALLOC): Added.
* configure.in (--enable-glib-malloc): New configure parameter
to use glib's malloc functions.
* sysdeps/common/ChangeLog: New file.
1999-10-24 Martin Baulig <martin@home-of-linux.org>
The LibGTop examples have been moved into their own top-level
module libgtop-examples.
* examples/*: Removed.
* configure.in: Removed all checks for the examples.
* libgtop-sysdeps.m4: Removed --with-libgtop-examples parameter.
* Makefile.am: Removed examples from the subdir list.
1999-10-24 Martin Baulig <martin@home-of-linux.org>
* libgtop-sysdeps.m4: Check for <osreldate.h> on *BSD* systems.
1999-10-19 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.1.3, binary age 0,
interface age 0 and increased LIBGTOP_SERVER_VERSION to 51.
This implies that we can now break as much compatibility as
we want.
1999-10-19 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.1.2 "Hardangervidda".
1999-10-18 Martin Baulig <martin@home-of-linux.org>
* RELNOTES-1.1.x: New file. We also track all changes since
1.0.x here.
* 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, acconfig.h: Added checks for <procfs.h>
and <sys/procfs.h>
* configure.in (DL_LIB): Check for dlopen() and AC_SUBST this.
1999-10-17 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Make `aclocal.m4' also depend on `LIBGTOP-VERSION'
when in maintainer-mode.
* configure.in: Fixed typedef syntax for glibtop-config.h.
Thanks to Drazen Kacar for pointing this out.
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>
* LIBGTOP-VERSION: Set version number to 1.0.7 binary age 6,
interface age 6.
1999-10-18 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.0.6 "October LibGTop".
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 :)
1999-10-16 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.1.2, binary age 2,
interface age 2.
* LIBGTOP-VERSION: Set version number to 1.0.6 binary age 5,
interface age 5.
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>
* configure.in (libgtop_top_builddir): AC_SUBST this.
1999-09-27 Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br>
1999-09-24 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4,
interface age 4.
1999-09-24 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.0.4.
* configure.in: Added "pt_BR" to ALL_LINGUAS.
1999-09-22 Kjartan Maraas <kmaraas@online.no>
* configure.in: Added "da" to ALL_LINGUAS.
@@ -514,13 +251,23 @@
1999-09-18 Pablo Saratxaga <pablo@mandrakesoft.com>
* configure.in, po/pl.po: copied pl.po from stable CVS tree
* configure.in, po/*.po: merged *.po files from HEAD CVS
1999-09-17 Martin Baulig <martin@home-of-linux.org>
* configure.in: Make it work if we have GNOME and the user
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>
* include/glibtop/error.h: Use G_GNUC_UNUSED.
@@ -528,17 +275,6 @@
* configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake
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>
* configure.in: Added sv to ALL_LINGUAS
@@ -547,21 +283,14 @@
* sysdeps/names/procmem.c: Fixed a tyop
1999-06-22 Martin Baulig <martin@home-of-linux.org>
1999-05-31 Martin Baulig <martin@home-of-linux.org>
* configure.in: Some versions of Solaris require -lelf for -lkvm;
added appropriate check for this situation.
* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2,
interface age 2.
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
1999-05-31 Martin Baulig <martin@home-of-linux.org>
* 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.
Released LibGTop 1.0.2.
1999-05-26 Martin Baulig <martin@home-of-linux.org>
@@ -572,162 +301,9 @@
* libgtop-sysdeps.m4: Make the I4B check work for NetBSD.
1999-05-15 Martin Baulig <martin@home-of-linux.org>
1999-05-16 Martin Baulig <martin@home-of-linux.org>
* 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.
* doc: Merged the LibGTop Manual from the HEAD.
1999-03-01 Martin Baulig <martin@home-of-linux.org>

View File

@@ -7,19 +7,22 @@
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
#
LIBGTOP_MAJOR_VERSION=1
LIBGTOP_MINOR_VERSION=1
LIBGTOP_MICRO_VERSION=4
LIBGTOP_MINOR_VERSION=90
LIBGTOP_MICRO_VERSION=0
LIBGTOP_INTERFACE_AGE=0
LIBGTOP_BINARY_AGE=0
# you can set this to `-snap' for instance to create
# a `libgtop-1.x.y-snap.tar.gz' tarball.
LIBGTOP_VERSION_SUFFIX=
# Increase each time you change the client/server protocol.
LIBGTOP_SERVER_VERSION=52
LIBGTOP_SERVER_VERSION=5
# Don't change this
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc`
# For automake.
VERSION=$LIBGTOP_VERSION
VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX
PACKAGE=libgtop

View File

@@ -1,2 +0,0 @@
Email: martin@home-of-linux.org
Email: dave@srce.hr

View File

@@ -1,33 +1,27 @@
## Process this file with automake to produce Makefile.in.
if EXAMPLES
examples_SUBDIRS = examples
else
examples_SUBDIRS =
endif
if BUILD_GNOME_SUPPORT
support = support
endif
SUBDIRS = po intl $(support) macros misc include sysdeps backends lib \
src doc scripts
SUBDIRS = po $(support) misc include sysdeps lib src \
$(examples_SUBDIRS) doc
include_HEADERS = glibtop.h
configincludedir = $(pkglibdir)/include
noinst_HEADERS = glibtop-server-private.h
libgtopinclude_HEADERS = glibtop.h
libgtopincludedir = $(includedir)/libgtop-2.0
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
LIBGTOP-VERSION features.def structures.def libgtop-config.in \
RELNOTES-0.25 RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \
libgtop-mirror.sh
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
RELNOTES-1.0 RELNOTES-1.0.x libgtop-sysdeps.m4 README \
libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4
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
dist-hook:
cp libgtop.spec $(distdir)
release:
@@ -35,22 +29,24 @@ release:
## Put `exec' in the name because this should be installed by
## `install-exec', not `install-data'.
confexecdir = $(libdir)
confexec_DATA = $(top_builddir)/libgtopConf.sh \
$(top_builddir)/libgtop-features.def \
$(top_builddir)/libgtop-structures.def
## confexecdir = $(libdir)
## confexec_DATA = $(top_builddir)/libgtopConf.sh \
## $(top_builddir)/libgtop-features.def
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libgtop-2.0.pc
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
## `macros/' change
@MAINT@ include macros/macros.dep
@MAINT@macros/macros.dep: macros/Makefile.am
@MAINT@ cd macros && $(MAKE) macros.dep
## @MAINT@ include macros/macros.dep
## @MAINT@macros/macros.dep: macros/Makefile.am
## @MAINT@ cd macros && $(MAKE) macros.dep
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION
## We create libgtopConf.sh here and not from configure because we want
## to get the paths expanded correctly. Macros like srcdir are given
@@ -59,14 +55,17 @@ bin_SCRIPTS = $(top_builddir)/libgtop-config
libgtopConf.sh: libgtopConf.sh.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)#g' \
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)/libgtop-2.0#g' \
-e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
-e 's#\@LIBGTOP_BACKEND_DIR\@#$(LIBGTOP_BACKEND_DIR)#g' \
-e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
-e 's#\@LIBGTOP_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' \
@@ -78,18 +77,17 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
-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)/libgtopConf.sh.in > libgtopConf.tmp \
&& mv libgtopConf.tmp libgtopConf.sh
libgtop-config: libgtop-config.in Makefile
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
< $(srcdir)/libgtop-config.in > libgtop-config.tmp \
&& mv libgtop-config.tmp libgtop-config && \
chmod 755 libgtop-config
# libgtop-config: libgtop-config.in Makefile
# sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
# < $(srcdir)/libgtop-config.in > libgtop-config.tmp \
# && mv libgtop-config.tmp libgtop-config && \
# chmod 755 libgtop-config
libgtop-features.def: features.def
@LN_S@ $< $@
libgtop-structures.def: structures.def
@LN_S@ $< $@

72
NEWS
View File

@@ -1,16 +1,68 @@
January 14, 1999:
February 27, 2001:
=================
* Released LibGTop 1.0.12 "Gerolzhofen".
- fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits).
- fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses
`_KERNEL' instead of `KERNEL'). Bug #51334.
- for BSDI, comment out `subnet' field in netload; this should make
it compile, but there may be other problems. Bug #13345.
This release is for GNOME 1.4 Beta2.
February 14, 2001:
=================
* Released LibGTop 1.0.11 "Jasmin":
[The release which was supposed to be called "Gerolzhofen".]
- merged in the Solaris code from LIBGTOP_1_1_2_PATCHES.
- minor OpenBSD fixes.
- again a bunch of updated translations.
Please test the Solaris stuff and report and bugs and
problems as soon as possible; I'll make a new release
for the 2nd beta of GNOME 1.4 if necessary.
November 20, 2000:
=================
* Released LibGTop 1.0.10 "November Rain":
- this release contains a bunch of updated translations.
May 25, 2000:
============
* Released LibGTop 1.0.9 "Stuttgart".
(LibGTop 1.0.8 "Frankfurt" was not publically released.)
February 15, 2000:
=================
* Released LibGTop 1.0.7 "Copenhagen":
- this is a bug fix release for the GUADEC CD-ROM;
it contains fixes in both the Linux and *BSD sysdeps
directory.
October 18, 1999:
================
* Released LibGTop 1.1.4 "Earthquake"
* Released LibGTop 1.0.6 "October LibGTop":
This is the first developer's snapshot release after a
longer development period with a lot of interface changes.
- compilation fixes for FreeBSD.
- updated reference manual.
October 19, 1999:
================
September 29, 1999:
==================
* Released LibGTop 1.1.2 "Hardangervidda"
This is a stable release from the development branch
of LibGTop for Solaris users of October GNOME.
* Released LibGTop 1.0.5.

36
README
View File

@@ -1,32 +1,8 @@
This is the *development* branch of LibGTop. It is indended
for people who want to help with the development of LibGTop and
not for end-users.
$Id$
Please use the LIBGTOP_STABLE_1_0 branch (which is LibGTop 1.0.x)
unless you're really a developer.
LATEST NEWS:
===========
If you're using LibGTop from CVS simply do a
cvs update -r LIBGTOP_STABLE_1_0
to get the latest version from the stable branch.
However, I'll periodically make snapshot releases from the development
branch for Solaris users of LibGTop.
They can be found at
ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
in near future.
Using released tarballs from the development branch is a lot better than
compiling directly from CVS since things in CVS may not always work as
expected.
Note that releases from the developer branch are neither binary
nor fully source compatible; you'll normally have to recompile
everything that use them.
October 1999
Martin Baulig
Please look also in the file 'NEWS' for latest news.
Martin

View File

@@ -87,7 +87,7 @@ LibGTop is currently used in various places in the GNOME Project,
for instance in some of the applets in gnome-core and - of cause -
this ultra-cool application called GTop ...
Although LibGTop is not specific to GNOME and under LGPL license, I
Although LibGTop is not specific to GNOME and under GPL license, I
spent most my time during the last months to work in the GNOME project
so this is the primary use for LibGTop (and currently the only one).

172
RELNOTES-1.0.x Normal file
View File

@@ -0,0 +1,172 @@
RELEASE NOTES FOR LIBGTOP 1.0.7
===============================
OVERVIEW
--------
LibGTop is a library that read information about processes and the
running systems. This information include:
General System Information:
cpu - CPU Usage
mem - Memory Usage
swap - Swap Usage (including paging activity)
loadavg - Load average (including nr_running, nr_tasks, last_pid)
uptime - Uptime and Idle time, can be calculated from CPU usage
SYS V IPC Limits:
shm_limits - Shared Memory Limits
msg_limits - Message Queue Limits
sem_limits - Semaphore Set Limits
Network:
netload - Network load
ppp - PPP statistics
Process List:
proclist - List of processes
Process information:
proc_state - cmd, state, uid, gid
proc_uid - uid,euid,gid,egid,pid,ppid,pgrp
session,tty,tpgid,priority,nice
proc_mem - size,vsize,resident,share,rss,rss_rlim
proc_time - start_time,rtime,utime,stime,cutime,cstime
timeout,it_real_value,frequency
proc_signal - signal,blocked,sigignore,sigcatch
proc_kernel - k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
kstk_esp,kstk_eip,nwchan,wchan
proc_segment - text_rss,shlib_rss,data_rss,stack_rss,dirty_size
start_code,end_code,start_stack
Process maps:
proc_args - Command line arguments
proc_map - Process map (/proc/<pid>/maps under Linux)
File system usage:
mountlist - List of currently mounted filesystems
fsusage - File system usage
PORTABILITY:
-----------
LibGTop is designed to be as portable as possible. None of the
functions and retrieved information should be specific to a specific
operating system. So you only need to port the system dependent part
of the library to a new system and all application programs can then
use libgtop on this new system.
CLIENT/SERVER MODEL:
-------------------
Some systems like DEC OSF/1 or BSD require special privileges for the
calling process to fetch the required information (SUID root/SGID
kmem). To solve this problem, I designed a client/server model which
makes a call to a SUID/SGID server which fetches the required
information whenever it is required. This server is only called for
features that really require privileges, otherwise the sysdeps code
is called directory (every user can get the CPU usage on DEC OSF/1,
but only root can get information about processes other than the
current one).
There is also some kind of daemon which can be used to fetch
information from remote systems (still experimental). This daemon
normally runs as nobody and calls the SUID/SGID itself when needed.
LIBGTOP AND GNOME:
-----------------
Although LibGTop is part of the GNOME desktop environment, its main
interface is totally independent from any particular desktop environment,
so you can also use it as a standalone library in any piece of GPLed
software which makes it also a valuable part of the GNU project.
LibGTop is currently used in various places in the GNOME Project,
for instance in some of the applets in gnome-core and - of cause -
this ultra-cool application called GTop ...
However, you need to give the configure.in script the `--without-gnome'
parameter when you want to use LibGTop without GNOME (this is because,
if you want to use it with GNOME, you need to compile it after the main
GNOME libraries and I wanted to avoid getting unnecessary bug reports
about this).
LIBGTOP AND GNOME - PART II:
---------------------------
LibGTop was tested with FreeBSD 3.0 but it should also work with
FreeBSD 2.2.7, NetBSD and OpenBSD.
Unfortunately, I don't have the power and disk space to install all
possible operating systems out there on my machine and test things myself,
so I depend on people telling me whether it works and sending me bug
reports and patches if not.
However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for
LibGTop and whenever I get bug reports I will do my best to fix them as
quickly as possible.
PLATFORM SPECIFIC NOTES FOR LINUX:
==================================
[I am speaking of the Linux kernel here.]
Under Linux, LibGTop should work without problems and read everything
from /proc.
LibGTop 0.25 also had an experimental kernel interface to read this
information directly from the kernel with a system call - but I have
currently dropped support for this as I am too busy with GNOME
development to keep current with kernel hacking.
PLATFORM SPECIFIC NOTES FOR SOLARIS:
====================================
The development branch of LibGTop (the 1.1.x series) has a first version
of the Solaris port which works at least on Solaris 7.
If you are on a Solaris system and want to give it a try, just fetch the
latest 1.1.x tarball from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
and try it out.
PLATFORM SPECIFIC NOTES FOR BSD:
=================================
There are a few caveats:
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to
kmem after installation and mount the /proc file system of FreeBSD
(/proc/<pid>/mem is used within kvm_uread ()).
* To get the filenames of the process maps displayed in GTop, you need
to configure with the `--with-libgtop-inodedb' option (you need GDBM
for this to work).
You have then to create an inode database which is used to look up
filenames. This is done using the `mkinodedb' program which comes
along with libgtop.
See the file src/inodedb/README for details:
The `mkinodedb' program which is build in this directory takes two
command line arguments: the full pathname of the database to be
created and the name of a configuration file consisting of directory
and file names each on a line by itself - see `/etc/ld.so.conf' for
an example.
Putting a directory name in this file means all regular files found
in this directory are included in the database, but it will not
recursively descend into subdirectories (for instance, we want
everything in `/usr/lib' but not every single file in `/usr/lib/sgml').
You can also use filenames to include a single file.
Have fun,
Martin <martin@home-of-linux.org>

View File

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

0
TODO
View File

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* Define if gethostname () must be declared. */
#undef NEED_DECLARATION_GETHOSTNAME
@@ -20,6 +18,7 @@
#undef ENABLE_NLS
#undef HAVE_CATGETS
#undef GETTEXT_PACKAGE
#undef HAVE_GETTEXT
#undef HAVE_LC_MESSAGES
#undef HAVE_STPCPY
@@ -124,6 +123,7 @@
#undef HAVE_LIBZ
#undef HAVE_LIBPNG
#undef HAVE_GMP2_INCLUDE_DIR
#undef HAVE_GUILE
#undef ssize_t
#undef u_int64_t
@@ -132,12 +132,14 @@
#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_SYSCTL
#undef HAVE_LINUX_TABLE
#undef HAVE_LIBGTOP_SMP
#undef HAVE_XAUTH
@@ -150,9 +152,6 @@
#undef LIBGTOP_ENABLE_DEBUG
#undef LIBGTOP_FATAL_WARNINGS
/* Define to use glib's malloc. */
#undef LIBGTOP_USE_GLIB_MALLOC
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
* the running kernel (if we don't have configured kernel sources).
*/
@@ -169,7 +168,3 @@
/* Define if you have the <sys/procfs.h> header file */
#undef HAVE_SYS_PROCFS_H
/* Define if you have the libxml library */
#undef HAVE_LIBXML

877
acinclude.m4 Normal file
View File

@@ -0,0 +1,877 @@
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"
# LIBOBJS="$LIBOBJS fsusage.o"
# LIBOBJS="$LIBOBJS mountlist.o"
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
save_LIBOBJS="$LIBOBJS"
LIBOBJS=
AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o")
# 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,,LIBOBJS="$LIBOBJS canonicalize.o")
# 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
LIBOBJS="$LIBOBJS error.o"
fi
AC_SUBST(LIBOBJS)dnl
# 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
])
# Turn our LIBOBJS into libtool objects. This is gross, but it
# requires changes to autoconf before it goes away.
LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'`
AC_SUBST(need_gnome_support)
AC_SUBST(LTLIBOBJS)
LIBOBJS="$save_LIBOBJS"
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
;;
*)
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'
;;
*)
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)
])

View File

@@ -14,27 +14,8 @@ PKG_NAME="Gnome Top Library"
exit 1
}
. $srcdir/macros/autogen.sh
echo ""
echo " *** IMPORTANT *** "
echo ""
echo "This is a development version of LibGTop. You should be using a stable"
echo "version, which is available at ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/"
echo "The version you just configured is meant for developers of LibGTop only:"
echo ""
echo " * You should not base ANY software on this version of LibGTop."
echo ""
echo " *** You should be using LibGTop 1.0.x instead. ***"
echo ""
echo "If you are using this source tree from CVS, please run:"
echo " cvs update -r LIBGTOP_STABLE_1_0"
echo "now."
echo ""
echo "If you're a Solaris user, you should try out the LibGTop 1.1.2 release."
echo "You can get it from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/"
echo ""
echo "If you are using this source tree from CVS, you can use:"
echo " cvs update -r LIBGTOP_1_1_2_PATCHES"
echo "to get a bug fixed release of 1.1.2."
echo ""
which gnome-autogen.sh || {
echo "You need to install gnome-common from the GNOME CVS"
exit 1
}
USE_GNOME2_MACROS=1 . gnome-autogen.sh

View File

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

View File

@@ -1 +0,0 @@
SUBDIRS = server sysdeps common

View File

@@ -1,7 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c

View File

@@ -1,17 +0,0 @@
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'.

View File

@@ -1,35 +0,0 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@
backenddir = @LIBGTOP_BACKEND_DIR@
backend_DATA = \
libgtop-common.backend
noinst_HEADERS = \
glibtop-backend-private.h
backend_LTLIBRARIES = \
libgtop_backend_common.la
libgtop_backend_common_la_SOURCES = \
backend-common.c \
marshal.c
libgtop_backend_common_la_LDFLAGS = \
$(LT_VERSION_INFO) -export-dynamic
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

View File

@@ -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 <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glibtop/open.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
static int
_open_common (glibtop *, glibtop_backend *, u_int64_t, const char **);
static int
_close_common (glibtop *, glibtop_backend *);
extern glibtop_call_vector glibtop_backend_common_call_vector;
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-common", _open_common, _close_common,
&glibtop_backend_common_call_vector
};
static int
_open_common (glibtop *server, glibtop_backend *backend,
u_int64_t features, const char **backend_args)
{
backend->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_backend_private));
return 0;
}
static int
_close_common (glibtop *server, glibtop_backend *backend)
{
return -1;
}

View File

@@ -1,12 +0,0 @@
<?xml version="1.0"?> <!-- -*-xml-*- -->
<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>

View File

@@ -1,179 +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 <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 '';
$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, glibtop_backend *backend%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %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 '';

View File

@@ -1,10 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c
demarshal.c
libgtop_server
command.h

View File

@@ -1,45 +0,0 @@
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'.

View File

@@ -1,77 +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@
backend_DATA = \
libgtop-server.backend
noinst_HEADERS = \
glibtop-backend-private.h
backend_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) -export-dynamic
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

View File

@@ -1,101 +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 <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
static int
_open_server (glibtop *, glibtop_backend *, u_int64_t, const char **);
static int
_close_server (glibtop *, glibtop_backend *);
extern glibtop_call_vector glibtop_backend_server_call_vector;
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-server", _open_server, _close_server,
&glibtop_backend_server_call_vector
};
static int
_open_server (glibtop *server, glibtop_backend *backend,
u_int64_t features, const char **backend_args)
{
backend->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_backend_private));
#ifdef DEBUG
fprintf (stderr, "open_server - %p, %p, %p\n", server, backend,
backend->_priv);
fprintf (stderr, "Opening pipe to server (%s).\n",
LIBGTOP_SERVER);
#endif
if (pipe (backend->_priv->input) ||
pipe (backend->_priv->output)) {
glibtop_warn_io_r (server, "cannot make a pipe");
return -1;
}
backend->_priv->pid = fork ();
if (backend->_priv->pid < 0) {
glibtop_warn_io_r (server, "fork failed");
return -1;
} else if (backend->_priv->pid == 0) {
close (0); close (1);
close (backend->_priv->input [0]);
close (backend->_priv->output [1]);
dup2 (backend->_priv->input [1], 1);
dup2 (backend->_priv->output [0], 0);
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
glibtop_error_io_r (server, "execl (%s)",
LIBGTOP_SERVER);
_exit (2);
}
close (backend->_priv->input [1]);
close (backend->_priv->output [0]);
return 0;
}
static int
_close_server (glibtop *server, glibtop_backend *backend)
{
kill (backend->_priv->pid, SIGKILL);
close (backend->_priv->input [0]);
close (backend->_priv->output [1]);
backend->_priv->pid = 0;
return 0;
}

View File

@@ -1,108 +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 <glibtop/xmalloc.h>
#include <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
#include "command.h"
void *
glibtop_call_i (glibtop *server, glibtop_backend *backend, 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
glibtop_init_r (&server, 0, 0);
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 (server, backend, sizeof (glibtop_command), &cmnd);
if (data_size) {
#ifdef SLAVE_DEBUG
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
#endif
glibtop_write_i (server, backend, data_size, data_buf);
}
glibtop_read_i (server, backend, 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 (server, backend, recv_size, recv_ptr);
if (resp.data_size) {
void *ptr = glibtop_malloc_r (server, resp.data_size);
glibtop_read_i (server, backend, resp.data_size, ptr);
return ptr;
}
return NULL;
}

View File

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

View File

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

View File

@@ -1,382 +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);
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[\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],
&toupper ($feature), $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;

View File

@@ -1,55 +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_PRIVATE_H__
#define __GLIBTOP_BACKEND_PRIVATE_H__
struct _glibtop_backend_private
{
u_int64_t flags;
int input [2]; /* Pipe client <- server */
int output [2]; /* Pipe client -> server */
pid_t pid; /* PID of the server */
};
void *
glibtop_call_i (glibtop *server, glibtop_backend *backend, 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 (glibtop *server, glibtop_backend *backend,
size_t size, void *buf);
void *
glibtop_read_data_i (glibtop *server, glibtop_backend *backend);
void
glibtop_write_i (glibtop *server, glibtop_backend *backend,
size_t size, const void *buf);
#endif

View File

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

View File

@@ -1,12 +0,0 @@
<?xml version="1.0"?> <!-- -*-xml-*- -->
<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>

View File

@@ -1,309 +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 <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 "command.h"';
print '#include <glibtop/backend.h>';
print '';
print '#include <glibtop-backend-private.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, backend, 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, glibtop_backend *backend%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %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 '';

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c

View File

@@ -1,28 +0,0 @@
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.

View File

@@ -1,35 +0,0 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@
backenddir = @LIBGTOP_BACKEND_DIR@
backend_DATA = \
libgtop-sysdeps.backend
noinst_HEADERS = \
glibtop-backend-private.h
backend_LTLIBRARIES = \
libgtop_backend_sysdeps.la
libgtop_backend_sysdeps_la_SOURCES = \
backend-sysdeps.c \
marshal.c
libgtop_backend_sysdeps_la_LDFLAGS = \
$(LT_VERSION_INFO) -export-dynamic
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

View File

@@ -1,77 +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 <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glibtop/open.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
static int
_open_sysdeps (glibtop *, glibtop_backend *, u_int64_t, const char **);
static int
_close_sysdeps (glibtop *, glibtop_backend *);
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
&glibtop_backend_sysdeps_call_vector
};
static int
_open_sysdeps (glibtop *server, glibtop_backend *backend,
u_int64_t features, const char **backend_args)
{
glibtop_init_func_t *init_fkt;
backend->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_backend_private));
/* 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->sysdeps.pointer_size = sizeof (void*)*8;
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
}
return 0;
}
static int
_close_sysdeps (glibtop *server, glibtop_backend *backend)
{
return -1;
}

View File

@@ -1,12 +0,0 @@
<?xml version="1.0"?> <!-- -*-xml-*- -->
<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>

View File

@@ -1,199 +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 <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 '';
$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, glibtop_backend *backend%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %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 '';

View File

@@ -1,29 +1,28 @@
dnl
dnl Configure script for LibGTop
dnl Configure script for the Gnome library
dnl
AC_INIT(copyright.txt)
AM_CONFIG_HEADER(config.h)
AC_CANONICAL_SYSTEM
dnl This is required at several places
AC_CHECK_PROG(ac_dc_found, dc, yes, no)
if test x$ac_dc_found != xyes ; then
AC_MSG_ERROR([
*** The "dc" utility was not found on your system.
***
*** When using RedHat Linux, you need to install the "bc" package.
***
*** It is now part of the "bc" package, so you should look at
*** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself.
***
*** Other systems and distributions may also have it in their "bc" package,
*** so if there's no "dc" one, please look for "bc".
***])
fi
LIBGTOP_MAJOR_VERSION=2
LIBGTOP_MINOR_VERSION=0
LIBGTOP_MICRO_VERSION=0
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
LIBGTOP_INTERFACE_AGE=0
LIBGTOP_BINARY_AGE=0
. $srcdir/LIBGTOP-VERSION
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
# you can set this to `-snap' for instance to create
# a `libgtop-1.x.y-snap.tar.gz' tarball.
LIBGTOP_VERSION_SUFFIX=
# Increase each time you change the client/server protocol.
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_MINOR_VERSION)
@@ -33,25 +32,26 @@ AC_SUBST(LIBGTOP_BINARY_AGE)
AC_SUBST(LIBGTOP_SERVER_VERSION)
AC_SUBST(LIBGTOP_VERSION)
AC_SUBST(LIBGTOP_VERSION_CODE)
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
# libtool versioning
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
LT_REVISION=$LIBGTOP_INTERFACE_AGE
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} -release ${LT_RELEASE}'
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
AC_SUBST(LT_VERSION_INFO)
AC_SUBST(LT_RELEASE)
AC_SUBST(LT_CURRENT)
AC_SUBST(LT_REVISION)
AC_SUBST(LT_AGE)
AM_ACLOCAL_INCLUDE(. macros)
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
AC_ISC_POSIX
AC_PROG_CC
AC_STDC_HEADERS
AC_ARG_PROGRAM
dnl AC_ARG_PROGRAM
dnl We need this at some places.
libgtop_top_builddir=`pwd`
@@ -84,52 +84,50 @@ export cross_compiling
AM_PROG_LIBTOOL
dnl Let the user enable compiler warnings
GNOME_COMPILE_WARNINGS
dnl GNOME_COMPILE_WARNINGS
GNOME_INIT_HOOK(gnome_found=yes)
dnl GNOME_INIT_HOOK(gnome_found=yes)
if test "x$gnome_found" != xyes; then
if test "x$want_gnome" != xno ; then
AC_MSG_ERROR([
*** GNOME was not found on this system. ***
*** 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
dnl if test "x$gnome_found" != xyes; then
dnl if test "x$want_gnome" != xno ; then
dnl AC_MSG_ERROR([
dnl *** GNOME was not found on this system. ***
dnl
dnl *** If you want to use LibGTop without GNOME, you need
dnl *** to give configure the --without-gnome parameter.
dnl ])
dnl else
dnl AC_DEFINE(WITHOUT_GNOME)
dnl fi
dnl GNOME_SUPPORT_CHECKS
dnl else
dnl if test "x$want_gnome" != xno ; then
dnl AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
dnl else
dnl GNOME_SUPPORT_CHECKS
dnl fi
dnl fi
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
GNOME_LIBGTOP_SYSDEPS
GNOME_LIBGTOP_TYPES
sysdeps_dir="$libgtop_sysdeps_dir"
sysdeps_name="$libgtop_sysdeps_name"
AC_SUBST(sysdeps_dir)
AC_SUBST(sysdeps_name)
dnl AC_ARG_WITH(libgtop-guile,
dnl [ --with-libgtop-guile Build the libgtop guile interface (default=no)],
dnl [build_guile="$withval"], [build_guile=yes])
AC_MSG_CHECKING(for sysdeps_init_file)
sysdeps_init_file='sysdeps-init-'"$libgtop_sysdeps_name"'.c'
AC_SUBST(sysdeps_init_file)
AC_MSG_RESULT($sysdeps_init_file)
LIBGTOP_XML_CHECK
dnl if test x$build_guile != xno ; then
dnl GNOME_CHECK_GUILE
dnl fi
AC_ARG_WITH(libgtop-inodedb,
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
[build_inodedb="$withval"], [build_inodedb=no])
LIBGTOP_EXTRA_LIBS=
if test x$build_inodedb = xyes ; then
AC_CHECK_LIB(gdbm, gdbm_open, LIBGTOP_EXTRA_LIBS='-lgdbm', build_inodedb=no)
fi
@@ -142,17 +140,55 @@ fi
AC_DEFINE(GLIBTOP_NAMES)
if test x$ac_cv_guile_found = xyes ; then
AC_DEFINE(GLIBTOP_GUILE)
AC_DEFINE(GLIBTOP_GUILE_NAMES)
libgtop_guile_found=yes
guile_examples='third'
guile_static_examples='third_static'
guile_subdirs='guile'
else
libgtop_guile_found=no
guile_examples=
guile_static_examples=
guile_subdirs=
fi
if test x$libgtop_smp = xyes ; then
smp_examples='smp'
smp_static_examples='smp_static'
else
smp_examples=
smp_static_examples=
fi
if test "x$enable_static" != xno; then
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $guile_static_examples $smp_static_examples"
else
static_targets=""
fi
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
AC_SUBST(static_targets)
AC_SUBST(smp_examples)
AC_SUBST(guile_examples)
AC_SUBST(guile_subdirs)
AM_PROG_LIBTOOL
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop),
[gmodule])
GLIB_REQUIRED=2.0.0
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 libGTop without Gnome.
dnl GNOME_SUPPORT_CHECKS
GNOME_SUPPORT_CHECKS
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
@@ -213,18 +249,18 @@ AC_CHECK_LIB(kvm, kvm_open,[
dnl For DEC OSF1
AC_CHECK_LIB(mach, vm_statistics)
dnl For some broken libc5 systems (Debian 1.3)
saved_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -D_GNU_SOURCE"
dnl For some broken libc5 systems (Debian 1.3)
saved_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -D_GNU_SOURCE"
GCC_NEED_DECLARATION(program_invocation_name, [
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
])
CFLAGS=$saved_CFLAGS
dnl Check for Internet sockets.
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
])
CFLAGS=$saved_CFLAGS
AC_CHECK_FUNC(socket,
[AC_CHECK_HEADER(netinet/in.h,
[AC_CHECK_HEADER(arpa/inet.h, [
@@ -246,9 +282,14 @@ AC_TYPE_SIGNAL
AC_FUNC_STRFTIME
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
dnl ## all 'es_??' are only needed for format numbers different of 'es'
ALL_LINGUAS="da de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr gl ja ko nl no pl pt_BR sv uk"
AM_GNOME_GETTEXT
dnl ## 'es_ES' is only needed for format numbers different of 'es'
ALL_LINGUAS="az ca da de el es es_ES fi fr ga gl hu ja ko ms nl nn no pl pt pt_BR ru sk sl sv tr uk vi zh_CN zh_TW"
GETTEXT_PACKAGE=libgtop-2.0
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
AM_GLIB_GNU_GETTEXT
AC_PATH_XTRA
@@ -267,35 +308,32 @@ for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
$1="$T"
])dnl
dnl Autodetect Xauth
dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h, ,with_xauth=no) }
test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) }
test -z "$with_xauth" && with_xauth=yes
if test "$with_xauth" = "yes"; then
AC_DEFINE(HAVE_XAUTH)
XE_SPACE(libs_xauth, $X_LIBS -lXau)
fi
CPPFLAGS="$saved_CPPFLAGS"
AC_SUBST(libs_xauth)
dnl For diskusage stuff
GNOME_FILEUTILS_CHECKS
dnl Debugging
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]], libgtop_enable_debug=yes, libgtop_enable_debug=no)
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
AC_ARG_ENABLE(glib-malloc, [ --enable-glib-malloc use glib's malloc [default=auto]], libgtop_enable_glib_malloc=yes,)
if test "x$libgtop_enable_glib_malloc" != xyes ; then
if test "x$libgtop_enable_debug" = xyes ; then
libgtop_enable_glib_malloc=yes
else
libgtop_enable_glib_malloc=no
fi
fi
if test "x$libgtop_enable_glib_malloc" = xyes ; then
AC_DEFINE(LIBGTOP_USE_GLIB_MALLOC)
fi
if test "x$libgtop_enable_debug" = xyes ; then
AC_DEFINE(LIBGTOP_ENABLE_DEBUG)
fi
if test "x$gnome_found" = xyes ; then
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
SUPPORTINCS="$GNOME_INCLUDEDIR"
else
LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la'
LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la'
SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
fi
@@ -311,7 +349,7 @@ AC_SUBST(SUPPORTINCS)
dnl These definitions are expanded in make.
LIBGTOP_LIBS='-L$(libdir)'
LIBGTOP_INCS='-I$(includedir) -I$(pkglibdir)/include'
LIBGTOP_INCS='-I$(includedir)/libgtop-2.0'
if test x$libgtop_use_machine_h = xyes ; then
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
@@ -331,42 +369,78 @@ fi
LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
LIBGTOP_BINDIR='$(bindir)'
LIBGTOP_SERVER='$(bindir)/libgtop_server'
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS $LIBGTOP_XML_LIB"
sysdeps_dir="$libgtop_sysdeps_dir"
AC_SUBST(sysdeps_dir)
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop_sysdeps -lgtop_common -lgtop"
if test x$ac_cv_guile_found = xyes ; then
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0"
libgtop_guile_found=yes
else
libgtop_guile_found=no
fi
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
AC_SUBST(libgtop_guile_found)
if test -z "$LIBGTOP_EXTRA_LIBS" ; then
LIBGTOP_EXTRA_LIBS="$libs_xauth"
else
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
fi
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0"
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names-2.0"
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names-2.0 -lgtop_names-2.0"
LIBGTOP_LIBS="$LIBGTOP_LIBS"
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS"
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS"
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE"
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES"
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES"
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
AC_SUBST(machine_incs)
LIBGTOP_BACKEND_DIR="\$(datadir)/libgtop/backends"
if test x$libgtop_guile_found = xyes ; then
guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
else
guile_def=""
fi
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_builddir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\" -DLIBGTOP_BACKEND_DIR=\"'"$LIBGTOP_BACKEND_DIR"'\"'
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
AC_SUBST(INCLUDES)
AC_SUBST(LIBGTOP_EXTRA_LIBS)
AC_SUBST(LIBGTOP_BACKEND_DIR)
AC_SUBST(GLIB_LIBS)
AC_SUBST(LIBGTOP_LIBS)
AC_SUBST(LIBGTOP_INCS)
AC_SUBST(LIBGTOP_NAMES_LIBS)
AC_SUBST(LIBGTOP_NAMES_INCS)
AC_SUBST(LIBGTOP_GUILE_LIBS)
AC_SUBST(LIBGTOP_GUILE_INCS)
AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS)
AC_SUBST(LIBGTOP_GUILE_NAMES_INCS)
AC_SUBST(LIBGTOP_BINDIR)
AC_SUBST(LIBGTOP_SERVER)
if test x$libgtop_need_server = xyes ; then
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la"
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la"
server_programs='libgtop_server'
else
sysdeps_suid_lib=
@@ -375,150 +449,18 @@ fi
AC_SUBST(sysdeps_suid_lib)
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([
Makefile
libgtop.spec
po/Makefile.in
intl/Makefile
misc/Makefile
include/Makefile
include/glibtop/Makefile
sysdeps/Makefile
sysdeps/common/Makefile
sysdeps/names/Makefile
sysdeps/guile/Makefile
sysdeps/guile/names/Makefile
sysdeps/stub/Makefile
sysdeps/stub_suid/Makefile
sysdeps/sun4/Makefile
@@ -528,13 +470,11 @@ sysdeps/kernel/Makefile
sysdeps/freebsd/Makefile
sysdeps/solaris/Makefile
src/Makefile
src/daemon/Makefile
src/inodedb/Makefile
scripts/Makefile
backends/Makefile
backends/server/Makefile
backends/sysdeps/Makefile
backends/common/Makefile
lib/Makefile
examples/Makefile
doc/Makefile
support/Makefile
macros/Makefile])
libgtop-2.0.pc
])

View File

@@ -1,10 +1,9 @@
LibGTop CVS snapshots for Debian
--------------------------------
This is a snapshot of LibGTop from the main CVS archive, built into a
Debian package. This package is not guaranteed to work, as it was
built automatically. You're on your own, mister or missus!
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>, Fri, 14 Jan 2000 20:20:13 +0100
Martin Baulig <martin@home-of-linux.org>, Wed, 16 Feb 2000 16:40:50 +0100

11
debian/changelog vendored
View File

@@ -1,9 +1,10 @@
libgtop (1.1.4-1) unstable; urgency=low
* New upstream source
* Non-maintainer upload; this is an unstable developer's snapshot from
the GNOME CVS tree.
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> Fri, 14 Jan 2000 15:32:48 +0100
-- Martin Baulig <martin@home-of-linux.org> Wed, 16 Feb 2000 16:40:50 +0100
libgtop (1.0.6-1) unstable; urgency=low
* New upstream source

4
debian/control.in vendored
View File

@@ -4,7 +4,7 @@ Section: libs
Priority: optional
Standards-Version: 3.0.0
Package: libgtop2@SUFFIX@
Package: libgtop1@SUFFIX@
Architecture: any
Section: libs
Depends: ${shlibs:Depends}
@@ -20,7 +20,7 @@ Description: Portable system access library (part of Gnome)
Package: libgtop-dev@SUFFIX@
Architecture: any
Section: devel
Depends: libgtop2@SUFFIX@ (= ${Source-Version})
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"
.

2
debian/debconfigure vendored
View File

@@ -93,7 +93,7 @@ do
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
done
for postinst in libgtop2$pkgsuffix
for postinst in libgtop1$pkgsuffix
do
cat > $postinst.postinst <<EOF

View File

@@ -15,7 +15,6 @@
@PREFIX@/lib/libgtop_suid_common.so
@PREFIX@/lib/libgtop_sysdeps.so
@PREFIX@/lib/libgtop-features.def
@PREFIX@/lib/libgtop-structures.def
@PREFIX@/lib/libgtop/include/*.h
@PREFIX@/include/glibtop/*.h
@PREFIX@/include/glibtop.h

View File

@@ -2,4 +2,4 @@
The Debian package of libgtop, a GNOME library.
--
Ian Lynagh <ian@lynagh.demon.co.uk>
Martin Baulig <martin@home-of-linux.org>

View File

@@ -1,7 +1,5 @@
RELNOTES-0.25
RELNOTES-1.0
RELNOTES-1.1.x
RELNOTES-1.0.x
NEWS
AUTHORS
TODO
debian/changelog

4
debian/libgtop1.files.in vendored Normal file
View File

@@ -0,0 +1,4 @@
@PREFIX@/lib/libgtop*.so.[0-9].[0-9][0-9].[0-9]
@PREFIX@/lib/libgtop*.so.[0-9].[0-9].[0-9]
@PREFIX@/lib/libgtop*.so.[0-9]
@PREFIX@/share/locale/*/*/libgtop.mo

View File

@@ -1,2 +0,0 @@
@PREFIX@/lib/libgtop*-1.1.so.*.*
@PREFIX@/lib/libgtop*-1.1.so.*

8
debian/rules.in vendored
View File

@@ -66,14 +66,14 @@ install-saved:
binary-indep: build install
binary-arch: build install \
libgtop2@SUFFIX@ \
libgtop1@SUFFIX@ \
libgtop-dev@SUFFIX@
#
# libgtop2@SUFFIX@
# libgtop1@SUFFIX@
#
libgtop2@SUFFIX@: install
libgtop1@SUFFIX@: install
@echo "--- Building: $@"
dh_installdocs -p$@ -P$(b)/$@ README NEWS AUTHORS
dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog
@@ -95,7 +95,7 @@ libgtop2@SUFFIX@: install
libgtop-dev@SUFFIX@: install
@echo "--- Building: $@"
mkdir -p $(b)/$@/usr/doc
cd $(b)/$@/usr/doc; ln -s libgtop2@SUFFIX@ $@
cd $(b)/$@/usr/doc; ln -s libgtop1@SUFFIX@ $@
dh_movefiles -p$@ -P$(b)/$@
dh_strip -p$@ -P$(b)/$@
dh_compress -p$@ -P$(b)/$@

View File

@@ -1,3 +1,14 @@
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.
@@ -7,22 +18,7 @@
1999-09-29 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Reverted Timur's commit.
(MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. This still
creates libgtop.info in srcdir, but that's an automake problem.
Tue Jun 15 15:59:50 1999 Timur Bakeyev <mc@bat.ru>
* Makefile.am: Force `auto-macros.texi' to be created in $(srcdir),
as, otherwise, makeinfo is unable to find it, if srcdir != builddir.
That's a buggy solution, as spoils srcdir, but, as libgtop.info also
created in srcdir - this is acceptable. Both SHOULD be fixed!
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
* internals.texi: New file documenting LibGTop internals.
* reference.texi: Started to document all library functions and
finished the sysdeps and common references.
* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here.
1999-05-16 Martin Baulig <martin@home-of-linux.org>

View File

@@ -1,17 +1,17 @@
info_TEXINFOS = libgtop.texi
info_TEXINFOS = libgtop2.texi
libgtop_TEXINFOS = libgtop.texi about.texi reference.texi \
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.texi \
auto-macros.texi version.texi main.texi \
white-paper.texi internals.texi
white-paper.texi
MAKEINFO += -I @libgtop_top_builddir@/doc
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)#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' \

View File

@@ -7,9 +7,10 @@ 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.
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
@@ -32,10 +33,10 @@ latest release tarballs from
@noindent
or any of its mirror sites.
The latest stable version of LibGTop is 1.0.1 which is also the one that comes
together with GNOME 1.0. In CVS, there is a @code{LIBGTOP_STABLE_1_0} branch
which is rooted at the @code{LIBGTOP_1_0_1} tag while actual development occurs
in the @code{HEAD} which currently has version 1.1.0.
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
@@ -46,7 +47,7 @@ The stable branch currently supports the following platforms:
@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.
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.
@@ -115,6 +116,7 @@ me a lot in the early beginning.
@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

View File

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

View File

@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename libgtop.info
@setfilename libgtop2.info
@settitle LibGTop Reference Manual
@setchapternewpage odd
@c %**end of header
@@ -44,7 +44,7 @@ translation approved by the Free Software Foundation.
@format
@dircategory Libraries:
@direntry
* libgtop: (libgtop). Library to get system specific data
* LibGTop2: (libgtop2). Library to get system specific data
such as cpu and memory usage, active
processes
@end direntry

View File

@@ -4,7 +4,6 @@
* About:: About LibGTop
* White Paper:: LibGTop White Paper
* Reference Manual:: LibGTop Reference Manual
* LibGTop Internals:: LibGTop Internals
--- The Detailed Node Listing ---
@@ -19,7 +18,6 @@ LibGTop White Paper
* Introduction:: Introduction
* Overview:: Overview
* Servers and Daemons:: Servers and Daemons
Overview
@@ -62,24 +60,9 @@ Library Functions
* glibtop_init:: Server Initialization.
* glibtop_sysdeps:: Server Sysdeps.
* Library Parameters:: Library Parameters.
LibGTop Internals
* General Internals:: General Internals
* Sysdeps Internals:: Sysdeps Internals
General Internals
* glibtop:: The server structure
Sysdeps Internals
* glibtop_open_s:: Non-privileged initializations
* glibtop_close_s:: Non-privileged cleanups
@end menu
@include about.texi
@include white-paper.texi
@include reference.texi
@include internals.texi

View File

@@ -1,4 +1,4 @@
@node Reference Manual, LibGTop Internals, White Paper, Top
@node Reference Manual, , White Paper, Top
@chapter LibGTop Reference Manual
@menu

View File

@@ -4,7 +4,6 @@
@menu
* Introduction:: Introduction
* Overview:: Overview
* Servers and Daemons:: Servers and Daemons
@end menu
@node Introduction, Overview, White Paper, White Paper
@@ -48,7 +47,7 @@ since there's more than just one single program that wants to use them - for
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
@code{netload} panel applets.
@node Overview, Servers and Daemons, Introduction, White Paper
@node Overview, , Introduction, White Paper
@section Overview
This section should give you a short overview on how LibGTop was developed, which
@@ -89,48 +88,3 @@ only contains the @dfn{features} which need privileges.
Whenever we do not need any privileges to get all the data for some of the requested
structures (here called @dfn{features}) the library calls the sysdeps code directly
rather than using the server.
@node Servers and Daemons, , Overview, White Paper
@section Servers and Daemons
LibGTop gives you the possibility to use different LibGTop "servers" and
"daemons" in your application.
Normally you do not need to worry about this things since LibGTop auto-
matically opens a pipe to its server it it's required, but this can also
be customized to fit your needs.
For instance if you have a small applet which is only interested in disk
usage there's no need to fork a separate server process since you don't
need any privileges to get them on any of the supported systems. This can
be archieved with a special call to @code{glibtop_init_r} on startup.
There's also an option to tell @code{glibtop_init_r} that you're only
interested in several features - for instance cpu and memory usage. In
this case LibGTop will only fork a server process if it's required to get
cpu and memory.
You can also tell @code{glibtop_init_r} to start the server only on demand,
this might become useful in command-line based programs. For graphical
applications it's normally best to start the server directly during their
initialization. The same applies for any time critical applications (since
@code{fork} is an expensive operation on some systems this may lead to
incorrect statistics).
LibGTop also allows you to talk to a remote machine using the
@dfn{LibGTop daemon}. This daemon is based on @code{gnuserv} from
GNU Emacs and should be run as an unprivileged user. It has support
for either @code{xauth} or host based authorization.
This daemon itself behaves like a LibGTop client application, i.e. it
forks a server process if this is required.
The main use for this daemon is when you want to monitor a machine which
is either very slow or has very low disk space. In this case you don't need
to install the whole client application (for instance GTop) on the remote
machine but only a very small (maybe also statically linked) executable and
run the graphical application on a more powerful machine.
It can also be used to monitor a remote machine over a very slow link such
as a dialup connection since the conversation between LibGTop client and
daemon uses much less bandwith than an ordinary X11 connection.

16
examples/.cvsignore Normal file
View File

@@ -0,0 +1,16 @@
.deps
.libs
Makefile
Makefile.in
first
first_linux
first_static
second
third
third_linux
third_static
second_static
second_linux
smp_static sysdeps_static netload_static procmap_static mountlist_static
smp sysdeps netload procmap mountlist
timings timings_static

94
examples/ChangeLog Normal file
View File

@@ -0,0 +1,94 @@
2001-01-14 Abel Cheung <maddog@linux.org.hk>
* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE.
* Makefile.am, first.c, second.c, sysdeps.c: Make them at least
compile for now, by disabling chunks which should belong to
HEAD branch.
1999-05-28 Martin Baulig <martin@home-of-linux.org>
* first.c, second.c, sysdeps.c: Use LibGTop version conditionals
so we can more easily merge the code into LIBGTOP_STABLE_1_0.
1999-05-07 Martin Baulig <martin@home-of-linux.org>
* timings.c (timersub): Renamed this to `libgtop_timersub' and define
it on all systems.
Fri Apr 9 00:14:52 1999 Timur Bakeyev <timur@gnu.org>
* timings.c: Added timersub defenition, to make code compilable on
BSDI.
1999-03-24 Martin Baulig <martin@home-of-linux.org>
* timings.c: New example.
1999-03-17 Martin Baulig <martin@home-of-linux.org>
* first.c, second.c: Fixed a bug that caused a core dump when
the sysdeps code does not return all data.
1998-11-22 Martin Baulig <baulig@taurus.uni-trier.de>
* netload.c: Call inet_ntoa () to get address and subnet
in quatted dot notation (like 136.199.14.201) and not just
as a number (like 0xc90ec788).
1998-11-02 Martin Baulig <martin@home-of-linux.org>
* sysdeps.c: New example.
1998-10-26 Martin Baulig <martin@home-of-linux.org>
* netload.c: New file. Gets network load for the interface
given as command line argument.
1998-10-26 Martin Baulig <martin@home-of-linux.org>
* first.c (glibtop_get_proc_args): Get command line arguments.
* second.c: Likewise.
1998-10-25 Martin Baulig <martin@home-of-linux.org>
* first.c (glibtop_get_ppp): Get PPP/ISDN statistics.
1998-09-28 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything in $(libexecdir)/libgtop.
1998-09-09 Martin Baulig <baulig@Stud.Informatik.uni-trier.de>
* smp.c: New file. Nice tool to show CPU statistics on SMP systems.
1998-08-25 Martin Baulig <martin@home-of-linux.org>
* first.c, second.c, procmap.c: Fixed some compiler warnings.
1998-08-18 Martin Baulig <martin@home-of-linux.org>
* procmap.c: We now display filenames when compiled
`--with-libgtop-inodedb'.
1998-08-12 Martin Baulig <martin@home-of-linux.org>
* second.c: Works a little bit more like `ps' - you can
give an optional command line argument to get information
about a single process.
1998-07-22 Martin Baulig <martin@home-of-linux.org>
* mountlist.c: New file.
1998-06-12 Martin Baulig <martin@home-of-linux.org>
* test.scm: New file.
1998-06-07 Martin Baulig <martin@home-of-linux.org>
* Makefile.am (CFLAGS): Disable optimize.
* first.c (PROFILE_COUNT): Number of times each function
should be called. Defaults to 1; to profile the code, you
can increase this when compiling.

121
examples/Makefile.am Normal file
View File

@@ -0,0 +1,121 @@
## Process this file with automake to produce Makefile.in
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@
DEFS = @DEFS@
# We install it in `libexec' since this will make it more easy
# to put the examples into an extra RPM package.
libgtopdir = $(libexecdir)/libgtop
libgtop_PROGRAMS = first second\
mountlist procmap netload sysdeps timings \
@static_targets@ @guile_examples@ @smp_examples@
EXTRA_PROGRAMS = first_static second_static \
mountlist_static procmap_static \
third third_static smp smp_static \
netload_static sysdeps_static \
timings_static
first_SOURCES = first.c
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
first_static_SOURCES = $(first_SOURCES)
first_static_LDADD = $(first_LDADD)
first_static_LDFLAGS = -static
second_SOURCES = second.c
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
second_static_SOURCES = $(second_SOURCES)
second_static_LDADD = $(second_LDADD)
second_static_LDFLAGS = -static
procmap_SOURCES = procmap.c
procmap_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
procmap_static_SOURCES = $(procmap_SOURCES)
procmap_static_LDADD = $(procmap_LDADD)
procmap_static_LDFLAGS = -static
netload_SOURCES = netload.c
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
netload_static_SOURCES = $(netload_SOURCES)
netload_static_LDADD = $(netload_LDADD)
netload_static_LDFLAGS = -static
sysdeps_SOURCES = sysdeps.c
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
sysdeps_static_LDADD = $(sysdeps_LDADD)
sysdeps_static_LDFLAGS = -static
third_guile_names_LIBS = $(top_builddir)/sysdeps/guile/names/libgtop_guile_names-2.0.la
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names-2.0.la
third_SOURCES = third.c
third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile-2.0.la \
$(third_guile_names_LIBS) $(third_names_LIBS) \
$(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@
third_static_SOURCES = $(third_SOURCES)
third_static_LDADD = $(third_LDADD)
third_static_LDFLAGS = -static
mountlist_SOURCES = mountlist.c
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
mountlist_static_SOURCES= $(mountlist_SOURCES)
mountlist_static_LDADD = $(mountlist_LDADD)
mountlist_static_LDFLAGS= -static
smp_SOURCES = smp.c
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
smp_static_SOURCES = $(smp_SOURCES)
smp_static_LDADD = $(smp_LDADD)
smp_static_LDFLAGS = -static
timings_SOURCES = timings.c
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
@LIBSUPPORT@ @INTLLIBS@
timings_static_SOURCES = $(timings_SOURCES)
timings_static_LDADD = $(timings_LDADD)
timings_static_LDFLAGS = -static

575
examples/first.c Normal file
View File

@@ -0,0 +1,575 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/resource.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
glibtop_union data;
glibtop_sysdeps sysdeps;
unsigned c, method, count, port, i, *ptr;
char buffer [BUFSIZ];
pid_t pid, ppid;
char *args;
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_cpu (&data.cpu);
printf ("CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.cpu.flags,
(unsigned long) data.cpu.total,
(unsigned long) data.cpu.user,
(unsigned long) data.cpu.nice,
(unsigned long) data.cpu.sys,
(unsigned long) data.cpu.idle,
(unsigned long) data.cpu.frequency);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_mem (&data.mem);
printf ("Memory (0x%08lx): "
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.mem.flags,
(unsigned long) data.mem.total,
(unsigned long) data.mem.used,
(unsigned long) data.mem.free,
(unsigned long) data.mem.shared,
(unsigned long) data.mem.buffer,
(unsigned long) data.mem.cached,
(unsigned long) data.mem.user,
(unsigned long) data.mem.locked);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_swap (&data.swap);
printf ("Swap (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.swap.flags,
(unsigned long) data.swap.total,
(unsigned long) data.swap.used,
(unsigned long) data.swap.free,
(unsigned long) data.swap.pagein,
(unsigned long) data.swap.pageout);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_uptime (&data.uptime);
printf ("Uptime (0x%08lx): %f, %f\n",
(unsigned long) data.uptime.flags,
data.uptime.uptime, data.uptime.idletime);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_loadavg (&data.loadavg);
printf ("Loadavg (0x%08lx): %f, %f, %f - %lu, %lu, %lu\n",
(unsigned long) data.loadavg.flags,
(double) data.loadavg.loadavg [0],
(double) data.loadavg.loadavg [1],
(double) data.loadavg.loadavg [2],
(unsigned long) data.loadavg.nr_running,
(unsigned long) data.loadavg.nr_tasks,
(unsigned long) data.loadavg.last_pid);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_shm_limits (&data.shm_limits);
printf ("Shm Limits (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.shm_limits.flags,
(unsigned long) data.shm_limits.shmmax,
(unsigned long) data.shm_limits.shmmin,
(unsigned long) data.shm_limits.shmmni,
(unsigned long) data.shm_limits.shmseg,
(unsigned long) data.shm_limits.shmall);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_msg_limits (&data.msg_limits);
printf ("Msg Limits (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.msg_limits.flags,
(unsigned long) data.msg_limits.msgpool,
(unsigned long) data.msg_limits.msgmap,
(unsigned long) data.msg_limits.msgmax,
(unsigned long) data.msg_limits.msgmnb,
(unsigned long) data.msg_limits.msgmni,
(unsigned long) data.msg_limits.msgssz,
(unsigned long) data.msg_limits.msgtql);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_sem_limits (&data.sem_limits);
printf ("Sem Limits (0x%08lx): "
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.sem_limits.flags,
(unsigned long) data.sem_limits.semmap,
(unsigned long) data.sem_limits.semmni,
(unsigned long) data.sem_limits.semmns,
(unsigned long) data.sem_limits.semmnu,
(unsigned long) data.sem_limits.semmsl,
(unsigned long) data.sem_limits.semopm,
(unsigned long) data.sem_limits.semume,
(unsigned long) data.sem_limits.semusz,
(unsigned long) data.sem_limits.semvmx,
(unsigned long) data.sem_limits.semaem);
printf ("\n");
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_ppp (&data.ppp, 0);
printf ("PPP (0x%08lx): %lu, %lu, %lu\n",
(unsigned long) data.ppp.flags,
(unsigned long) data.ppp.state,
(unsigned long) data.ppp.bytes_in,
(unsigned long) data.ppp.bytes_out);
printf ("\n");
glibtop_get_sysdeps (&sysdeps);
printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, "
"%lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) sysdeps.flags,
(unsigned long) sysdeps.cpu,
(unsigned long) sysdeps.mem,
(unsigned long) sysdeps.swap,
(unsigned long) sysdeps.uptime,
(unsigned long) sysdeps.loadavg,
(unsigned long) sysdeps.shm_limits,
(unsigned long) sysdeps.msg_limits,
(unsigned long) sysdeps.sem_limits,
(unsigned long) sysdeps.proclist,
(unsigned long) sysdeps.proc_state,
(unsigned long) sysdeps.proc_uid,
(unsigned long) sysdeps.proc_mem,
(unsigned long) sysdeps.proc_time,
(unsigned long) sysdeps.proc_signal,
(unsigned long) sysdeps.proc_kernel,
(unsigned long) sysdeps.proc_segment,
(unsigned long) sysdeps.proc_args,
(unsigned long) sysdeps.proc_map,
(unsigned long) sysdeps.mountlist,
(unsigned long) sysdeps.fsusage,
(unsigned long) sysdeps.netload,
(unsigned long) sysdeps.ppp);
printf ("\n");
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
printf ("Proclist (0x%08lx): %lu, %lu, %lu\n",
(unsigned long) data.proclist.flags,
(unsigned long) data.proclist.number,
(unsigned long) data.proclist.size,
(unsigned long) data.proclist.total);
if (ptr) {
printf ("\nProcess: ");
for (i = 0; i < data.proclist.number; i++)
printf ("%s%u", i ? ", " : "", ptr [i]);
printf ("\n");
}
glibtop_free (ptr);
pid = getpid ();
ppid = getppid ();
printf ("\n");
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, pid);
printf ("Proc_State PID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
(int) pid, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, pid);
printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
(unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, pid);
printf ("Proc_Mem PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_mem.flags,
(unsigned long) data.proc_mem.size,
(unsigned long) data.proc_mem.vsize,
(unsigned long) data.proc_mem.resident,
(unsigned long) data.proc_mem.share,
(unsigned long) data.proc_mem.rss,
(unsigned long) data.proc_mem.rss_rlim);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, pid);
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, pid);
printf ("Proc_Time PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_time.flags,
(unsigned long) data.proc_time.start_time,
(unsigned long) data.proc_time.rtime,
(unsigned long) data.proc_time.utime,
(unsigned long) data.proc_time.stime,
(unsigned long) data.proc_time.cutime,
(unsigned long) data.proc_time.cstime,
(unsigned long) data.proc_time.timeout,
(unsigned long) data.proc_time.it_real_value,
(unsigned long) data.proc_time.frequency);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, pid);
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, pid);
printf ("Proc_Kernel PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
(unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt,
(unsigned long) data.proc_kernel.maj_flt,
(unsigned long) data.proc_kernel.cmin_flt,
(unsigned long) data.proc_kernel.cmaj_flt,
(unsigned long) data.proc_kernel.kstk_esp,
(unsigned long) data.proc_kernel.kstk_eip,
(unsigned long) data.proc_kernel.nwchan,
data.proc_kernel.wchan);
printf ("\n");
args = glibtop_get_proc_args (&data.proc_args, pid, 0);
for (i = 0; i < data.proc_args.size; i++) {
if (args [i]) continue;
args [i] = '|';
}
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
(unsigned long) data.proc_args.flags,
(unsigned long) data.proc_args.size,
args ? args : "");
glibtop_free (args);
printf ("\n");
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, ppid);
printf ("Proc_State PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
(int) ppid, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, ppid);
printf ("Proc_Uid PPID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid,
(unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, ppid);
printf ("Proc_Mem PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu\n", (int) ppid,
(unsigned long) data.proc_mem.flags,
(unsigned long) data.proc_mem.size,
(unsigned long) data.proc_mem.vsize,
(unsigned long) data.proc_mem.resident,
(unsigned long) data.proc_mem.share,
(unsigned long) data.proc_mem.rss,
(unsigned long) data.proc_mem.rss_rlim);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, ppid);
printf ("Proc_Segment PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, ppid);
printf ("Proc_Time PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
(unsigned long) data.proc_time.flags,
(unsigned long) data.proc_time.start_time,
(unsigned long) data.proc_time.rtime,
(unsigned long) data.proc_time.utime,
(unsigned long) data.proc_time.stime,
(unsigned long) data.proc_time.cutime,
(unsigned long) data.proc_time.cstime,
(unsigned long) data.proc_time.timeout,
(unsigned long) data.proc_time.it_real_value,
(unsigned long) data.proc_time.frequency);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, ppid);
printf ("Proc_Signal PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
(int) ppid, (unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
printf ("Proc_Kernel PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) ppid,
(unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt,
(unsigned long) data.proc_kernel.maj_flt,
(unsigned long) data.proc_kernel.cmin_flt,
(unsigned long) data.proc_kernel.cmaj_flt,
(unsigned long) data.proc_kernel.kstk_esp,
(unsigned long) data.proc_kernel.kstk_eip,
(unsigned long) data.proc_kernel.nwchan,
data.proc_kernel.wchan);
printf ("\n");
args = glibtop_get_proc_args (&data.proc_args, ppid, 0);
for (i = 0; i < data.proc_args.size; i++) {
if (args [i]) continue;
args [i] = '|';
}
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) ppid,
(unsigned long) data.proc_args.flags,
(unsigned long) data.proc_args.size,
args ? args : "");
glibtop_free (args);
printf ("\n");
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, 1);
printf ("Proc_State INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, 1);
printf ("Proc_Uid INIT %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1,
(unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, 1);
printf ("Proc_Mem INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_mem.flags,
(unsigned long) data.proc_mem.size,
(unsigned long) data.proc_mem.vsize,
(unsigned long) data.proc_mem.resident,
(unsigned long) data.proc_mem.share,
(unsigned long) data.proc_mem.rss,
(unsigned long) data.proc_mem.rss_rlim);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, 1);
printf ("Proc_Segment INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, 1);
printf ("Proc_Time INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_time.flags,
(unsigned long) data.proc_time.start_time,
(unsigned long) data.proc_time.rtime,
(unsigned long) data.proc_time.utime,
(unsigned long) data.proc_time.stime,
(unsigned long) data.proc_time.cutime,
(unsigned long) data.proc_time.cstime,
(unsigned long) data.proc_time.timeout,
(unsigned long) data.proc_time.it_real_value,
(unsigned long) data.proc_time.frequency);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, 1);
printf ("Proc_Signal INIT %5d (0x%08lx): "
"%lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, 1);
printf ("Proc_Kernel INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", 1,
(unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt,
(unsigned long) data.proc_kernel.maj_flt,
(unsigned long) data.proc_kernel.cmin_flt,
(unsigned long) data.proc_kernel.cmaj_flt,
(unsigned long) data.proc_kernel.kstk_esp,
(unsigned long) data.proc_kernel.kstk_eip,
(unsigned long) data.proc_kernel.nwchan,
data.proc_kernel.wchan);
printf ("\n");
args = glibtop_get_proc_args (&data.proc_args, 1, 0);
for (i = 0; i < data.proc_args.size; i++) {
if (args [i]) continue;
args [i] = '|';
}
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", 1,
(unsigned long) data.proc_args.flags,
(unsigned long) data.proc_args.size,
args ? args : "");
glibtop_free (args);
glibtop_close ();
exit (0);
}

113
examples/mountlist.c Normal file
View File

@@ -0,0 +1,113 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/mountlist.h>
#include <glibtop/fsusage.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1000
#endif
int
main (int argc, char *argv [])
{
glibtop_fsusage fsusage;
glibtop_mountlist mount_list;
glibtop_mountentry *mount_entries;
unsigned c, index, method, count, port;
char buffer [BUFSIZ];
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
printf ("sbrk (0) = %p\n\n", sbrk (0));
for (c = 0; c < PROFILE_COUNT; c++) {
mount_entries = glibtop_get_mountlist (&mount_list, 1);
glibtop_free (mount_entries);
}
printf ("sbrk (0) = %p\n\n", sbrk (0));
mount_entries = glibtop_get_mountlist (&mount_list, 1);
if (mount_entries == NULL)
_exit (1);
for (index = 0; index < mount_list.number; index++)
printf ("Mount_Entry: %-30s %-10s %-20s\n",
mount_entries [index].mountdir,
mount_entries [index].type,
mount_entries [index].devname);
printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n",
"", "Blocks", "Free", "Avail", "Files", "Free");
for (index = 0; index < mount_list.number; index++) {
glibtop_get_fsusage (&fsusage,
mount_entries [index].mountdir);
printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n",
mount_entries [index].mountdir,
fsusage.blocks, fsusage.bfree,
fsusage.bavail, fsusage.files,
fsusage.ffree);
}
glibtop_free (mount_entries);
printf ("\nsbrk (0) = %p\n\n", sbrk (0));
glibtop_close ();
exit (0);
}

125
examples/netload.c Normal file
View File

@@ -0,0 +1,125 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/netload.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
glibtop_netload netload;
unsigned method, count, port;
struct in_addr addr, subnet;
char *address_string, *subnet_string;
char buffer [BUFSIZ];
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
if (argc != 2)
glibtop_error ("Usage: %s interface", argv [0]);
glibtop_get_netload (&netload, argv [1]);
addr.s_addr = netload.address;
subnet.s_addr = netload.subnet;
address_string = glibtop_strdup (inet_ntoa (addr));
subnet_string = glibtop_strdup (inet_ntoa (subnet));
printf ("Network Load (0x%08lx):\n\n"
"\tInterface Flags:\t0x%08lx\n"
"\tAddress:\t\t0x%08lx - %s\n"
"\tSubnet:\t\t\t0x%08lx - %s\n\n"
"\tMTU:\t\t\t%ld\n"
"\tCollisions:\t\t%ld\n\n"
"\tPackets In:\t\t%ld\n"
"\tPackets Out:\t\t%ld\n"
"\tPackets Total:\t\t%ld\n\n"
"\tBytes In:\t\t%ld\n"
"\tBytes Out:\t\t%ld\n"
"\tBytes Total:\t\t%ld\n\n"
"\tErrors In:\t\t%ld\n"
"\tErrors Out:\t\t%ld\n"
"\tErrors Total:\t\t%ld\n\n",
(unsigned long) netload.flags,
(unsigned long) netload.if_flags,
(unsigned long) netload.address, address_string,
(unsigned long) netload.subnet, subnet_string,
(unsigned long) netload.mtu,
(unsigned long) netload.collisions,
(unsigned long) netload.packets_in,
(unsigned long) netload.packets_out,
(unsigned long) netload.packets_total,
(unsigned long) netload.bytes_in,
(unsigned long) netload.bytes_out,
(unsigned long) netload.bytes_total,
(unsigned long) netload.errors_in,
(unsigned long) netload.errors_out,
(unsigned long) netload.errors_total);
glibtop_free (address_string);
glibtop_free (subnet_string);
glibtop_close ();
exit (0);
}

164
examples/procmap.c Normal file
View File

@@ -0,0 +1,164 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/procmap.h>
#ifdef GLIBTOP_INODEDB
#include <glibtop/inodedb.h>
#endif
#include <sys/resource.h>
#include <sys/mman.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
#ifdef GLIBTOP_INODEDB
glibtop_inodedb *inodedb;
#endif
glibtop_proc_map procmap;
glibtop_map_entry *maps;
unsigned method, count, port, i;
char buffer [BUFSIZ];
pid_t pid;
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
glibtop_error ("Usage: %s pid", argv [0]);
#ifdef GLIBTOP_INODEDB
inodedb = glibtop_inodedb_open (0, 0);
#endif
fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid);
maps = glibtop_get_proc_map (&procmap, pid);
for (i = 0; i < procmap.number; i++) {
const char *filename = NULL;
unsigned device, device_major, device_minor;
char perm [5];
if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME))
filename = maps [i].filename;
#ifdef GLIBTOP_INODEDB
if (inodedb && !filename)
filename = glibtop_inodedb_lookup
(inodedb, maps [i].device, maps [i].inode);
#endif
perm [0] = (maps [i].perm & GLIBTOP_MAP_PERM_READ) ? 'r' : '-';
perm [1] = (maps [i].perm & GLIBTOP_MAP_PERM_WRITE) ? 'w' : '-';
perm [2] = (maps [i].perm & GLIBTOP_MAP_PERM_EXECUTE) ? 'x' : '-';
perm [3] = (maps [i].perm & GLIBTOP_MAP_PERM_SHARED) ? 's' : '-';
perm [4] = (maps [i].perm & GLIBTOP_MAP_PERM_PRIVATE) ? 'p' : '-';
device = (unsigned long) maps [i].device;
device_minor = (device & 255);
device_major = ((device >> 8) & 255);
if (filename) {
char *format;
if (sizeof (void*) == 8)
format = "%016lx-%016lx %016lx - "
"%02x:%02x %08lu - %4s - %s\n";
else
format = "%08lx-%08lx %08lx - "
"%02x:%02x %08lu - %4s - %s\n";
fprintf (stderr, format,
(unsigned long) maps [i].start,
(unsigned long) maps [i].end,
(unsigned long) maps [i].offset,
device_major, device_minor,
(unsigned long) maps [i].inode,
perm, filename);
} else {
char * format;
if (sizeof (void*) == 8)
format = "%016lx-%016lx %016lx - "
"%02x:%02x %08lu - %4s\n";
else
format = "%08lx-%08lx %08lx - "
"%02x:%02x %08lu - %4s\n";
fprintf (stderr, format,
(unsigned long) maps [i].start,
(unsigned long) maps [i].end,
(unsigned long) maps [i].offset,
device_major, device_minor,
(unsigned long) maps [i].inode,
perm);
}
if (filename && (filename != maps [i].filename))
glibtop_free (filename);
}
glibtop_free (maps);
glibtop_close ();
exit (0);
}

299
examples/second.c Normal file
View File

@@ -0,0 +1,299 @@
/* $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>
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);
}

124
examples/smp.c Normal file
View File

@@ -0,0 +1,124 @@
/* $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 <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_get_cpu (&cpu);
ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
frequency = (unsigned long) cpu.frequency;
total = ((unsigned long) cpu.total) ? ((double) cpu.total) : 1.0;
user = ((unsigned long) cpu.user) ? ((double) cpu.user) : 1.0;
nice = ((unsigned long) cpu.nice) ? ((double) cpu.nice) : 1.0;
sys = ((unsigned long) cpu.sys) ? ((double) cpu.sys) : 1.0;
idle = ((unsigned long) cpu.idle) ? ((double) cpu.idle) : 1.0;
s_total = s_user = s_nice = s_sys = s_idle = 0.0;
b_total = total / ncpu;
b_user = user / ncpu;
b_nice = nice / ncpu;
b_sys = sys / ncpu;
b_idle = idle / ncpu;
memset (separator, '-', 91);
separator [92] = '\0';
sprintf (buffer, _("Ticks (%ld per second):"), frequency);
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
printf (_("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"),
(unsigned long) cpu.flags, total, user, nice, sys, idle);
for (i = 0; i < glibtop_global_server->ncpu; i++) {
printf (_("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i,
(unsigned long) cpu.flags,
(unsigned long) cpu.xcpu_total [i],
(unsigned long) cpu.xcpu_user [i],
(unsigned long) cpu.xcpu_nice [i],
(unsigned long) cpu.xcpu_sys [i],
(unsigned long) cpu.xcpu_idle [i]);
s_total += fabs (((double) cpu.xcpu_total [i]) - b_total);
s_user += fabs (((double) cpu.xcpu_user [i]) - b_user);
s_nice += fabs (((double) cpu.xcpu_nice [i]) - b_nice);
s_sys += fabs (((double) cpu.xcpu_sys [i]) - b_sys);
s_idle += fabs (((double) cpu.xcpu_idle [i]) - b_idle);
}
printf ("%s\n\n\n", separator);
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"),
_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"),
_("Idle (%)"), separator);
printf (_("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"),
(unsigned long) cpu.flags, (double) total * 100.0 / total,
(double) user * 100.0 / total,
(double) nice * 100.0 / total,
(double) sys * 100.0 / total,
(double) idle * 100.0 / total);
for (i = 0; i < glibtop_global_server->ncpu; i++) {
double p_total, p_user, p_nice, p_sys, p_idle;
p_total = ((double) cpu.xcpu_total [i]) * 100.0 / total;
p_user = ((double) cpu.xcpu_user [i]) * 100.0 / user;
p_nice = ((double) cpu.xcpu_nice [i]) * 100.0 / nice;
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
p_idle = ((double) cpu.xcpu_idle [i]) * 100.0 / idle;
printf (_("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"),
i, (unsigned long) cpu.flags, p_total, p_user, p_nice,
p_sys, p_idle);
}
printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator,
_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user,
s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
exit (0);
}

148
examples/sysdeps.c Normal file
View File

@@ -0,0 +1,148 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
glibtop_sysdeps sysdeps;
unsigned method, count, port;
char buffer [BUFSIZ];
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
glibtop_get_sysdeps (&sysdeps);
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
printf ("Sysdeps (0x%08lx):\n\n"
"\tfeatures:\t\t0x%08lx\n\n"
"\tcpu:\t\t%d\t0x%08lx\n"
"\tmem:\t\t%d\t0x%08lx\n"
"\tswap:\t\t%d\t0x%08lx\n\n"
"\tuptime:\t\t%d\t0x%08lx\n"
"\tloadavg:\t%d\t0x%08lx\n\n"
"\tshm_limits:\t%d\t0x%08lx\n"
"\tmsg_limits:\t%d\t0x%08lx\n"
"\tsem_limits:\t%d\t0x%08lx\n\n"
"\tproclist:\t%d\t0x%08lx\n\n"
"\tproc_state:\t%d\t0x%08lx\n"
"\tproc_uid:\t%d\t0x%08lx\n"
"\tproc_mem:\t%d\t0x%08lx\n"
"\tproc_time:\t%d\t0x%08lx\n"
"\tproc_signal:\t%d\t0x%08lx\n"
"\tproc_kernel:\t%d\t0x%08lx\n"
"\tproc_segment:\t%d\t0x%08lx\n\n"
"\tproc_args:\t%d\t0x%08lx\n"
"\tproc_map:\t%d\t0x%08lx\n\n"
"\tmountlist:\t%d\t0x%08lx\n"
"\tfsusage:\t%d\t0x%08lx\n\n"
"\tnetload:\t%d\t0x%08lx\n"
"\tppp:\t\t%d\t0x%08lx\n\n",
(unsigned long) sysdeps.flags,
(unsigned long) sysdeps.features,
FEATURE_CHECK(CPU),
(unsigned long) sysdeps.cpu,
FEATURE_CHECK(MEM),
(unsigned long) sysdeps.mem,
FEATURE_CHECK(SWAP),
(unsigned long) sysdeps.swap,
FEATURE_CHECK(UPTIME),
(unsigned long) sysdeps.uptime,
FEATURE_CHECK(LOADAVG),
(unsigned long) sysdeps.loadavg,
FEATURE_CHECK(SHM_LIMITS),
(unsigned long) sysdeps.shm_limits,
FEATURE_CHECK(MSG_LIMITS),
(unsigned long) sysdeps.msg_limits,
FEATURE_CHECK(SEM_LIMITS),
(unsigned long) sysdeps.sem_limits,
FEATURE_CHECK(PROCLIST),
(unsigned long) sysdeps.proclist,
FEATURE_CHECK(PROC_STATE),
(unsigned long) sysdeps.proc_state,
FEATURE_CHECK(PROC_UID),
(unsigned long) sysdeps.proc_uid,
FEATURE_CHECK(PROC_MEM),
(unsigned long) sysdeps.proc_mem,
FEATURE_CHECK(PROC_TIME),
(unsigned long) sysdeps.proc_time,
FEATURE_CHECK(PROC_SIGNAL),
(unsigned long) sysdeps.proc_signal,
FEATURE_CHECK(PROC_KERNEL),
(unsigned long) sysdeps.proc_kernel,
FEATURE_CHECK(PROC_SEGMENT),
(unsigned long) sysdeps.proc_segment,
FEATURE_CHECK(PROC_ARGS),
(unsigned long) sysdeps.proc_args,
FEATURE_CHECK(PROC_MAP),
(unsigned long) sysdeps.proc_map,
FEATURE_CHECK(MOUNTLIST),
(unsigned long) sysdeps.mountlist,
FEATURE_CHECK(FSUSAGE),
(unsigned long) sysdeps.fsusage,
FEATURE_CHECK(NETLOAD),
(unsigned long) sysdeps.netload,
FEATURE_CHECK(PPP),
(unsigned long) sysdeps.ppp);
glibtop_close ();
exit (0);
}

80
examples/test.scm Normal file
View File

@@ -0,0 +1,80 @@
(display (glibtop-names-sysdeps)) (newline)
(display (glibtop-labels-sysdeps)) (newline)
(display (glibtop-descriptions-sysdeps)) (newline)
(display (glibtop-types-sysdeps)) (newline)
(newline)
(display (glibtop-names-cpu)) (newline)
(display (glibtop-names-mem)) (newline)
(display (glibtop-names-swap)) (newline)
(display (glibtop-names-uptime)) (newline)
(display (glibtop-names-loadavg)) (newline)
(display (glibtop-names-shm_limits)) (newline)
(display (glibtop-names-msg_limits)) (newline)
(display (glibtop-names-sem_limits)) (newline)
(display (glibtop-names-proclist)) (newline)
(display (glibtop-names-proc_state)) (newline)
(display (glibtop-names-proc_uid)) (newline)
(display (glibtop-names-proc_mem)) (newline)
(display (glibtop-names-proc_time)) (newline)
(display (glibtop-names-proc_signal)) (newline)
(display (glibtop-names-proc_kernel)) (newline)
(display (glibtop-names-proc_segment)) (newline)
(newline)
(display (glibtop-labels-cpu)) (newline)
(display (glibtop-labels-mem)) (newline)
(display (glibtop-labels-swap)) (newline)
(display (glibtop-labels-uptime)) (newline)
(display (glibtop-labels-loadavg)) (newline)
(display (glibtop-labels-shm_limits)) (newline)
(display (glibtop-labels-msg_limits)) (newline)
(display (glibtop-labels-sem_limits)) (newline)
(display (glibtop-labels-proclist)) (newline)
(display (glibtop-labels-proc_state)) (newline)
(display (glibtop-labels-proc_uid)) (newline)
(display (glibtop-labels-proc_mem)) (newline)
(display (glibtop-labels-proc_time)) (newline)
(display (glibtop-labels-proc_signal)) (newline)
(display (glibtop-labels-proc_kernel)) (newline)
(display (glibtop-labels-proc_segment)) (newline)
(newline)
(display (glibtop-descriptions-cpu)) (newline)
(display (glibtop-descriptions-mem)) (newline)
(display (glibtop-descriptions-swap)) (newline)
(display (glibtop-descriptions-uptime)) (newline)
(display (glibtop-descriptions-loadavg)) (newline)
(display (glibtop-descriptions-shm_limits)) (newline)
(display (glibtop-descriptions-msg_limits)) (newline)
(display (glibtop-descriptions-sem_limits)) (newline)
(display (glibtop-descriptions-proclist)) (newline)
(display (glibtop-descriptions-proc_state)) (newline)
(display (glibtop-descriptions-proc_uid)) (newline)
(display (glibtop-descriptions-proc_mem)) (newline)
(display (glibtop-descriptions-proc_time)) (newline)
(display (glibtop-descriptions-proc_signal)) (newline)
(display (glibtop-descriptions-proc_kernel)) (newline)
(display (glibtop-descriptions-proc_segment)) (newline)
(newline)
(display (glibtop-types-cpu)) (newline)
(display (glibtop-types-mem)) (newline)
(display (glibtop-types-swap)) (newline)
(display (glibtop-types-uptime)) (newline)
(display (glibtop-types-loadavg)) (newline)
(display (glibtop-types-shm_limits)) (newline)
(display (glibtop-types-msg_limits)) (newline)
(display (glibtop-types-sem_limits)) (newline)
(display (glibtop-types-proclist)) (newline)
(display (glibtop-types-proc_state)) (newline)
(display (glibtop-types-proc_uid)) (newline)
(display (glibtop-types-proc_mem)) (newline)
(display (glibtop-types-proc_time)) (newline)
(display (glibtop-types-proc_signal)) (newline)
(display (glibtop-types-proc_kernel)) (newline)
(display (glibtop-types-proc_segment)) (newline)

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -23,16 +21,37 @@
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/backend.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
_glibtop_open_sysdeps (glibtop *server, const char *program_name,
const unsigned long features, const unsigned flags)
main_prog (int argc, char *argv[])
{
glibtop_open_backend_l (server, "glibtop-backend-common",
features, NULL);
glibtop_open_backend_l (server, "glibtop-backend-server",
features, NULL);
glibtop_boot_guile ();
#ifdef GLIBTOP_GUILE_NAMES
glibtop_boot_guile_names ();
#endif
gh_repl (argc, argv);
}

357
examples/timings.c Normal file
View File

@@ -0,0 +1,357 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/times.h>
#include <sys/resource.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 100000L
#endif
#ifndef PROFILE_COUNT_EXPENSIVE
#define PROFILE_COUNT_EXPENSIVE 10000L
#endif
#define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 + (unsigned long) elapsed_utime.tv_usec)
#define ELAPSED_STIME ((unsigned long) elapsed_stime.tv_sec * 1000000 + (unsigned long) elapsed_stime.tv_usec)
#define libgtop_timeradd(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
if ((vvp)->tv_usec >= 1000000) { \
(vvp)->tv_sec++; \
(vvp)->tv_usec -= 1000000; \
} \
} while (0)
#define libgtop_timersub(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
if ((vvp)->tv_usec < 0) { \
(vvp)->tv_sec--; \
(vvp)->tv_usec += 1000000; \
} \
} while (0)
int
main (int argc, char *argv [])
{
glibtop_union data;
unsigned c, count, *ptr;
struct rusage total_start, total_end;
struct rusage rusage_start, rusage_end;
struct timeval elapsed_utime, elapsed_stime;
pid_t pid;
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
textdomain (GETTEXT_PACKAGE);
printf ("%-12s (%-10s): %7s - %9s - %9s\n",
"Feature", "Flags", "Count", "utime", "stime");
printf ("-------------------------------------------"
"---------------\n");
glibtop_init_r (&glibtop_global_server, 0, 0);
getrusage (RUSAGE_SELF, &total_start);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_cpu (&data.cpu);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("CPU (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.cpu.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++)
glibtop_get_mem (&data.mem);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Memory (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.mem.flags, PROFILE_COUNT_EXPENSIVE,
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++)
glibtop_get_swap (&data.swap);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Swap (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.swap.flags, PROFILE_COUNT_EXPENSIVE,
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_uptime (&data.uptime);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Uptime (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.uptime.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_loadavg (&data.loadavg);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Loadavg (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.loadavg.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
printf ("\n");
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
glibtop_free (ptr);
}
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proclist (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proclist.flags,
PROFILE_COUNT_EXPENSIVE,
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
pid = getpid ();
printf ("\n");
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_State (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_state.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Uid (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_uid.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Mem (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_mem.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Segment (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_segment.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Time (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_time.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Signal (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_signal.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Kernel (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_kernel.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &total_end);
libgtop_timersub (&total_end.ru_utime, &total_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&total_end.ru_stime, &total_start.ru_stime,
&elapsed_stime);
printf ("-------------------------------------------"
"---------------\n");
printf ("%-36s %9lu - %9lu\n\n", "TOTAL",
ELAPSED_UTIME, ELAPSED_STIME);
printf ("All timings are in clock ticks "
"(1000000 ticks per second).\n\n");
glibtop_close ();
exit (0);
}

View File

@@ -1,24 +1,22 @@
retval|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[GLIBTOP_NCPU],xcpu_user[GLIBTOP_NCPU],xcpu_nice[GLIBTOP_NCPU],xcpu_sys[GLIBTOP_NCPU],xcpu_idle[GLIBTOP_NCPU],xcpu_flags)
retval|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
retval|swap|ulong(total,used,free,pagein,pageout)
retval|uptime|double(uptime,idletime):ulong(boot_time)
retval|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
retval|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
retval|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
retval|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
pointer(unsigned)|proclist|array|long(which,arg)
retval|proc_state|string(cmd):unsigned(state):ulong(uid,gid,ruid,rgid,has_cpu,processor,last_processor)|pid_t(pid)
retval|proc_uid|long(uid,euid,gid,egid,suid,sgid,fsuid,fsgid,pid,ppid,pgrp,session,tty,tpgid,priority,nice,ngroups,groups[GLIBTOP_MAX_GROUPS])|pid_t(pid)
retval|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
retval|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[GLIBTOP_NCPU],xcpu_stime[GLIBTOP_NCPU],xcpu_flags)|pid_t(pid)
retval|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
retval|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):string(wchan)|pid_t(pid)
retval|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_data,end_data,start_brk,end_brk,start_stack,start_mmap,arg_start,arg_end,env_start,env_end)|pid_t(pid)
pointer(string)|proc_args|array|pid_t(pid)
array(glibtop_map_entry)|proc_map|array|pid_t(pid)
array(glibtop_mountentry)|@mountlist|array|int(all_fs)
retval|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string(mount_dir)
array(glibtop_interface)|interface_names|array|ulong(interface,number,instance,strategy)
retval|netinfo|ulong(if_flags,transport,mtu,subnet,address)|string(interface):unsigned(transport)
retval|netload|ulong(packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string(interface):unsigned(transport,protocol)
retval|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
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)

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -26,48 +24,46 @@
#ifndef __GLIBTOP_H__
#define __GLIBTOP_H__
#ifndef _IN_LIBGTOP
#include <glibtop-config.h>
#endif
#include <glibtop/global.h>
#include <glibtop/limits.h>
#include <glibtop_server.h>
#include <glibtop/types.h>
BEGIN_LIBGTOP_DECLS
#ifdef HAVE_GLIBTOP_MACHINE_H
#include <glibtop_machine.h>
#endif
typedef struct _glibtop glibtop;
typedef struct _glibtop_server_private glibtop_server_private;
#ifndef GLIBTOP_MOUNTENTRY_LEN
#define GLIBTOP_MOUNTENTRY_LEN 79
#endif
typedef struct _glibtop glibtop;
#include <glibtop/sysdeps.h>
#include <glibtop/errors.h>
#ifdef _IN_LIBGTOP
#include <glibtop-server-private.h>
#endif
struct _glibtop
{
int refcount; /* Reference count */
unsigned flags;
unsigned method; /* Server Method */
unsigned error_method; /* Error Method */
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 */
glibtop_sysdeps wanted; /* We only want this features */
glibtop_server_private *_priv; /* Private data */
unsigned glibtop_errno;
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;
@@ -88,12 +84,24 @@ glibtop_init_s (glibtop **server_ptr,
unsigned long features,
unsigned flags);
void
glibtop_server_ref (glibtop *server);
#ifdef GLIBTOP_GUILE
void
glibtop_server_unref (glibtop *server);
/* You need to link with -lgtop_guile to get this stuff here. */
END_LIBGTOP_DECLS
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

View File

@@ -1,3 +1,2 @@
Makefile
Makefile.in
call-vector.h

View File

@@ -1,23 +1,10 @@
glibtopdir = $(includedir)/glibtop
glibtopdir = $(includedir)/libgtop-2.0/glibtop
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
sem_limits.h uptime.h mem.h proclist.h \
proctime.h shm_limits.h cpu.h msg_limits.h \
procmem.h procuid.h swap.h error.h open.h \
procsegment.h sysdeps.h xmalloc.h global.h \
procsignal.h union.h types.h \
sem_limits.h uptime.h command.h mem.h proclist.h \
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
procmem.h procuid.h swap.h write.h error.h open.h \
procsegment.h read.h sysdeps.h xmalloc.h global.h \
procsignal.h read_data.h union.h types.h gnuserv.h \
parameter.h mountlist.h fsusage.h procmap.h signal.h \
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
netinfo.h interfaces.h limits.h array.h compat_10.h \
errors.h glib-arrays.h backend.h call-vector.h
BUILT_SOURCES = call-vector.h
call-vector.h: call-vector.pl call-vector.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/call-vector.pl $(top_srcdir)/features.def $(srcdir)/call-vector.h.in > tmp-t
mv tmp-t call-vector.h
EXTRA_DIST = call-vector.pl call-vector.h.in
CLEANFILES = $(BUILT_SOURCES)
inodedb.h sysinfo.h ppp.h procargs.h netload.h

View File

@@ -1,50 +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_ARRAY_H__
#define __GLIBTOP_ARRAY_H__
#include <glibtop.h>
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_ARRAY_NUMBER 0
#define GLIBTOP_ARRAY_SIZE 1
#define GLIBTOP_ARRAY_TOTAL 2
#define GLIBTOP_MAX_ARRAY 3
typedef struct _glibtop_array glibtop_array;
struct _glibtop_array
{
u_int64_t flags,
number, /* GLIBTOP_ARRAY_NUMBER */
size, /* GLIBTOP_ARRAY_SIZE */
total; /* GLIBTOP_ARRAY_TOTAL */
};
#endif

View File

@@ -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.
*/
#ifndef __GLIBTOP_BACKEND_H__
#define __GLIBTOP_BACKEND_H__
#include <glibtop.h>
#include <glibtop/global.h>
#include <glib.h>
BEGIN_LIBGTOP_DECLS
typedef struct _glibtop_backend_info glibtop_backend_info;
typedef struct _glibtop_backend_entry glibtop_backend_entry;
typedef struct _glibtop_backend_module glibtop_backend_module;
typedef struct _glibtop_backend_private glibtop_backend_private;
typedef struct _glibtop_backend glibtop_backend;
#include <glibtop/call-vector.h>
typedef int (*glibtop_backend_open_func_t) (glibtop *, glibtop_backend *,
u_int64_t, const char **);
typedef int (*glibtop_backend_close_func_t) (glibtop *, glibtop_backend *);
struct _glibtop_backend_info
{
const char *name;
glibtop_backend_open_func_t open;
glibtop_backend_close_func_t close;
glibtop_call_vector *call_vector;
};
#ifdef _IN_LIBGTOP
#include <gmodule.h>
/* private structure */
struct _glibtop_backend_module
{
int refcount;
GModule *module;
};
#endif /* _IN_LIBGTOP */
struct _glibtop_backend_entry
{
char *name;
char *libtool_name;
char *shlib_name;
/* This is const since you must not attempt to
* write into gmodule loaded memory. */
const glibtop_backend_info *info;
/* private pointer */
glibtop_backend_module *_priv;
};
struct _glibtop_backend
{
const glibtop_backend_info *info;
/* private pointers */
glibtop_backend_private *_priv;
glibtop_backend_module *_priv_module;
};
long
glibtop_register_backend (glibtop_backend_entry *entry);
void
glibtop_unregister_backend (long id);
glibtop_backend_entry *
glibtop_backend_by_id (long id);
glibtop_backend_entry *
glibtop_backend_by_name (const char *backend_name);
void
glibtop_init_backends (void);
int
glibtop_open_backend_l (glibtop *server, const char *backend_name,
u_int64_t features, const char **backend_args);
END_LIBGTOP_DECLS
#endif

View File

@@ -1,116 +0,0 @@
#!/usr/bin/perl
require 'c_types.pl';
die "Usage: $0 features.def call-vector.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 $_;
}
$func_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;
if ($retval eq 'retval') {
$retval_param = '&retval';
$retval = 'int';
}
elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
}
else {
$retval_param = 'NULL';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$param_decl = '';
$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];
$param_decl = $param_decl . ', ';
$param_decl = $param_decl . $c_type;
}
}
if ($line_fields[3] eq '') {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *%s);\n], $retval, $feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *%s);\n], $retval, $feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
}
}
chop $func_decl_code;
$auto_gen_comment = sprintf
(qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]);
open CALLVECTOR, $ARGV[2] or
die "open ($ARGV[2]): $!";
while (<CALLVECTOR>) {
chop;
s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/;
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
} continue {
print $_;
}
close CALLVECTOR;

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig

102
include/glibtop/command.h Normal file
View File

@@ -0,0 +1,102 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_COMMAND_H__
#define __GLIBTOP_COMMAND_H__
#include <glibtop.h>
#include <glibtop/sysdeps.h>
#include <glibtop/union.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_CMND_QUIT 0
#define GLIBTOP_CMND_SYSDEPS 1
#define GLIBTOP_CMND_CPU 2
#define GLIBTOP_CMND_MEM 3
#define GLIBTOP_CMND_SWAP 4
#define GLIBTOP_CMND_UPTIME 5
#define GLIBTOP_CMND_LOADAVG 6
#define GLIBTOP_CMND_SHM_LIMITS 7
#define GLIBTOP_CMND_MSG_LIMITS 8
#define GLIBTOP_CMND_SEM_LIMITS 9
#define GLIBTOP_CMND_PROCLIST 10
#define GLIBTOP_CMND_PROC_STATE 11
#define GLIBTOP_CMND_PROC_UID 12
#define GLIBTOP_CMND_PROC_MEM 13
#define GLIBTOP_CMND_PROC_TIME 14
#define GLIBTOP_CMND_PROC_SIGNAL 15
#define GLIBTOP_CMND_PROC_KERNEL 16
#define GLIBTOP_CMND_PROC_SEGMENT 17
#define GLIBTOP_CMND_PROC_ARGS 18
#define GLIBTOP_CMND_PROC_MAP 19
#define GLIBTOP_CMND_MOUNTLIST 20
#define GLIBTOP_CMND_FSUSAGE 21
#define GLIBTOP_CMND_NETLOAD 22
#define GLIBTOP_CMND_PPP 23
#define GLIBTOP_MAX_CMND 24
#define _GLIBTOP_PARAM_SIZE 16
typedef struct _glibtop_command glibtop_command;
typedef struct _glibtop_response glibtop_response;
typedef union _glibtop_response_union glibtop_response_union;
struct _glibtop_command
{
u_int64_t command;
u_int64_t size, data_size;
char parameter [_GLIBTOP_PARAM_SIZE];
};
union _glibtop_response_union
{
glibtop_union data;
glibtop_sysdeps sysdeps;
};
struct _glibtop_response
{
int64_t offset;
u_int64_t size, data_size;
glibtop_response_union u;
};
#define glibtop_call(p1, p2, p3, p4) glibtop_call_r(glibtop_global_server, p1, p2, p3, p4)
void *
glibtop_call_l (glibtop *server, unsigned command, size_t send_size,
const void *send_buf, size_t recv_size, void *recv_buf);
void *
glibtop_call_s (glibtop *server, unsigned command, size_t send_size,
const void *send_buf, size_t recv_size, void *recv_buf);
END_LIBGTOP_DECLS
#endif

View File

@@ -1,91 +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_COMPAT10_H__
#define __GLIBTOP_COMPAT10_H__
#include <glibtop.h>
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
/* glibtop_cpu */
#define GLIBTOP_XCPU_TOTAL GLIBTOP_CPU_XCPU_TOTAL
#define GLIBTOP_XCPU_USER GLIBTOP_CPU_XCPU_USER
#define GLIBTOP_XCPU_NICE GLIBTOP_CPU_XCPU_NICE
#define GLIBTOP_XCPU_SYS GLIBTOP_CPU_XCPU_SYS
#define GLIBTOP_XCPU_IDLE GLIBTOP_CPU_XCPU_IDLE
#define GLIBTOP_XCPU_FLAGS GLIBTOP_CPU_XCPU_FLAGS
/* glibtop_proclist */
#define GLIBTOP_PROCLIST_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_PROCLIST_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_PROCLIST_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_PROCLIST GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_proclist;
/* glibtop_mountlist */
#define GLIBTOP_MOUNTLIST_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_MOUNTLIST_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_MOUNTLIST_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_MOUNTLIST GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_mountlist;
/* glibtop_proc_args */
#define GLIBTOP_PROC_ARGS_SIZE 0
#define GLIBTOP_MAX_PROC_ARGS 1
typedef struct _glibtop_array glibtop_proc_args;
/* glibtop_proc_map */
#define GLIBTOP_PROC_MAP_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_PROC_MAP_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_PROC_MAP_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_PROC_MAP GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_proc_map;
/* glibtop_interface_names */
#define GLIBTOP_INTERFACE_NAMES_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_INTERFACE_NAMES_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_INTERFACE_NAMES_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_INTERFACE_NAMES GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_interface_names;
#endif

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -38,32 +36,33 @@ BEGIN_LIBGTOP_DECLS
#define GLIBTOP_CPU_IDLE 4
#define GLIBTOP_CPU_FREQUENCY 5
#define GLIBTOP_CPU_XCPU_TOTAL 6
#define GLIBTOP_CPU_XCPU_USER 7
#define GLIBTOP_CPU_XCPU_NICE 8
#define GLIBTOP_CPU_XCPU_SYS 9
#define GLIBTOP_CPU_XCPU_IDLE 10
#define GLIBTOP_CPU_XCPU_FLAGS 11
#define GLIBTOP_XCPU_TOTAL 6
#define GLIBTOP_XCPU_USER 7
#define GLIBTOP_XCPU_NICE 8
#define GLIBTOP_XCPU_SYS 9
#define GLIBTOP_XCPU_IDLE 10
#define GLIBTOP_MAX_CPU 12
#define GLIBTOP_MAX_CPU 11
/* Nobody should really be using more than 4 processors. */
#define GLIBTOP_NCPU 4
typedef struct _glibtop_cpu glibtop_cpu;
struct _glibtop_cpu
{
u_int64_t flags,
total, /* GLIBTOP_CPU_TOTAL */
user, /* GLIBTOP_CPU_USER */
nice, /* GLIBTOP_CPU_NICE */
sys, /* GLIBTOP_CPU_SYS */
idle, /* GLIBTOP_CPU_IDLE */
frequency, /* GLIBTOP_CPU_FREQUENCY */
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_TOTAL */
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_USER */
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_NICE */
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_SYS */
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_IDLE */
xcpu_flags; /* GLIBTOP_CPU_XCPU_FLAGS */
u_int64_t flags,
total, /* GLIBTOP_CPU_TOTAL */
user, /* GLIBTOP_CPU_USER */
nice, /* GLIBTOP_CPU_NICE */
sys, /* GLIBTOP_CPU_SYS */
idle, /* GLIBTOP_CPU_IDLE */
frequency, /* GLIBTOP_CPU_FREQUENCY */
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
xcpu_idle [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IDLE */
};
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
@@ -74,14 +73,14 @@ struct _glibtop_cpu
#define glibtop_get_cpu_r glibtop_get_cpu_s
#endif
int glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
#if GLIBTOP_SUID_CPU
int glibtop_init_cpu_p (glibtop *server);
int glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
void glibtop_init_cpu_p (glibtop *server);
void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
#else
int glibtop_init_cpu_s (glibtop *server);
int glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
void glibtop_init_cpu_s (glibtop *server);
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -48,41 +46,41 @@ void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args);
static void G_GNUC_UNUSED
glibtop_error_r (glibtop *server, char *format, ...)
{
va_list args;
va_list args;
va_start (args, format);
glibtop_error_vr (server, format, args);
va_end (args);
va_start (args, format);
glibtop_error_vr (server, format, args);
va_end (args);
}
static void G_GNUC_UNUSED
glibtop_warn_r (glibtop *server, char *format, ...)
{
va_list args;
va_list args;
va_start (args, format);
glibtop_warn_vr (server, format, args);
va_end (args);
va_start (args, format);
glibtop_warn_vr (server, format, args);
va_end (args);
}
static void G_GNUC_UNUSED
glibtop_error_io_r (glibtop *server, char *format, ...)
{
va_list args;
va_list args;
va_start (args, format);
glibtop_error_io_vr (server, format, errno, args);
va_end (args);
va_start (args, format);
glibtop_error_io_vr (server, format, errno, args);
va_end (args);
}
static void G_GNUC_UNUSED
glibtop_warn_io_r (glibtop *server, char *format, ...)
{
va_list args;
va_list args;
va_start (args, format);
glibtop_warn_io_vr (server, format, errno, args);
va_end (args);
va_start (args, format);
glibtop_warn_io_vr (server, format, errno, args);
va_end (args);
}
#ifdef __GNUC__
@@ -98,37 +96,37 @@ glibtop_warn_io_r (glibtop *server, char *format, ...)
static void
glibtop_error (char *format, ...)
{
va_list args;
va_start (args, format);
glibtop_error_vr (glibtop_global_server, format, args);
va_end (args);
va_list args;
va_start (args, format);
glibtop_error_vr (glibtop_global_server, format, args);
va_end (args);
}
static void
glibtop_warn (char *format, ...)
{
va_list args;
va_start (args, format);
glibtop_warn_vr (glibtop_global_server, format, args);
va_end (args);
va_list args;
va_start (args, format);
glibtop_warn_vr (glibtop_global_server, format, args);
va_end (args);
}
static void
glibtop_error_io (char *format, ...)
{
va_list args;
va_start (args, format);
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
va_end (args);
va_list args;
va_start (args, format);
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
va_end (args);
}
static void
glibtop_warn_io (char *format, ...)
{
va_list args;
va_start (args, format);
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
va_end (args);
va_list args;
va_start (args, format);
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
va_end (args);
}
#endif /* no __GNUC__ */

View File

@@ -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_ERRORS_H__
#define __GLIBTOP_ERRORS_H__
#include <glibtop.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_ERROR_NO_ERROR 0
#define GLIBTOP_ERROR_UNKNOWN 1
#define GLIBTOP_ERROR_INVALID_ARGUMENT 2
#define GLIBTOP_ERROR_NO_SUCH_PARAMETER 3
#define GLIBTOP_ERROR_READONLY_VALUE 4
#define GLIBTOP_ERROR_SIZE_MISMATCH 5
#define GLIBTOP_ERROR_SERVER_COMM_FAILURE 6
#define GLIBTOP_ERROR_NO_SUCH_PROCESS 7
#define GLIBTOP_ERROR_NO_KERNEL_SUPPORT 8
#define GLIBTOP_ERROR_INCOMPATIBLE_KERNEL 9
#define GLIBTOP_ERROR_NO_SUCH_BACKEND 10
#define GLIBTOP_ERROR_NOT_IMPLEMENTED 11
#define GLIBTOP_ERROR_NO_BACKEND_OPENED 12
#define GLIBTOP_ERROR_DEMARSHAL_ERROR 13
#define GLIBTOP_MAX_ERROR 14
char *
glibtop_get_error_string_l (glibtop *server, unsigned error_number);
unsigned
glibtop_get_errno_l (glibtop *server);
unsigned
glibtop_clear_errno_l (glibtop *server);
END_LIBGTOP_DECLS
#endif

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -43,20 +41,20 @@ typedef struct _glibtop_fsusage glibtop_fsusage;
struct _glibtop_fsusage
{
u_int64_t flags,
blocks, /* Total blocks. */
bfree, /* Free blocks available to superuser. */
bavail, /* Free blocks available to non-superuser. */
files, /* Total file nodes. */
ffree; /* Free file nodes. */
u_int64_t flags,
blocks, /* Total blocks. */
bfree, /* Free blocks available to superuser. */
bavail, /* Free blocks available to non-superuser. */
files, /* Total file nodes. */
ffree; /* Free file nodes. */
};
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
int glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
int glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
void glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
void glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
#ifdef GLIBTOP_NAMES

View File

@@ -1,59 +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_GLIB_ARRAYS_H__
#define __GLIBTOP_GLIB_ARRAYS_H__
#include <glibtop.h>
#include <glibtop/array.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glib.h>
BEGIN_LIBGTOP_DECLS
#define glibtop_get_proc_args_as_array(pid) glibtop_get_proc_args_as_array_l(glibtop_global_server, pid)
GPtrArray *
glibtop_get_proc_args_as_array_l (glibtop *server, pid_t pid);
#define glibtop_get_proclist_as_array(which,arg) glibtop_get_proclist_as_array_l(glibtop_global_server, which, arg)
GArray *
glibtop_get_proclist_as_array_l (glibtop *server, int64_t which, int64_t arg);
#define glibtop_get_proc_map_as_array(pid) glibtop_get_proc_map_as_array_l(glibtop_global_server, pid)
GPtrArray *
glibtop_get_proc_map_as_array_l (glibtop *server, pid_t pid);
#define glibtop_get_mountlist_as_array(all_fs) glibtop_get_mountlist_as_array_l(glibtop_global_server, all_fs)
GPtrArray *
glibtop_get_mountlist_as_array_l (glibtop *server, int all_fs);
END_LIBGTOP_DECLS
#endif

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -111,10 +109,10 @@
#endif
#include <string.h>
#include <sys/types.h>
#ifdef _IN_LIBGTOP
#include <sys/types.h>
#include <sys/param.h>
#include <sys/socket.h>
#include <sys/stat.h>

161
include/glibtop/gnuserv.h Normal file
View File

@@ -0,0 +1,161 @@
/* -*-C-*-
Header file for the GNU Emacs server and client C code.
This file is part of GNU Emacs.
Copying is permitted under those conditions described by the GNU
General Public License.
Copyright (C) 1989 Free Software Foundation, Inc.
Author: Andy Norman (ange@hplb.hpl.hp.com), based on
'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU
Emacs distribution.
Please mail bugs and suggestions to the author at the above address.
*/
/* HISTORY
* 11-Nov-1990 bristor@simba
* Added EOT stuff.
*/
/*
* This file incorporates new features added by Bob Weiner <weiner@mot.com>,
* Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
* Please see the note at the end of the README file for details.
*
* (If gnuserv came bundled with your emacs, the README file is probably
* ../etc/gnuserv.README relative to the directory containing this file)
*/
#if 0
static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !";
#endif
#define NO_SHORTNAMES
#define PATCHLEVEL 2
#define NO_SHORTNAMES
/* gnuserv should not be compiled using SOCKS */
#define DO_NOT_SOCKSIFY
#include <glibtop.h>
#include <glibtop/error.h>
#undef read
#undef write
#undef open
#undef close
#undef signal
/* Define the communication method between server and clients:
* You can have either or both kinds of sockets, but you can't mix
* sockets with sysv ipc
*/
#define INTERNET_DOMAIN_SOCKETS
#define UNIX_DOMAIN_SOCKETS
/*
* Define additional authentication protocols to be used. These methods will
* be tried before falling back to the default gnuserv protocol (based on
* the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1
* is also supported.
*
* Comment out the next line(s) if you don't want to enable the
* appropriate authentication protocol.
*/
#if defined (HAVE_XAUTH)
#define AUTH_MAGIC_COOKIE
#endif /* HAVE_XAUTH */
/*
* stuff related to supporting MIT-MAGIC-COOKIE-1
*/
#if 0
#define MCOOKIE_SCREEN "42980" /* screen # to use as the gnuserv cookie */
#endif
#define MCOOKIE_NAME "MAGIC-1" /* authentication protocol name */
#define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1" /* as needed by X */
#define DEFAUTH_NAME "GNU-SECURE" /* name of default auth protocol */
#define AUTH_TIMEOUT 15 /* # seconds to wait for auth data */
#define AUTH_NAMESZ 15 /* max allows auth protocol name size */
/*
* Pick a default communication scheme, if none was specified.
*/
#if !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS)
/* BSD systems use Unix Domain sockets by default */
#ifdef BSD
#define UNIX_DOMAIN_SOCKETS
#endif
#endif /* No communication method pre-defined */
/*
* If you are using SYSV_IPC, you might want to make the buffer size bigger
* since it limits the size of requests and responses. Don't make it bigger
* than your system's max message size though (usually a couple of k) or else
* msgsend will start failing. For sockets, using the system BUFSIZ is usually
* what you want.
*/
#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
#include <sys/socket.h>
#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
#ifdef INTERNET_DOMAIN_SOCKETS
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define TABLE_SIZE 101 /* The number of entries in the hash table */
#define HASH(host) host /* Rather simplistic hash function */
#define DEFAULT_PORT 21490 /* default port number to use is
* DEFAULT_PORT + uid */
#endif /* INTERNET_DOMAIN_SOCKETS */
#ifdef UNIX_DOMAIN_SOCKETS
#include <sys/un.h>
#define HIDE_UNIX_SOCKET /* put the unix socket in a protected dir */
#endif /* UNIX_DOMAIN_SOCKETS */
#define HOSTNAMSZ 255 /* max size of a hostname */
#define REPLYSIZ 300 /* max size of reply from server to client */
#undef FALSE
#define FALSE 0
#undef TRUE
#define TRUE 1
/* The casts shut Sun's compiler up and are safe in the context these
are actually used. */
#define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y))
#define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y))
#ifndef _NFILE /* rough guess at maximum number of open files */
#define _NFILE 20
#endif
#define EOT_STR "\004"
#define EOT_CHR '\004'
/* connection types */
#define CONN_UNIX 0
#define CONN_INTERNET 1
#define CONN_IPC 2
/* function declarations */
int glibtop_make_connection (const char *hostarg, int portarg, int *s);
#ifdef INTERNET_DOMAIN_SOCKETS
long glibtop_internet_addr (const char *host);
#endif

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
@@ -41,12 +39,12 @@ typedef struct _glibtop_inodedb_key glibtop_inodedb_key;
struct _glibtop_inodedb_key
{
u_int64_t device, inode;
u_int64_t device, inode;
};
struct _glibtop_inodedb
{
GDBM_FILE system_dbf, user_dbf;
GDBM_FILE system_dbf, user_dbf;
};
#define glibtop_inodedb_open(p1,p2) glibtop_inodedb_open_s(glibtop_global_server, p1, p2)

View File

@@ -1,173 +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_INTERFACES_H__
#define __GLIBTOP_INTERFACES_H__
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/compat_10.h>
#include <glibtop/array.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_INTERFACE_IF_FLAGS 0
#define GLIBTOP_INTERFACE_TRANSPORT 1
#define GLIBTOP_INTERFACE_TYPE 2
#define GLIBTOP_INTERFACE_NUMBER 3
#define GLIBTOP_INTERFACE_INSTANCE 4
#define GLIBTOP_INTERFACE_NUM_LOGICAL 5
#define GLIBTOP_INTERFACE_NAME 6
#define GLIBTOP_MAX_INTERFACE 7
typedef struct _glibtop_interface glibtop_interface;
typedef enum _glibtop_interface_type glibtop_interface_type;
typedef enum _glibtop_transport glibtop_transport;
typedef enum _glibtop_protocol glibtop_protocol;
typedef enum _glibtop_strategy glibtop_strategy;
typedef enum _glibtop_interface_flags glibtop_interface_flags;
enum _glibtop_protocol {
GLIBTOP_PROTOCOL_OTHERS = 0,
GLIBTOP_PROTOCOL_ICMP = 1 << 0,
GLIBTOP_PROTOCOL_TCP = 1 << 1,
GLIBTOP_PROTOCOL_UDP = 1 << 2,
GLIBTOP_PROTOCOL_IGMP = 1 << 3,
GLIBTOP_PROTOCOL_RAW = 1 << 4,
GLIBTOP_PROTOCOL_ICMP6 = 1 << 5,
GLIBTOP_PROTOCOL_TCP6 = 1 << 6,
GLIBTOP_PROTOCOL_UDP6 = 1 << 7,
GLIBTOP_PROTOCOL_IGMP6 = 1 << 8,
GLIBTOP_PROTOCOL_RAW6 = 1 << 9
};
enum _glibtop_transport {
GLIBTOP_TRANSPORT_DEFAULT = 0,
GLIBTOP_TRANSPORT_IPV4 = 1 << 0,
GLIBTOP_TRANSPORT_IPV6 = 1 << 1,
GLIBTOP_TRANSPORT_IPX = 1 << 2,
GLIBTOP_TRANSPORT_X25 = 1 << 3,
GLIBTOP_TRANSPORT_DECNET = 1 << 4,
GLIBTOP_TRANSPORT_APPLETALK = 1 << 5,
GLIBTOP_TRANSPORT_NETBEUI = 1 << 6,
};
#define GLIBTOP_TRANSPORT_ALL GLIBTOP_UNLIMITED
#define GLIBTOP_PROTOCOL_ALL GLIBTOP_UNLIMITED
enum _glibtop_interface_type {
GLIBTOP_INTERFACE_ALL = 0,
GLIBTOP_INTERFACE_OTHER,
/* Network interfaces */
GLIBTOP_INTERFACE_ETHERNET = 101,
GLIBTOP_INTERFACE_FDDI,
GLIBTOP_INTERFACE_FRAME_RELAY,
GLIBTOP_INTERFACE_TOKEN_RING,
GLIBTOP_INTERFACE_ARCNET,
GLIBTOP_INTERFACE_ATM,
/* Dummy interfaces */
GLIBTOP_INTERFACE_LOOPBACK = 501,
GLIBTOP_INTERFACE_DUMMY,
/* Dialup interfaces */
GLIBTOP_INTERFACE_PARA = 801,
GLIBTOP_INTERFACE_SLIP,
GLIBTOP_INTERFACE_PPP,
GLIBTOP_INTERFACE_ISDN
};
enum _glibtop_strategy {
GLIBTOP_INTERFACES_ALL = 0,
GLIBTOP_INTERFACES_BEST_MATCHING,
GLIBTOP_INTERFACES_ONLY_THIS_ONE,
GLIBTOP_INTERFACES_INCLUDE_LOGICAL = 1 << 7,
};
enum _glibtop_interface_flags {
GLIBTOP_IF_FLAGS_UP = 1,
GLIBTOP_IF_FLAGS_BROADCAST,
GLIBTOP_IF_FLAGS_DEBUG,
GLIBTOP_IF_FLAGS_LOOPBACK,
GLIBTOP_IF_FLAGS_POINTOPOINT,
GLIBTOP_IF_FLAGS_RUNNING,
GLIBTOP_IF_FLAGS_NOARP,
GLIBTOP_IF_FLAGS_PROMISC,
GLIBTOP_IF_FLAGS_ALLMULTI,
GLIBTOP_IF_FLAGS_OACTIVE,
GLIBTOP_IF_FLAGS_SIMPLEX,
GLIBTOP_IF_FLAGS_LINK0,
GLIBTOP_IF_FLAGS_LINK1,
GLIBTOP_IF_FLAGS_LINK2,
GLIBTOP_IF_FLAGS_ALTPHYS,
GLIBTOP_IF_FLAGS_MULTICAST
};
struct _glibtop_interface
{
u_int64_t flags,
if_flags, /* GLIBTOP_INTERFACE_IF_FLAGS */
transport, /* GLIBTOP_INTERFACE_TRANSPORT */
type, /* GLIBTOP_INTERFACE_TYPE */
number, /* GLIBTOP_INTERFACE_NUMBER */
instance, /* GLIBTOP_INTERFACE_INSTANCE */
num_logical; /* GLIBTOP_INTERFACE_NUM_LOGICAL */
char name [GLIBTOP_INTERFACE_LEN];
};
#define glibtop_get_interface_names(array,interface,number,instance,strategy) glibtop_get_interface_names_l (glibtop_global_server, array, interface, number, instance, strategy)
#if GLIBTOP_SUID_INTERFACE_NAMES
#define glibtop_get_interface_names_r glibtop_get_interface_names_p
#else
#define glibtop_get_interface_names_r glibtop_get_interface_names_s
#endif
glibtop_interface *glibtop_get_interface_names_l (glibtop *server, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy);
#if GLIBTOP_SUID_INTERFACE_NAMES
int glibtop_init_interface_names_p (glibtop *server);
glibtop_interface *glibtop_get_interface_names_p (glibtop *server, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy);
#else
int glibtop_init_interface_names_s (glibtop *server);
glibtop_interface *glibtop_get_interface_names_s (glibtop *server, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy);
#endif
#ifdef GLIBTOP_NAMES
/* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_interface_names [];
extern const unsigned glibtop_types_interface_names [];
extern const char *glibtop_labels_interface_names [];
extern const char *glibtop_descriptions_interface_names [];
#endif
END_LIBGTOP_DECLS
#endif

View File

@@ -1,53 +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_LIMITS_H__
#define __GLIBTOP_LIMITS_H__
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
/* Nobody should really be using more than 64 processors. */
#define GLIBTOP_NCPU 64
/* Maximum number of process groups in glibtop_proc_uid. */
#define GLIBTOP_MAX_GROUPS 32
/* Maximum length of a mountpoint/device name in glibtop_mountlist. */
#define GLIBTOP_MOUNTENTRY_LEN 79
/* Maximum length of a network interface name. */
#define GLIBTOP_INTERFACE_LEN 32
/* This is ((u_int64_t)-1) */
#define GLIBTOP_UNLIMITED (~(u_int64_t)0)
/* Maximum length of a backend name. */
#define GLIBTOP_BACKEND_NAME_LEN 40
END_LIBGTOP_DECLS
#endif

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -42,11 +40,11 @@ typedef struct _glibtop_loadavg glibtop_loadavg;
struct _glibtop_loadavg
{
u_int64_t flags;
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
u_int64_t nr_running, /* GLIBTOP_LOADAVG_NR_RUNNING */
nr_tasks, /* GLIBTOP_LOADAVG_NR_TASKS */
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
u_int64_t flags;
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
u_int64_t nr_running, /* GLIBTOP_LOADAVG_NR_RUNNING */
nr_tasks, /* GLIBTOP_LOADAVG_NR_TASKS */
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
};
#define glibtop_get_loadavg(loadavg) glibtop_get_loadavg_l(glibtop_global_server, loadavg)
@@ -57,14 +55,14 @@ struct _glibtop_loadavg
#define glibtop_get_loadavg_r glibtop_get_loadavg_s
#endif
int glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
#if GLIBTOP_SUID_LOADAVG
int glibtop_init_loadavg_p (glibtop *server);
int glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
void glibtop_init_loadavg_p (glibtop *server);
void glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
#else
int glibtop_init_loadavg_s (glibtop *server);
int glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
void glibtop_init_loadavg_s (glibtop *server);
void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -46,15 +44,15 @@ typedef struct _glibtop_mem glibtop_mem;
struct _glibtop_mem
{
u_int64_t flags,
total, /* GLIBTOP_MEM_TOTAL */
used, /* GLIBTOP_MEM_USED */
free, /* GLIBTOP_MEM_FREE */
shared, /* GLIBTOP_MEM_SHARED */
buffer, /* GLIBTOP_MEM_BUFFER */
cached, /* GLIBTOP_MEM_CACHED */
user, /* GLIBTOP_MEM_USER */
locked; /* GLIBTOP_MEM_LOCKED */
u_int64_t flags,
total, /* GLIBTOP_MEM_TOTAL */
used, /* GLIBTOP_MEM_USED */
free, /* GLIBTOP_MEM_FREE */
shared, /* GLIBTOP_MEM_SHARED */
buffer, /* GLIBTOP_MEM_BUFFER */
cached, /* GLIBTOP_MEM_CACHED */
user, /* GLIBTOP_MEM_USER */
locked; /* GLIBTOP_MEM_LOCKED */
};
#define glibtop_get_mem(mem) glibtop_get_mem_l(glibtop_global_server, mem)
@@ -65,14 +63,14 @@ struct _glibtop_mem
#define glibtop_get_mem_r glibtop_get_mem_s
#endif
int glibtop_get_mem_l (glibtop *server, glibtop_mem *buf);
void glibtop_get_mem_l (glibtop *server, glibtop_mem *buf);
#if GLIBTOP_SUID_MEM
int glibtop_init_mem_p (glibtop *server);
int glibtop_get_mem_p (glibtop *server, glibtop_mem *buf);
void glibtop_init_mem_p (glibtop *server);
void glibtop_get_mem_p (glibtop *server, glibtop_mem *buf);
#else
int glibtop_init_mem_s (glibtop *server);
int glibtop_get_mem_s (glibtop *server, glibtop_mem *buf);
void glibtop_init_mem_s (glibtop *server);
void glibtop_get_mem_s (glibtop *server, glibtop_mem *buf);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -29,30 +27,43 @@
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/compat_10.h>
#include <glibtop/array.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_MOUNTLIST_NUMBER 0
#define GLIBTOP_MOUNTLIST_TOTAL 1
#define GLIBTOP_MOUNTLIST_SIZE 2
#define GLIBTOP_MAX_MOUNTLIST 3
typedef struct _glibtop_mountentry glibtop_mountentry;
typedef struct _glibtop_mountlist glibtop_mountlist;
struct _glibtop_mountentry
{
u_int64_t dev;
char devname [GLIBTOP_MOUNTENTRY_LEN+1];
char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
char type [GLIBTOP_MOUNTENTRY_LEN+1];
u_int64_t dev;
char devname [GLIBTOP_MOUNTENTRY_LEN+1];
char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
char type [GLIBTOP_MOUNTENTRY_LEN+1];
};
#define glibtop_get_mountlist(array,all_fs) glibtop_get_mountlist_l(glibtop_global_server, array, all_fs)
struct _glibtop_mountlist
{
u_int64_t flags,
number, /* GLIBTOP_MOUNTLIST_NUMBER */
total, /* GLIBTOP_MOUNTLIST_TOTAL */
size; /* GLIBTOP_MOUNTLIST_SIZE */
};
#define glibtop_get_mountlist(mountlist,all_fs) glibtop_get_mountlist_l(glibtop_global_server, mountlist, all_fs)
#define glibtop_get_mountlist_r glibtop_get_mountlist_s
glibtop_mountentry *
glibtop_get_mountlist_l (glibtop *server, glibtop_array *array, int all_fs);
glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf, int all_fs);
glibtop_mountentry *
glibtop_get_mountlist_s (glibtop *server, glibtop_array *array, int all_fs);
glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs);
#ifdef GLIBTOP_NAMES

View File

@@ -1,5 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -31,28 +29,28 @@
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_MSG_LIMITS_MSGPOOL 0
#define GLIBTOP_MSG_LIMITS_MSGMAP 1
#define GLIBTOP_MSG_LIMITS_MSGMAX 2
#define GLIBTOP_MSG_LIMITS_MSGMNB 3
#define GLIBTOP_MSG_LIMITS_MSGMNI 4
#define GLIBTOP_MSG_LIMITS_MSGSSZ 5
#define GLIBTOP_MSG_LIMITS_MSGTQL 6
#define GLIBTOP_IPC_MSGPOOL 0
#define GLIBTOP_IPC_MSGMAP 1
#define GLIBTOP_IPC_MSGMAX 2
#define GLIBTOP_IPC_MSGMNB 3
#define GLIBTOP_IPC_MSGMNI 4
#define GLIBTOP_IPC_MSGSSZ 5
#define GLIBTOP_IPC_MSGTQL 6
#define GLIBTOP_MAX_MSG_LIMITS 7
#define GLIBTOP_MAX_MSG_LIMITS 7
typedef struct _glibtop_msg_limits glibtop_msg_limits;
struct _glibtop_msg_limits
{
u_int64_t flags,
msgpool, /* GLIBTOP_MSG_LIMITS_MSGPOOL */
msgmap, /* GLIBTOP_MSG_LIMITS_MSGMAP */
msgmax, /* GLIBTOP_MSG_LIMITS_MSGMAX */
msgmnb, /* GLIBTOP_MSG_LIMITS_MSGMNB */
msgmni, /* GLIBTOP_MSG_LIMITS_MSGMNI */
msgssz, /* GLIBTOP_MSG_LIMITS_MSGSSZ */
msgtql; /* GLIBTOP_MSG_LIMITS_MSGTQL */
u_int64_t flags,
msgpool, /* GLIBTOP_IPC_MSGPOOL */
msgmap, /* GLIBTOP_IPC_MSGMAP */
msgmax, /* GLIBTOP_IPC_MSGMAX */
msgmnb, /* GLIBTOP_IPC_MSGMNB */
msgmni, /* GLIBTOP_IPC_MSGMNI */
msgssz, /* GLIBTOP_IPC_MSGSSZ */
msgtql; /* GLIBTOP_IPC_MSGTQL */
};
#define glibtop_get_msg_limits(msg) glibtop_get_msg_limits_l(glibtop_global_server, msg)
@@ -63,14 +61,14 @@ struct _glibtop_msg_limits
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_s
#endif
int glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf);
void glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf);
#if GLIBTOP_SUID_MSG_LIMITS
int glibtop_init_msg_limits_p (glibtop *server);
int glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf);
void glibtop_init_msg_limits_p (glibtop *server);
void glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf);
#else
int glibtop_init_msg_limits_s (glibtop *server);
int glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf);
void glibtop_init_msg_limits_s (glibtop *server);
void glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -1,87 +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_NETINFO_H__
#define __GLIBTOP_NETINFO_H__
#include <glibtop.h>
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_NETINFO_IF_FLAGS 0
#define GLIBTOP_NETINFO_TRANSPORT 1
#define GLIBTOP_NETINFO_MTU 2
#define GLIBTOP_NETINFO_SUBNET 3
#define GLIBTOP_NETINFO_ADDRESS 4
#define GLIBTOP_MAX_NETINFO 5
typedef struct _glibtop_netinfo glibtop_netinfo;
#include <glibtop/interfaces.h>
struct _glibtop_netinfo
{
u_int64_t flags,
if_flags, /* GLIBTOP_NETINFO_IF_FLAGS */
transport, /* GLIBTOP_NETINFO_TRANSPORT */
mtu, /* GLIBTOP_NETINFO_MTU */
subnet, /* GLIBTOP_NETINFO_SUBNET */
address; /* GLIBTOP_NETINFO_ADDRESS */
};
#define glibtop_get_netinfo(netinfo,interface,transport) glibtop_get_netinfo_l(glibtop_global_server, netinfo, interface, transport)
#if GLIBTOP_SUID_NETINFO
#define glibtop_get_netinfo_r glibtop_get_netinfo_p
#else
#define glibtop_get_netinfo_r glibtop_get_netinfo_s
#endif
int glibtop_get_netinfo_l (glibtop *server, glibtop_netinfo *buf, const char *interface, unsigned transport);
#if GLIBTOP_SUID_NETINFO
int glibtop_init_netinfo_p (glibtop *server);
int glibtop_get_netinfo_p (glibtop *server, glibtop_netinfo *buf, const char *interface, unsigned transport);
#else
int glibtop_init_netinfo_s (glibtop *server);
int glibtop_get_netinfo_s (glibtop *server, glibtop_netinfo *buf, const char *interface, unsigned transport);
#endif
#ifdef GLIBTOP_NAMES
/* You need to link with -lgtop_names to get this stuff here. */
extern const char *glibtop_names_netinfo [];
extern const unsigned glibtop_types_netinfo [];
extern const char *glibtop_labels_netinfo [];
extern const char *glibtop_descriptions_netinfo [];
#endif
END_LIBGTOP_DECLS
#endif

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