Compare commits
	
		
			11 Commits
		
	
	
		
			LIBGTOP_2_
			...
			LIBGTOP_2_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7bd1293665 | ||
| 
						 | 
					5edf277435 | ||
| 
						 | 
					3f307e8e30 | ||
| 
						 | 
					b375457834 | ||
| 
						 | 
					79e8b914ed | ||
| 
						 | 
					faacbd7f8b | ||
| 
						 | 
					dde57bee91 | ||
| 
						 | 
					08798f05f5 | ||
| 
						 | 
					486e6b0260 | ||
| 
						 | 
					1c96e35cc0 | ||
| 
						 | 
					83a3d5f76d | 
							
								
								
									
										35
									
								
								.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
aclocal.m4
 | 
			
		||||
config.cache
 | 
			
		||||
config.h
 | 
			
		||||
config.h.in
 | 
			
		||||
config.log
 | 
			
		||||
config.sub
 | 
			
		||||
config.guess
 | 
			
		||||
config.status
 | 
			
		||||
configure
 | 
			
		||||
gtopConf.sh
 | 
			
		||||
i386-bsdi
 | 
			
		||||
i686-pc-linux-gnu
 | 
			
		||||
intl
 | 
			
		||||
libgtop-mirror.sh.swp
 | 
			
		||||
libgtopConf.sh
 | 
			
		||||
libtool
 | 
			
		||||
ltconfig
 | 
			
		||||
ltmain.sh
 | 
			
		||||
macros
 | 
			
		||||
stamp-h
 | 
			
		||||
stamp-h.in
 | 
			
		||||
sun4
 | 
			
		||||
sun4sol2
 | 
			
		||||
support
 | 
			
		||||
i386-freebsd
 | 
			
		||||
alpha-dec-osf3.0
 | 
			
		||||
i686-pc-linux-gnu-linux
 | 
			
		||||
libgtop-config
 | 
			
		||||
ABOUT-NLS
 | 
			
		||||
libgtop.spec
 | 
			
		||||
libgtop*.tar.gz
 | 
			
		||||
*-debstamp
 | 
			
		||||
libgtop*.pc
 | 
			
		||||
							
								
								
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							@@ -1,3 +1,2 @@
 | 
			
		||||
Martin Baulig (martin@home-of-linux.org)
 | 
			
		||||
Drazen Kacar (dave@srce.hr)
 | 
			
		||||
Benoît Dejean (tazforever@dlfp.org)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								LIBGTOP-VERSION
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								LIBGTOP-VERSION
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
# Making releases:
 | 
			
		||||
#   LIBGTOP_MICRO_VERSION += 1;
 | 
			
		||||
#   LIBGTOP_INTERFACE_AGE += 1;
 | 
			
		||||
#   LIBGTOP_BINARY_AGE += 1;
 | 
			
		||||
# if any functions have been added, set LIBGTOP_INTERFACE_AGE to 0.
 | 
			
		||||
# if backwards compatibility has been broken,
 | 
			
		||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
 | 
			
		||||
#
 | 
			
		||||
LIBGTOP_MAJOR_VERSION=1
 | 
			
		||||
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=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$LIBGTOP_VERSION_SUFFIX
 | 
			
		||||
PACKAGE=libgtop
 | 
			
		||||
@@ -1 +1,2 @@
 | 
			
		||||
Benoît Dejean (benoit@placenet.org)
 | 
			
		||||
Email: martin@home-of-linux.org
 | 
			
		||||
Email: dave@srce.hr
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										92
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										92
									
								
								Makefile.am
									
									
									
									
									
								
							@@ -1,35 +1,93 @@
 | 
			
		||||
## Process this file with automake to produce Makefile.in.
 | 
			
		||||
 | 
			
		||||
if EXAMPLES
 | 
			
		||||
EXAMPLES_DIR = examples
 | 
			
		||||
examples_SUBDIRS = examples
 | 
			
		||||
else
 | 
			
		||||
EXAMPLES_DIR = 
 | 
			
		||||
examples_SUBDIRS =
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
SUBDIRS = po misc include sysdeps lib src $(EXAMPLES_DIR) doc
 | 
			
		||||
if BUILD_GNOME_SUPPORT
 | 
			
		||||
support = support
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
libgtopinclude_HEADERS = glibtop.h libgtopconfig.h
 | 
			
		||||
SUBDIRS = . po $(support) misc include sysdeps lib src \
 | 
			
		||||
	  $(examples_SUBDIRS) doc
 | 
			
		||||
 | 
			
		||||
libgtopinclude_HEADERS = glibtop.h
 | 
			
		||||
libgtopincludedir = $(includedir)/libgtop-2.0
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
 | 
			
		||||
	 features.def libgtopconfig.h.in \
 | 
			
		||||
	libgtop-sysdeps.m4 README \
 | 
			
		||||
	 libgtop-2.0.pc.in acinclude.m4 \
 | 
			
		||||
	intltool-extract.in \
 | 
			
		||||
	intltool-merge.in \
 | 
			
		||||
	intltool-update.in
 | 
			
		||||
 | 
			
		||||
DISTCLEANFILES = \
 | 
			
		||||
	intltool-extract \
 | 
			
		||||
	intltool-merge \
 | 
			
		||||
	intltool-update
 | 
			
		||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
dist-hook:
 | 
			
		||||
	cp libgtop.spec $(distdir)
 | 
			
		||||
 | 
			
		||||
release:
 | 
			
		||||
	$(MAKE) dist distdir=$(PACKAGE)-$(VERSION)
 | 
			
		||||
 | 
			
		||||
## 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
 | 
			
		||||
		  
 | 
			
		||||
pkgconfigdir = $(libdir)/pkgconfig
 | 
			
		||||
pkgconfig_DATA = libgtop-2.0.pc
 | 
			
		||||
 | 
			
		||||
CLEANFILES=libgtopConf.sh
 | 
			
		||||
 | 
			
		||||
## bin_SCRIPTS = $(top_builddir)/libgtop-config
 | 
			
		||||
 | 
			
		||||
## to automatically rebuild aclocal.m4 if any of the macros in
 | 
			
		||||
## `macros/' change
 | 
			
		||||
## @MAINT@ include macros/macros.dep
 | 
			
		||||
## @MAINT@macros/macros.dep: macros/Makefile.am
 | 
			
		||||
## @MAINT@	cd macros && $(MAKE) macros.dep
 | 
			
		||||
 | 
			
		||||
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION
 | 
			
		||||
 | 
			
		||||
## We create libgtopConf.sh here and not from configure because we want
 | 
			
		||||
## to get the paths expanded correctly.  Macros like srcdir are given
 | 
			
		||||
## the value NONE in configure if the user doesn't specify them (this
 | 
			
		||||
## is an autoconf feature, not a bug).
 | 
			
		||||
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)/libgtop-2.0#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_GUILE_LIBS\@#$(LIBGTOP_GUILE_LIBS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_GUILE_INCS\@#$(LIBGTOP_GUILE_INCS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_GUILE_NAMES_LIBS\@#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_GUILE_NAMES_INCS\@#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_MINOR_VERSION\@#$(LIBGTOP_MINOR_VERSION)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_MICRO_VERSION\@#$(LIBGTOP_MICRO_VERSION)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_VERSION\@#$(LIBGTOP_VERSION)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_VERSION_CODE\@#$(LIBGTOP_VERSION_CODE)#g' \
 | 
			
		||||
	  -e 's#\@LIBGTOP_SERVER_VERSION\@#$(LIBGTOP_SERVER_VERSION)#g' \
 | 
			
		||||
	  -e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \
 | 
			
		||||
	  -e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \
 | 
			
		||||
	  -e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \
 | 
			
		||||
	  -e 's#\@libgtop_guile_found\@#$(libgtop_guile_found)#g' \
 | 
			
		||||
	  -e 's#\@libgtop_want_examples\@#$(libgtop_want_examples)#g' \
 | 
			
		||||
	      < $(srcdir)/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-features.def: features.def
 | 
			
		||||
	@LN_S@ $< $@
 | 
			
		||||
 | 
			
		||||
DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										252
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										252
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,255 +1,3 @@
 | 
			
		||||
18 June 2007: Overview of changes in 2.19.4
 | 
			
		||||
===========================================
 | 
			
		||||
* solaris:
 | 
			
		||||
  - fixed build. Damien Carbery.
 | 
			
		||||
 | 
			
		||||
3 June 2007: Overview of changes in 2.19.3
 | 
			
		||||
==========================================
 | 
			
		||||
* Small API change. get_proclist returns pid_t instead of unsigned
 | 
			
		||||
  for consistency.
 | 
			
		||||
* linux:
 | 
			
		||||
  - fixed an typo bug in open_files.
 | 
			
		||||
  - got rid of useless glibtop_init_s calls.
 | 
			
		||||
* Enable example build by defaut.
 | 
			
		||||
* Dropped G_GNUC_INTERNAL attributes no longer needed.
 | 
			
		||||
  This will please people trying to implement G_GNUC macro with a non
 | 
			
		||||
  GNU Compiler.
 | 
			
		||||
 | 
			
		||||
13 May 2007: Overview of changes in 2.19.2
 | 
			
		||||
==========================================
 | 
			
		||||
* This is the first release of the 2.19.x series.
 | 
			
		||||
* Got rid of inodedb (you don't even know what it is ;)
 | 
			
		||||
* New unstable API glibtop_get_proc_wd to get working directories of
 | 
			
		||||
  a process.
 | 
			
		||||
* Fixed OpenBSD build. Jasper Lievisse Adriaanse.
 | 
			
		||||
 | 
			
		||||
25 February 2007: Overview of changes in 2.14.8
 | 
			
		||||
===============================================
 | 
			
		||||
* bsd implementations have been splitted by Joe Marcus Clarke
 | 
			
		||||
  and Alexander Nedotsukov. (k)freeBSD now has a separate implementation.
 | 
			
		||||
 | 
			
		||||
February 10, 2007: Overview of changes in 2.14.7
 | 
			
		||||
================================================
 | 
			
		||||
* bsd:
 | 
			
		||||
  - massive kfreeBSD and FreeBSD updates by Roy Marples and Petr Salinger.
 | 
			
		||||
* mountlist can now ignore objfs and ctfs filesystems.
 | 
			
		||||
* fsusage won't return bavail > bfree anymore.
 | 
			
		||||
 | 
			
		||||
January 14, 2007: Overview of changes in 2.14.6
 | 
			
		||||
===============================================
 | 
			
		||||
* linux:
 | 
			
		||||
  - fixed stack overflow in glibtop_get_proc_map
 | 
			
		||||
  - fixed handling of long filenames in glibtop_get_proc_map and glibtop_get_proc_open_files.
 | 
			
		||||
  - micro-optimization
 | 
			
		||||
 | 
			
		||||
December 3, 2006: Overview of changes in 2.14.5
 | 
			
		||||
===============================================
 | 
			
		||||
* Added kfreebsd support (Petr Salinger <Petr.Salinger@seznam.cz>).
 | 
			
		||||
* Added solaris glibtop_get_proc_open_files (Henry Zhang <hua.zhang@sun.com>).
 | 
			
		||||
* Migrated to gtk-doc (Germán Poó-Caamaño <gpoo@ubiobio.cl>).
 | 
			
		||||
* glibtop_get_mountlist can now ignore nsfd FS. 
 | 
			
		||||
 | 
			
		||||
September 16, 2006: Overview of changes in 2.14.4
 | 
			
		||||
=================================================
 | 
			
		||||
* Fixed linux maps/smaps parsing on 64bit kernel.
 | 
			
		||||
 | 
			
		||||
September 5, 2006: Overview of changes in 2.14.3
 | 
			
		||||
================================================
 | 
			
		||||
* Fixed build with --as-needed.
 | 
			
		||||
* Added missing G_BEGIN_DECLS/G_END_DECLS.
 | 
			
		||||
 | 
			
		||||
July 27, 2006: Overview of changes in 2.14.2
 | 
			
		||||
============================================
 | 
			
		||||
* Updated solaris support (hua.zhang@sun.com)
 | 
			
		||||
* Small linux updates and improvments.
 | 
			
		||||
 | 
			
		||||
April 10, 2006: Overview of changes in 2.14.1
 | 
			
		||||
=============================================
 | 
			
		||||
* Updated translations.
 | 
			
		||||
* Fixed NetBSD port (Julio M. Merino Vidal  <jmmv@NetBSD.org>).
 | 
			
		||||
* Fixed some warnings.
 | 
			
		||||
 | 
			
		||||
Mars 13, 2006: Overview of changes in 2.14.0
 | 
			
		||||
============================================
 | 
			
		||||
* Updated translations.
 | 
			
		||||
 | 
			
		||||
February 27, 2006: Overview of changes in 2.13.92
 | 
			
		||||
=================================================
 | 
			
		||||
* Fixed proc_state documentation.
 | 
			
		||||
* Updated mountlist ignore list.
 | 
			
		||||
 | 
			
		||||
January 23, 2006: Overview of changes in 2.13.3
 | 
			
		||||
===============================================
 | 
			
		||||
* linux:
 | 
			
		||||
	- fixe get_procmap for linux < 2.6.14.
 | 
			
		||||
 | 
			
		||||
January 2, 2006: Overview of changes in 2.13.2
 | 
			
		||||
==============================================
 | 
			
		||||
* Fixed libtool versioning (James Henstridge)
 | 
			
		||||
 | 
			
		||||
December 15, 2005: Overview of changes in 2.13.1
 | 
			
		||||
================================================
 | 
			
		||||
* linux:
 | 
			
		||||
    - fixed proclist
 | 
			
		||||
    - implemented server->real_ncpu
 | 
			
		||||
 | 
			
		||||
December 13, 2005: Overview of changes in 2.13.0
 | 
			
		||||
================================================
 | 
			
		||||
* Requires automake-1.9 (James Henstridge)
 | 
			
		||||
* Supports up to 32 CPU
 | 
			
		||||
* Supports Linux smaps
 | 
			
		||||
* linux: fixed SMP detection
 | 
			
		||||
 | 
			
		||||
This release is not ABI compatible with previous releases. Sorry.
 | 
			
		||||
 | 
			
		||||
November 29, 2005: Overview of changes from 2.12.0 to 2.12.1
 | 
			
		||||
============================================================
 | 
			
		||||
* Dropped dead files
 | 
			
		||||
* linux: 1-line cleanup.
 | 
			
		||||
 | 
			
		||||
September 4, 2005: Overview of changes from 2.11.92 to 2.12.0
 | 
			
		||||
=============================================================
 | 
			
		||||
* Updated translations.
 | 
			
		||||
 | 
			
		||||
August 22, 2005: Overview of changes from 2.11.91 to 2.11.92
 | 
			
		||||
============================================================
 | 
			
		||||
* Linux:
 | 
			
		||||
  - fixed for 2.6 without /sys
 | 
			
		||||
  - glibtop_get_cpu() : Do not add irq, softirq and iowait to idle.
 | 
			
		||||
 | 
			
		||||
August 9, 2005: Overview of changes from 2.11.90 to 2.11.91
 | 
			
		||||
===========================================================
 | 
			
		||||
* All:
 | 
			
		||||
  - cleaned some headers.
 | 
			
		||||
  - removed static examples.
 | 
			
		||||
* Linux:
 | 
			
		||||
  - fixed some issues with 2.6 without /sys
 | 
			
		||||
 | 
			
		||||
July 24, 2005: Overview of changes from 2.11.2 to 2.11.90
 | 
			
		||||
=========================================================
 | 
			
		||||
* Linux:
 | 
			
		||||
  - fixed glibtop_uptime .flags.
 | 
			
		||||
 | 
			
		||||
July &3, 2005: Overview of changes from 2.11.1 to 2.11.2
 | 
			
		||||
========================================================
 | 
			
		||||
* Linux:
 | 
			
		||||
  - little improvements for 2.6.
 | 
			
		||||
 | 
			
		||||
July 3, 2005: Overview of changes from 2.11.0 to 2.11.1
 | 
			
		||||
=======================================================
 | 
			
		||||
* Linux:
 | 
			
		||||
  - glibtop_get_swap : added page(in|out) for linux 2.6.
 | 
			
		||||
 | 
			
		||||
June 8, 2005: Overview of changes from 2.10.x to 2.11.0
 | 
			
		||||
=======================================================
 | 
			
		||||
* Replaced a lot of macros by functions
 | 
			
		||||
* Got rid of dozens of useless files.
 | 
			
		||||
* libgtop 2.11.x are and will stay API and ABI compatible with 2.10.x, i swear.
 | 
			
		||||
 | 
			
		||||
April 10, 2005: Overview of changes from 2.10.0 to 2.10.1
 | 
			
		||||
=========================================================
 | 
			
		||||
* Updated i18n.
 | 
			
		||||
* Little cleanup and fixed gcc-4.0 compilation.
 | 
			
		||||
* linux: fixed loadavg and uptime if locale != C.
 | 
			
		||||
  Updated siglist.
 | 
			
		||||
* Tighter libgtop-2.0.pc.
 | 
			
		||||
 | 
			
		||||
Mars 7, 2005: Overview of Changes from 2.9.92 to 2.10.0
 | 
			
		||||
=======================================================
 | 
			
		||||
* Updated i18n.
 | 
			
		||||
 | 
			
		||||
February 28, 2005: Overview of Changes from 2.9.90 to 2.9.92
 | 
			
		||||
============================================================
 | 
			
		||||
* *BSD updated by marcus@freebsd.org (Joe Marcus Clarke).
 | 
			
		||||
* Removed a lot of dead files :)
 | 
			
		||||
* Don't build&install libgtop_daemon when it's never used.
 | 
			
		||||
 | 
			
		||||
February 6, 2004: Overview of Changes from 2.9.90 to 2.9.91
 | 
			
		||||
==========================================================
 | 
			
		||||
* Fixed typo in stub.
 | 
			
		||||
* Updated i18n.
 | 
			
		||||
 | 
			
		||||
January 24, 2004: Overview of Changes from 2.9.4 to 2.9.90
 | 
			
		||||
==========================================================
 | 
			
		||||
* Updated Linux support.
 | 
			
		||||
 | 
			
		||||
January 10, 2004: Overview of Changes from 2.9.3 to 2.9.4
 | 
			
		||||
=========================================================
 | 
			
		||||
* New glibtop_proc_open_files nick@reloco.com.ar (Nicolás Lichtmaier).
 | 
			
		||||
* Updated AIX support (Christophe Belle).
 | 
			
		||||
 | 
			
		||||
December 20, 2004: Overview of Changes from 2.9.0 to 2.9.3
 | 
			
		||||
==========================================================
 | 
			
		||||
* Removed libgtop_names.
 | 
			
		||||
* Fixed Argument passing between library and server. #139809.
 | 
			
		||||
* *BSD updated by marcus@freebsd.org (Joe Marcus Clarke).
 | 
			
		||||
* glibtop_get_mountlist(False) now ignores 'unknown' fs.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
November 30, 2004: Overview of Changes from 2.8.1 to 2.9.0
 | 
			
		||||
=========================================================
 | 
			
		||||
* glibtop_get_netload : Fixed segfault on linux with ppp devices.
 | 
			
		||||
* NEW glibtop_get_netlist : retrieves the list of all available interfaces.
 | 
			
		||||
* NEW LIBGTOP_CHECK_VERSION(major, minor, micro)
 | 
			
		||||
* Removed dead kernel patch and implementation.
 | 
			
		||||
* Cleanups on Linux and Solaris.
 | 
			
		||||
 | 
			
		||||
October 11, 2004: Overview of Changes from 2.8.0 to 2.8.1
 | 
			
		||||
=========================================================
 | 
			
		||||
* Improved Solaris and AIX support.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
August 13, 2004: Overview of Changes from 2.7.92 to 2.8.0
 | 
			
		||||
=========================================================
 | 
			
		||||
* No changes
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
August 30, 2004:
 | 
			
		||||
===============
 | 
			
		||||
* Applied some *BSD patches.
 | 
			
		||||
* Removed old files.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
August 15, 2004:
 | 
			
		||||
===============
 | 
			
		||||
* Fixed compilation with C89-only compilers and old libc.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
August 3, 2004:
 | 
			
		||||
==============
 | 
			
		||||
* Some cleanups.
 | 
			
		||||
* Fixed the behaviour of some linux proc_*() functions.
 | 
			
		||||
* Updated the documentation.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
July 19, 2004: Overview of Changes from 2.6.1 to 2.7.4
 | 
			
		||||
======================================================
 | 
			
		||||
* Plenty of code cleanups. Uninlined a lot of functions. ~5-10KB object size
 | 
			
		||||
  reduction.
 | 
			
		||||
* Glibify a bit more.
 | 
			
		||||
* API changes:
 | 
			
		||||
 - glibtop_fsusage provides total read and writes since boot_time.
 | 
			
		||||
 - glibtop_netload provides hardware address. IPv6 enable.
 | 
			
		||||
 - Added glibtop_get_proc_argv.
 | 
			
		||||
 | 
			
		||||
Work in progress :
 | 
			
		||||
* Finish glibtop_fsusage implementation for Linux.
 | 
			
		||||
* Some fuctions don't conform to the documentation, e.g. proctime.
 | 
			
		||||
 | 
			
		||||
March 11, 2004:
 | 
			
		||||
===============
 | 
			
		||||
 | 
			
		||||
* Released LibGTop 2.5.99 "Gross Work", dedicated to people who do push-ups
 | 
			
		||||
  in the loos.
 | 
			
		||||
 | 
			
		||||
  - plenty of code cleanups
 | 
			
		||||
 | 
			
		||||
  - removed the dependency on libgnome, only glib required now
 | 
			
		||||
 | 
			
		||||
  - Linux 2.6 support, NetBSD support and better FreeBSD support
 | 
			
		||||
 | 
			
		||||
  - Make the block size available for filesystem statistics
 | 
			
		||||
 | 
			
		||||
February 27, 2001:
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README
									
									
									
									
									
								
							@@ -1,20 +1,8 @@
 | 
			
		||||
$Id$
 | 
			
		||||
 | 
			
		||||
LATEST NEWS:
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
Please look also in the file 'NEWS' for latest news.
 | 
			
		||||
 
 | 
			
		||||
Martin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ChangeLogs:
 | 
			
		||||
==========
 | 
			
		||||
 | 
			
		||||
LibGTop has many ChangeLogs files. The following files are the the
 | 
			
		||||
most important :
 | 
			
		||||
 | 
			
		||||
- ChangeLog is the main ChangeLog.
 | 
			
		||||
- sysdeps/<arch>/ChangeLog is the ChangeLog for arch specific changes.
 | 
			
		||||
- sysdeps/common/ChangeLog is the ChangeLog for common changes (shared
 | 
			
		||||
  implementation between archs).
 | 
			
		||||
 | 
			
		||||
Benoît
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										146
									
								
								RELNOTES-0.25
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								RELNOTES-0.25
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,146 @@
 | 
			
		||||
RELEASE NOTES FOR LIBGTOP 0.25 STABLE
 | 
			
		||||
=====================================
 | 
			
		||||
 | 
			
		||||
OVERVIEW
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
LibGTop is a library that read information about processes and the running
 | 
			
		||||
systems. This information include:
 | 
			
		||||
 | 
			
		||||
General System Information
 | 
			
		||||
 | 
			
		||||
cpu		- CPU Usage
 | 
			
		||||
mem		- Memory Usage
 | 
			
		||||
swap		- Swap Usage (including paging activity)
 | 
			
		||||
loadavg		- Load average (including nr_running, nr_tasks, last_pid)
 | 
			
		||||
uptime		- Uptime and Idle time, can be calculated from CPU usage
 | 
			
		||||
 | 
			
		||||
SYS V IPC Limits:
 | 
			
		||||
 | 
			
		||||
shm_limits	- Shared Memory Limits
 | 
			
		||||
msg_limits	- Message Queue Limits
 | 
			
		||||
sem_limits	- Semaphore Set Limits
 | 
			
		||||
 | 
			
		||||
Process List:
 | 
			
		||||
 | 
			
		||||
proclist	- List of processes
 | 
			
		||||
 | 
			
		||||
Process information:
 | 
			
		||||
 | 
			
		||||
proc_state	- cmd, state, uid, gid
 | 
			
		||||
proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp
 | 
			
		||||
		  session,tty,tpgid,priority,nice
 | 
			
		||||
proc_mem	- size,vsize,resident,share,rss,rss_rlim
 | 
			
		||||
proc_time	- start_time,rtime,utime,stime,cutime,cstime
 | 
			
		||||
		  timeout,it_real_value,frequency
 | 
			
		||||
proc_signal	- signal,blocked,sigignore,sigcatch
 | 
			
		||||
proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
 | 
			
		||||
		  kstk_esp,kstk_eip,nwchan,wchan
 | 
			
		||||
proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size
 | 
			
		||||
		  start_code,end_code,start_stack
 | 
			
		||||
 | 
			
		||||
Process maps:
 | 
			
		||||
 | 
			
		||||
proc_map	- Process map (/proc/<pid>/maps under Linux)
 | 
			
		||||
 | 
			
		||||
File system usage:
 | 
			
		||||
 | 
			
		||||
mountlist	- List of currently mounted filesystems
 | 
			
		||||
fsusage		- File system usage
 | 
			
		||||
 | 
			
		||||
PORTABILITY:
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
LibGtop is designed to be as portable as possible. None of the functions
 | 
			
		||||
and retrieved information should be specific to a specific operating
 | 
			
		||||
system. So you only need to port the system dependent part of the library
 | 
			
		||||
to a new system and all application programs can then use libgtop on this
 | 
			
		||||
new system.
 | 
			
		||||
 | 
			
		||||
CLIENT/SERVER MODEL:
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
Some systems like DEC OSF/1 or BSD require special priviledges for the calling
 | 
			
		||||
proces to fetch the required information (SUID root/SGID kmem). To solve this
 | 
			
		||||
problem, I designed a client/server model which makes a call to a SUID/SGID
 | 
			
		||||
server which fetches the required information whenever it is required. This
 | 
			
		||||
server is only called for features that really require priviledges, otherwise
 | 
			
		||||
the sysdeps code is called directory (every user can get the CPU usage on
 | 
			
		||||
DEC OSF/1, but only root can get information about processes other than the
 | 
			
		||||
current one).
 | 
			
		||||
 | 
			
		||||
There is also some kind of daemon which can be used to fetch information from
 | 
			
		||||
remote systems (still experimental). This daemon normally runs as nobody and
 | 
			
		||||
calls the SUID/SGID itself when needed.
 | 
			
		||||
 | 
			
		||||
GNOME APPLETS:
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
There are some applets and applications which already use LibGTop. They can
 | 
			
		||||
be found in the `libgtop-apps' module in the GNOME CVS tree:
 | 
			
		||||
 | 
			
		||||
* Applets:  cpuload, cpumemusage - they need LibGTop to get their information
 | 
			
		||||
                                   on all systems other than Linux.
 | 
			
		||||
 | 
			
		||||
* Applets:  diskusage - just uses the mountlist/fsusage features of LibGTop,
 | 
			
		||||
                        the one in gnome-core also works on other systems.
 | 
			
		||||
 | 
			
		||||
* Applets:  multiload - I enhanced the cpuload applet a little bit, it is
 | 
			
		||||
                        now a multi applet and can display CPU, Memory and
 | 
			
		||||
                        Swap usages.
 | 
			
		||||
 | 
			
		||||
GTOP:
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
This cool GNOME app has been ported to use LibGTop. It can be found in
 | 
			
		||||
`libgtop-apps/gtop' in the GNOME CVS tree.
 | 
			
		||||
 | 
			
		||||
You can now use nearly the full functionality of GTop on FreeBSD !
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PLATTFORM SPECIFIC NOTES FOR LINUX:
 | 
			
		||||
==================================
 | 
			
		||||
 | 
			
		||||
Under Linux, LibGTop should work without problems and read everything
 | 
			
		||||
from /proc.
 | 
			
		||||
 | 
			
		||||
There is also an experimental kernel interface to read this information
 | 
			
		||||
directly from the kernel with a system call - but this is still experimental
 | 
			
		||||
and not well tested while I made this release.
 | 
			
		||||
 | 
			
		||||
PLATTFORM SPECIFIC NOTES FOR FREEBSD:
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
LibGTop should now work under FreeBSD and give you the full functionality
 | 
			
		||||
of GTop.
 | 
			
		||||
 | 
			
		||||
There are a few caveats:
 | 
			
		||||
 | 
			
		||||
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to kmem
 | 
			
		||||
  after installation and mount the /proc filesystem of FreeBSD
 | 
			
		||||
  (/proc/<pid>/mem is used withing kvm_uread ()).
 | 
			
		||||
 | 
			
		||||
* To get the filenames of the process maps displayed in GTop, you need to
 | 
			
		||||
  configure with the `--with-libgtop-inodedb' option (you need GDBM for this
 | 
			
		||||
  to work).
 | 
			
		||||
 | 
			
		||||
* You have then to create an inode database which is used to look up to
 | 
			
		||||
  filenames. This is done using the `mkinodedb' program which comes along
 | 
			
		||||
  with libgtop.
 | 
			
		||||
 | 
			
		||||
  See the file src/inodedb/README for details:
 | 
			
		||||
 | 
			
		||||
  The `mkinodedb' program which is build in this directory takes two
 | 
			
		||||
  command line arguments: the full pathname of the database to be created
 | 
			
		||||
  and the name of a configuration file consisting of directory and file names
 | 
			
		||||
  each on a line by itself - see `/etc/ld.so.conf' for an example.
 | 
			
		||||
 | 
			
		||||
  Putting a directory name in this file means all regular files found in this
 | 
			
		||||
  directory are included in the database, but it will not recursively descend
 | 
			
		||||
  into subdirectories (for instance, we want everythink in `/usr/lib' but not
 | 
			
		||||
  every single file in `/usr/lib/sgml'). You can also use filenames to include
 | 
			
		||||
  a single file.
 | 
			
		||||
 | 
			
		||||
Have fun,
 | 
			
		||||
 | 
			
		||||
Martin <martin@home-of-linux.org>
 | 
			
		||||
							
								
								
									
										163
									
								
								RELNOTES-1.0
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								RELNOTES-1.0
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,163 @@
 | 
			
		||||
RELEASE NOTES FOR LIBGTOP 1.0 STABLE
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
OVERVIEW
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
LibGTop is a library that read information about processes and the
 | 
			
		||||
running systems. This information include:
 | 
			
		||||
 | 
			
		||||
General System Information:
 | 
			
		||||
 | 
			
		||||
cpu		- CPU Usage
 | 
			
		||||
mem		- Memory Usage
 | 
			
		||||
swap		- Swap Usage (including paging activity)
 | 
			
		||||
loadavg		- Load average (including nr_running, nr_tasks, last_pid)
 | 
			
		||||
uptime		- Uptime and Idle time, can be calculated from CPU usage
 | 
			
		||||
 | 
			
		||||
SYS V IPC Limits:
 | 
			
		||||
 | 
			
		||||
shm_limits	- Shared Memory Limits
 | 
			
		||||
msg_limits	- Message Queue Limits
 | 
			
		||||
sem_limits	- Semaphore Set Limits
 | 
			
		||||
 | 
			
		||||
Network:
 | 
			
		||||
 | 
			
		||||
netload		- Network load
 | 
			
		||||
ppp		- PPP statistics
 | 
			
		||||
 | 
			
		||||
Process List:
 | 
			
		||||
 | 
			
		||||
proclist	- List of processes
 | 
			
		||||
 | 
			
		||||
Process information:
 | 
			
		||||
 | 
			
		||||
proc_state	- cmd, state, uid, gid
 | 
			
		||||
proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp
 | 
			
		||||
		  session,tty,tpgid,priority,nice
 | 
			
		||||
proc_mem	- size,vsize,resident,share,rss,rss_rlim
 | 
			
		||||
proc_time	- start_time,rtime,utime,stime,cutime,cstime
 | 
			
		||||
		  timeout,it_real_value,frequency
 | 
			
		||||
proc_signal	- signal,blocked,sigignore,sigcatch
 | 
			
		||||
proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
 | 
			
		||||
		  kstk_esp,kstk_eip,nwchan,wchan
 | 
			
		||||
proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size
 | 
			
		||||
		  start_code,end_code,start_stack
 | 
			
		||||
 | 
			
		||||
Process maps:
 | 
			
		||||
 | 
			
		||||
proc_args	- Command line arguments
 | 
			
		||||
proc_map	- Process map (/proc/<pid>/maps under Linux)
 | 
			
		||||
 | 
			
		||||
File system usage:
 | 
			
		||||
 | 
			
		||||
mountlist	- List of currently mounted filesystems
 | 
			
		||||
fsusage		- File system usage
 | 
			
		||||
 | 
			
		||||
PORTABILITY:
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
LibGTop is designed to be as portable as possible. None of the
 | 
			
		||||
functions and retrieved information should be specific to a specific
 | 
			
		||||
operating system. So you only need to port the system dependent part
 | 
			
		||||
of the library to a new system and all application programs can then
 | 
			
		||||
use libgtop on this new system.
 | 
			
		||||
 | 
			
		||||
CLIENT/SERVER MODEL:
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
Some systems like DEC OSF/1 or BSD require special privileges for the
 | 
			
		||||
calling process to fetch the required information (SUID root/SGID
 | 
			
		||||
kmem). To solve this problem, I designed a client/server model which
 | 
			
		||||
makes a call to a SUID/SGID server which fetches the required
 | 
			
		||||
information whenever it is required. This server is only called for
 | 
			
		||||
features that really require privileges, otherwise the sysdeps code
 | 
			
		||||
is called directory (every user can get the CPU usage on DEC OSF/1,
 | 
			
		||||
but only root can get information about processes other than the
 | 
			
		||||
current one).
 | 
			
		||||
 | 
			
		||||
There is also some kind of daemon which can be used to fetch
 | 
			
		||||
information from remote systems (still experimental). This daemon
 | 
			
		||||
normally runs as nobody and calls the SUID/SGID itself when needed.
 | 
			
		||||
 | 
			
		||||
LIBGTOP AND GNOME:
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
LibGTop is currently used in various places in the GNOME Project,
 | 
			
		||||
for instance in some of the applets in gnome-core and - of cause -
 | 
			
		||||
this ultra-cool application called GTop ...
 | 
			
		||||
 | 
			
		||||
Although LibGTop is not specific to GNOME and under GPL license, I
 | 
			
		||||
spent most my time during the last months to work in the GNOME project
 | 
			
		||||
so this is the primary use for LibGTop (and currently the only one).
 | 
			
		||||
 | 
			
		||||
However, you can also give its configure.in script the `--without-gnome'
 | 
			
		||||
parameter and then use it fully without GNOME in your own applications.
 | 
			
		||||
 | 
			
		||||
LIBGTOP AND GNOME - PART II:
 | 
			
		||||
---------------------------
 | 
			
		||||
 | 
			
		||||
LibGTop was tested with FreeBSD 3.0 but it should also work with
 | 
			
		||||
FreeBSD 2.2.7, NetBSD and OpenBSD.
 | 
			
		||||
 | 
			
		||||
Currently my primary aim is to help the GNOME people with our 1.0 release
 | 
			
		||||
so I won't have much time to test it with any other system than Linux.
 | 
			
		||||
 | 
			
		||||
However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for
 | 
			
		||||
LibGTop and whenever I get bug reports I will do my best to fix them as
 | 
			
		||||
quickly as possible.
 | 
			
		||||
 | 
			
		||||
PLATFORM SPECIFIC NOTES FOR LINUX:
 | 
			
		||||
==================================
 | 
			
		||||
 | 
			
		||||
Under Linux, LibGTop should work without problems and read everything
 | 
			
		||||
from /proc.
 | 
			
		||||
 | 
			
		||||
LibGTop 0.25 also had an experimental kernel interface to read this
 | 
			
		||||
information directly from the kernel with a system call - but I have
 | 
			
		||||
currently dropped support for this as I am too busy with GNOME
 | 
			
		||||
development to keep current with kernel hacking.
 | 
			
		||||
 | 
			
		||||
PLATFORM SPECIFIC NOTES FOR SOLARIS:
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
Since so many people were asking me about this:
 | 
			
		||||
 | 
			
		||||
LibGTop currently does not have any support for Solaris, and it will
 | 
			
		||||
never have until some volunteer writes the code for it. I can't do this
 | 
			
		||||
myself since I do not have any machine to test it on.
 | 
			
		||||
 | 
			
		||||
PLATFORM SPECIFIC NOTES FOR BSD:
 | 
			
		||||
=================================
 | 
			
		||||
 | 
			
		||||
There are a few caveats:
 | 
			
		||||
 | 
			
		||||
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to
 | 
			
		||||
  kmem after installation and mount the /proc file system of FreeBSD
 | 
			
		||||
  (/proc/<pid>/mem is used within kvm_uread ()).
 | 
			
		||||
 | 
			
		||||
* To get the filenames of the process maps displayed in GTop, you need
 | 
			
		||||
  to configure with the `--with-libgtop-inodedb' option (you need GDBM
 | 
			
		||||
  for this to work).
 | 
			
		||||
 | 
			
		||||
  You have then to create an inode database which is used to look up
 | 
			
		||||
  filenames. This is done using the `mkinodedb' program which comes
 | 
			
		||||
  along with libgtop.
 | 
			
		||||
 | 
			
		||||
  See the file src/inodedb/README for details:
 | 
			
		||||
 | 
			
		||||
  The `mkinodedb' program which is build in this directory takes two
 | 
			
		||||
  command line arguments: the full pathname of the database to be
 | 
			
		||||
  created and the name of a configuration file consisting of directory
 | 
			
		||||
  and file names each on a line by itself - see `/etc/ld.so.conf' for
 | 
			
		||||
  an example.
 | 
			
		||||
 | 
			
		||||
  Putting a directory name in this file means all regular files found
 | 
			
		||||
  in this directory are included in the database, but it will not
 | 
			
		||||
  recursively descend into subdirectories (for instance, we want
 | 
			
		||||
  everything in `/usr/lib' but not every single file in `/usr/lib/sgml').
 | 
			
		||||
  You can also use filenames to include a single file.
 | 
			
		||||
 | 
			
		||||
Have fun,
 | 
			
		||||
 | 
			
		||||
Martin <martin@home-of-linux.org>
 | 
			
		||||
							
								
								
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,172 @@
 | 
			
		||||
RELEASE NOTES FOR LIBGTOP 1.0.7
 | 
			
		||||
===============================
 | 
			
		||||
 | 
			
		||||
OVERVIEW
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
LibGTop is a library that read information about processes and the
 | 
			
		||||
running systems. This information include:
 | 
			
		||||
 | 
			
		||||
General System Information:
 | 
			
		||||
 | 
			
		||||
cpu		- CPU Usage
 | 
			
		||||
mem		- Memory Usage
 | 
			
		||||
swap		- Swap Usage (including paging activity)
 | 
			
		||||
loadavg		- Load average (including nr_running, nr_tasks, last_pid)
 | 
			
		||||
uptime		- Uptime and Idle time, can be calculated from CPU usage
 | 
			
		||||
 | 
			
		||||
SYS V IPC Limits:
 | 
			
		||||
 | 
			
		||||
shm_limits	- Shared Memory Limits
 | 
			
		||||
msg_limits	- Message Queue Limits
 | 
			
		||||
sem_limits	- Semaphore Set Limits
 | 
			
		||||
 | 
			
		||||
Network:
 | 
			
		||||
 | 
			
		||||
netload		- Network load
 | 
			
		||||
ppp		- PPP statistics
 | 
			
		||||
 | 
			
		||||
Process List:
 | 
			
		||||
 | 
			
		||||
proclist	- List of processes
 | 
			
		||||
 | 
			
		||||
Process information:
 | 
			
		||||
 | 
			
		||||
proc_state	- cmd, state, uid, gid
 | 
			
		||||
proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp
 | 
			
		||||
		  session,tty,tpgid,priority,nice
 | 
			
		||||
proc_mem	- size,vsize,resident,share,rss,rss_rlim
 | 
			
		||||
proc_time	- start_time,rtime,utime,stime,cutime,cstime
 | 
			
		||||
		  timeout,it_real_value,frequency
 | 
			
		||||
proc_signal	- signal,blocked,sigignore,sigcatch
 | 
			
		||||
proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
 | 
			
		||||
		  kstk_esp,kstk_eip,nwchan,wchan
 | 
			
		||||
proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size
 | 
			
		||||
		  start_code,end_code,start_stack
 | 
			
		||||
 | 
			
		||||
Process maps:
 | 
			
		||||
 | 
			
		||||
proc_args	- Command line arguments
 | 
			
		||||
proc_map	- Process map (/proc/<pid>/maps under Linux)
 | 
			
		||||
 | 
			
		||||
File system usage:
 | 
			
		||||
 | 
			
		||||
mountlist	- List of currently mounted filesystems
 | 
			
		||||
fsusage		- File system usage
 | 
			
		||||
 | 
			
		||||
PORTABILITY:
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
LibGTop is designed to be as portable as possible. None of the
 | 
			
		||||
functions and retrieved information should be specific to a specific
 | 
			
		||||
operating system. So you only need to port the system dependent part
 | 
			
		||||
of the library to a new system and all application programs can then
 | 
			
		||||
use libgtop on this new system.
 | 
			
		||||
 | 
			
		||||
CLIENT/SERVER MODEL:
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
Some systems like DEC OSF/1 or BSD require special privileges for the
 | 
			
		||||
calling process to fetch the required information (SUID root/SGID
 | 
			
		||||
kmem). To solve this problem, I designed a client/server model which
 | 
			
		||||
makes a call to a SUID/SGID server which fetches the required
 | 
			
		||||
information whenever it is required. This server is only called for
 | 
			
		||||
features that really require privileges, otherwise the sysdeps code
 | 
			
		||||
is called directory (every user can get the CPU usage on DEC OSF/1,
 | 
			
		||||
but only root can get information about processes other than the
 | 
			
		||||
current one).
 | 
			
		||||
 | 
			
		||||
There is also some kind of daemon which can be used to fetch
 | 
			
		||||
information from remote systems (still experimental). This daemon
 | 
			
		||||
normally runs as nobody and calls the SUID/SGID itself when needed.
 | 
			
		||||
 | 
			
		||||
LIBGTOP AND GNOME:
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
Although LibGTop is part of the GNOME desktop environment, its main
 | 
			
		||||
interface is totally independent from any particular desktop environment,
 | 
			
		||||
so you can also use it as a standalone library in any piece of GPLed
 | 
			
		||||
software which makes it also a valuable part of the GNU project.
 | 
			
		||||
 | 
			
		||||
LibGTop is currently used in various places in the GNOME Project,
 | 
			
		||||
for instance in some of the applets in gnome-core and - of cause -
 | 
			
		||||
this ultra-cool application called GTop ...
 | 
			
		||||
 | 
			
		||||
However, you need to give the configure.in script the `--without-gnome'
 | 
			
		||||
parameter when you want to use LibGTop without GNOME (this is because,
 | 
			
		||||
if you want to use it with GNOME, you need to compile it after the main
 | 
			
		||||
GNOME libraries and I wanted to avoid getting unnecessary bug reports
 | 
			
		||||
about this).
 | 
			
		||||
 | 
			
		||||
LIBGTOP AND GNOME - PART II:
 | 
			
		||||
---------------------------
 | 
			
		||||
 | 
			
		||||
LibGTop was tested with FreeBSD 3.0 but it should also work with
 | 
			
		||||
FreeBSD 2.2.7, NetBSD and OpenBSD.
 | 
			
		||||
 | 
			
		||||
Unfortunately, I don't have the power and disk space to install all
 | 
			
		||||
possible operating systems out there on my machine and test things myself,
 | 
			
		||||
so I depend on people telling me whether it works and sending me bug
 | 
			
		||||
reports and patches if not.
 | 
			
		||||
 | 
			
		||||
However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for
 | 
			
		||||
LibGTop and whenever I get bug reports I will do my best to fix them as
 | 
			
		||||
quickly as possible.
 | 
			
		||||
 | 
			
		||||
PLATFORM SPECIFIC NOTES FOR LINUX:
 | 
			
		||||
==================================
 | 
			
		||||
 | 
			
		||||
[I am speaking of the Linux kernel here.]
 | 
			
		||||
 | 
			
		||||
Under Linux, LibGTop should work without problems and read everything
 | 
			
		||||
from /proc.
 | 
			
		||||
 | 
			
		||||
LibGTop 0.25 also had an experimental kernel interface to read this
 | 
			
		||||
information directly from the kernel with a system call - but I have
 | 
			
		||||
currently dropped support for this as I am too busy with GNOME
 | 
			
		||||
development to keep current with kernel hacking.
 | 
			
		||||
 | 
			
		||||
PLATFORM SPECIFIC NOTES FOR SOLARIS:
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
The development branch of LibGTop (the 1.1.x series) has a first version
 | 
			
		||||
of the Solaris port which works at least on Solaris 7.
 | 
			
		||||
 | 
			
		||||
If you are on a Solaris system and want to give it a try, just fetch the
 | 
			
		||||
latest 1.1.x tarball from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
 | 
			
		||||
and try it out.
 | 
			
		||||
 | 
			
		||||
PLATFORM SPECIFIC NOTES FOR BSD:
 | 
			
		||||
=================================
 | 
			
		||||
 | 
			
		||||
There are a few caveats:
 | 
			
		||||
 | 
			
		||||
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to
 | 
			
		||||
  kmem after installation and mount the /proc file system of FreeBSD
 | 
			
		||||
  (/proc/<pid>/mem is used within kvm_uread ()).
 | 
			
		||||
 | 
			
		||||
* To get the filenames of the process maps displayed in GTop, you need
 | 
			
		||||
  to configure with the `--with-libgtop-inodedb' option (you need GDBM
 | 
			
		||||
  for this to work).
 | 
			
		||||
 | 
			
		||||
  You have then to create an inode database which is used to look up
 | 
			
		||||
  filenames. This is done using the `mkinodedb' program which comes
 | 
			
		||||
  along with libgtop.
 | 
			
		||||
 | 
			
		||||
  See the file src/inodedb/README for details:
 | 
			
		||||
 | 
			
		||||
  The `mkinodedb' program which is build in this directory takes two
 | 
			
		||||
  command line arguments: the full pathname of the database to be
 | 
			
		||||
  created and the name of a configuration file consisting of directory
 | 
			
		||||
  and file names each on a line by itself - see `/etc/ld.so.conf' for
 | 
			
		||||
  an example.
 | 
			
		||||
 | 
			
		||||
  Putting a directory name in this file means all regular files found
 | 
			
		||||
  in this directory are included in the database, but it will not
 | 
			
		||||
  recursively descend into subdirectories (for instance, we want
 | 
			
		||||
  everything in `/usr/lib' but not every single file in `/usr/lib/sgml').
 | 
			
		||||
  You can also use filenames to include a single file.
 | 
			
		||||
 | 
			
		||||
Have fun,
 | 
			
		||||
 | 
			
		||||
Martin <martin@home-of-linux.org>
 | 
			
		||||
							
								
								
									
										50
									
								
								RELNOTES-1.1.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								RELNOTES-1.1.x
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
RELEASE NOTES FOR LIBGTOP 1.1.2
 | 
			
		||||
===============================
 | 
			
		||||
 | 
			
		||||
This is a snapshot release for Solaris users of October GNOME. It contains
 | 
			
		||||
a first version of the Solaris port of LibGTop which works at least on
 | 
			
		||||
Solaris 7.
 | 
			
		||||
 | 
			
		||||
Please use LibGTop 1.0.x if you're not on a Solaris system
 | 
			
		||||
(look at the README file for details).
 | 
			
		||||
 | 
			
		||||
IMPORTANT CHANGES SINCE 1.0:
 | 
			
		||||
----------------------------
 | 
			
		||||
 | 
			
		||||
* All `glibtop_get_<feature>_* ()' and all `glibtop_init_<feature>_* ()'
 | 
			
		||||
  functions now have an `int' return value and return 0 on success and -1
 | 
			
		||||
  on failure.
 | 
			
		||||
 | 
			
		||||
* glibtop_cpu: Added `xcpu_flags'
 | 
			
		||||
 | 
			
		||||
* glibtop_proc_state: Changed `state' from char to unsigned and added
 | 
			
		||||
    GLIBTOP_PROCESS_RUNNING, GLIBTOP_PROCESS_INTERRUPTIBLE,
 | 
			
		||||
    GLIBTOP_PROCESS_UNINTERRUPTIBLE,  GLIBTOP_PROCESS_ZOMBIE,
 | 
			
		||||
    GLIBTOP_PROCESS_STOPPED, GLIBTOP_PROCESS_SWAPPING constants for it.
 | 
			
		||||
 | 
			
		||||
* `GLIBTOP_MOUNTENTRY_LEN' and `GLIBTOP_MAX_GROUPS' are now defined in
 | 
			
		||||
  <glibtop/limits.h>
 | 
			
		||||
 | 
			
		||||
* Removed the `GLIBTOP_SYSDEPS_FEATURES' and `GLIBTOP_SYSDEPS_POINTER_SIZE'
 | 
			
		||||
  constants from <glibtop/sysdeps.h> and let numbering start at zero for
 | 
			
		||||
  `GLIBTOP_SYSDEPS_CPU'.
 | 
			
		||||
 | 
			
		||||
OTHER CHANGES SINCE 1.0:
 | 
			
		||||
-----------------------
 | 
			
		||||
 | 
			
		||||
* Use G_GNUC_UNUSED in <glibtop/error.h> to avoid compiler warnings.
 | 
			
		||||
 | 
			
		||||
* The `libgtop-config' script now accepts `--cflags', `--libs' and
 | 
			
		||||
  `--extra-libs' parameter.
 | 
			
		||||
 | 
			
		||||
* The libraries are now called -lgtop-1.1 etc. so you can use 1.0.x and
 | 
			
		||||
  1.1.x in parallel.
 | 
			
		||||
 | 
			
		||||
CHANGES SINCE 1.0 MAINLY INTERESTING FOR DEVELOPERS:
 | 
			
		||||
---------------------------------------------------
 | 
			
		||||
 | 
			
		||||
* We create a `glibtop-config.h' now which gets included from <glibtop.h>
 | 
			
		||||
  when we're _IN_LIBGTOP. It contains things such as `u_int64_t' etc.
 | 
			
		||||
 | 
			
		||||
October 1999
 | 
			
		||||
Martin Baulig
 | 
			
		||||
							
								
								
									
										170
									
								
								acconfig.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								acconfig.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,170 @@
 | 
			
		||||
 | 
			
		||||
/* Define if gethostname () must be declared. */
 | 
			
		||||
#undef NEED_DECLARATION_GETHOSTNAME
 | 
			
		||||
 | 
			
		||||
/* Define if setreuid () must be declared. */
 | 
			
		||||
#undef NEED_DECLARATION_SETREUID
 | 
			
		||||
 | 
			
		||||
/* Define if setregid () must be declared. */
 | 
			
		||||
#undef NEED_DECLARATION_SETREGID
 | 
			
		||||
 | 
			
		||||
/* Define if getpagesize () must be declared. */
 | 
			
		||||
#undef NEED_DECLARATION_GETPAGESIZE
 | 
			
		||||
 | 
			
		||||
/* Define if program_invocation_name must be declared. */
 | 
			
		||||
#undef NEED_DECLARATION_PROGRAM_INVOCATION_NAME
 | 
			
		||||
 | 
			
		||||
@TOP@
 | 
			
		||||
 | 
			
		||||
#undef ENABLE_NLS
 | 
			
		||||
#undef HAVE_CATGETS
 | 
			
		||||
#undef GETTEXT_PACKAGE
 | 
			
		||||
#undef HAVE_GETTEXT
 | 
			
		||||
#undef HAVE_LC_MESSAGES
 | 
			
		||||
#undef HAVE_STPCPY
 | 
			
		||||
#undef HAVE_STRUCT_OSOCKADDR
 | 
			
		||||
#undef PACKAGE
 | 
			
		||||
#undef VERSION
 | 
			
		||||
#undef HAVE_LIBSM
 | 
			
		||||
#undef HAVE_LIBINTL_H
 | 
			
		||||
#undef HAVE_GTK_SIGNAL_HANDLER_PENDING
 | 
			
		||||
 | 
			
		||||
/* Do not remove this comments and the empty lines; they are needed */
 | 
			
		||||
#undef HAVE_PROGRAM_INVOCATION_SHORT_NAME
 | 
			
		||||
/* Define if you have the Andrew File System.  */
 | 
			
		||||
#undef AFS
 | 
			
		||||
 | 
			
		||||
/* Define one of the following to indicate how a program can
 | 
			
		||||
   get a list of mounted filesystems.  */
 | 
			
		||||
 | 
			
		||||
/* Define if there is no specific function for reading the list of
 | 
			
		||||
   mounted filesystems.  fread will be used to read /etc/mnttab.  [SVR2]  */
 | 
			
		||||
#undef MOUNTED_FREAD
 | 
			
		||||
 | 
			
		||||
/* Define if (like SVR2) there is no specific function for reading the
 | 
			
		||||
   list of mounted filesystems, and your system has these header files:
 | 
			
		||||
   <sys/fstyp.h> and <sys/statfs.h>.  [SVR3]  */
 | 
			
		||||
#undef MOUNTED_FREAD_FSTYP
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named getfsstat for reading the list
 | 
			
		||||
   of mounted filesystems.  [DEC Alpha running OSF/1]  */
 | 
			
		||||
#undef MOUNTED_GETFSSTAT
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named getmnt for reading the list of
 | 
			
		||||
   mounted filesystems.  [Ultrix]  */
 | 
			
		||||
#undef MOUNTED_GETMNT
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named getmntent for reading the list
 | 
			
		||||
   of mounted filesystems, and that function takes a single argument.
 | 
			
		||||
   [4.3BSD, SunOS, HP-UX, Dynix, Irix]  */
 | 
			
		||||
#undef MOUNTED_GETMNTENT1
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named getmntent for reading the list of
 | 
			
		||||
   mounted filesystems, and that function takes two arguments.  [SVR4]  */
 | 
			
		||||
#undef MOUNTED_GETMNTENT2
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named getmntinfo for reading the list
 | 
			
		||||
   of mounted filesystems.  [4.4BSD]  */
 | 
			
		||||
#undef MOUNTED_GETMNTINFO
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named listmntent that can be used to
 | 
			
		||||
   list all mounted filesystems. [UNICOS] */
 | 
			
		||||
#undef MOUNTED_LISTMNTENT
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named mntctl that can be used to read
 | 
			
		||||
   the list of mounted filesystems, and there is a system header file
 | 
			
		||||
   that declares `struct vmount.'  [AIX]  */
 | 
			
		||||
#undef MOUNTED_VMOUNT
 | 
			
		||||
 | 
			
		||||
/* Define one of the following to indicate how a program can obtain
 | 
			
		||||
   filesystems usage information.  */
 | 
			
		||||
 | 
			
		||||
/*  Define if  statfs takes 3 args.  [DEC Alpha running OSF/1]  */
 | 
			
		||||
#undef STAT_STATFS3_OSF1
 | 
			
		||||
 | 
			
		||||
/* Define if there is no specific function for reading filesystems usage
 | 
			
		||||
   information and you have the <sys/filsys.h> header file.  [SVR2]  */
 | 
			
		||||
#undef STAT_READ_FILSYS
 | 
			
		||||
 | 
			
		||||
/* Define if statfs takes 2 args and struct statfs has a field named f_bsize.
 | 
			
		||||
   [4.3BSD, SunOS 4, HP-UX, AIX PS/2]  */
 | 
			
		||||
#undef STAT_STATFS2_BSIZE
 | 
			
		||||
 | 
			
		||||
/* Define if statfs takes 2 args and struct statfs has a field named f_fsize.
 | 
			
		||||
   [4.4BSD, NetBSD]  */
 | 
			
		||||
#undef STAT_STATFS2_FSIZE
 | 
			
		||||
 | 
			
		||||
/* Define if statfs takes 2 args and the second argument has
 | 
			
		||||
   type struct fs_data.  [Ultrix]  */
 | 
			
		||||
#undef STAT_STATFS2_FS_DATA
 | 
			
		||||
 | 
			
		||||
/* Define if statfs takes 4 args.  [SVR3, Dynix, Irix, Dolphin]  */
 | 
			
		||||
#undef STAT_STATFS4
 | 
			
		||||
 | 
			
		||||
/* Define if there is a function named statvfs.  [SVR4]  */
 | 
			
		||||
#undef STAT_STATVFS
 | 
			
		||||
 | 
			
		||||
/* Define if the block counts reported by statfs may be truncated to 2GB
 | 
			
		||||
   and the correct values may be stored in the f_spare array.
 | 
			
		||||
   [SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
 | 
			
		||||
   SunOS 4.1.1 seems not to be affected.]  */
 | 
			
		||||
#undef STATFS_TRUNCATES_BLOCK_COUNTS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* to fix a bug in autoheader on DEC OSF1. */
 | 
			
		||||
#undef HAVE_PROGRAM_INVOCATION_NAME
 | 
			
		||||
 | 
			
		||||
#undef HAVE_SOCKETS
 | 
			
		||||
#undef HAVE_SOCKADDR_SUN_LEN
 | 
			
		||||
 | 
			
		||||
#undef HAVE_LIBJPEG
 | 
			
		||||
#undef HAVE_LIBGIF
 | 
			
		||||
#undef HAVE_LIBTIFF
 | 
			
		||||
#undef HAVE_LIBZ
 | 
			
		||||
#undef HAVE_LIBPNG
 | 
			
		||||
#undef HAVE_GMP2_INCLUDE_DIR
 | 
			
		||||
#undef HAVE_GUILE
 | 
			
		||||
 | 
			
		||||
#undef ssize_t
 | 
			
		||||
#undef u_int64_t
 | 
			
		||||
#undef int64_t
 | 
			
		||||
 | 
			
		||||
#undef HAVE_GLIBTOP_MACHINE_H
 | 
			
		||||
 | 
			
		||||
#undef GLIBTOP_NAMES
 | 
			
		||||
#undef GLIBTOP_GUILE
 | 
			
		||||
#undef GLIBTOP_GUILE_NAMES
 | 
			
		||||
#undef GLIBTOP_EXAMPLES
 | 
			
		||||
#undef GLIBTOP_INODEDB
 | 
			
		||||
 | 
			
		||||
#undef NEED_LIBGTOP
 | 
			
		||||
 | 
			
		||||
#undef HAVE_LINUX_TABLE
 | 
			
		||||
#undef HAVE_LIBGTOP_SMP
 | 
			
		||||
 | 
			
		||||
#undef HAVE_XAUTH
 | 
			
		||||
 | 
			
		||||
/* Define if your have the I4B package. */
 | 
			
		||||
#undef HAVE_I4B
 | 
			
		||||
#undef HAVE_I4B_ACCT
 | 
			
		||||
 | 
			
		||||
/* Define to enable debugging. */
 | 
			
		||||
#undef LIBGTOP_ENABLE_DEBUG
 | 
			
		||||
#undef LIBGTOP_FATAL_WARNINGS
 | 
			
		||||
 | 
			
		||||
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
 | 
			
		||||
 * the running kernel (if we don't have configured kernel sources).
 | 
			
		||||
 */
 | 
			
		||||
#undef GLIBTOP_LINUX_VERSION_CODE
 | 
			
		||||
 | 
			
		||||
/* Solaris release code (eg. 251 for Solaris 2.5.1). */
 | 
			
		||||
#undef GLIBTOP_SOLARIS_RELEASE
 | 
			
		||||
 | 
			
		||||
/* Define if you want to use LibGTop without GNOME. */
 | 
			
		||||
#undef WITHOUT_GNOME
 | 
			
		||||
 | 
			
		||||
/* Define if you have the <procfs.h> header file */
 | 
			
		||||
#undef HAVE_PROCFS_H
 | 
			
		||||
 | 
			
		||||
/* Define if you have the <sys/procfs.h> header file */
 | 
			
		||||
#undef HAVE_SYS_PROCFS_H
 | 
			
		||||
							
								
								
									
										433
									
								
								acinclude.m4
									
									
									
									
									
								
							
							
						
						
									
										433
									
								
								acinclude.m4
									
									
									
									
									
								
							@@ -30,7 +30,7 @@ changequote([,]), [#include <sys/types.h>
 | 
			
		||||
], 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, [Define to $2 if <sys/types.h> does not define.])
 | 
			
		||||
  AC_DEFINE($1, $2)
 | 
			
		||||
fi
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
@@ -43,6 +43,8 @@ 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.
 | 
			
		||||
@@ -72,7 +74,7 @@ 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, 1, [Define if $1 () must be declared.])
 | 
			
		||||
  AC_DEFINE_UNQUOTED($gcc_tr_decl)
 | 
			
		||||
else
 | 
			
		||||
  AC_MSG_RESULT(no)
 | 
			
		||||
fi
 | 
			
		||||
@@ -157,8 +159,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is a function named listmntent that can be used to list all mounted filesystems. [UNICOS]])
 | 
			
		||||
AC_DEFINE(MOUNTED_LISTMNTENT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -177,8 +178,7 @@ AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
 | 
			
		||||
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, 1,
 | 
			
		||||
          [Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes a single argument. [4.3BSD, SunOS, HP-UX, Dynix, Irix]])
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNTENT1)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -192,8 +192,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes two arguments.  [SVR4]])
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNTENT2)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -218,8 +217,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is a function named getfsstat for reading the list of mounted filesystems.  [DEC Alpha running OSF/1]])
 | 
			
		||||
AC_DEFINE(MOUNTED_GETFSSTAT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -233,8 +231,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is a function named mntctl that can be used to read the list of mounted filesystems, and there is a system header file that declares `struct vmount.'  [AIX]])
 | 
			
		||||
AC_DEFINE(MOUNTED_VMOUNT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -251,8 +248,7 @@ 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, 1,
 | 
			
		||||
          [Define if (like SVR2) there is no specific function for reading the list of mounted filesystems, and your system has these header files: <sys/fstyp.h> and <sys/statfs.h>.  [SVR3]])
 | 
			
		||||
AC_DEFINE(MOUNTED_FREAD_FSTYP)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -273,8 +269,7 @@ test -n "$ok" \
 | 
			
		||||
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, 1,
 | 
			
		||||
          [Define if there is a function named getmntinfo for reading the list of mounted filesystems.  [4.4BSD]])
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNTINFO)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -292,8 +287,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is a function named getmnt for reading the list of mounted filesystems.  [Ultrix]])
 | 
			
		||||
AC_DEFINE(MOUNTED_GETMNT)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -307,8 +301,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is no specific function for reading the list of mounted filesystems.  fread will be used to read /etc/mnttab.  [SVR2]])
 | 
			
		||||
AC_DEFINE(MOUNTED_FREAD)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -337,8 +330,7 @@ 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, 1,
 | 
			
		||||
          [Define if there is a function named statvfs.  [SVR4]])
 | 
			
		||||
AC_DEFINE(STAT_STATVFS)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -362,8 +354,7 @@ 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, 1,
 | 
			
		||||
          [Define if  statfs takes 3 args.  [DEC Alpha running OSF/1]])
 | 
			
		||||
AC_DEFINE(STAT_STATFS3_OSF1)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -394,8 +385,7 @@ 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, 1,
 | 
			
		||||
          [Define if statfs takes 2 args and struct statfs has a field named f_bsize. [4.3BSD, SunOS 4, HP-UX, AIX PS/2]])
 | 
			
		||||
AC_DEFINE(STAT_STATFS2_BSIZE)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -416,8 +406,7 @@ 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, 1,
 | 
			
		||||
          [Define if statfs takes 4 args.  [SVR3, Dynix, Irix, Dolphin]])
 | 
			
		||||
AC_DEFINE(STAT_STATFS4)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -445,8 +434,7 @@ 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, 1,
 | 
			
		||||
          [Define if statfs takes 2 args and struct statfs has a field named f_fsize. [4.4BSD, NetBSD]])
 | 
			
		||||
AC_DEFINE(STAT_STATFS2_FSIZE)
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -477,17 +465,14 @@ 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, 1,
 | 
			
		||||
          [Define if statfs takes 2 args and the second argument has type struct fs_data.  [Ultrix]])
 | 
			
		||||
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, 1,
 | 
			
		||||
          [Define if there is no specific function for reading filesystems usage information and you have the <sys/filsys.h> header file.  [SVR2]])
 | 
			
		||||
space=yes)
 | 
			
		||||
AC_DEFINE(STAT_READ_FILSYS) space=yes)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test -n "$list_mounted_fs" && test $space != no; then
 | 
			
		||||
@@ -512,14 +497,384 @@ 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, 1,
 | 
			
		||||
          [Define if the block counts reported by statfs may be truncated to 2GB and the correct values may be stored in the f_spare array. [SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be affected.]])
 | 
			
		||||
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, 1, [Define if you have the Andrew File System.])
 | 
			
		||||
test -d /afs && AC_DEFINE(AFS)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
dnl GNOME_SUPPORT_CHECKS
 | 
			
		||||
dnl    Check for various support functions needed by the standard
 | 
			
		||||
dnl    Gnome libraries.  Sets LIBOBJS, might define some macros.
 | 
			
		||||
dnl    This should only be used when building the Gnome libs; 
 | 
			
		||||
dnl    Gnome clients should not need this macro.
 | 
			
		||||
AC_DEFUN([GNOME_SUPPORT_CHECKS],[
 | 
			
		||||
  # we need an `awk' to build `gnomesupport.h'
 | 
			
		||||
  AC_REQUIRE([AC_PROG_AWK])
 | 
			
		||||
 | 
			
		||||
  # this should go away soon
 | 
			
		||||
  need_gnome_support=yes
 | 
			
		||||
 | 
			
		||||
  AC_CHECK_FUNCS(getopt_long,,
 | 
			
		||||
   [AC_LIBOBJ(getopt)
 | 
			
		||||
    AC_LIBOBJ(getopt1)])
 | 
			
		||||
 | 
			
		||||
  # for `scandir'
 | 
			
		||||
  AC_HEADER_DIRENT
 | 
			
		||||
 | 
			
		||||
  # copied from `configure.in' of `libiberty'
 | 
			
		||||
  vars="program_invocation_short_name program_invocation_name sys_errlist"
 | 
			
		||||
  for v in $vars; do
 | 
			
		||||
    AC_MSG_CHECKING([for $v])
 | 
			
		||||
    AC_CACHE_VAL(gnome_cv_var_$v,
 | 
			
		||||
      [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
 | 
			
		||||
		   [eval "gnome_cv_var_$v=yes"],
 | 
			
		||||
		   [eval "gnome_cv_var_$v=no"])])
 | 
			
		||||
    if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
 | 
			
		||||
      AC_MSG_RESULT(yes)
 | 
			
		||||
      n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 | 
			
		||||
      AC_DEFINE_UNQUOTED($n)
 | 
			
		||||
    else
 | 
			
		||||
      AC_MSG_RESULT(no)
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
 | 
			
		||||
  AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
 | 
			
		||||
  AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
 | 
			
		||||
 | 
			
		||||
  AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize))
 | 
			
		||||
 | 
			
		||||
  # to include `error.c' error.c has some HAVE_* checks
 | 
			
		||||
  AC_CHECK_FUNCS(vprintf doprnt strerror_r)
 | 
			
		||||
  # stolen from am_func_error_at_line
 | 
			
		||||
  AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
 | 
			
		||||
  [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
 | 
			
		||||
              am_cv_lib_error_at_line=yes,
 | 
			
		||||
              am_cv_lib_error_at_line=no)])
 | 
			
		||||
  if test $am_cv_lib_error_at_line = no; then
 | 
			
		||||
    AC_LIBOBJ(error)
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  # This is required if we declare setreuid () and setregid ().
 | 
			
		||||
  AC_TYPE_UID_T
 | 
			
		||||
 | 
			
		||||
  # see if we need to declare some functions.  Solaris is notorious for
 | 
			
		||||
  # putting functions into the `libc' but not listing them in the headers
 | 
			
		||||
  AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
 | 
			
		||||
  GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
 | 
			
		||||
  GCC_NEED_DECLARATION(scandir,[
 | 
			
		||||
#ifdef HAVE_DIRENT_H
 | 
			
		||||
#include <dirent.h>
 | 
			
		||||
#endif
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
  AC_SUBST(need_gnome_support)
 | 
			
		||||
 | 
			
		||||
  AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
m4_include([libgtop-sysdeps.m4])
 | 
			
		||||
dnl This file is intended for use both internally in libgtop and in every program
 | 
			
		||||
dnl that wants to use it.
 | 
			
		||||
dnl
 | 
			
		||||
dnl It defines the following variables:
 | 
			
		||||
dnl
 | 
			
		||||
dnl * 'libgtop_sysdeps_dir'    - sysdeps dir for libgtop.
 | 
			
		||||
dnl * 'libgtop_use_machine_h'  - some of system dependend parts of libgtop provide
 | 
			
		||||
dnl                              their own header file. In this case we need to
 | 
			
		||||
dnl                              define 'HAVE_GLIBTOP_MACHINE_H'.
 | 
			
		||||
dnl * 'libgtop_need_server'    - is the server really needed? Defines 'NEED_LIBGTOP'
 | 
			
		||||
dnl                              if true; defines conditional 'NEED_LIBGTOP'.
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([LIBGTOP_HACKER_TESTS],[
 | 
			
		||||
	AC_REQUIRE([AC_CANONICAL_HOST])
 | 
			
		||||
 | 
			
		||||
	AC_ARG_WITH(linux-table,
 | 
			
		||||
      [  --with-linux-table      Use the table () function from Martin Baulig],
 | 
			
		||||
	[linux_table="$withval"],[linux_table=auto])
 | 
			
		||||
	case "$host_os" in
 | 
			
		||||
	linux*)
 | 
			
		||||
	  if test $linux_table = yes ; then
 | 
			
		||||
	    AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no)
 | 
			
		||||
	  elif test $linux_table = auto ; then
 | 
			
		||||
	    AC_MSG_CHECKING(for table function in Linux Kernel)
 | 
			
		||||
	    AC_TRY_RUN([
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <linux/unistd.h>
 | 
			
		||||
#include <linux/table.h>
 | 
			
		||||
 | 
			
		||||
#include <syscall.h>
 | 
			
		||||
 | 
			
		||||
static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main (void)
 | 
			
		||||
{
 | 
			
		||||
	union table tbl;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	ret = table (TABLE_VERSION, NULL, NULL);
 | 
			
		||||
 | 
			
		||||
	if (ret == -1)
 | 
			
		||||
		exit (-errno);
 | 
			
		||||
 | 
			
		||||
	exit (ret < 1 ? ret : 0);
 | 
			
		||||
}
 | 
			
		||||
], linux_table=yes, linux_table=no, linux_table=no)
 | 
			
		||||
	    AC_MSG_RESULT($linux_table)
 | 
			
		||||
	  fi
 | 
			
		||||
	  if test $linux_table = yes ; then
 | 
			
		||||
	    AC_DEFINE(HAVE_LINUX_TABLE)
 | 
			
		||||
	  fi
 | 
			
		||||
	  ;;
 | 
			
		||||
	esac
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
 | 
			
		||||
	AC_REQUIRE([AC_CANONICAL_HOST])
 | 
			
		||||
 | 
			
		||||
	AC_SUBST(libgtop_sysdeps_dir)
 | 
			
		||||
	AC_SUBST(libgtop_use_machine_h)
 | 
			
		||||
	AC_SUBST(libgtop_need_server)
 | 
			
		||||
 | 
			
		||||
	AC_ARG_WITH(libgtop-examples,
 | 
			
		||||
	[  --with-libgtop-examples Build the libgtop examples (default=no)],[
 | 
			
		||||
	build_examples="$withval"], [build_examples=no])
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes)
 | 
			
		||||
 | 
			
		||||
	AC_ARG_ENABLE(hacker-mode,
 | 
			
		||||
	[  --enable-hacker-mode    Enable building of unstable sysdeps],
 | 
			
		||||
	[hacker_mode="$enableval"], [hacker_mode=no])
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes)
 | 
			
		||||
 | 
			
		||||
	linux_table=auto
 | 
			
		||||
	if test x$hacker_mode = xyes ; then
 | 
			
		||||
	  LIBGTOP_HACKER_TESTS
 | 
			
		||||
	fi
 | 
			
		||||
	AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes)
 | 
			
		||||
 | 
			
		||||
	AC_ARG_WITH(libgtop-smp,
 | 
			
		||||
	[  --with-libgtop-smp      Enable SMP support (default-auto)],[
 | 
			
		||||
	libgtop_smp="$withval"],[libgtop_smp=auto])
 | 
			
		||||
 | 
			
		||||
	if test $libgtop_smp = auto ; then
 | 
			
		||||
	  AC_MSG_CHECKING(whether to enable SMP support)
 | 
			
		||||
	  case "$host_os" in
 | 
			
		||||
	  linux*)
 | 
			
		||||
	    libgtop_smp=yes
 | 
			
		||||
	    ;;
 | 
			
		||||
	  aix*)
 | 
			
		||||
	    libgtop_smp=yes
 | 
			
		||||
	    ;;
 | 
			
		||||
	  *)
 | 
			
		||||
	    libgtop_smp=no
 | 
			
		||||
	    ;;
 | 
			
		||||
	  esac
 | 
			
		||||
	  AC_MSG_RESULT($libgtop_smp)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if test $libgtop_smp = yes ; then
 | 
			
		||||
	  AC_DEFINE(HAVE_LIBGTOP_SMP)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes)
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING(for libgtop sysdeps directory)
 | 
			
		||||
 | 
			
		||||
	case "$host_os" in
 | 
			
		||||
	linux*)
 | 
			
		||||
	  if test x$linux_table = xyes ; then
 | 
			
		||||
	    libgtop_sysdeps_dir=kernel
 | 
			
		||||
	    libgtop_use_machine_h=no
 | 
			
		||||
	  else
 | 
			
		||||
	    libgtop_sysdeps_dir=linux
 | 
			
		||||
	    libgtop_use_machine_h=no
 | 
			
		||||
	    libgtop_have_sysinfo=yes
 | 
			
		||||
	  fi
 | 
			
		||||
	  libgtop_need_server=no
 | 
			
		||||
	  ;;
 | 
			
		||||
	freebsd*|netbsd*|openbsd*|bsdi*)
 | 
			
		||||
	  libgtop_sysdeps_dir=freebsd
 | 
			
		||||
	  libgtop_use_machine_h=yes
 | 
			
		||||
	  libgtop_need_server=yes
 | 
			
		||||
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
 | 
			
		||||
	  ;;
 | 
			
		||||
	solaris*)
 | 
			
		||||
	  libgtop_sysdeps_dir=solaris
 | 
			
		||||
	  libgtop_use_machine_h=yes
 | 
			
		||||
	  libgtop_need_server=yes
 | 
			
		||||
	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
 | 
			
		||||
	  ;;
 | 
			
		||||
        aix*)
 | 
			
		||||
	  libgtop_sysdeps_dir=aix
 | 
			
		||||
	  libgtop_use_machine_h=yes
 | 
			
		||||
	  libgtop_need_server=yes
 | 
			
		||||
	  libgtop_have_sysinfo=yes
 | 
			
		||||
	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
 | 
			
		||||
          ;;
 | 
			
		||||
	*)
 | 
			
		||||
	  if test x$hacker_mode = xyes ; then
 | 
			
		||||
	    case "$host_os" in
 | 
			
		||||
	    sunos4*)
 | 
			
		||||
	      #Please note that this port is obsolete and not working at
 | 
			
		||||
	      #all. It is only useful for people who want to fix it ... :-)
 | 
			
		||||
	      libgtop_sysdeps_dir=sun4
 | 
			
		||||
	      libgtop_use_machine_h=yes
 | 
			
		||||
	      libgtop_need_server=yes
 | 
			
		||||
	      ;;
 | 
			
		||||
	    osf*)
 | 
			
		||||
	      libgtop_sysdeps_dir=osf1
 | 
			
		||||
	      libgtop_use_machine_h=yes
 | 
			
		||||
	      libgtop_need_server=yes
 | 
			
		||||
	      ;;
 | 
			
		||||
	    *)
 | 
			
		||||
	      libgtop_sysdeps_dir=stub
 | 
			
		||||
	      libgtop_use_machine_h=no
 | 
			
		||||
	      libgtop_need_server=no
 | 
			
		||||
	      ;;
 | 
			
		||||
	    esac
 | 
			
		||||
	  else
 | 
			
		||||
	    libgtop_sysdeps_dir=stub
 | 
			
		||||
	    libgtop_use_machine_h=no
 | 
			
		||||
	    libgtop_need_server=no
 | 
			
		||||
	  fi
 | 
			
		||||
	  ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	test -z "$libgtop_postinstall" && libgtop_postinstall=:
 | 
			
		||||
 | 
			
		||||
	AC_MSG_RESULT($libgtop_sysdeps_dir)
 | 
			
		||||
 | 
			
		||||
	AC_SUBST(libgtop_sysdeps_dir)
 | 
			
		||||
	AC_SUBST(libgtop_postinstall)
 | 
			
		||||
	AC_SUBST(libgtop_have_sysinfo)
 | 
			
		||||
 | 
			
		||||
	case "$host_os" in
 | 
			
		||||
	*bsd*)
 | 
			
		||||
	  AC_CHECK_HEADERS(net/if_var.h)
 | 
			
		||||
	  AC_MSG_CHECKING([for I4B])
 | 
			
		||||
	  AC_TRY_COMPILE([
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/if_types.h>
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_NET_IF_VAR_H
 | 
			
		||||
#include <net/if_var.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <net/netisr.h>
 | 
			
		||||
#include <net/route.h>
 | 
			
		||||
 | 
			
		||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
 | 
			
		||||
#include <net/if_sppp.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <i4b/sppp/if_sppp.h>
 | 
			
		||||
#endif
 | 
			
		||||
],[
 | 
			
		||||
	size_t size = sizeof (struct sppp);
 | 
			
		||||
], have_i4b=yes, have_i4b=no)
 | 
			
		||||
	  AC_MSG_RESULT($have_i4b)
 | 
			
		||||
	  if test x$have_i4b = xyes; then
 | 
			
		||||
	    AC_DEFINE(HAVE_I4B)
 | 
			
		||||
	    AC_MSG_CHECKING([for I4B accounting])
 | 
			
		||||
	    AC_TRY_COMPILE([
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/if_types.h>
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_NET_IF_VAR_H
 | 
			
		||||
#include <net/if_var.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <net/netisr.h>
 | 
			
		||||
#include <net/route.h>
 | 
			
		||||
 | 
			
		||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
 | 
			
		||||
#include <net/if_sppp.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <i4b/sppp/if_sppp.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <machine/i4b_acct.h>
 | 
			
		||||
],[
 | 
			
		||||
	size_t size = sizeof (struct i4bisppp_softc);
 | 
			
		||||
], have_i4b_acct=yes, have_i4b_acct=no)
 | 
			
		||||
	    AC_MSG_RESULT($have_i4b_acct)
 | 
			
		||||
	    if test x$have_i4b_acct = xyes ; then
 | 
			
		||||
	      AC_DEFINE(HAVE_I4B_ACCT)
 | 
			
		||||
	    else
 | 
			
		||||
	      AC_WARN([
 | 
			
		||||
*** I4B accounting disabled - you won't get any PPP statistics.
 | 
			
		||||
*** Read "misc/i4b_acct.txt" in the LibGTop source directory
 | 
			
		||||
*** to see how to enable it.])
 | 
			
		||||
	    fi
 | 
			
		||||
	  fi
 | 
			
		||||
	  ;;
 | 
			
		||||
	linux*)
 | 
			
		||||
	  os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
 | 
			
		||||
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
 | 
			
		||||
	  os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
 | 
			
		||||
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
 | 
			
		||||
	  os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
 | 
			
		||||
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
 | 
			
		||||
	  os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q"
 | 
			
		||||
 | 
			
		||||
	  AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes,
 | 
			
		||||
	    have_linux_version_h=no)
 | 
			
		||||
 | 
			
		||||
	  if test x$have_linux_version_h = xyes ; then
 | 
			
		||||
	    version_code=`cat /usr/include/linux/version.h | \
 | 
			
		||||
	      grep \#define | grep LINUX_VERSION_CODE`
 | 
			
		||||
	    os_version_code=`echo $version_code | \
 | 
			
		||||
	      sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'`
 | 
			
		||||
	  else
 | 
			
		||||
	    os_version_code=`echo "$os_version_expr" | dc`
 | 
			
		||||
	  fi
 | 
			
		||||
 | 
			
		||||
	  AC_MSG_CHECKING(for Linux kernel version code)
 | 
			
		||||
	  AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code)
 | 
			
		||||
	  AC_MSG_RESULT($os_version_code)
 | 
			
		||||
	  ;;
 | 
			
		||||
	solaris*)
 | 
			
		||||
	  os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'`
 | 
			
		||||
	  os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'`
 | 
			
		||||
	  os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'`
 | 
			
		||||
	  test -z "$os_micro_version" && os_micro_version=0
 | 
			
		||||
	  os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q"
 | 
			
		||||
	  os_version_code=`echo "$os_version_expr" | dc`
 | 
			
		||||
 | 
			
		||||
	  AC_MSG_CHECKING(for Solaris release code)
 | 
			
		||||
	  AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code)
 | 
			
		||||
	  AC_MSG_RESULT($os_version_code)
 | 
			
		||||
	  ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir)
 | 
			
		||||
	AC_MSG_RESULT($libgtop_use_machine_h)
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING(whether we need libgtop)
 | 
			
		||||
	AC_MSG_RESULT($libgtop_need_server)
 | 
			
		||||
 | 
			
		||||
	if test x$libgtop_need_server = xyes ; then
 | 
			
		||||
	  AC_DEFINE(NEED_LIBGTOP)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if test x$libgtop_use_machine_h = xyes ; then
 | 
			
		||||
	  AC_DEFINE(HAVE_GLIBTOP_MACHINE_H)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
 
 | 
			
		||||
@@ -18,5 +18,4 @@ which gnome-autogen.sh || {
 | 
			
		||||
    echo "You need to install gnome-common from the GNOME CVS"
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
REQUIRED_AUTOMAKE_VERSION=1.9
 | 
			
		||||
. gnome-autogen.sh
 | 
			
		||||
USE_GNOME2_MACROS=1 . gnome-autogen.sh
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								backends/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								backends/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
							
								
								
									
										15
									
								
								backends/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								backends/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
if NEED_LIBGTOP
 | 
			
		||||
server_dir	= server
 | 
			
		||||
else
 | 
			
		||||
server_dir	=
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if HAVE_SYSDEPS
 | 
			
		||||
sysdeps_dir	= sysdeps
 | 
			
		||||
else
 | 
			
		||||
sysdeps_dir	=
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
SUBDIRS		= $(server_dir) $(sysdeps_dir) common
 | 
			
		||||
 | 
			
		||||
DIST_SUBDIRS	= server sysdeps common
 | 
			
		||||
							
								
								
									
										7
									
								
								backends/common/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								backends/common/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.la
 | 
			
		||||
marshal.c
 | 
			
		||||
							
								
								
									
										42
									
								
								backends/common/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								backends/common/ChangeLog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
2000-11-26  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* glibtop-backend-private.h: Removed.
 | 
			
		||||
 | 
			
		||||
	* backend-common.h: New files.
 | 
			
		||||
 | 
			
		||||
	* backend-common.c (_open_common): Don't overwrite
 | 
			
		||||
	`backend->_priv'.
 | 
			
		||||
 | 
			
		||||
2000-11-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Link libgtop_backend_common.la against
 | 
			
		||||
	$(top_builddir)/sysdeps/common/libgtop_common.la and
 | 
			
		||||
	$(top_builddir)/lib/libgtop_server.la.
 | 
			
		||||
 | 
			
		||||
2000-02-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.c (LibGTopBackendInfo): Call this
 | 
			
		||||
	`LibGTopBackendInfo_Common' when we don't use gmodule.
 | 
			
		||||
 | 
			
		||||
2000-02-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
 | 
			
		||||
	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
 | 
			
		||||
 | 
			
		||||
2000-01-12  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
 | 
			
		||||
 | 
			
		||||
	* libgtop-common.backend: New file.
 | 
			
		||||
 | 
			
		||||
	* backend-common.c (glibtop_backend_common): Renamed to
 | 
			
		||||
	`LibGTopBackendInfo'.
 | 
			
		||||
 | 
			
		||||
2000-01-12  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	Initial version of the "glibtop-backend-common" backend.
 | 
			
		||||
 | 
			
		||||
	* backend-common.c: New file.
 | 
			
		||||
	* glibtop-backend-private.h: New file.
 | 
			
		||||
	* marshal.pl: New file. Automatically creates `marshal.c'.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										47
									
								
								backends/common/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								backends/common/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
 | 
			
		||||
 | 
			
		||||
INCLUDES	= @INCLUDES@
 | 
			
		||||
 | 
			
		||||
backenddir	= @LIBGTOP_BACKEND_DIR@
 | 
			
		||||
 | 
			
		||||
if LIBGTOP_USE_GMODULE
 | 
			
		||||
backendlibdir	= $(backenddir)
 | 
			
		||||
else
 | 
			
		||||
backendlibdir	= $(libdir)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
dynamic_ldflags	= @libgtop_dynamic_ldflags@
 | 
			
		||||
 | 
			
		||||
backend_DATA = \
 | 
			
		||||
	libgtop-common.backend
 | 
			
		||||
 | 
			
		||||
noinst_HEADERS = \
 | 
			
		||||
	backend-common.h
 | 
			
		||||
 | 
			
		||||
backendlib_LTLIBRARIES = \
 | 
			
		||||
	libgtop_backend_common.la
 | 
			
		||||
 | 
			
		||||
libgtop_backend_common_la_SOURCES = \
 | 
			
		||||
	backend-common.c		\
 | 
			
		||||
	marshal.c
 | 
			
		||||
 | 
			
		||||
libgtop_backend_common_la_LDFLAGS = \
 | 
			
		||||
	$(LT_VERSION_INFO) $(dynamic_ldflags)
 | 
			
		||||
 | 
			
		||||
libgtop_backend_common_la_LIBADD = \
 | 
			
		||||
	$(top_builddir)/sysdeps/common/libgtop_common.la	\
 | 
			
		||||
	$(top_builddir)/lib/libgtop_server.la
 | 
			
		||||
 | 
			
		||||
BUILT_SOURCES = \
 | 
			
		||||
	marshal.c
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = \
 | 
			
		||||
	marshal.pl	\
 | 
			
		||||
	libgtop-common.backend
 | 
			
		||||
 | 
			
		||||
CLEANFILES = $(BUILT_SOURCES)
 | 
			
		||||
 | 
			
		||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
 | 
			
		||||
	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
 | 
			
		||||
	mv tmp-t marshal.c
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										61
									
								
								backends/common/backend-common.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								backends/common/backend-common.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-common.h>
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_open_common (glibtop_server *, glibtop_backend *, u_int64_t, const char **);
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_close_common (glibtop_server *, glibtop_backend *, void *closure);
 | 
			
		||||
 | 
			
		||||
extern glibtop_call_vector glibtop_backend_common_call_vector;
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_USE_GMODULE
 | 
			
		||||
glibtop_backend_info LibGTopBackendInfo = {
 | 
			
		||||
    "glibtop-backend-common", _open_common, _close_common,
 | 
			
		||||
    &glibtop_backend_common_call_vector
 | 
			
		||||
};
 | 
			
		||||
#else
 | 
			
		||||
glibtop_backend_info LibGTopBackendInfo_Common = {
 | 
			
		||||
    "glibtop-backend-common", _open_common, _close_common,
 | 
			
		||||
    &glibtop_backend_common_call_vector
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_open_common (glibtop_server *server, glibtop_backend *backend,
 | 
			
		||||
	      u_int64_t features, const char **backend_args)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_close_common (glibtop_server *server, glibtop_backend *backend,
 | 
			
		||||
	       void *closure)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,4 +1,11 @@
 | 
			
		||||
/* This file is part of LibGTop 2.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
 | 
			
		||||
@@ -16,24 +23,15 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#ifndef __GLIBTOP_BACKEND_COMMON_H__
 | 
			
		||||
#define __GLIBTOP_BACKEND_COMMON_H__
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/netlist.h>
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netlist = 0;
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
#include <glibtop/glibtop-backend.h>
 | 
			
		||||
#include <glibtop/glibtop-backend-info.h>
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_netlist_s (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.netlist = _glibtop_sysdeps_netlist;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char**
 | 
			
		||||
glibtop_get_netlist_s (glibtop *server, glibtop_netlist *buf)
 | 
			
		||||
{
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_netlist));
 | 
			
		||||
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										13
									
								
								backends/common/libgtop-common.backend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backends/common/libgtop-common.backend
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
 | 
			
		||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
 | 
			
		||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
 | 
			
		||||
 | 
			
		||||
  <libgtop:Backend>
 | 
			
		||||
    <libgtop:Name>glibtop-backend-common</libgtop:Name>
 | 
			
		||||
    <libgtop:Location>
 | 
			
		||||
      <libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName>
 | 
			
		||||
      <libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName>
 | 
			
		||||
    </libgtop:Location>
 | 
			
		||||
  </libgtop:Backend>
 | 
			
		||||
 | 
			
		||||
</libgtop:Backends>
 | 
			
		||||
							
								
								
									
										175
									
								
								backends/common/marshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								backends/common/marshal.pl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,175 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
 | 
			
		||||
require 'c_types.pl';
 | 
			
		||||
 | 
			
		||||
$[ = 1;			# set array base to 1
 | 
			
		||||
$, = ' ';		# set output field separator
 | 
			
		||||
$\ = "\n";		# set output record separator
 | 
			
		||||
 | 
			
		||||
$always_use_temp_storage = 1;
 | 
			
		||||
 | 
			
		||||
sub toupper {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/a-z/A-Z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub tolower {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/A-Z/a-z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print '/* marshal.c */';
 | 
			
		||||
print "/* This is a generated file.  Please modify `marshal.pl' */";
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
print '#include <backend-common.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/sysdeps.h>';
 | 
			
		||||
print '#include <glibtop/union.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/call-vector.h>';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
$feature_count = 0;
 | 
			
		||||
 | 
			
		||||
while (<>) {
 | 
			
		||||
    chop;	# strip record separator
 | 
			
		||||
 | 
			
		||||
    if (/^[^#]/) {
 | 
			
		||||
	&output($_);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub output {
 | 
			
		||||
    local($line) = @_;
 | 
			
		||||
    @line_fields = split(/\|/, $line, 9999);
 | 
			
		||||
    $retval = $line_fields[1];
 | 
			
		||||
    $feature = $line_fields[2];
 | 
			
		||||
    $param_def = $line_fields[4];
 | 
			
		||||
 | 
			
		||||
    $orig = $feature;
 | 
			
		||||
    $feature =~ s/^@//;
 | 
			
		||||
    $space = $feature;
 | 
			
		||||
    $space =~ s/./ /g;
 | 
			
		||||
 | 
			
		||||
    $features{++$feature_count} = $orig;
 | 
			
		||||
 | 
			
		||||
    return unless $orig =~ /^@/;
 | 
			
		||||
 | 
			
		||||
    if ($retval eq 'retval') {
 | 
			
		||||
      $retval_param = '&retval';
 | 
			
		||||
      $call_prefix = '';
 | 
			
		||||
      $call_prefix_space = '';
 | 
			
		||||
      $prefix = 'retval = ';
 | 
			
		||||
      $prefix_space = '         ';
 | 
			
		||||
      $retval = 'int';
 | 
			
		||||
    }
 | 
			
		||||
    elsif ($retval !~ /^void$/) {
 | 
			
		||||
      $retval_param = 'NULL';
 | 
			
		||||
      $prefix = 'retval = ';
 | 
			
		||||
      $prefix_space = '         ';
 | 
			
		||||
      $call_prefix = 'retval = ';
 | 
			
		||||
      $call_prefix_space = '         ';
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      $retval_param = 'NULL';
 | 
			
		||||
      $call_prefix = '';
 | 
			
		||||
      $call_prefix_space = '';
 | 
			
		||||
      $prefix = '';
 | 
			
		||||
      $prefix_space = '';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($retval =~ /^(array|pointer)\((.*)\)$/) {
 | 
			
		||||
      $retval = ($2 eq 'string') ? 'char **' : "$2 *";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $need_temp_storage = $always_use_temp_storage;
 | 
			
		||||
    $first_param_name = '';
 | 
			
		||||
 | 
			
		||||
    $call_param = '';
 | 
			
		||||
    $param_decl = '';
 | 
			
		||||
    $need_temp_len = 0;
 | 
			
		||||
    $nr_params = (@params = split(/:/, $param_def, 9999));
 | 
			
		||||
    for ($param = 1; $param <= $nr_params; $param++) {
 | 
			
		||||
      $list = $params[$param];
 | 
			
		||||
      $type = $params[$param];
 | 
			
		||||
      $type =~ s/\(.*//;
 | 
			
		||||
      $list =~ s/^.*\(//;
 | 
			
		||||
      $list =~ s/\)$//;
 | 
			
		||||
      $count = (@fields = split(/,/, $list, 9999));
 | 
			
		||||
      for ($field = 1; $field <= $count; $field++) {
 | 
			
		||||
	my $c_type = $typeinfo->{$type}->[1];
 | 
			
		||||
 | 
			
		||||
	if ($first_param_name eq '') {
 | 
			
		||||
	  $first_param_name = $fields[$field];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	  $need_temp_storage = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ($param_decl eq '') {
 | 
			
		||||
	  $param_decl = ",\n             " . $space . '    ';
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	  $param_decl = $param_decl . ', ';
 | 
			
		||||
	}
 | 
			
		||||
	$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
 | 
			
		||||
	$call_param = $call_param . ', ' . $fields[$field];
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($line_fields[3] eq '') {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
 | 
			
		||||
    } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
 | 
			
		||||
    } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
 | 
			
		||||
    } else {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $func_decl = 'static '.$retval."\n";
 | 
			
		||||
    if ($line_fields[3] eq '') {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
 | 
			
		||||
			     $feature, $param_decl);
 | 
			
		||||
    } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
 | 
			
		||||
			     $feature, $param_decl);
 | 
			
		||||
    } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
 | 
			
		||||
			     $feature, 'glibtop_'.$feature, $param_decl);
 | 
			
		||||
    } else {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
 | 
			
		||||
			     $feature, 'glibtop_'.$feature, $param_decl);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
 | 
			
		||||
 | 
			
		||||
    print $total_code;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$call_vector_code = '';
 | 
			
		||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
 | 
			
		||||
  $feature = $features{$nr};
 | 
			
		||||
 | 
			
		||||
  if ($feature =~ /^@/) {
 | 
			
		||||
    $feature =~ s/^@//;
 | 
			
		||||
 | 
			
		||||
    $call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature);
 | 
			
		||||
  } else {
 | 
			
		||||
    $call_vector_code .= sprintf (qq[\tNULL,\n]);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print 'glibtop_call_vector glibtop_backend_common_call_vector = {';
 | 
			
		||||
print $call_vector_code;
 | 
			
		||||
print '};';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								backends/server/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								backends/server/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.la
 | 
			
		||||
marshal.c
 | 
			
		||||
demarshal.c
 | 
			
		||||
libgtop_server
 | 
			
		||||
command.h
 | 
			
		||||
							
								
								
									
										85
									
								
								backends/server/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								backends/server/ChangeLog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
2000-11-27  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* backend-server.c (backend_server_quark): New global variable.
 | 
			
		||||
	(_open_server, _close_server): Use the quark.
 | 
			
		||||
	* commands.c: Likewise.
 | 
			
		||||
 | 
			
		||||
2000-11-26  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* backend-server.h: New file.
 | 
			
		||||
	(backend_server_private): New struct, formerly known
 | 
			
		||||
	as glibtop_backend_private.
 | 
			
		||||
 | 
			
		||||
	* glibtop-backend-private.h: Removed.
 | 
			
		||||
 | 
			
		||||
	* backend-server.c: (_open_server): Use g_object_set_data()
 | 
			
		||||
	to set add the backend_server_private data to the glibtop_backend,
 | 
			
		||||
	don't override `backend->_priv'.
 | 
			
		||||
	(_close_server): Use g_object_get_data() to get the data.
 | 
			
		||||
	[FIXME: Use quarks directly.]
 | 
			
		||||
 | 
			
		||||
	* read.c: (glibtop_read_i): Replaced the glibtop_server and
 | 
			
		||||
	glibtop_backend arguments with backend_server_private.
 | 
			
		||||
	* read_data.c: (glibtop_read_data_i): Likewise.
 | 
			
		||||
	* write.c: (glibtop_write_i): Likewise.
 | 
			
		||||
 | 
			
		||||
2000-02-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.c (LibGTopBackendInfo): Call this
 | 
			
		||||
	`LibGTopBackendInfo_Server' when we don't use gmodule.
 | 
			
		||||
 | 
			
		||||
2000-02-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
 | 
			
		||||
	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
 | 
			
		||||
 | 
			
		||||
2000-01-18  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* demarshal.pl: Only emit code for functions which are
 | 
			
		||||
	really suid/sgid.
 | 
			
		||||
 | 
			
		||||
2000-01-13  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* write.c (glibtop_write_i): The buffer which we write is
 | 
			
		||||
	now a `const'.
 | 
			
		||||
 | 
			
		||||
2000-01-12  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Install everything except the server binary
 | 
			
		||||
	in $(LIBGTOP_BACKEND_DIR).
 | 
			
		||||
 | 
			
		||||
	* libgtop-server.backend: New file.
 | 
			
		||||
 | 
			
		||||
	* backend-server.c (glibtop_backend_server): Renamed to
 | 
			
		||||
	`LibGTopBackendInfo'.
 | 
			
		||||
 | 
			
		||||
2000-01-08  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* command.h.in (glibtop_response): New structure.
 | 
			
		||||
 | 
			
		||||
2000-01-02  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* command.pl: New file. Creates `command.h' from `command.h.in'.
 | 
			
		||||
	* command.h.in: New file. Template file for `command.h'.
 | 
			
		||||
 | 
			
		||||
	* io.c, version.c: New files. Copied here from `src/daemon'.
 | 
			
		||||
 | 
			
		||||
	* demarshal.pl: New file. Automatically creates `demarshal.c'.
 | 
			
		||||
	* demarshal.c: This automatically created file handles the
 | 
			
		||||
	demarshalling in the libgtop_server.
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Build the `libgtop_server' here.
 | 
			
		||||
	* server.c, server.h: New files. Copied here from `src/daemon'.
 | 
			
		||||
 | 
			
		||||
2000-01-01  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	Initial version of the "glibtop-backend-server" backend.
 | 
			
		||||
 | 
			
		||||
	* command.c, read.c, read_data.c, write.c: New files. Moved here
 | 
			
		||||
	from the `lib' directory.
 | 
			
		||||
 | 
			
		||||
	* backend-server.c: New file.
 | 
			
		||||
	* glibtop-backend-private.h: New file.
 | 
			
		||||
 | 
			
		||||
	* marshal.pl: New file. Automatically creates `marshal.c'.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								backends/server/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								backends/server/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
 | 
			
		||||
 | 
			
		||||
INCLUDES	= @INCLUDES@ -D_BSD \
 | 
			
		||||
		  -DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
 | 
			
		||||
		  -DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
 | 
			
		||||
		  -DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
 | 
			
		||||
 | 
			
		||||
backenddir	= @LIBGTOP_BACKEND_DIR@
 | 
			
		||||
 | 
			
		||||
if LIBGTOP_USE_GMODULE
 | 
			
		||||
backendlibdir	= $(backenddir)
 | 
			
		||||
else
 | 
			
		||||
backendlibdir	= $(libdir)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
dynamic_ldflags	= @libgtop_dynamic_ldflags@
 | 
			
		||||
 | 
			
		||||
backend_DATA = \
 | 
			
		||||
	libgtop-server.backend
 | 
			
		||||
 | 
			
		||||
noinst_HEADERS = \
 | 
			
		||||
	backend-server.h
 | 
			
		||||
 | 
			
		||||
backendlib_LTLIBRARIES = \
 | 
			
		||||
	libgtop_backend_server.la
 | 
			
		||||
 | 
			
		||||
bin_PROGRAMS = \
 | 
			
		||||
	@server_programs@
 | 
			
		||||
 | 
			
		||||
EXTRA_PROGRAMS = \
 | 
			
		||||
	libgtop_server
 | 
			
		||||
 | 
			
		||||
libgtop_backend_server_la_SOURCES = \
 | 
			
		||||
	backend-server.c		\
 | 
			
		||||
	marshal.c			\
 | 
			
		||||
	command.c			\
 | 
			
		||||
	read.c				\
 | 
			
		||||
	read_data.c			\
 | 
			
		||||
	write.c
 | 
			
		||||
 | 
			
		||||
libgtop_backend_server_la_LDFLAGS = \
 | 
			
		||||
	$(LT_VERSION_INFO) $(dynamic_ldflags)
 | 
			
		||||
 | 
			
		||||
libgtop_server_SOURCES = \
 | 
			
		||||
	server.c		\
 | 
			
		||||
	server.h		\
 | 
			
		||||
	demarshal.c		\
 | 
			
		||||
	version.c		\
 | 
			
		||||
	io.c
 | 
			
		||||
 | 
			
		||||
libgtop_server_LDADD = \
 | 
			
		||||
	$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
 | 
			
		||||
	$(top_builddir)/sysdeps/common/libgtop_suid_common.la \
 | 
			
		||||
	@LIBSUPPORT@
 | 
			
		||||
 | 
			
		||||
if ENABLE_STATIC
 | 
			
		||||
libgtop_server_LDFLAGS = -static
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
BUILT_SOURCES = \
 | 
			
		||||
	marshal.c		\
 | 
			
		||||
	demarshal.c		\
 | 
			
		||||
	command.h
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = \
 | 
			
		||||
	marshal.pl		\
 | 
			
		||||
	demarshal.pl		\
 | 
			
		||||
	command.pl		\
 | 
			
		||||
	command.h.in		\
 | 
			
		||||
	libgtop-server.backend
 | 
			
		||||
 | 
			
		||||
CLEANFILES = $(BUILT_SOURCES)
 | 
			
		||||
 | 
			
		||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
 | 
			
		||||
	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
 | 
			
		||||
	mv tmp-t marshal.c
 | 
			
		||||
 | 
			
		||||
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
 | 
			
		||||
	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
 | 
			
		||||
	mv tmp-t demarshal.c
 | 
			
		||||
 | 
			
		||||
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
 | 
			
		||||
	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
 | 
			
		||||
	mv tmp-t command.h
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										113
									
								
								backends/server/backend-server.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								backends/server/backend-server.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-server.h>
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_open_server (glibtop_server *, glibtop_backend *, u_int64_t, const char **);
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_close_server (glibtop_server *, glibtop_backend *, void *);
 | 
			
		||||
 | 
			
		||||
extern glibtop_call_vector glibtop_backend_server_call_vector;
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_USE_GMODULE
 | 
			
		||||
glibtop_backend_info LibGTopBackendInfo = {
 | 
			
		||||
    "glibtop-backend-server", _open_server, _close_server,
 | 
			
		||||
    &glibtop_backend_server_call_vector
 | 
			
		||||
};
 | 
			
		||||
#else
 | 
			
		||||
glibtop_backend_info LibGTopBackendInfo_Server = {
 | 
			
		||||
    "glibtop-backend-server", _open_server, _close_server,
 | 
			
		||||
    &glibtop_backend_server_call_vector
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_open_server (glibtop_server *server, glibtop_backend *backend,
 | 
			
		||||
	      u_int64_t features, const char **backend_args)
 | 
			
		||||
{
 | 
			
		||||
    backend_server_private *priv;
 | 
			
		||||
 | 
			
		||||
    priv = glibtop_calloc_r (server, 1, sizeof (backend_server_private));
 | 
			
		||||
 | 
			
		||||
    glibtop_backend_set_closure_data (backend, priv);
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv);
 | 
			
		||||
 | 
			
		||||
    fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    if (pipe (priv->input) || pipe (priv->output)) {
 | 
			
		||||
	glibtop_warn_io_r (server, "cannot make a pipe");
 | 
			
		||||
	return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    priv->pid  = fork ();
 | 
			
		||||
 | 
			
		||||
    if (priv->pid < 0) {
 | 
			
		||||
	glibtop_warn_io_r (server, "fork failed");
 | 
			
		||||
	return -1;
 | 
			
		||||
    } else if (priv->pid == 0) {
 | 
			
		||||
	close (0); close (1);
 | 
			
		||||
	close (priv->input [0]);
 | 
			
		||||
	close (priv->output [1]);
 | 
			
		||||
	dup2 (priv->input [1], 1);
 | 
			
		||||
	dup2 (priv->output [0], 0);
 | 
			
		||||
	execl (LIBGTOP_SERVER, "libgtop-server", NULL);
 | 
			
		||||
	glibtop_error_io_r (server, "execl (%s)",
 | 
			
		||||
			    LIBGTOP_SERVER);
 | 
			
		||||
	_exit (2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    close (priv->input [1]);
 | 
			
		||||
    close (priv->output [0]);
 | 
			
		||||
 | 
			
		||||
    glibtop_server_ref (server);
 | 
			
		||||
    priv->server = server;
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_close_server (glibtop_server *server, glibtop_backend *backend,
 | 
			
		||||
	       void *closure)
 | 
			
		||||
{
 | 
			
		||||
    backend_server_private *priv = closure;
 | 
			
		||||
 | 
			
		||||
    kill (priv->pid, SIGKILL);
 | 
			
		||||
    close (priv->input [0]);
 | 
			
		||||
    close (priv->output [1]);
 | 
			
		||||
 | 
			
		||||
    glibtop_server_unref (priv->server);
 | 
			
		||||
 | 
			
		||||
    priv->pid = 0;
 | 
			
		||||
 | 
			
		||||
    g_free (priv);
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										66
									
								
								backends/server/backend-server.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								backends/server/backend-server.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_BACKEND_COMMON_H__
 | 
			
		||||
#define __GLIBTOP_BACKEND_COMMON_H__
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
#include <glibtop/glibtop-backend.h>
 | 
			
		||||
#include <glibtop/glibtop-backend-info.h>
 | 
			
		||||
 | 
			
		||||
typedef struct _backend_server_private backend_server_private;
 | 
			
		||||
 | 
			
		||||
struct _backend_server_private
 | 
			
		||||
{
 | 
			
		||||
    u_int64_t flags;
 | 
			
		||||
    int input [2];		/* Pipe client <- server */
 | 
			
		||||
    int output [2];		/* Pipe client -> server */
 | 
			
		||||
    pid_t pid;			/* PID of the server */
 | 
			
		||||
 | 
			
		||||
    glibtop_server *server;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
 | 
			
		||||
		unsigned command, size_t send_size, const void *send_ptr,
 | 
			
		||||
		size_t data_size, const void *data_ptr,
 | 
			
		||||
		size_t recv_size, void *recv_ptr,
 | 
			
		||||
		int *retval_ptr);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf);
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_read_data_i (backend_server_private *priv);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										100
									
								
								backends/server/command.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								backends/server/command.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-server.h>
 | 
			
		||||
 | 
			
		||||
#include "command.h"
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
 | 
			
		||||
		unsigned command, size_t send_size, const void *send_buf,
 | 
			
		||||
		size_t data_size, const void *data_buf,
 | 
			
		||||
		size_t recv_size, void *recv_ptr,
 | 
			
		||||
		int *retval_ptr)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_command cmnd;
 | 
			
		||||
    glibtop_response resp;
 | 
			
		||||
#if 0
 | 
			
		||||
    int retval;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    memset (&cmnd, 0, sizeof (glibtop_command));
 | 
			
		||||
    memset (&resp, 0, sizeof (glibtop_response));
 | 
			
		||||
 | 
			
		||||
    cmnd.command = command;
 | 
			
		||||
 | 
			
		||||
    /* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
 | 
			
		||||
     * send it together with command, so we only need one system call instead
 | 
			
		||||
     * of two. */
 | 
			
		||||
 | 
			
		||||
    if (send_size <= _GLIBTOP_PARAM_SIZE) {
 | 
			
		||||
	memcpy (cmnd.parameter, send_buf, send_size);
 | 
			
		||||
	cmnd.param_size = send_size;
 | 
			
		||||
    } else {
 | 
			
		||||
	cmnd.send_size = send_size;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    cmnd.data_size = data_size;
 | 
			
		||||
	
 | 
			
		||||
    glibtop_write_i (priv, sizeof (glibtop_command), &cmnd);
 | 
			
		||||
 | 
			
		||||
    if (data_size) {
 | 
			
		||||
#ifdef SLAVE_DEBUG
 | 
			
		||||
	fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
 | 
			
		||||
#endif
 | 
			
		||||
	glibtop_write_i (priv, data_size, data_buf);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    glibtop_read_i (priv, sizeof (glibtop_response), &resp);
 | 
			
		||||
 | 
			
		||||
#ifdef SLAVE_DEBUG
 | 
			
		||||
    fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
 | 
			
		||||
	     resp.retval, resp.glibtop_errno,
 | 
			
		||||
	     (long) resp.recv_size, (long) resp.data_size,
 | 
			
		||||
	     recv_ptr, (long) recv_size);
 | 
			
		||||
#endif
 | 
			
		||||
    
 | 
			
		||||
    if (retval_ptr)
 | 
			
		||||
	*retval_ptr = resp.glibtop_errno;
 | 
			
		||||
 | 
			
		||||
    if (resp.recv_size != recv_size) {
 | 
			
		||||
	glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
 | 
			
		||||
			(long) recv_size, (long) resp.recv_size);
 | 
			
		||||
	return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (recv_ptr)
 | 
			
		||||
	glibtop_read_i (priv, recv_size, recv_ptr);
 | 
			
		||||
 | 
			
		||||
    if (resp.data_size) {
 | 
			
		||||
	void *ptr = glibtop_malloc_r (server, resp.data_size);
 | 
			
		||||
 | 
			
		||||
	glibtop_read_i (priv, resp.data_size, ptr);
 | 
			
		||||
 | 
			
		||||
	return ptr;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								backends/server/command.h.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								backends/server/command.h.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
/* -*- 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
 | 
			
		||||
							
								
								
									
										76
									
								
								backends/server/command.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								backends/server/command.pl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
#!/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;
 | 
			
		||||
							
								
								
									
										386
									
								
								backends/server/demarshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								backends/server/demarshal.pl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,386 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
 | 
			
		||||
require 'c_types.pl';
 | 
			
		||||
 | 
			
		||||
$[ = 1;			# set array base to 1
 | 
			
		||||
$, = ' ';		# set output field separator
 | 
			
		||||
$\ = "\n";		# set output record separator
 | 
			
		||||
 | 
			
		||||
$always_use_temp_storage = 0;
 | 
			
		||||
 | 
			
		||||
sub toupper {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/a-z/A-Z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub tolower {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/A-Z/a-z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print '/* demarshal.c */';
 | 
			
		||||
print "/* This is a generated file.  Please modify `demarshal.pl' */";
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
print '#include <glibtop.h>';
 | 
			
		||||
print '#include <glibtop/open.h>';
 | 
			
		||||
print '#include <glibtop/xmalloc.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/sysdeps.h>';
 | 
			
		||||
print '#include <glibtop/union.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/backend.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop-backend-private.h>';
 | 
			
		||||
print '#include "server.h"';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
$feature_count = 0;
 | 
			
		||||
 | 
			
		||||
while (<>) {
 | 
			
		||||
  chop;	# strip record separator
 | 
			
		||||
 | 
			
		||||
  if (/^[^\#]/) {
 | 
			
		||||
    &output($_);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub output {
 | 
			
		||||
  local($line) = @_;
 | 
			
		||||
  @line_fields = split(/\|/, $line, 9999);
 | 
			
		||||
  $retval = $line_fields[1];
 | 
			
		||||
  $element_def = $line_fields[3];
 | 
			
		||||
  $feature = $line_fields[2];
 | 
			
		||||
  $param_def = $line_fields[4];
 | 
			
		||||
 | 
			
		||||
  return if $feature =~ /^@/;
 | 
			
		||||
  $name = 'glibtop_'.$feature;
 | 
			
		||||
  
 | 
			
		||||
  $orig = $feature;
 | 
			
		||||
  $feature =~ s/^@//;
 | 
			
		||||
  $space = $feature;
 | 
			
		||||
  $space =~ s/./ /g;
 | 
			
		||||
  
 | 
			
		||||
  $features{++$feature_count} = $feature;
 | 
			
		||||
 | 
			
		||||
  $orig_retval = $retval;
 | 
			
		||||
  
 | 
			
		||||
  if ($retval eq 'retval') {
 | 
			
		||||
    $retval_param = '&retval';
 | 
			
		||||
    $call_prefix = '';
 | 
			
		||||
    $call_prefix_space = '';
 | 
			
		||||
    $prefix = 'retval = ';
 | 
			
		||||
    $prefix_space = '         ';
 | 
			
		||||
    $retval = 'int';
 | 
			
		||||
  } elsif ($retval !~ /^void$/) {
 | 
			
		||||
    $retval_param = 'NULL';
 | 
			
		||||
    $prefix = 'retval = ';
 | 
			
		||||
    $prefix_space = '         ';
 | 
			
		||||
    $call_prefix = 'retval = ';
 | 
			
		||||
    $call_prefix_space = '         ';
 | 
			
		||||
  } else {
 | 
			
		||||
    $retval_param = 'NULL';
 | 
			
		||||
    $call_prefix = '';
 | 
			
		||||
    $call_prefix_space = '';
 | 
			
		||||
    $prefix = '';
 | 
			
		||||
    $prefix_space = '';
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  if ($retval =~ /^(array|pointer)\((.*)\)$/) {
 | 
			
		||||
    $retval = ($2 eq 'string') ? 'char **' : "$2 *";
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  $need_temp_storage = $always_use_temp_storage;
 | 
			
		||||
  $first_param_name = '';
 | 
			
		||||
  $size_code = "\t/* send size */\n";
 | 
			
		||||
  $size_code .= "\t_LIBGTOP_SEND_len = 0;\n";
 | 
			
		||||
  
 | 
			
		||||
  $local_var_decl_code = '';
 | 
			
		||||
  $local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n";
 | 
			
		||||
  $local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n";
 | 
			
		||||
  $local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n";
 | 
			
		||||
  $local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n";
 | 
			
		||||
  $local_var_decl_code .= sprintf
 | 
			
		||||
    (qq[\tglibtop_%s %s;\n], $feature, $feature);
 | 
			
		||||
  if ($retval !~ /^void$/) {
 | 
			
		||||
    $local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n",
 | 
			
		||||
				     $retval, $retval);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $init_local_var_code = "\t/* variable initialization */\n";
 | 
			
		||||
  $init_local_var_code .= sprintf
 | 
			
		||||
    (qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature);
 | 
			
		||||
  $init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
 | 
			
		||||
  $init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ".
 | 
			
		||||
    "(char *) send_ptr;\n";
 | 
			
		||||
 | 
			
		||||
  $demarshal_code = '';
 | 
			
		||||
 | 
			
		||||
  $call_param = '';
 | 
			
		||||
  $param_decl = '';
 | 
			
		||||
  $need_temp_len = 0;
 | 
			
		||||
  $nr_params = (@params = split(/:/, $param_def, 9999));
 | 
			
		||||
  for ($param = 1; $param <= $nr_params; $param++) {
 | 
			
		||||
    $list = $params[$param];
 | 
			
		||||
    $type = $params[$param];
 | 
			
		||||
    $type =~ s/\(.*//;
 | 
			
		||||
    $list =~ s/^.*\(//;
 | 
			
		||||
    $list =~ s/\)$//;
 | 
			
		||||
    $count = (@fields = split(/,/, $list, 9999));
 | 
			
		||||
    for ($field = 1; $field <= $count; $field++) {
 | 
			
		||||
      my $c_type = $typeinfo->{$type}->[1];
 | 
			
		||||
      
 | 
			
		||||
      if ($first_param_name eq '') {
 | 
			
		||||
	$first_param_name = $fields[$field];
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	$need_temp_storage = 1;
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      if ($param_decl eq '') {
 | 
			
		||||
	$param_decl = ",\n            " . $space . '    ';
 | 
			
		||||
      } else {
 | 
			
		||||
	$param_decl = $param_decl . ', ';
 | 
			
		||||
      }
 | 
			
		||||
      $param_decl = $param_decl . $c_type . ' ' . $fields[$field];
 | 
			
		||||
      $call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field];
 | 
			
		||||
 | 
			
		||||
      $size_code .= "\t_LIBGTOP_SEND_len += ";
 | 
			
		||||
      if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	$size_code .= sprintf ("sizeof (size_t)");
 | 
			
		||||
      } else {
 | 
			
		||||
	$size_code .= sprintf ("sizeof (%s)", $c_type);
 | 
			
		||||
      }
 | 
			
		||||
      $size_code .= ";\n";
 | 
			
		||||
 | 
			
		||||
      $local_var_decl_code .= sprintf
 | 
			
		||||
	(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]);
 | 
			
		||||
      $init_local_var_code .= sprintf
 | 
			
		||||
	(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n],
 | 
			
		||||
	 $fields[$field], $c_type);
 | 
			
		||||
 | 
			
		||||
      $demarshal_code .= "\t_LIBGTOP_SEND_ptr = ".
 | 
			
		||||
	"(char *) send_ptr + _LIBGTOP_SEND_offset;\n";
 | 
			
		||||
 | 
			
		||||
      if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n");
 | 
			
		||||
	$demarshal_code .= sprintf
 | 
			
		||||
	  (qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]);
 | 
			
		||||
	$demarshal_code .= sprintf
 | 
			
		||||
	  (qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]);
 | 
			
		||||
	$demarshal_code .= sprintf
 | 
			
		||||
	  (qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (defined $demarshal_funcs->{$type}) {
 | 
			
		||||
	$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t");
 | 
			
		||||
      } else {
 | 
			
		||||
	$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n",
 | 
			
		||||
				    $fields[$field], "sizeof ($c_type)");
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      $demarshal_code .= "\t_LIBGTOP_SEND_offset += ";
 | 
			
		||||
      if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	$demarshal_code .= sprintf ("sizeof (size_t)");
 | 
			
		||||
      } else {
 | 
			
		||||
	$demarshal_code .= sprintf ("sizeof (%s)", $c_type);
 | 
			
		||||
      }
 | 
			
		||||
      $demarshal_code .= ";\n";
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!($demarshal_code eq '')) {
 | 
			
		||||
    $demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n],
 | 
			
		||||
			       $demarshal_code);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($line_fields[3] eq '') {
 | 
			
		||||
    $call_code = sprintf
 | 
			
		||||
      ("\tretval = glibtop_get_%s_p (server%s);\n",
 | 
			
		||||
       $feature, $call_param);
 | 
			
		||||
  } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
    $call_code = sprintf
 | 
			
		||||
      ("\tretval = glibtop_get_%s_p (server, &array%s);\n",
 | 
			
		||||
       $feature, $call_param);
 | 
			
		||||
    $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
 | 
			
		||||
  } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
    $call_code = sprintf
 | 
			
		||||
      ("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n",
 | 
			
		||||
       $feature, $feature, $call_param);
 | 
			
		||||
    $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
 | 
			
		||||
  } else {
 | 
			
		||||
    $call_code = sprintf
 | 
			
		||||
      ("\tretval = glibtop_get_%s_p (server, &%s%s);\n",
 | 
			
		||||
       $feature, $feature, $call_param);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($orig_retval eq 'retval') {
 | 
			
		||||
    $call_code .= sprintf
 | 
			
		||||
      (qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]);
 | 
			
		||||
  } else {
 | 
			
		||||
    $call_code .= sprintf
 | 
			
		||||
      (qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $size_code .= sprintf
 | 
			
		||||
    (qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]);
 | 
			
		||||
 | 
			
		||||
  $size_code .= "\t/* recv size */\n";
 | 
			
		||||
  $size_code .= "\t_LIBGTOP_RECV_len = 0;\n";
 | 
			
		||||
  if ($line_fields[3] eq '') {
 | 
			
		||||
  } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
    $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
 | 
			
		||||
  } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
    $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
 | 
			
		||||
    $size_code .= sprintf
 | 
			
		||||
      (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
 | 
			
		||||
  } else {
 | 
			
		||||
    $size_code .= sprintf
 | 
			
		||||
      (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
 | 
			
		||||
  }
 | 
			
		||||
  $size_code .= "\n";
 | 
			
		||||
 | 
			
		||||
  $size_code .= "\t/* recv buffer */\n";
 | 
			
		||||
  if ($line_fields[3] eq '') {
 | 
			
		||||
    $size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n";
 | 
			
		||||
  } else {
 | 
			
		||||
    $size_code .= "\t_LIBGTOP_RECV_buf = glibtop_malloc_r (server, _LIBGTOP_RECV_len);\n";
 | 
			
		||||
  }
 | 
			
		||||
  $size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n";
 | 
			
		||||
 | 
			
		||||
  $recv_buf_code = '';
 | 
			
		||||
  if ($line_fields[3] eq '') {
 | 
			
		||||
  } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
    $recv_buf_code = "\t/* write recv buffer */\n";
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
 | 
			
		||||
  } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
    $recv_buf_code = "\t/* write recv buffer */\n";
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
 | 
			
		||||
       $feature, $feature);
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
 | 
			
		||||
  } else {
 | 
			
		||||
    $recv_buf_code = "\t/* write recv buffer */\n";
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
 | 
			
		||||
       $feature, $feature);
 | 
			
		||||
    $recv_buf_code .= sprintf
 | 
			
		||||
      (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $recv_buf_code .= "\n";
 | 
			
		||||
  $recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n";
 | 
			
		||||
  $recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n";
 | 
			
		||||
 | 
			
		||||
  if ($orig_retval eq 'pointer(string)') {
 | 
			
		||||
    $need_temp_storage = 1;
 | 
			
		||||
    $local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n";
 | 
			
		||||
    $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n";
 | 
			
		||||
    $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n";
 | 
			
		||||
    $local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n";
 | 
			
		||||
    $local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
 | 
			
		||||
 | 
			
		||||
    $recv_buf_code .= "\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n";
 | 
			
		||||
    $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
 | 
			
		||||
    $recv_buf_code .= "\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_ARRAY_base = glibtop_malloc_r (server, _LIBGTOP_TEMP_len);";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n";
 | 
			
		||||
    $recv_buf_code .= "\n";
 | 
			
		||||
    $recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
 | 
			
		||||
    $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
 | 
			
		||||
    $recv_buf_code .= "\t}\n\n";
 | 
			
		||||
    $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n";
 | 
			
		||||
    $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
 | 
			
		||||
    $recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
 | 
			
		||||
    $recv_buf_code .= "\t}\n\n";
 | 
			
		||||
    $recv_buf_code .= "\tif (recv_data_ptr) {\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n";
 | 
			
		||||
    $recv_buf_code .= "\t}\n";
 | 
			
		||||
 | 
			
		||||
  } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
    $recv_buf_code .= "\n";
 | 
			
		||||
    $recv_buf_code .= "\tif (recv_data_ptr) {\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t*recv_data_ptr = retval;\n";
 | 
			
		||||
    $recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n";
 | 
			
		||||
    $recv_buf_code .= "\t}\n";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($need_temp_storage) {
 | 
			
		||||
    $local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n";
 | 
			
		||||
    $local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n";
 | 
			
		||||
    $local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n";
 | 
			
		||||
    $local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n";
 | 
			
		||||
 | 
			
		||||
    $init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n";
 | 
			
		||||
    $init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n";
 | 
			
		||||
    $init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ".
 | 
			
		||||
      "(char *) data_ptr;\n";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $func_decl_code = sprintf
 | 
			
		||||
    (qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature);
 | 
			
		||||
 | 
			
		||||
  if (!($call_code eq '')) {
 | 
			
		||||
    $call_code .= "\n";
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  $func_body_code = sprintf
 | 
			
		||||
    (qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code);
 | 
			
		||||
  
 | 
			
		||||
  $total_code = sprintf
 | 
			
		||||
    (qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n],
 | 
			
		||||
     $func_decl_code, $local_var_decl_code, $init_local_var_code,
 | 
			
		||||
     $func_body_code);
 | 
			
		||||
  
 | 
			
		||||
  $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
 | 
			
		||||
			 &toupper($feature), $total_code,
 | 
			
		||||
			 &toupper($feature));
 | 
			
		||||
 | 
			
		||||
  print $total_code;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$func_decl_code = sprintf
 | 
			
		||||
  (qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]);
 | 
			
		||||
 | 
			
		||||
$switch_body_code = '';
 | 
			
		||||
 | 
			
		||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
 | 
			
		||||
  $feature = $features{$nr};
 | 
			
		||||
 | 
			
		||||
  $switch_body_code .= sprintf
 | 
			
		||||
    (qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n],
 | 
			
		||||
     &toupper ($feature), &toupper ($feature), $feature, &toupper ($feature));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$switch_code = sprintf
 | 
			
		||||
  (qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code);
 | 
			
		||||
 | 
			
		||||
$total_code = sprintf
 | 
			
		||||
  (qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code);
 | 
			
		||||
 | 
			
		||||
print $total_code;
 | 
			
		||||
 | 
			
		||||
1;
 | 
			
		||||
							
								
								
									
										114
									
								
								backends/server/io.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								backends/server/io.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
			
		||||
/* -*- 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;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								backends/server/libgtop-server.backend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backends/server/libgtop-server.backend
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
 | 
			
		||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
 | 
			
		||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
 | 
			
		||||
 | 
			
		||||
  <libgtop:Backend>
 | 
			
		||||
    <libgtop:Name>glibtop-backend-server</libgtop:Name>
 | 
			
		||||
    <libgtop:Location>
 | 
			
		||||
      <libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName>
 | 
			
		||||
      <libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName>
 | 
			
		||||
    </libgtop:Location>
 | 
			
		||||
  </libgtop:Backend>
 | 
			
		||||
 | 
			
		||||
</libgtop:Backends>
 | 
			
		||||
							
								
								
									
										305
									
								
								backends/server/marshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										305
									
								
								backends/server/marshal.pl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,305 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
 | 
			
		||||
require 'c_types.pl';
 | 
			
		||||
 | 
			
		||||
$[ = 1;			# set array base to 1
 | 
			
		||||
$, = ' ';		# set output field separator
 | 
			
		||||
$\ = "\n";		# set output record separator
 | 
			
		||||
 | 
			
		||||
$always_use_temp_storage = 1;
 | 
			
		||||
 | 
			
		||||
sub toupper {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/a-z/A-Z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub tolower {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/A-Z/a-z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print '/* marshal.c */';
 | 
			
		||||
print "/* This is a generated file.  Please modify `marshal.pl' */";
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
print '#include <backend-server.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/sysdeps.h>';
 | 
			
		||||
print '#include <glibtop/union.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include "command.h"';
 | 
			
		||||
print '#include <glibtop/call-vector.h>';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
$feature_count = 0;
 | 
			
		||||
 | 
			
		||||
while (<>) {
 | 
			
		||||
    chop;	# strip record separator
 | 
			
		||||
 | 
			
		||||
    if (/^[^#]/) {
 | 
			
		||||
	&output($_);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub output {
 | 
			
		||||
    local($line) = @_;
 | 
			
		||||
    @line_fields = split(/\|/, $line, 9999);
 | 
			
		||||
    $retval = $line_fields[1];
 | 
			
		||||
    $feature = $line_fields[2];
 | 
			
		||||
    $param_def = $line_fields[4];
 | 
			
		||||
 | 
			
		||||
    $orig = $feature;
 | 
			
		||||
    $feature =~ s/^@//;
 | 
			
		||||
    $space = $feature;
 | 
			
		||||
    $space =~ s/./ /g;
 | 
			
		||||
 | 
			
		||||
    $features{++$feature_count} = $orig;
 | 
			
		||||
    return if $orig =~ /^@/;
 | 
			
		||||
 | 
			
		||||
    $orig_retval = $retval;
 | 
			
		||||
    if ($retval eq 'retval') {
 | 
			
		||||
      $retval_param = '&retval';
 | 
			
		||||
      $call_prefix = '';
 | 
			
		||||
      $call_prefix_space = '';
 | 
			
		||||
      $prefix = 'retval = ';
 | 
			
		||||
      $prefix_space = '         ';
 | 
			
		||||
      $retval = 'int';
 | 
			
		||||
    }
 | 
			
		||||
    elsif ($retval !~ /^void$/) {
 | 
			
		||||
      $retval_param = 'NULL';
 | 
			
		||||
      $prefix = 'retval = ';
 | 
			
		||||
      $prefix_space = '         ';
 | 
			
		||||
      $call_prefix = 'retval = ';
 | 
			
		||||
      $call_prefix_space = '         ';
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      $retval_param = 'NULL';
 | 
			
		||||
      $call_prefix = '';
 | 
			
		||||
      $call_prefix_space = '';
 | 
			
		||||
      $prefix = '';
 | 
			
		||||
      $prefix_space = '';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($retval =~ /^(array|pointer)\((.*)\)$/) {
 | 
			
		||||
      $retval = ($2 eq 'string') ? 'char **' : "$2 *";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $need_temp_storage = $always_use_temp_storage;
 | 
			
		||||
    $local_var_init_code = "\t/* variable initialization */\n";
 | 
			
		||||
    $local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
 | 
			
		||||
    $local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
 | 
			
		||||
    $local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
 | 
			
		||||
    $local_var_init_code  .= "\t_LIBGTOP_SEND_ptr = ".
 | 
			
		||||
	  "(char *) _LIBGTOP_SEND_buf;\n";
 | 
			
		||||
    $marshal_code = "\t/* marshal start */\n";
 | 
			
		||||
    $marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
 | 
			
		||||
    $first_param_name = '';
 | 
			
		||||
    $size_code = '';
 | 
			
		||||
 | 
			
		||||
    $call_param = '';
 | 
			
		||||
    $param_decl = '';
 | 
			
		||||
    $need_temp_len = 0;
 | 
			
		||||
    $nr_params = (@params = split(/:/, $param_def, 9999));
 | 
			
		||||
    for ($param = 1; $param <= $nr_params; $param++) {
 | 
			
		||||
      $list = $params[$param];
 | 
			
		||||
      $type = $params[$param];
 | 
			
		||||
      $type =~ s/\(.*//;
 | 
			
		||||
      $list =~ s/^.*\(//;
 | 
			
		||||
      $list =~ s/\)$//;
 | 
			
		||||
      $count = (@fields = split(/,/, $list, 9999));
 | 
			
		||||
      for ($field = 1; $field <= $count; $field++) {
 | 
			
		||||
	my $c_type = $typeinfo->{$type}->[1];
 | 
			
		||||
 | 
			
		||||
	if ($first_param_name eq '') {
 | 
			
		||||
	  $first_param_name = $fields[$field];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	  $need_temp_storage = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ($param_decl eq '') {
 | 
			
		||||
	  $param_decl = ",\n            " . $space . '    ';
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	  $param_decl = $param_decl . ', ';
 | 
			
		||||
	}
 | 
			
		||||
	$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
 | 
			
		||||
	$call_param = $call_param . ', ' . $fields[$field];
 | 
			
		||||
 | 
			
		||||
	$size_code .= "\t_LIBGTOP_SEND_len += ";
 | 
			
		||||
	if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	  $size_code .= sprintf ("sizeof (size_t)");
 | 
			
		||||
	} else {
 | 
			
		||||
	  $size_code .= sprintf ("sizeof (%s)", $c_type);
 | 
			
		||||
	}
 | 
			
		||||
	$size_code .= ";\n";
 | 
			
		||||
 | 
			
		||||
	if (defined $sizeof_funcs->{$type}) {
 | 
			
		||||
	  $size_code .= "\t_LIBGTOP_DATA_len += ";
 | 
			
		||||
	  $size_code .= $sizeof_funcs->{$type}->($fields[$field]);
 | 
			
		||||
	  $size_code .= ";\n";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
 | 
			
		||||
	  "(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
 | 
			
		||||
 | 
			
		||||
	if (defined $marshal_funcs->{$type}) {
 | 
			
		||||
	  $marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
 | 
			
		||||
	} else {
 | 
			
		||||
	  $marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
 | 
			
		||||
				    '&'.$fields[$field], "sizeof ($c_type)");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
 | 
			
		||||
	if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	  $marshal_code .= sprintf ("sizeof (size_t)");
 | 
			
		||||
	} else {
 | 
			
		||||
	  $marshal_code .= sprintf ("sizeof (%s)", $c_type);
 | 
			
		||||
	}
 | 
			
		||||
	$marshal_code .= ";\n";
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $local_var_code = "";
 | 
			
		||||
    $local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
 | 
			
		||||
    $local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
 | 
			
		||||
    if ($need_temp_len) {
 | 
			
		||||
      $local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
 | 
			
		||||
    }
 | 
			
		||||
    $local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
 | 
			
		||||
    $local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
 | 
			
		||||
    if ($retval !~ /^void$/) {
 | 
			
		||||
      $local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
 | 
			
		||||
				  $retval, $retval);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $total_code = '';
 | 
			
		||||
 | 
			
		||||
    $send_buf_code = "\t/* send buffer */\n";
 | 
			
		||||
    $send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
 | 
			
		||||
    if ($need_temp_storage) {
 | 
			
		||||
      $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)";
 | 
			
		||||
    } else {
 | 
			
		||||
      $send_buf_code .= '(void *) &'.$first_param_name;
 | 
			
		||||
    }
 | 
			
		||||
    $send_buf_code .= ";\n\n";
 | 
			
		||||
 | 
			
		||||
    $send_buf_code .= "\t/* data buffer */\n";
 | 
			
		||||
    $send_buf_code .= "\t_LIBGTOP_DATA_buf = ";
 | 
			
		||||
    if ($need_temp_storage) {
 | 
			
		||||
      $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)";
 | 
			
		||||
    } else {
 | 
			
		||||
      $send_buf_code .= 'NULL';
 | 
			
		||||
    }
 | 
			
		||||
    $send_buf_code .= ";\n";
 | 
			
		||||
    $send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n";
 | 
			
		||||
 | 
			
		||||
    $call_code = '';
 | 
			
		||||
    $call_code .= sprintf ("\t%sglibtop_call_i (server, closure, GLIBTOP_CMND_%s,\n",
 | 
			
		||||
			   $call_prefix, &toupper($feature));
 | 
			
		||||
    $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
 | 
			
		||||
			   "_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf");
 | 
			
		||||
    $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
 | 
			
		||||
			   "_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf");
 | 
			
		||||
    if ($line_fields[3] eq '') {
 | 
			
		||||
      $call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space);
 | 
			
		||||
    } elsif ($line_fields[3] eq  'array') {
 | 
			
		||||
      $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n",
 | 
			
		||||
			     $call_prefix_space);
 | 
			
		||||
    } else {
 | 
			
		||||
      $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n",
 | 
			
		||||
			     $call_prefix_space, $feature);
 | 
			
		||||
    }
 | 
			
		||||
    $call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param);
 | 
			
		||||
 | 
			
		||||
    if ($need_temp_storage) {
 | 
			
		||||
      $send_buf_free_code = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n";
 | 
			
		||||
      $send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n";
 | 
			
		||||
    } else {
 | 
			
		||||
      $send_buf_free_code = "";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!($size_code eq '')) {
 | 
			
		||||
      $size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($orig_retval eq 'pointer(string)') {
 | 
			
		||||
      $call_code .= "\n";
 | 
			
		||||
      $local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n";
 | 
			
		||||
      $local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
 | 
			
		||||
      $local_var_code .= "\tint i;\n";
 | 
			
		||||
      $call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n";
 | 
			
		||||
      $call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n";
 | 
			
		||||
      $call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n";
 | 
			
		||||
      $call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n";
 | 
			
		||||
      $call_code .= "\tfor (i = 0; i < array->number; i++)\n";
 | 
			
		||||
      $call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
 | 
			
		||||
      $call_code .= "\tptrlist [array->number] = NULL;\n\n";
 | 
			
		||||
      $call_code .= "\tglibtop_free_r (server, retval);\n";
 | 
			
		||||
      $call_code .= "\tretval = ptrlist;\n";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
 | 
			
		||||
			    $size_code, $send_buf_code, $marshal_code,
 | 
			
		||||
			    $call_code, $send_buf_free_code);
 | 
			
		||||
 | 
			
		||||
    $return_code = '';
 | 
			
		||||
    if ($retval !~ /^void$/) {
 | 
			
		||||
      $return_code .= "\treturn retval;\n";
 | 
			
		||||
    } else {
 | 
			
		||||
      $return_code .= "\treturn;\n";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $total_code .= $return_code;
 | 
			
		||||
 | 
			
		||||
    $func_decl = 'static '.$retval."\n";
 | 
			
		||||
    if ($line_fields[3] eq '') {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
 | 
			
		||||
			     $feature, $param_decl);
 | 
			
		||||
    } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
 | 
			
		||||
			     $feature, $param_decl);
 | 
			
		||||
    } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
 | 
			
		||||
			     $feature, 'glibtop_'.$feature, $param_decl);
 | 
			
		||||
    } else {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
 | 
			
		||||
			     $feature, 'glibtop_'.$feature, $param_decl);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
 | 
			
		||||
			   $local_var_code, $local_var_init_code,
 | 
			
		||||
			   $total_code);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
 | 
			
		||||
			   &toupper($feature), $total_code,
 | 
			
		||||
			   &toupper($feature));
 | 
			
		||||
 | 
			
		||||
    print $total_code;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$call_vector_code = '';
 | 
			
		||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
 | 
			
		||||
  $feature = $features{$nr};
 | 
			
		||||
 | 
			
		||||
  $orig = $feature;
 | 
			
		||||
  $feature =~ s/^@//;
 | 
			
		||||
 | 
			
		||||
  if ($orig =~ /^@/) {
 | 
			
		||||
    $call_vector_code .= sprintf (qq[\tNULL,\n]);
 | 
			
		||||
  } else {
 | 
			
		||||
    $call_vector_code .= sprintf
 | 
			
		||||
      (qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
 | 
			
		||||
       &toupper($feature), $feature);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
 | 
			
		||||
print $call_vector_code;
 | 
			
		||||
print '};';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								backends/server/read.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								backends/server/read.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-server.h>
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf)
 | 
			
		||||
{
 | 
			
		||||
    int ret = 0;
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
 | 
			
		||||
	     size, priv->input [0]);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    ret = read (priv->input [0], buf, size);
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    if (ret < 0)
 | 
			
		||||
	glibtop_error_io_r (priv->server, "read %d bytes", size);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								backends/server/read_data.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								backends/server/read_data.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-server.h>
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
glibtop_read_data_i (backend_server_private *priv)
 | 
			
		||||
{
 | 
			
		||||
    size_t size;
 | 
			
		||||
    void *ptr;
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    ret = read (priv->input [0], (void *)&size, sizeof (size_t));
 | 
			
		||||
 | 
			
		||||
    if (ret < 0)
 | 
			
		||||
	glibtop_error_io_r (priv->server, "read data size");
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    if (!size) return NULL;	
 | 
			
		||||
 | 
			
		||||
    ptr = glibtop_malloc_r (priv->server, size);
 | 
			
		||||
	
 | 
			
		||||
    ret = read (priv->input [0], ptr, size);
 | 
			
		||||
 | 
			
		||||
    if (ret < 0)
 | 
			
		||||
	glibtop_error_io_r (priv->server, "read data %d bytes");
 | 
			
		||||
 | 
			
		||||
    return ptr;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										190
									
								
								backends/server/server.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								backends/server/server.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,190 @@
 | 
			
		||||
/* -*- 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);
 | 
			
		||||
    }		
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										85
									
								
								backends/server/server.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								backends/server/server.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_DAEMON_H__
 | 
			
		||||
#define __GLIBTOP_DAEMON_H__
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/union.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
#include <glibtop/parameter.h>
 | 
			
		||||
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <syslog.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/backend.h>
 | 
			
		||||
#include <glibtop-backend-private.h>
 | 
			
		||||
 | 
			
		||||
#include "command.h"
 | 
			
		||||
 | 
			
		||||
BEGIN_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
/* Some don't have LOG_PERROR */
 | 
			
		||||
#ifndef LOG_PERROR
 | 
			
		||||
#define LOG_PERROR 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
 | 
			
		||||
 | 
			
		||||
#if defined(HAVE_GETDTABLESIZE)
 | 
			
		||||
#define GET_MAX_FDS() getdtablesize()
 | 
			
		||||
#else
 | 
			
		||||
/* Fallthrough case - please add other #elif cases above
 | 
			
		||||
   for different OS's as necessary */
 | 
			
		||||
#define GET_MAX_FDS() 256
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
do_output (int s, glibtop_response *resp, const void *recv_ptr,
 | 
			
		||||
	   const void *data_ptr);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
do_read (int s, void *ptr, size_t total_size);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
handle_slave_connection (int input, int output);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_send_version_i (glibtop *server, int fd);
 | 
			
		||||
 | 
			
		||||
extern int enable_debug;
 | 
			
		||||
extern int verbose_output;
 | 
			
		||||
 | 
			
		||||
END_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										62
									
								
								backends/server/version.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								backends/server/version.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
/* -*- 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");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										43
									
								
								backends/server/write.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								backends/server/write.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-server.h>
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf)
 | 
			
		||||
{
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    if (size == 0) return;
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    ret = write (priv->output [1], buf, size);
 | 
			
		||||
 | 
			
		||||
    if (ret < 0)
 | 
			
		||||
	glibtop_error_io_r (priv->server, "write %d bytes", size);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								backends/sysdeps/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								backends/sysdeps/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.la
 | 
			
		||||
marshal.c
 | 
			
		||||
							
								
								
									
										60
									
								
								backends/sysdeps/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								backends/sysdeps/ChangeLog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
2000-11-26  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* glibtop-backend-private.h: Removed.
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.h: New files.
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.c (_open_sysdeps): Don't overwrite
 | 
			
		||||
	`backend->_priv'.
 | 
			
		||||
 | 
			
		||||
2000-11-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Link libgtop_backend_sysdeps.la against
 | 
			
		||||
	$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and
 | 
			
		||||
	$(top_builddir)/lib/libgtop_server.la.
 | 
			
		||||
 | 
			
		||||
	* libgtop-sysdeps.backend: Removed the ExtraLibs section.
 | 
			
		||||
 | 
			
		||||
2000-02-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.c (LibGTopBackendInfo): Call this
 | 
			
		||||
	`LibGTopBackendInfo_Sysdeps' when we don't use gmodule.
 | 
			
		||||
 | 
			
		||||
2000-02-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
 | 
			
		||||
	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
 | 
			
		||||
 | 
			
		||||
2000-01-22  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* libgtop-sysdeps.backend: Added "ExtraLibs" section to
 | 
			
		||||
	load `-lgtop_sysdeps'.
 | 
			
		||||
 | 
			
		||||
2000-01-12  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
 | 
			
		||||
 | 
			
		||||
	* libgtop-sysdeps.backend: New file.
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to
 | 
			
		||||
	`LibGTopBackendInfo'.
 | 
			
		||||
 | 
			
		||||
2000-01-12  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* marshal.pl: Create the `_glibtop_init_hook_s' as well.
 | 
			
		||||
 | 
			
		||||
	* marshal.pl: Don't create code for things which are now
 | 
			
		||||
	in the new `glibtop-backend-common' backend.
 | 
			
		||||
 | 
			
		||||
2000-01-02  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	* marshal.pl: New file. Automatically creates `marshal.c'.
 | 
			
		||||
	* call-vector.c: Removed.
 | 
			
		||||
 | 
			
		||||
2000-01-01  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
 | 
			
		||||
	Initial version of the "glibtop-backend-sysdeps" backend.
 | 
			
		||||
 | 
			
		||||
	* backend-sysdeps.c: New file.
 | 
			
		||||
	* glibtop-backend-private.h: New file.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										47
									
								
								backends/sysdeps/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								backends/sysdeps/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
 | 
			
		||||
 | 
			
		||||
INCLUDES	= @INCLUDES@
 | 
			
		||||
 | 
			
		||||
backenddir	= @LIBGTOP_BACKEND_DIR@
 | 
			
		||||
 | 
			
		||||
if LIBGTOP_USE_GMODULE
 | 
			
		||||
backendlibdir	= $(backenddir)
 | 
			
		||||
else
 | 
			
		||||
backendlibdir	= $(libdir)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
dynamic_ldflags	= @libgtop_dynamic_ldflags@
 | 
			
		||||
 | 
			
		||||
backend_DATA = \
 | 
			
		||||
	libgtop-sysdeps.backend
 | 
			
		||||
 | 
			
		||||
noinst_HEADERS = \
 | 
			
		||||
	backend-sysdeps.h
 | 
			
		||||
 | 
			
		||||
backendlib_LTLIBRARIES = \
 | 
			
		||||
	libgtop_backend_sysdeps.la
 | 
			
		||||
 | 
			
		||||
libgtop_backend_sysdeps_la_SOURCES = \
 | 
			
		||||
	backend-sysdeps.c		\
 | 
			
		||||
	marshal.c
 | 
			
		||||
 | 
			
		||||
libgtop_backend_sysdeps_la_LDFLAGS = \
 | 
			
		||||
	$(LT_VERSION_INFO) $(dynamic_ldflags)
 | 
			
		||||
 | 
			
		||||
libgtop_backend_sysdeps_la_LIBADD = \
 | 
			
		||||
	$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la
 | 
			
		||||
	$(top_builddir)/lib/libgtop_server.la
 | 
			
		||||
 | 
			
		||||
BUILT_SOURCES = \
 | 
			
		||||
	marshal.c
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = \
 | 
			
		||||
	marshal.pl	\
 | 
			
		||||
	libgtop-sysdeps.backend
 | 
			
		||||
 | 
			
		||||
CLEANFILES = $(BUILT_SOURCES)
 | 
			
		||||
 | 
			
		||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
 | 
			
		||||
	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
 | 
			
		||||
	mv tmp-t marshal.c
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										76
									
								
								backends/sysdeps/backend-sysdeps.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								backends/sysdeps/backend-sysdeps.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <backend-sysdeps.h>
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_open_sysdeps (glibtop_server *, glibtop_backend *, u_int64_t, const char **);
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_close_sysdeps (glibtop_server *, glibtop_backend *, void *);
 | 
			
		||||
 | 
			
		||||
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
 | 
			
		||||
 | 
			
		||||
#ifdef LIBGTOP_USE_GMODULE
 | 
			
		||||
glibtop_backend_info LibGTopBackendInfo = {
 | 
			
		||||
    "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
 | 
			
		||||
    &glibtop_backend_sysdeps_call_vector
 | 
			
		||||
};
 | 
			
		||||
#else
 | 
			
		||||
glibtop_backend_info LibGTopBackendInfo_Sysdeps = {
 | 
			
		||||
    "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
 | 
			
		||||
    &glibtop_backend_sysdeps_call_vector
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_open_sysdeps (glibtop_server *server, glibtop_backend *backend,
 | 
			
		||||
	       u_int64_t features, const char **backend_args)
 | 
			
		||||
{
 | 
			
		||||
    glibtop_init_func_t *init_fkt;
 | 
			
		||||
 | 
			
		||||
    /* Do the initialization, but only if not already initialized. */
 | 
			
		||||
 | 
			
		||||
    if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
 | 
			
		||||
	glibtop_open_s (server, "glibtop", features, 0);
 | 
			
		||||
 | 
			
		||||
	for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
 | 
			
		||||
	    (*init_fkt) (server);
 | 
			
		||||
 | 
			
		||||
	server->info->sysdeps.pointer_size = sizeof (void*)*8;
 | 
			
		||||
		
 | 
			
		||||
	server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
_close_sysdeps (glibtop_server *server, glibtop_backend *backend,
 | 
			
		||||
		void *closure)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								backends/sysdeps/backend-sysdeps.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								backends/sysdeps/backend-sysdeps.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
   the Free Software Foundation; either version 2 of the License,
 | 
			
		||||
   or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
			
		||||
   for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_BACKEND_SYSDEPS_H__
 | 
			
		||||
#define __GLIBTOP_BACKEND_SYSDEPS_H__
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
#include <glibtop/glibtop-backend.h>
 | 
			
		||||
#include <glibtop/glibtop-backend-info.h>
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										13
									
								
								backends/sysdeps/libgtop-sysdeps.backend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backends/sysdeps/libgtop-sysdeps.backend
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
 | 
			
		||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
 | 
			
		||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
 | 
			
		||||
 | 
			
		||||
  <libgtop:Backend>
 | 
			
		||||
    <libgtop:Name>glibtop-backend-sysdeps</libgtop:Name>
 | 
			
		||||
    <libgtop:Location>
 | 
			
		||||
      <libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName>
 | 
			
		||||
      <libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName>
 | 
			
		||||
    </libgtop:Location>
 | 
			
		||||
  </libgtop:Backend>
 | 
			
		||||
 | 
			
		||||
</libgtop:Backends>
 | 
			
		||||
							
								
								
									
										195
									
								
								backends/sysdeps/marshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								backends/sysdeps/marshal.pl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,195 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
 | 
			
		||||
require 'c_types.pl';
 | 
			
		||||
 | 
			
		||||
$[ = 1;			# set array base to 1
 | 
			
		||||
$, = ' ';		# set output field separator
 | 
			
		||||
$\ = "\n";		# set output record separator
 | 
			
		||||
 | 
			
		||||
$always_use_temp_storage = 1;
 | 
			
		||||
 | 
			
		||||
sub toupper {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/a-z/A-Z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub tolower {
 | 
			
		||||
    local($_) = @_;
 | 
			
		||||
    tr/A-Z/a-z/;
 | 
			
		||||
    return $_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print '/* marshal.c */';
 | 
			
		||||
print "/* This is a generated file.  Please modify `marshal.pl' */";
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
print '#include <backend-sysdeps.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/sysdeps.h>';
 | 
			
		||||
print '#include <glibtop/union.h>';
 | 
			
		||||
print '';
 | 
			
		||||
print '#include <glibtop/call-vector.h>';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
$feature_count = 0;
 | 
			
		||||
 | 
			
		||||
while (<>) {
 | 
			
		||||
    chop;	# strip record separator
 | 
			
		||||
 | 
			
		||||
    if (/^[^#]/) {
 | 
			
		||||
	&output($_);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub output {
 | 
			
		||||
    local($line) = @_;
 | 
			
		||||
    @line_fields = split(/\|/, $line, 9999);
 | 
			
		||||
    $retval = $line_fields[1];
 | 
			
		||||
    $feature = $line_fields[2];
 | 
			
		||||
    $param_def = $line_fields[4];
 | 
			
		||||
 | 
			
		||||
    $orig = $feature;
 | 
			
		||||
    $feature =~ s/^@//;
 | 
			
		||||
    $space = $feature;
 | 
			
		||||
    $space =~ s/./ /g;
 | 
			
		||||
 | 
			
		||||
    $features{++$feature_count} = $orig;
 | 
			
		||||
 | 
			
		||||
    return if $orig =~ /^@/;
 | 
			
		||||
 | 
			
		||||
    if ($retval eq 'retval') {
 | 
			
		||||
      $retval_param = '&retval';
 | 
			
		||||
      $call_prefix = '';
 | 
			
		||||
      $call_prefix_space = '';
 | 
			
		||||
      $prefix = 'retval = ';
 | 
			
		||||
      $prefix_space = '         ';
 | 
			
		||||
      $retval = 'int';
 | 
			
		||||
    }
 | 
			
		||||
    elsif ($retval !~ /^void$/) {
 | 
			
		||||
      $retval_param = 'NULL';
 | 
			
		||||
      $prefix = 'retval = ';
 | 
			
		||||
      $prefix_space = '         ';
 | 
			
		||||
      $call_prefix = 'retval = ';
 | 
			
		||||
      $call_prefix_space = '         ';
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      $retval_param = 'NULL';
 | 
			
		||||
      $call_prefix = '';
 | 
			
		||||
      $call_prefix_space = '';
 | 
			
		||||
      $prefix = '';
 | 
			
		||||
      $prefix_space = '';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($retval =~ /^(array|pointer)\((.*)\)$/) {
 | 
			
		||||
      $retval = ($2 eq 'string') ? 'char **' : "$2 *";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $need_temp_storage = $always_use_temp_storage;
 | 
			
		||||
    $first_param_name = '';
 | 
			
		||||
 | 
			
		||||
    $call_param = '';
 | 
			
		||||
    $param_decl = '';
 | 
			
		||||
    $need_temp_len = 0;
 | 
			
		||||
    $nr_params = (@params = split(/:/, $param_def, 9999));
 | 
			
		||||
    for ($param = 1; $param <= $nr_params; $param++) {
 | 
			
		||||
      $list = $params[$param];
 | 
			
		||||
      $type = $params[$param];
 | 
			
		||||
      $type =~ s/\(.*//;
 | 
			
		||||
      $list =~ s/^.*\(//;
 | 
			
		||||
      $list =~ s/\)$//;
 | 
			
		||||
      $count = (@fields = split(/,/, $list, 9999));
 | 
			
		||||
      for ($field = 1; $field <= $count; $field++) {
 | 
			
		||||
	my $c_type = $typeinfo->{$type}->[1];
 | 
			
		||||
 | 
			
		||||
	if ($first_param_name eq '') {
 | 
			
		||||
	  $first_param_name = $fields[$field];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ($typeinfo->{$type}->[2]) {
 | 
			
		||||
	  $need_temp_storage = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ($param_decl eq '') {
 | 
			
		||||
	  $param_decl = ",\n             " . $space . '    ';
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	  $param_decl = $param_decl . ', ';
 | 
			
		||||
	}
 | 
			
		||||
	$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
 | 
			
		||||
	$call_param = $call_param . ', ' . $fields[$field];
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($line_fields[3] eq '') {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
 | 
			
		||||
    } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
 | 
			
		||||
    } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
 | 
			
		||||
    } else {
 | 
			
		||||
      $total_code = sprintf
 | 
			
		||||
	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $func_decl = 'static '.$retval."\n";
 | 
			
		||||
    if ($line_fields[3] eq '') {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
 | 
			
		||||
			     $feature, $param_decl);
 | 
			
		||||
    } elsif ($line_fields[3] eq 'array') {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
 | 
			
		||||
			     $feature, $param_decl);
 | 
			
		||||
    } elsif ($line_fields[3] =~ /^array/) {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
 | 
			
		||||
			     $feature, 'glibtop_'.$feature, $param_decl);
 | 
			
		||||
    } else {
 | 
			
		||||
      $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
 | 
			
		||||
			     $feature, 'glibtop_'.$feature, $param_decl);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
 | 
			
		||||
 | 
			
		||||
    $total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n",
 | 
			
		||||
			   &toupper($feature), $total_code,
 | 
			
		||||
			   &toupper($feature));
 | 
			
		||||
 | 
			
		||||
    print $total_code;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$init_hook_code = '';
 | 
			
		||||
$call_vector_code = '';
 | 
			
		||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
 | 
			
		||||
  $feature = $features{$nr};
 | 
			
		||||
 | 
			
		||||
  if ($feature =~ /^@/) {
 | 
			
		||||
    $call_vector_code .= sprintf (qq[\tNULL,\n]);
 | 
			
		||||
  } else {
 | 
			
		||||
    $call_vector_code .= sprintf
 | 
			
		||||
      (qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n],
 | 
			
		||||
       &toupper($feature), $feature);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!($feature =~ /^@/)) {
 | 
			
		||||
    $init_hook_code .= sprintf
 | 
			
		||||
      (qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n],
 | 
			
		||||
       &toupper($feature), $feature);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
$init_hook_code .= sprintf (qq[\tNULL\n]);
 | 
			
		||||
 | 
			
		||||
chop $init_hook_code;
 | 
			
		||||
chop $call_vector_code;
 | 
			
		||||
 | 
			
		||||
print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {';
 | 
			
		||||
print $call_vector_code;
 | 
			
		||||
print '};';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
print 'glibtop_init_func_t _glibtop_init_hook_s [] = {';
 | 
			
		||||
print $init_hook_code;
 | 
			
		||||
print '};';
 | 
			
		||||
print '';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										382
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										382
									
								
								configure.in
									
									
									
									
									
								
							@@ -2,50 +2,49 @@ dnl
 | 
			
		||||
dnl Configure script for the Gnome library
 | 
			
		||||
dnl
 | 
			
		||||
 | 
			
		||||
m4_define([libgtop_major_version], [2])
 | 
			
		||||
m4_define([libgtop_minor_version], [19])
 | 
			
		||||
m4_define([libgtop_micro_version], [4])
 | 
			
		||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
 | 
			
		||||
 | 
			
		||||
dnl  increment if the interface has additions, changes, removals.
 | 
			
		||||
m4_define([libgtop_current], [8])
 | 
			
		||||
 | 
			
		||||
dnl  increment any time the source changes; set to
 | 
			
		||||
dnl  0 if you increment CURRENT
 | 
			
		||||
m4_define([libgtop_revision], [0])
 | 
			
		||||
 | 
			
		||||
dnl  increment if any interfaces have been added; set to 0
 | 
			
		||||
dnl  if any interfaces have been removed. removal has
 | 
			
		||||
dnl  precedence over adding, so set to 0 if both happened.
 | 
			
		||||
m4_define([libgtop_age], [1])
 | 
			
		||||
 | 
			
		||||
# Increase each time you change the client/server protocol.
 | 
			
		||||
m4_define([libgtop_server_version], [5])
 | 
			
		||||
 | 
			
		||||
# Version code calculation
 | 
			
		||||
m4_define([libgtop_version_code], [m4_eval(libgtop_major_version * 1000000 + libgtop_minor_version * 1000 + libgtop_micro_version)])
 | 
			
		||||
 | 
			
		||||
AC_PREREQ(2.59)
 | 
			
		||||
AC_INIT([libgtop], [libgtop_version],
 | 
			
		||||
        [http://bugzilla.gnome.org/enter_bug.cgi?product=libgtop])
 | 
			
		||||
AC_CONFIG_SRCDIR(copyright.txt)
 | 
			
		||||
AC_CONFIG_HEADERS(config.h)
 | 
			
		||||
 | 
			
		||||
AC_INIT(copyright.txt)
 | 
			
		||||
AM_CONFIG_HEADER(config.h)
 | 
			
		||||
AC_CANONICAL_SYSTEM
 | 
			
		||||
 | 
			
		||||
AM_INIT_AUTOMAKE
 | 
			
		||||
AC_SUBST(ACLOCAL_AMFLAGS, [\${ACLOCAL_FLAGS}])
 | 
			
		||||
LIBGTOP_MAJOR_VERSION=2
 | 
			
		||||
LIBGTOP_MINOR_VERSION=0
 | 
			
		||||
LIBGTOP_MICRO_VERSION=5
 | 
			
		||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
 | 
			
		||||
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
 | 
			
		||||
LIBGTOP_INTERFACE_AGE=5
 | 
			
		||||
LIBGTOP_BINARY_AGE=5
 | 
			
		||||
 | 
			
		||||
AC_SUBST(LIBGTOP_MAJOR_VERSION, [libgtop_major_version])
 | 
			
		||||
AC_SUBST(LIBGTOP_MINOR_VERSION, [libgtop_minor_version])
 | 
			
		||||
AC_SUBST(LIBGTOP_MICRO_VERSION, [libgtop_micro_version])
 | 
			
		||||
AC_SUBST(LIBGTOP_SERVER_VERSION, [libgtop_server_version])
 | 
			
		||||
AC_SUBST(LIBGTOP_VERSION, [libgtop_version])
 | 
			
		||||
AC_SUBST(LIBGTOP_VERSION_CODE, [libgtop_version_code])
 | 
			
		||||
# 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)
 | 
			
		||||
AC_SUBST(LIBGTOP_MICRO_VERSION)
 | 
			
		||||
AC_SUBST(LIBGTOP_INTERFACE_AGE)
 | 
			
		||||
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
 | 
			
		||||
AC_SUBST(LT_VERSION_INFO,
 | 
			
		||||
         ["-version-info libgtop_current:libgtop_revision:libgtop_age"])
 | 
			
		||||
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}'
 | 
			
		||||
AC_SUBST(LT_VERSION_INFO)
 | 
			
		||||
AC_SUBST(LT_RELEASE)
 | 
			
		||||
AC_SUBST(LT_CURRENT)
 | 
			
		||||
AC_SUBST(LT_REVISION)
 | 
			
		||||
AC_SUBST(LT_AGE)
 | 
			
		||||
 | 
			
		||||
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
 | 
			
		||||
 | 
			
		||||
@@ -82,21 +81,113 @@ export cross_compiling
 | 
			
		||||
 | 
			
		||||
AM_PROG_LIBTOOL
 | 
			
		||||
 | 
			
		||||
dnl Let the user enable compiler warnings
 | 
			
		||||
dnl GNOME_COMPILE_WARNINGS
 | 
			
		||||
 | 
			
		||||
dnl GNOME_INIT_HOOK(gnome_found=yes)
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
GLIB_REQUIRED=2.6.0
 | 
			
		||||
dnl AC_ARG_WITH(libgtop-guile,
 | 
			
		||||
dnl [  --with-libgtop-guile    Build the libgtop guile interface (default=no)],
 | 
			
		||||
dnl [build_guile="$withval"], [build_guile=yes])
 | 
			
		||||
 | 
			
		||||
dnl if test x$build_guile != xno ; then
 | 
			
		||||
dnl  GNOME_CHECK_GUILE
 | 
			
		||||
dnl fi
 | 
			
		||||
 | 
			
		||||
AC_ARG_WITH(libgtop-inodedb,
 | 
			
		||||
[  --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
 | 
			
		||||
 | 
			
		||||
AM_CONDITIONAL(INODEDB, test x$build_inodedb = xyes)
 | 
			
		||||
 | 
			
		||||
if test x$build_inodedb = xyes ; then
 | 
			
		||||
  AC_DEFINE(GLIBTOP_INODEDB)
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
GLIB_REQUIRED=2.0.0
 | 
			
		||||
 | 
			
		||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
 | 
			
		||||
AC_SUBST(GLIB_CFLAGS)
 | 
			
		||||
AC_SUBST(GLIB_LIBS)
 | 
			
		||||
 | 
			
		||||
AC_CHECK_HEADER(ifaddrs.h, [HAVE_IFADDRS_H=yes], [HAVE_IFADDRS_H=no])
 | 
			
		||||
if test x$HAVE_IFADDRS_H = xyes ; then
 | 
			
		||||
	AC_DEFINE(HAVE_IFADDRS_H, 1, [defined if you have ifaddrs.h])
 | 
			
		||||
fi
 | 
			
		||||
dnl (1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
 | 
			
		||||
 | 
			
		||||
dnl You need to uncomment the following line if you want to use
 | 
			
		||||
dnl libGTop without Gnome.
 | 
			
		||||
GNOME_SUPPORT_CHECKS
 | 
			
		||||
 | 
			
		||||
dnl Checks for typedefs, structures, and compiler characteristics.
 | 
			
		||||
AC_C_CONST
 | 
			
		||||
@@ -130,49 +221,33 @@ AC_CHECK_FUNCS(dlerror,,)
 | 
			
		||||
LIBS="$oLIBS"
 | 
			
		||||
AC_SUBST(DL_LIB)
 | 
			
		||||
 | 
			
		||||
dnl Linux
 | 
			
		||||
AC_CHECK_HEADER(linux/isdn.h,[HAVE_ISDN_H=yes],[HAVE_ISDN_H=no])
 | 
			
		||||
if test x$HAVE_ISDN_H = xyes ; then
 | 
			
		||||
	AC_DEFINE(HAVE_ISDN_H, 1, [defined if you have linux/isdn.h])
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
dnl AIX
 | 
			
		||||
AC_CHECK_LIB(perfstat, vmgetinfo,
 | 
			
		||||
    AC_DEFINE(HAVE_VMGETINFO, 1,
 | 
			
		||||
        [Define to 1 if you have the 'vmgetinfo' function in libperfstat]))
 | 
			
		||||
AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the `vmgetinfo' function in libperfstat])
 | 
			
		||||
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
 | 
			
		||||
 | 
			
		||||
dnl Solaris
 | 
			
		||||
case "$host_os" in
 | 
			
		||||
     solaris*)
 | 
			
		||||
     AC_CHECK_LIB(kstat, kstat_open)
 | 
			
		||||
     AC_CHECK_FUNCS(getloadavg swapctl)
 | 
			
		||||
     AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
 | 
			
		||||
AC_CHECK_LIB(kstat, kstat_open)
 | 
			
		||||
AC_CHECK_FUNCS(getloadavg swapctl)
 | 
			
		||||
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    dnl Some versions of Solaris require -lelf for -lkvm
 | 
			
		||||
    case $host_os in
 | 
			
		||||
    solaris[[8-9]] | solaris2.[[0-9]].*)
 | 
			
		||||
    AC_CHECK_LIB(kvm, kvm_open,[
 | 
			
		||||
      LIBS="-lkvm $LIBS"
 | 
			
		||||
    ],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
 | 
			
		||||
       AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
 | 
			
		||||
       [ac_save_LIBS="$LIBS"
 | 
			
		||||
        LIBS="-lkvm -lelf $LIBS"
 | 
			
		||||
        AC_TRY_LINK([char kvm_open();], [kvm_open()],
 | 
			
		||||
                    ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
 | 
			
		||||
        LIBS="$ac_save_LIBS"
 | 
			
		||||
       ])
 | 
			
		||||
       if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
 | 
			
		||||
         AC_MSG_RESULT(yes)
 | 
			
		||||
         LIBS="-lkvm -lelf $LIBS"
 | 
			
		||||
       else
 | 
			
		||||
         AC_MSG_RESULT(no)
 | 
			
		||||
       fi
 | 
			
		||||
    ])
 | 
			
		||||
     ;;
 | 
			
		||||
     esac
 | 
			
		||||
     ;;
 | 
			
		||||
esac
 | 
			
		||||
dnl Some versions of Solaris require -lelf for -lkvm
 | 
			
		||||
AC_CHECK_LIB(kvm, kvm_open,[
 | 
			
		||||
  LIBS="-lkvm $LIBS"
 | 
			
		||||
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
 | 
			
		||||
   AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
 | 
			
		||||
   [ac_save_LIBS="$LIBS"
 | 
			
		||||
    LIBS="-lkvm -lelf $LIBS"
 | 
			
		||||
    AC_TRY_LINK([char kvm_open();], [kvm_open()],
 | 
			
		||||
                ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
 | 
			
		||||
    LIBS="$ac_save_LIBS"
 | 
			
		||||
   ])
 | 
			
		||||
   if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
 | 
			
		||||
     AC_MSG_RESULT(yes)
 | 
			
		||||
     LIBS="-lkvm -lelf $LIBS"
 | 
			
		||||
   else
 | 
			
		||||
     AC_MSG_RESULT(no)
 | 
			
		||||
   fi
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
dnl For DEC OSF1
 | 
			
		||||
AC_CHECK_LIB(mach, vm_statistics)
 | 
			
		||||
@@ -192,7 +267,7 @@ CFLAGS=$saved_CFLAGS
 | 
			
		||||
AC_CHECK_FUNC(socket,
 | 
			
		||||
 [AC_CHECK_HEADER(netinet/in.h,
 | 
			
		||||
   [AC_CHECK_HEADER(arpa/inet.h, [
 | 
			
		||||
  AC_DEFINE(HAVE_SOCKETS, 1, [Define if BSD sockets are supported])
 | 
			
		||||
  AC_DEFINE(HAVE_SOCKETS)
 | 
			
		||||
      AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
 | 
			
		||||
      AC_TRY_LINK([
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
@@ -200,7 +275,7 @@ AC_CHECK_FUNC(socket,
 | 
			
		||||
#include <sys/un.h>
 | 
			
		||||
      ],
 | 
			
		||||
      [static struct sockaddr_un x; x.sun_len = 1;],
 | 
			
		||||
      [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un has a sun_len member])],
 | 
			
		||||
      [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
 | 
			
		||||
      [AC_MSG_RESULT(no)])])])])
 | 
			
		||||
 | 
			
		||||
dnl Checks for library functions.
 | 
			
		||||
@@ -210,15 +285,13 @@ AC_TYPE_SIGNAL
 | 
			
		||||
AC_FUNC_STRFTIME
 | 
			
		||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
 | 
			
		||||
 | 
			
		||||
IT_PROG_INTLTOOL([0.35.0])
 | 
			
		||||
ALL_LINGUAS="am ar az be bg bn ca cs cy da de el es et fa fi fr ga gl he hi hu id it ja ko lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
 | 
			
		||||
 | 
			
		||||
GETTEXT_PACKAGE=libgtop-2.0
 | 
			
		||||
AC_SUBST(GETTEXT_PACKAGE)
 | 
			
		||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
 | 
			
		||||
                   [Define to the gettext package used by the library])
 | 
			
		||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
 | 
			
		||||
 | 
			
		||||
AM_GLIB_GNU_GETTEXT
 | 
			
		||||
GLIB_DEFINE_LOCALEDIR([GTOPLOCALEDIR])
 | 
			
		||||
 | 
			
		||||
AC_PATH_XTRA
 | 
			
		||||
 | 
			
		||||
@@ -245,7 +318,7 @@ 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, 1, [Define if Xauth is supported])
 | 
			
		||||
  AC_DEFINE(HAVE_XAUTH)
 | 
			
		||||
  XE_SPACE(libs_xauth, $X_LIBS -lXau)
 | 
			
		||||
fi
 | 
			
		||||
CPPFLAGS="$saved_CPPFLAGS"
 | 
			
		||||
@@ -255,15 +328,26 @@ dnl For diskusage stuff
 | 
			
		||||
GNOME_FILEUTILS_CHECKS
 | 
			
		||||
 | 
			
		||||
dnl Debugging
 | 
			
		||||
AC_ARG_ENABLE(debug,
 | 
			
		||||
              AS_HELP_STRING([--enable-debug],
 | 
			
		||||
                             [Turn on debugging @<:@default=no@:>@]),
 | 
			
		||||
              AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 1, [Define to enable debugging]))
 | 
			
		||||
AC_ARG_ENABLE(fatal-warnings,
 | 
			
		||||
              AS_HELP_STRING([--enable-fatal-warnings],
 | 
			
		||||
                             [Make all warnings fatal @<:@debug=no@:>@]),
 | 
			
		||||
              AC_DEFINE(LIBGTOP_FATAL_WARNINGS, 1,
 | 
			
		||||
                        [Define to enable fatal warnings]))
 | 
			
		||||
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),)
 | 
			
		||||
 | 
			
		||||
if test "x$gnome_found" = xyes ; then
 | 
			
		||||
  LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
 | 
			
		||||
  SUPPORTINCS="$GNOME_INCLUDEDIR"
 | 
			
		||||
else
 | 
			
		||||
  LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la'
 | 
			
		||||
  SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
dnl Some ugly hack; if '-lgnomesupport' is part of $GNOME_LIBS,
 | 
			
		||||
dnl we include it here.
 | 
			
		||||
case "$GNOME_LIBS" in
 | 
			
		||||
	'*-lgnomesupport*' ) 
 | 
			
		||||
	  LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
 | 
			
		||||
          SUPPORTINCS="$GNOME_INCLUDEDIR" ;;
 | 
			
		||||
esac
 | 
			
		||||
AC_SUBST(LIBSUPPORT)
 | 
			
		||||
AC_SUBST(SUPPORTINCS)
 | 
			
		||||
 | 
			
		||||
dnl These definitions are expanded in make.
 | 
			
		||||
LIBGTOP_LIBS='-L$(libdir)'
 | 
			
		||||
@@ -273,6 +357,10 @@ if test x$libgtop_use_machine_h = xyes ; then
 | 
			
		||||
  LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test x$build_inodedb = xyes ; then
 | 
			
		||||
  LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test x$libgtop_smp = xyes ; then
 | 
			
		||||
  LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP"
 | 
			
		||||
fi
 | 
			
		||||
@@ -281,65 +369,62 @@ if test x$libgtop_have_sysinfo = xyes ; then
 | 
			
		||||
  LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
LIBGTOP_INCS="$LIBGTOP_INCS $GLIB_CFLAGS"
 | 
			
		||||
LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
 | 
			
		||||
 | 
			
		||||
libgtop_save_prefix="$prefix"
 | 
			
		||||
libgtop_save_exec_prefix="$exec_prefix"
 | 
			
		||||
test "x$prefix" = xNONE && prefix=$ac_default_prefix
 | 
			
		||||
test "x$exec_prefix" = xNONE && exec_prefix=$prefix
 | 
			
		||||
LIBGTOP_BINDIR=`eval echo "${bindir}"`
 | 
			
		||||
LIBGTOP_SERVER=`eval echo "${bindir}/libgtop_server2"`
 | 
			
		||||
prefix="$libgtop_save_prefix"
 | 
			
		||||
exec_prefix="$libgtop_save_exec_prefix"
 | 
			
		||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
 | 
			
		||||
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
 | 
			
		||||
LIBGTOP_BINDIR='$(bindir)'
 | 
			
		||||
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
 | 
			
		||||
 | 
			
		||||
sysdeps_dir="$libgtop_sysdeps_dir"
 | 
			
		||||
AC_SUBST(sysdeps_dir)
 | 
			
		||||
 | 
			
		||||
if test x$ac_cv_guile_found = xyes ; then
 | 
			
		||||
  LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0"
 | 
			
		||||
  libgtop_guile_found=yes
 | 
			
		||||
else
 | 
			
		||||
  libgtop_guile_found=no
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
AC_SUBST(libgtop_guile_found)
 | 
			
		||||
 | 
			
		||||
if test -z "$LIBGTOP_EXTRA_LIBS" ; then
 | 
			
		||||
  LIBGTOP_EXTRA_LIBS="$libs_xauth"
 | 
			
		||||
else
 | 
			
		||||
  LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
LIBGTOP_EXTRA_LIBS="$GLIB_LIBS $LIBGTOP_EXTRA_LIBS"
 | 
			
		||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
 | 
			
		||||
 | 
			
		||||
LIBGTOP_LIBS="$LIBGTOP_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)
 | 
			
		||||
 | 
			
		||||
if test "$GCC" = "yes" ; then
 | 
			
		||||
        CFLAGS="\
 | 
			
		||||
	-Winline \
 | 
			
		||||
	-Wall \
 | 
			
		||||
	-std=gnu89 \
 | 
			
		||||
	-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
 | 
			
		||||
	-Wnested-externs -Wpointer-arith \
 | 
			
		||||
	-Wcast-align -Wsign-compare \
 | 
			
		||||
	$CFLAGS"
 | 
			
		||||
if test x$libgtop_guile_found = xyes ; then
 | 
			
		||||
  guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
 | 
			
		||||
else
 | 
			
		||||
  guile_def=""
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
INCLUDES="-I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $X_CFLAGS"
 | 
			
		||||
 | 
			
		||||
# Add various defines to the config.h file ...
 | 
			
		||||
AH_VERBATIM([_GNU_SOURCE],
 | 
			
		||||
[/* Enable GNU extensions on systems that have them.  */
 | 
			
		||||
#ifndef _GNU_SOURCE
 | 
			
		||||
#  define _GNU_SOURCE
 | 
			
		||||
#endif])
 | 
			
		||||
AC_DEFINE([_IN_LIBGTOP], 1,
 | 
			
		||||
          [Note that we are building libgtop rather than using it])
 | 
			
		||||
AC_DEFINE([LIBGTOP_VERSION], ["libgtop_version"],
 | 
			
		||||
          [The libgtop version number])
 | 
			
		||||
AC_DEFINE([LIBGTOP_SERVER_VERSION], ["libgtop_server_version"],
 | 
			
		||||
          [The libgtop server version])
 | 
			
		||||
AC_DEFINE([LIBGTOP_VERSION_CODE], [libgtop_version_code],
 | 
			
		||||
          [The libgtop version number as an integer])
 | 
			
		||||
AC_DEFINE_UNQUOTED([LIBGTOP_SERVER], ["$LIBGTOP_SERVER"],
 | 
			
		||||
                   [The path to the libgtop server])
 | 
			
		||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $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)
 | 
			
		||||
 | 
			
		||||
@@ -347,6 +432,12 @@ AC_SUBST(LIBGTOP_EXTRA_LIBS)
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
@@ -360,9 +451,7 @@ fi
 | 
			
		||||
AC_SUBST(sysdeps_suid_lib)
 | 
			
		||||
AC_SUBST(server_programs)
 | 
			
		||||
 | 
			
		||||
GTK_DOC_CHECK(1.4)
 | 
			
		||||
 | 
			
		||||
AC_CONFIG_FILES([
 | 
			
		||||
AC_OUTPUT([
 | 
			
		||||
Makefile
 | 
			
		||||
libgtop.spec
 | 
			
		||||
po/Makefile.in
 | 
			
		||||
@@ -371,24 +460,25 @@ 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
 | 
			
		||||
sysdeps/osf1/Makefile
 | 
			
		||||
sysdeps/linux/Makefile
 | 
			
		||||
sysdeps/kernel/Makefile
 | 
			
		||||
sysdeps/freebsd/Makefile
 | 
			
		||||
sysdeps/solaris/Makefile
 | 
			
		||||
sysdeps/aix/Makefile
 | 
			
		||||
sysdeps/bsd/Makefile
 | 
			
		||||
src/Makefile
 | 
			
		||||
src/daemon/Makefile
 | 
			
		||||
src/inodedb/Makefile
 | 
			
		||||
lib/Makefile
 | 
			
		||||
examples/Makefile
 | 
			
		||||
doc/Makefile
 | 
			
		||||
doc/reference/Makefile
 | 
			
		||||
doc/reference/version.xml
 | 
			
		||||
support/Makefile
 | 
			
		||||
support/gnome-support-2.0.pc
 | 
			
		||||
libgtop-2.0.pc
 | 
			
		||||
libgtopconfig.h
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
AC_OUTPUT
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,10 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
 | 
			
		||||
   Contributed by Benoît Dejean <TazForEver@dlfp.org>, 2004.
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
   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,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								debian/.cvsignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								debian/.cvsignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
control
 | 
			
		||||
rules
 | 
			
		||||
build
 | 
			
		||||
tmp
 | 
			
		||||
*.postinst
 | 
			
		||||
*.debhelper
 | 
			
		||||
*.files
 | 
			
		||||
files
 | 
			
		||||
substvars
 | 
			
		||||
							
								
								
									
										3
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
								
							@@ -1,14 +1,17 @@
 | 
			
		||||
@PREFIX@/lib/libgtop.a
 | 
			
		||||
@PREFIX@/lib/libgtop_common.a
 | 
			
		||||
@PREFIX@/lib/libgtop_names.a
 | 
			
		||||
@PREFIX@/lib/libgtop_suid_common.a
 | 
			
		||||
@PREFIX@/lib/libgtop_sysdeps.a
 | 
			
		||||
@PREFIX@/lib/libgtop.la
 | 
			
		||||
@PREFIX@/lib/libgtop_common.la
 | 
			
		||||
@PREFIX@/lib/libgtop_names.la
 | 
			
		||||
@PREFIX@/lib/libgtop_suid_common.la
 | 
			
		||||
@PREFIX@/lib/libgtop_sysdeps.la
 | 
			
		||||
@PREFIX@/lib/libgtopConf.sh
 | 
			
		||||
@PREFIX@/lib/libgtop.so
 | 
			
		||||
@PREFIX@/lib/libgtop_common.so
 | 
			
		||||
@PREFIX@/lib/libgtop_names.so
 | 
			
		||||
@PREFIX@/lib/libgtop_suid_common.so
 | 
			
		||||
@PREFIX@/lib/libgtop_sysdeps.so
 | 
			
		||||
@PREFIX@/lib/libgtop-features.def
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								doc/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								doc/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
texinfo.tex
 | 
			
		||||
*.info
 | 
			
		||||
Makefile.in
 | 
			
		||||
Makefile
 | 
			
		||||
*.log *.toc *.dvi *.aux *.cp *.fn *.vr *.tp *.ky *.pg
 | 
			
		||||
*.ps
 | 
			
		||||
auto-macros.texi
 | 
			
		||||
version.texi
 | 
			
		||||
stamp-vti
 | 
			
		||||
*.html *.pdf
 | 
			
		||||
@@ -1,44 +1,3 @@
 | 
			
		||||
2007-02-15  Benoît Dejean  <benoit@placenet.org>
 | 
			
		||||
 | 
			
		||||
	* reference/Makefile.am:
 | 
			
		||||
	
 | 
			
		||||
	Fixed distcheck.
 | 
			
		||||
 | 
			
		||||
2006-02-21  Benoît Dejean  <benoit@placenet.org>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: Fixed glibtop_get_proc_state doc.
 | 
			
		||||
	Patch by Emil Nowak <emil5@go2.pl>.
 | 
			
		||||
 | 
			
		||||
2005-01-03  Benoît Dejean  <TazForEver@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: Updated.
 | 
			
		||||
 | 
			
		||||
2004-12-04  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: Updated.
 | 
			
		||||
 | 
			
		||||
2004-08-03  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: Updated.
 | 
			
		||||
 | 
			
		||||
2004-07-07  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: updated.
 | 
			
		||||
	Added glibtop_get_proc_argv.
 | 
			
		||||
	Added glibtop_fsusage.block_size.
 | 
			
		||||
 | 
			
		||||
2004-03-05  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: update for new API
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* reference.texi: s/u_int64_t/guint64/
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: removed traces of guile, intllibs and libgnomesupport
 | 
			
		||||
 | 
			
		||||
2002-03-12  James Henstridge  <james@daa.com.au>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am (MAKEINFO): using += seems to screw up the build
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,45 @@
 | 
			
		||||
SUBDIRS = reference
 | 
			
		||||
 | 
			
		||||
info_TEXINFOS		= libgtop2.texi
 | 
			
		||||
 | 
			
		||||
libgtop2_TEXINFOS	= libgtop2.texi about.texi reference.texi \
 | 
			
		||||
			  version.texi main.texi white-paper.texi
 | 
			
		||||
			  auto-macros.texi version.texi main.texi \
 | 
			
		||||
			  white-paper.texi
 | 
			
		||||
 | 
			
		||||
AM_MAKEINFOFLAGS	= -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)/libgtop-2.0#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_LIBS\%#$(LIBGTOP_GUILE_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_INCS\%#$(LIBGTOP_GUILE_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_NAMES_LIBS\%#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_GUILE_NAMES_INCS\%#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_BINDIR\%#$(LIBGTOP_BINDIR)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_SERVER\%#$(LIBGTOP_SERVER)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \
 | 
			
		||||
	  -e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_guile_found\%#$(libgtop_guile_found)#g' \
 | 
			
		||||
	  -e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \
 | 
			
		||||
	      < $(srcdir)/auto-macros.texi.in > auto-macros.tmp
 | 
			
		||||
	echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp
 | 
			
		||||
	if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \
 | 
			
		||||
	  echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \
 | 
			
		||||
	else \
 | 
			
		||||
	  echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \
 | 
			
		||||
	fi
 | 
			
		||||
	mv auto-macros.tmp auto-macros.texi
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								doc/auto-macros.texi.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								doc/auto-macros.texi.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
@c LibGTop major, minor and micro version.
 | 
			
		||||
@set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION%
 | 
			
		||||
@set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION%
 | 
			
		||||
@set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION%
 | 
			
		||||
 | 
			
		||||
@c LibGTop version and numerical version code ("1.234.567" -> 1234567).
 | 
			
		||||
@set LIBGTOP_VERSION "%LIBGTOP_VERSION%"
 | 
			
		||||
@set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE%
 | 
			
		||||
 | 
			
		||||
@c LibGTop server version, increased each time the protocol changes.
 | 
			
		||||
@set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION%
 | 
			
		||||
 | 
			
		||||
@@ -5,6 +5,7 @@
 | 
			
		||||
@setchapternewpage odd
 | 
			
		||||
@c %**end of header
 | 
			
		||||
 | 
			
		||||
@include auto-macros.texi
 | 
			
		||||
@include version.texi
 | 
			
		||||
 | 
			
		||||
@ifinfo
 | 
			
		||||
 
 | 
			
		||||
@@ -50,25 +50,24 @@ typedef struct _glibtop_cpu     glibtop_cpu;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_cpu
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        total,
 | 
			
		||||
        user,
 | 
			
		||||
        nice,
 | 
			
		||||
        sys,
 | 
			
		||||
        idle,
 | 
			
		||||
        iowait,
 | 
			
		||||
        irq,
 | 
			
		||||
        softirq,
 | 
			
		||||
        frequency,
 | 
			
		||||
        xcpu_total [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_user [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_nice [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_sys  [GLIBTOP_NCPU],
 | 
			
		||||
@ifset LIBGTOP-1-1
 | 
			
		||||
        xcpu_idle [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_iowait [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_irq [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_softirq [GLIBTOP_NCPU],
 | 
			
		||||
        xcpu_flags;
 | 
			
		||||
@end ifset
 | 
			
		||||
@ifclear LIBGTOP-1-1
 | 
			
		||||
        xcpu_idle [GLIBTOP_NCPU];
 | 
			
		||||
@end ifclear
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
@@ -93,33 +92,25 @@ Number of clock ticks the system spent in system mode.
 | 
			
		||||
@item idle
 | 
			
		||||
Number of clock ticks the system spent in the idle task.
 | 
			
		||||
 | 
			
		||||
@item iowait
 | 
			
		||||
Number of clock ticks the system spent waiting for I/O to complete.
 | 
			
		||||
 | 
			
		||||
@item irq
 | 
			
		||||
Number of clock ticks the system spent servicing interrupts.
 | 
			
		||||
 | 
			
		||||
@item softirq
 | 
			
		||||
Number of clock ticks the system spent servicing softirqs.
 | 
			
		||||
 | 
			
		||||
@item frequency
 | 
			
		||||
Tick frequency (default is 100).
 | 
			
		||||
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
The @samp{xcpu_} values are for SMP systems - they are the same than
 | 
			
		||||
@code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle},
 | 
			
		||||
@code{iowait}, @code{irq} and @code{softirq}
 | 
			
		||||
@code{total}, @code{user}, @code{nice}, @code{sys} and @code{idle}
 | 
			
		||||
except that they are arrays of @code{GLIBTOP_NCPU} (defined in
 | 
			
		||||
@file{<glibtop/cpu.h>}) elements and contain one value for each CPU
 | 
			
		||||
@file{<glibtop/limits.h>}) elements and contain one value for each CPU
 | 
			
		||||
in the system.
 | 
			
		||||
 | 
			
		||||
@ifset LIBGTOP-1-1
 | 
			
		||||
@table @code
 | 
			
		||||
@item xcpu_flags
 | 
			
		||||
This is interpreted as a bit-field: on systems like Solaris, not all CPUs
 | 
			
		||||
need to be running all the time, so we set the corresponding bit for each
 | 
			
		||||
CPU that is currently running.
 | 
			
		||||
@end table
 | 
			
		||||
@end ifset
 | 
			
		||||
 | 
			
		||||
Please note that all of the cpu values are absolute values measured in
 | 
			
		||||
certain units (to get seconds, divide them by @code{frequency}) since system
 | 
			
		||||
@@ -148,7 +139,7 @@ typedef struct _glibtop_mem     glibtop_mem;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_mem
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        total,
 | 
			
		||||
        used,
 | 
			
		||||
        free,
 | 
			
		||||
@@ -216,7 +207,7 @@ typedef struct _glibtop_swap    glibtop_swap;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_swap
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        total,
 | 
			
		||||
        used,
 | 
			
		||||
        free,
 | 
			
		||||
@@ -275,10 +266,10 @@ typedef struct _glibtop_uptime  glibtop_uptime;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_uptime
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags;
 | 
			
		||||
    u_int64_t flags;
 | 
			
		||||
    double uptime,
 | 
			
		||||
        idletime;
 | 
			
		||||
    guint64 boot_time;
 | 
			
		||||
    u_int64_t boot_time;
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
@@ -327,9 +318,9 @@ typedef struct _glibtop_loadavg glibtop_loadavg;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_loadavg
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags;
 | 
			
		||||
    u_int64_t flags;
 | 
			
		||||
    double loadavg [3];
 | 
			
		||||
    guint64 nr_running,
 | 
			
		||||
    u_int64_t nr_running,
 | 
			
		||||
        nr_tasks,
 | 
			
		||||
        last_pid;
 | 
			
		||||
@};
 | 
			
		||||
@@ -368,11 +359,11 @@ Library function @code{glibtop_get_proclist}:
 | 
			
		||||
@cartouche
 | 
			
		||||
unsigned *
 | 
			
		||||
glibtop_get_proclist (glibtop_proclist *buf,
 | 
			
		||||
                      gint64 which, gint64 arg);
 | 
			
		||||
                      int64_t which, int64_t arg);
 | 
			
		||||
 | 
			
		||||
unsigned *
 | 
			
		||||
glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
 | 
			
		||||
                        gint64 which, gint64 arg);
 | 
			
		||||
                        int64_t which, int64_t arg);
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
@@ -404,7 +395,7 @@ typedef struct _glibtop_proclist        glibtop_proclist;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proclist
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        number,
 | 
			
		||||
        total,
 | 
			
		||||
        size;
 | 
			
		||||
@@ -473,8 +464,8 @@ Size of a single entry in the returned list
 | 
			
		||||
(this equals @code{sizeof (unsigned)}).
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
The returned list is allocated using @code{g_malloc} and must be freed
 | 
			
		||||
using @code{g_free} to avoid a memory leak.
 | 
			
		||||
The returned list is allocated using @code{glibtop_malloc} and must be freed
 | 
			
		||||
using @code{glibtop_free} to avoid a memory leak.
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@node glibtop_proc_state, glibtop_proc_uid, glibtop_proclist, System Dependent
 | 
			
		||||
@@ -493,7 +484,7 @@ glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf,
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
Declaration of @code{glibtop_proc_state} in @file{<glibtop/procstate.h>}:
 | 
			
		||||
Declaration of @code{glibtop_proc_state} in @file{<glibtop/proc_state.h>}:
 | 
			
		||||
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
@@ -501,7 +492,7 @@ typedef struct _glibtop_proc_state      glibtop_proc_state;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_state
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags;
 | 
			
		||||
    u_int64_t flags;
 | 
			
		||||
    char cmd[40];
 | 
			
		||||
@ifset LIBGTOP-1-1
 | 
			
		||||
    unsigned state;
 | 
			
		||||
@@ -581,7 +572,6 @@ There are some constants for the @code{state} field:
 | 
			
		||||
#define GLIBTOP_PROCESS_ZOMBIE                  8
 | 
			
		||||
#define GLIBTOP_PROCESS_STOPPED                 16
 | 
			
		||||
#define GLIBTOP_PROCESS_SWAPPING                32
 | 
			
		||||
#define GLIBTOP_PROCESS_DEAD                    64
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
@end ifset
 | 
			
		||||
@@ -628,7 +618,7 @@ typedef struct _glibtop_proc_uid        glibtop_proc_uid;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_uid
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags;
 | 
			
		||||
    u_int64_t flags;
 | 
			
		||||
    int uid,
 | 
			
		||||
        euid,
 | 
			
		||||
        gid,
 | 
			
		||||
@@ -680,7 +670,7 @@ Standard unix nice level of process.
 | 
			
		||||
Number of additional process groups.
 | 
			
		||||
@item groups
 | 
			
		||||
Array of additional process groups@*
 | 
			
		||||
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/procuid.h>}).
 | 
			
		||||
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/limits.h>}).
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@@ -708,7 +698,7 @@ typedef struct _glibtop_proc_mem        glibtop_proc_mem;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_mem
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        size,
 | 
			
		||||
        vsize,
 | 
			
		||||
        resident,
 | 
			
		||||
@@ -727,7 +717,7 @@ Number of pages of virtual memory.
 | 
			
		||||
@item resident
 | 
			
		||||
Number of residnet set (non-swapped) pages.
 | 
			
		||||
@item share
 | 
			
		||||
Number of pages of shared (mmap\'d) memory.
 | 
			
		||||
Number of pages of shared (mmap'd) memory.
 | 
			
		||||
@item rss
 | 
			
		||||
Number of pages the process has in real memory, minus 3 for administrative
 | 
			
		||||
purposes.
 | 
			
		||||
@@ -823,7 +813,7 @@ typedef struct _glibtop_proc_time       glibtop_proc_time;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_time
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        start_time,
 | 
			
		||||
        rtime,
 | 
			
		||||
        utime,
 | 
			
		||||
@@ -840,7 +830,6 @@ struct _glibtop_proc_time
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@table @code
 | 
			
		||||
@item start_time
 | 
			
		||||
Start time of process in seconds since the epoch
 | 
			
		||||
@@ -867,18 +856,6 @@ SMP user-mode CPU time accumulated by process
 | 
			
		||||
SMP kernel-mode CPU time accumulated by process
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Please note that under Linux, @code{start_time} value may be strange.
 | 
			
		||||
Linux kernel defines @code{INITIAL_JIFFIES} which implies a time
 | 
			
		||||
shift. Because @code{INITIAL_JIFFIES} is not user-space defined, we
 | 
			
		||||
cannot use it to compute accurate @code{start_time}. On Linux2.6,
 | 
			
		||||
@code{INITIAL_JIFFIES} is 300 so @code{start_time} is always 3s
 | 
			
		||||
different from real start time of the given process. You may also get
 | 
			
		||||
shift results if your system clock is not synchronised with your
 | 
			
		||||
hardware clock. See @samp{man hwclock}.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@node glibtop_proc_signal, glibtop_proc_kernel, glibtop_proc_time, System Dependent
 | 
			
		||||
@subsection Process Signal information
 | 
			
		||||
@@ -904,7 +881,7 @@ typedef struct _glibtop_proc_signal     glibtop_proc_signal;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_signal
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        signal [2],
 | 
			
		||||
        blocked [2],
 | 
			
		||||
        sigignore [2],
 | 
			
		||||
@@ -925,7 +902,7 @@ Mask of caught signals
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
All signal masks are interpreted as bit mask; it is an array of two
 | 
			
		||||
@code{guint64}'s so we can save 128 signals there.
 | 
			
		||||
@code{u_int64_t}'s so we can save 128 signals there.
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@node glibtop_proc_kernel, glibtop_proc_segment, glibtop_proc_signal, System Dependent
 | 
			
		||||
@@ -952,8 +929,8 @@ typedef struct _glibtop_proc_kernel     glibtop_proc_kernel;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_kernel
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags;
 | 
			
		||||
    guint64 k_flags,
 | 
			
		||||
    u_int64_t flags;
 | 
			
		||||
    u_int64_t k_flags,
 | 
			
		||||
        min_flt,
 | 
			
		||||
        maj_flt,
 | 
			
		||||
        cmin_flt,
 | 
			
		||||
@@ -1052,7 +1029,7 @@ typedef struct _glibtop_proc_segment    glibtop_proc_segment;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_segment
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        text_rss,
 | 
			
		||||
        shlib_rss,
 | 
			
		||||
        data_rss,
 | 
			
		||||
@@ -1060,7 +1037,16 @@ struct _glibtop_proc_segment
 | 
			
		||||
        dirty_size,
 | 
			
		||||
        start_code,
 | 
			
		||||
        end_code,
 | 
			
		||||
        start_stack;
 | 
			
		||||
        start_data,
 | 
			
		||||
        end_data,
 | 
			
		||||
        start_brk,
 | 
			
		||||
        end_brk,
 | 
			
		||||
        start_stack,
 | 
			
		||||
        start_mmap,
 | 
			
		||||
        arg_start,
 | 
			
		||||
        arg_end,
 | 
			
		||||
        env_start,
 | 
			
		||||
        env_end;
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
@@ -1093,7 +1079,7 @@ Library function @code{glibtop_get_proc_args}:
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
char *
 | 
			
		||||
glibtop_get_proc_args(glibtop_proc_args *buf, pid_t pid,
 | 
			
		||||
glibtop_get_proc_args_l (glibtop_proc_args *buf, pid_t pid,
 | 
			
		||||
                         unsigned max_len);
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
@@ -1110,7 +1096,7 @@ typedef struct _glibtop_proc_args       glibtop_proc_args;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_args
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        size;
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@@ -1122,31 +1108,7 @@ Returns a string with all command line arguments of process @code{pid}
 | 
			
		||||
The command line arguments in the returned string are separated by zero bytes;
 | 
			
		||||
the lenght of this string is returned in the @code{size} field.
 | 
			
		||||
 | 
			
		||||
Remember to @code{g_free} the returned string to avoid a memory leak.
 | 
			
		||||
 | 
			
		||||
@strong{New functions}
 | 
			
		||||
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
char **
 | 
			
		||||
glibtop_get_proc_argv(glibtop_proc_args *buf, pid_t pid,
 | 
			
		||||
                         unsigned max_len);
 | 
			
		||||
 | 
			
		||||
char **
 | 
			
		||||
glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf,
 | 
			
		||||
                         pid_t pid, unsigned max_len);
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
Returns a NULL-terminated array of strings with all arguments of
 | 
			
		||||
process @code{pid} (up to @code{max_len} characters, use zero to get
 | 
			
		||||
all arguments). @code{glibtop_get_proc_argv()} and
 | 
			
		||||
@code{glibtop_get_proc_argv_l()} are wrappers to
 | 
			
		||||
@code{glibtop_get_proc_args()} and @code{glibtop_get_proc_args_l()}
 | 
			
		||||
that return process' arguments like the C @code{argv}.
 | 
			
		||||
 | 
			
		||||
Remember to @code{g_strfreev} the returned array to avoid a memory
 | 
			
		||||
leak.
 | 
			
		||||
Remember to @code{glibtop_free} the returned string to avoid a memory leak.
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@node glibtop_proc_map, glibtop_netload, glibtop_proc_args, System Dependent
 | 
			
		||||
@@ -1173,7 +1135,7 @@ typedef struct _glibtop_proc_map        glibtop_proc_map;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_proc_map
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        number,
 | 
			
		||||
        total,
 | 
			
		||||
        size;
 | 
			
		||||
@@ -1182,7 +1144,7 @@ struct _glibtop_proc_map
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
Returns a @code{glibtop_map_entry *} list (which needs to be freed with
 | 
			
		||||
@code{g_free}) of memory maps of process @code{pid}.
 | 
			
		||||
@code{glibtop_free}) of memory maps of process @code{pid}.
 | 
			
		||||
 | 
			
		||||
@table @code
 | 
			
		||||
@item number
 | 
			
		||||
@@ -1202,7 +1164,7 @@ typedef struct _glibtop_map_entry       glibtop_map_entry;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_map_entry
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags, start, end, offset, perm, inode, device;
 | 
			
		||||
    u_int64_t flags, start, end, offset, perm, inode, device;
 | 
			
		||||
    char filename [GLIBTOP_MAP_FILENAME_LEN+1];
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@@ -1213,13 +1175,13 @@ fields are valid:
 | 
			
		||||
 | 
			
		||||
@example
 | 
			
		||||
@cartouche
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_START         0
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_END           1
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_OFFSET        2
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_PERM          3
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_INODE         4
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_DEVICE        5
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_FILENAME      6
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_START         1
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_END           2
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_OFFSET        3
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_PERM          4
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_INODE         5
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_DEVICE        6
 | 
			
		||||
#define GLIBTOP_MAP_ENTRY_FILENAME      7
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
@@ -1260,7 +1222,7 @@ typedef struct _glibtop_netload glibtop_netload;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_netload
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        if_flags,
 | 
			
		||||
        mtu,
 | 
			
		||||
        subnet,
 | 
			
		||||
@@ -1367,7 +1329,7 @@ typedef struct _glibtop_ppp     glibtop_ppp;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_ppp
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        state,
 | 
			
		||||
        bytes_in,
 | 
			
		||||
        bytes_out;
 | 
			
		||||
@@ -1447,7 +1409,7 @@ typedef struct _glibtop_mountlist       glibtop_mountlist;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_mountlist
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        number,
 | 
			
		||||
        total,
 | 
			
		||||
        size;
 | 
			
		||||
@@ -1456,7 +1418,7 @@ struct _glibtop_mountlist
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
Returns a @code{glibtop_mountentry *} list (which needs to be freed with
 | 
			
		||||
@code{g_free}) of mounted filesystems.
 | 
			
		||||
@code{glibtop_free}) of mounted filesystems.
 | 
			
		||||
 | 
			
		||||
@table @code
 | 
			
		||||
@item number
 | 
			
		||||
@@ -1476,7 +1438,7 @@ typedef struct _glibtop_mountentry      glibtop_mountentry;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_mountentry
 | 
			
		||||
@{
 | 
			
		||||
    guint64 dev;
 | 
			
		||||
    u_int64_t dev;
 | 
			
		||||
    char devname [GLIBTOP_MOUNTENTRY_LEN+1];
 | 
			
		||||
    char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
 | 
			
		||||
    char type [GLIBTOP_MOUNTENTRY_LEN+1];
 | 
			
		||||
@@ -1484,7 +1446,13 @@ struct _glibtop_mountentry
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}.
 | 
			
		||||
@ifset LIBGTOP-1-1
 | 
			
		||||
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop/limits.h>}.
 | 
			
		||||
@end ifset
 | 
			
		||||
@ifclear LIBGTOP-1-1
 | 
			
		||||
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}
 | 
			
		||||
(this was moved to @file{<glibtop/limits.h>} in LibGTop 1.1.0).
 | 
			
		||||
@end ifclear
 | 
			
		||||
 | 
			
		||||
@table @code
 | 
			
		||||
@item devname
 | 
			
		||||
@@ -1520,15 +1488,12 @@ typedef struct _glibtop_fsusage         glibtop_fsusage;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_fsusage
 | 
			
		||||
@{
 | 
			
		||||
    guint64   flags,
 | 
			
		||||
    u_int64_t   flags,
 | 
			
		||||
        blocks,
 | 
			
		||||
        bfree,
 | 
			
		||||
        bavail,
 | 
			
		||||
        files,
 | 
			
		||||
        ffree;
 | 
			
		||||
    guint32   block_size;
 | 
			
		||||
    guint64 read,
 | 
			
		||||
        write;
 | 
			
		||||
@};
 | 
			
		||||
@end cartouche
 | 
			
		||||
@end example
 | 
			
		||||
@@ -1544,14 +1509,10 @@ Free blocks available to ordinary users.
 | 
			
		||||
Total file nodes.
 | 
			
		||||
@item ffree
 | 
			
		||||
Free file nodes.
 | 
			
		||||
@item block_size
 | 
			
		||||
Block size in bytes.
 | 
			
		||||
@item read
 | 
			
		||||
Total blocks read.
 | 
			
		||||
@item write
 | 
			
		||||
Total blocks written.
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
Blocks are usually 512 bytes.
 | 
			
		||||
 | 
			
		||||
@page
 | 
			
		||||
@node Library Functions,  , Common Functions, Reference Manual
 | 
			
		||||
@section Library Functions
 | 
			
		||||
@@ -1678,7 +1639,7 @@ typedef struct _glibtop_sysdeps         glibtop_sysdeps;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_sysdeps
 | 
			
		||||
@{
 | 
			
		||||
    guint64 flags,
 | 
			
		||||
    u_int64_t flags,
 | 
			
		||||
        features,
 | 
			
		||||
        pointer_size,
 | 
			
		||||
        cpu,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,59 +0,0 @@
 | 
			
		||||
AUTOMAKE_OPTIONS = 1.6
 | 
			
		||||
## Process this file with automake to produce Makefile.in
 | 
			
		||||
# The name of the module, e.g. 'glib'.
 | 
			
		||||
DOC_MODULE=libgtop
 | 
			
		||||
 | 
			
		||||
# The top-level SGML file. You can change this if you want to.
 | 
			
		||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
 | 
			
		||||
 | 
			
		||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
 | 
			
		||||
# SCANGOBJ_OPTIONS=
 | 
			
		||||
 | 
			
		||||
# Extra options to supply to gtkdoc-scan.
 | 
			
		||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" 
 | 
			
		||||
SCAN_OPTIONS=
 | 
			
		||||
 | 
			
		||||
# Extra options to supply to gtkdoc-mkdb.
 | 
			
		||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
 | 
			
		||||
MKDB_OPTIONS=--sgml-mode --output-format=xml --source-dir=$(top_srcdir)/sysdeps/common
 | 
			
		||||
 | 
			
		||||
# The directory containing the source code. Relative to $(srcdir).
 | 
			
		||||
# gtk-doc will search all .c & .h files beneath here for inline comments
 | 
			
		||||
# documenting the functions and macros.
 | 
			
		||||
# e.g. DOC_SOURCE_DIR=../../../gtk
 | 
			
		||||
DOC_SOURCE_DIR=$(top_srcdir)/include/glibtop
 | 
			
		||||
 | 
			
		||||
# Used for dependencies. The docs will be rebuilt if any of these change.
 | 
			
		||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
 | 
			
		||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
 | 
			
		||||
HFILE_GLOB=$(top_srcdir)/include/glibtop/*.h
 | 
			
		||||
CFILE_GLOB=$(top_srcdir)/sysdeps/common/*.c
 | 
			
		||||
 | 
			
		||||
# Header files to ignore when scanning.
 | 
			
		||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
 | 
			
		||||
IGNORE_HFILES=error.h global.h gnuserv.h init_hooks.h write.h read.h read_data.h config.h libgtopconfig.h
 | 
			
		||||
 | 
			
		||||
EXTRA_HFILES=$(top_srcdir)/glibtop.h
 | 
			
		||||
 | 
			
		||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
 | 
			
		||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
 | 
			
		||||
content_files=version.xml
 | 
			
		||||
 | 
			
		||||
# Images to copy into HTML directory.
 | 
			
		||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
 | 
			
		||||
HTML_IMAGES=
 | 
			
		||||
 | 
			
		||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
 | 
			
		||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
 | 
			
		||||
# signals and properties.
 | 
			
		||||
# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
 | 
			
		||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
 | 
			
		||||
INCLUDES=
 | 
			
		||||
GTKDOC_LIBS=
 | 
			
		||||
 | 
			
		||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
 | 
			
		||||
include $(top_srcdir)/gtk-doc.make
 | 
			
		||||
 | 
			
		||||
# Other files to distribute
 | 
			
		||||
# e.g. EXTRA_DIST += version.xml.in
 | 
			
		||||
EXTRA_DIST += version.xml.in
 | 
			
		||||
@@ -1,206 +0,0 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
 | 
			
		||||
               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
 | 
			
		||||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
 | 
			
		||||
  <bookinfo>
 | 
			
		||||
    <title>Libgtop Reference Manual</title>
 | 
			
		||||
    <releaseinfo>for libgtop <xi:include href="version.xml"/></releaseinfo>
 | 
			
		||||
    <authorgroup>
 | 
			
		||||
      <author>
 | 
			
		||||
	<firstname>Martin </firstname>
 | 
			
		||||
	<surname>Baulig</surname>
 | 
			
		||||
	<affiliation>
 | 
			
		||||
	  <address>
 | 
			
		||||
	    <email>martin@home-of-linux.org</email>
 | 
			
		||||
	  </address>
 | 
			
		||||
	</affiliation>
 | 
			
		||||
      </author>
 | 
			
		||||
      <author>
 | 
			
		||||
	<firstname>Germán</firstname>
 | 
			
		||||
	<surname>Poó-Caamaño</surname>
 | 
			
		||||
	<affiliation>
 | 
			
		||||
	  <address>
 | 
			
		||||
	    <email>gpoo@ubiobio.cl</email>
 | 
			
		||||
	  </address>
 | 
			
		||||
	</affiliation>
 | 
			
		||||
      </author>
 | 
			
		||||
    </authorgroup>
 | 
			
		||||
 | 
			
		||||
    <legalnotice>
 | 
			
		||||
      <para>Permission is granted to copy, distribute and/or modify
 | 
			
		||||
      this document under the terms of the <citetitle>GNU Free
 | 
			
		||||
      Documentation License</citetitle>, Version 1.1 or any later
 | 
			
		||||
      version published by the Free Software Foundation with no
 | 
			
		||||
      Invariant Sections, no Front-Cover Texts, and no Back-Cover
 | 
			
		||||
      Texts. You may obtain a copy of the <citetitle>GNU Free
 | 
			
		||||
      Documentation License</citetitle> from the Free Software
 | 
			
		||||
      Foundation by visiting <ulink type="http"
 | 
			
		||||
      url="http://www.fsf.org">their Web site</ulink> or by writing
 | 
			
		||||
      to: Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
      Boston, MA 02111-1307, USA.</para>
 | 
			
		||||
 | 
			
		||||
      <para>Many of the names used by companies to distinguish their
 | 
			
		||||
      products and services are claimed as trademarks. Where those
 | 
			
		||||
      names appear in any GNOME documentation, and those trademarks
 | 
			
		||||
      are made aware to the members of the GNOME Documentation
 | 
			
		||||
      Project, the names have been printed in caps or initial
 | 
			
		||||
      caps.</para>
 | 
			
		||||
    </legalnotice>
 | 
			
		||||
 | 
			
		||||
    <abstract>
 | 
			
		||||
      <para>
 | 
			
		||||
      LibGTop is a library to get system specific data such as CPU and 
 | 
			
		||||
      Memory Usage and information about running Processes.</para>
 | 
			
		||||
 | 
			
		||||
      <para>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.</para>
 | 
			
		||||
 | 
			
		||||
      <para>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.</para>
 | 
			
		||||
 | 
			
		||||
      <para>This manual documents the interfaces of the libgtop
 | 
			
		||||
      library and has some short notes to help get you up to speed
 | 
			
		||||
      with using the library.</para>
 | 
			
		||||
    </abstract>
 | 
			
		||||
  </bookinfo>
 | 
			
		||||
 | 
			
		||||
  <!--FIXME: It is missing the rest of about.texi -->
 | 
			
		||||
 | 
			
		||||
  <chapter id="libgtop-white-paper">
 | 
			
		||||
    <title>White paper</title>
 | 
			
		||||
 | 
			
		||||
    <sect1 id="libgtop-white-paper-introduction">
 | 
			
		||||
      <title>Introduction</title>
 | 
			
		||||
      <para>Many modern UNIX systems like Solaris, BSD or Digitial Unix 
 | 
			
		||||
      only allow priviledged processes to read information like CPU and 
 | 
			
		||||
      Memory Usage or information about running processes.</para>
 | 
			
		||||
 | 
			
		||||
      <itemizedlist>
 | 
			
		||||
      <listitem><para>
 | 
			
		||||
      BSD, for instance, doesn't have any other way to get those data than reading
 | 
			
		||||
      directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to
 | 
			
		||||
      be able to read this.</para></listitem>
 | 
			
		||||
 | 
			
		||||
      <listitem><para>
 | 
			
		||||
      Other systems, like Digital Unix, allow all users to get things like CPU and
 | 
			
		||||
      Memory statistics, but only root may read information about any process other
 | 
			
		||||
      than the current one (you may not even get information about your own processes
 | 
			
		||||
      if you're not root).</para></listitem>
 | 
			
		||||
 | 
			
		||||
      <listitem><para>
 | 
			
		||||
      Linux has a very nice @file{/proc} filesystem, but reading and parsing
 | 
			
		||||
      @file{/proc} is very slow and inefficient.</para></listitem>
 | 
			
		||||
 | 
			
		||||
      <listitem><para>
 | 
			
		||||
      Solaris is a bit better, but you still need to be in the @code{sys} group or
 | 
			
		||||
      even root to get some data.</para></listitem>
 | 
			
		||||
      </itemizedlist>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
      Because of this system utilities like @code{ps}, @code{uptime} or @code{top}
 | 
			
		||||
      often are setgid kmem or setuid root. Usually, they're also very specific to
 | 
			
		||||
      the system they're written for and not easily portable to other systems without
 | 
			
		||||
      a lot of work.</para>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
      This, of cause, becomes a problem for graphical tools like @code{gtop} - making
 | 
			
		||||
      a GTK+ program setgid or even setuid would be a security hole as big as you can
 | 
			
		||||
      drive the entire X11 source code through. For the GNOME project, we also needed
 | 
			
		||||
      some kind of library which provides all the required information in a portable
 | 
			
		||||
      since there's more than just one single program that wants to use them - for
 | 
			
		||||
      instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
 | 
			
		||||
      @code{netload} panel applets.</para>
 | 
			
		||||
 | 
			
		||||
    </sect1>
 | 
			
		||||
 | 
			
		||||
    <sect1 id="libgtop-white-paper-overview">
 | 
			
		||||
      <title>Overview</title>
 | 
			
		||||
      <para>This section should give you a short overview on how LibGTop
 | 
			
		||||
      was developed, which things needed to be considered and how it 
 | 
			
		||||
      works.</para>
 | 
			
		||||
 | 
			
		||||
      <sect2 id="libgtop-white-paper-overview-design">
 | 
			
		||||
      <title>Interface Design: Things that need to be considered</title>
 | 
			
		||||
      <para>
 | 
			
		||||
At the very beginning, it was necessary to collect all the data the library part
 | 
			
		||||
should provide and put them into some C structures. This was not that easiy as it
 | 
			
		||||
might sound since LibGTop should be portable to any modern UNIX system with a common
 | 
			
		||||
library part on all those systems, but the data that should be returned vary from
 | 
			
		||||
system to system. For instance some systems support shared memory, but some others
 | 
			
		||||
may not.</para>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
The header files where we define these C structures (which are system-independent) are
 | 
			
		||||
shared between client and server. This way we can call the system dependent code
 | 
			
		||||
directly where we do not need any special privileges to do so.</para>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
All of those structures contain a @code{flags} member which is interpreted as a bit
 | 
			
		||||
mask and tells the caller of the library functions which of the fields in the returned
 | 
			
		||||
structure are valid and which are not.</para>
 | 
			
		||||
      </sect2>
 | 
			
		||||
 | 
			
		||||
      <sect2 id="libgtop-white-paper-overview-server">
 | 
			
		||||
      <title>Server Implementation: The LibGTop "server"</title>
 | 
			
		||||
      <para>
 | 
			
		||||
The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system
 | 
			
		||||
dependent code which needs special privileges. It is only build if it's required
 | 
			
		||||
on the current system (for instance, the Linux kernel provides all the required
 | 
			
		||||
data via its @file{/proc} filesystem so we do not need the server at all) and it
 | 
			
		||||
only contains the @dfn{features} which need privileges.</para>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
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.</para>
 | 
			
		||||
      </sect2>
 | 
			
		||||
    </sect1>
 | 
			
		||||
 | 
			
		||||
  </chapter>
 | 
			
		||||
 | 
			
		||||
  <chapter id="libgtop-lib">
 | 
			
		||||
    <title>Libgtop Library Reference</title>
 | 
			
		||||
 | 
			
		||||
    <para>This section contains the API reference for libgtop.  All
 | 
			
		||||
    the public interfaces are documented here.</para>
 | 
			
		||||
 | 
			
		||||
    <xi:include href="xml/glibtop.xml"/>
 | 
			
		||||
    <xi:include href="xml/close.xml"/>
 | 
			
		||||
    <xi:include href="xml/command.xml"/>
 | 
			
		||||
    <xi:include href="xml/glibtop-server.xml"/>
 | 
			
		||||
    <xi:include href="xml/netload.xml"/>
 | 
			
		||||
    <xi:include href="xml/ppp.xml"/>
 | 
			
		||||
    <xi:include href="xml/shm_limits.xml"/>
 | 
			
		||||
    <xi:include href="xml/uptime.xml"/>
 | 
			
		||||
    <xi:include href="xml/netlist.xml"/>
 | 
			
		||||
    <xi:include href="xml/open.xml"/>
 | 
			
		||||
    <xi:include href="xml/parameter.xml"/>
 | 
			
		||||
    <xi:include href="xml/procargs.xml"/>
 | 
			
		||||
    <xi:include href="xml/procmem.xml"/>
 | 
			
		||||
    <xi:include href="xml/procopenfiles.xml"/>
 | 
			
		||||
    <xi:include href="xml/procsegment.xml"/>
 | 
			
		||||
    <xi:include href="xml/procsignal.xml"/>
 | 
			
		||||
    <xi:include href="xml/sysdeps.xml"/>
 | 
			
		||||
    <xi:include href="xml/procstate.xml"/>
 | 
			
		||||
    <xi:include href="xml/procuid.xml"/>
 | 
			
		||||
    <xi:include href="xml/proctime.xml"/>
 | 
			
		||||
    <xi:include href="xml/signal.xml"/>
 | 
			
		||||
    <xi:include href="xml/procmap.xml"/>
 | 
			
		||||
    <xi:include href="xml/sysinfo.xml"/>
 | 
			
		||||
    <xi:include href="xml/union.xml"/>
 | 
			
		||||
    <xi:include href="xml/version.xml"/>
 | 
			
		||||
    <xi:include href="xml/proclist.xml"/>
 | 
			
		||||
    <xi:include href="xml/sem_limits.xml"/>
 | 
			
		||||
    <xi:include href="xml/prockernel.xml"/>
 | 
			
		||||
    <xi:include href="xml/fsusage.xml"/>
 | 
			
		||||
    <xi:include href="xml/loadavg.xml"/>
 | 
			
		||||
    <xi:include href="xml/mem.xml"/>
 | 
			
		||||
    <xi:include href="xml/mountlist.xml"/>
 | 
			
		||||
    <xi:include href="xml/msg_limits.xml"/>
 | 
			
		||||
    <xi:include href="xml/cpu.xml"/>
 | 
			
		||||
    <xi:include href="xml/swap.xml"/>
 | 
			
		||||
  </chapter>
 | 
			
		||||
</book>
 | 
			
		||||
@@ -1,736 +0,0 @@
 | 
			
		||||
<INCLUDE>glibtop.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>glibtop</FILE>
 | 
			
		||||
<TITLE>GlibTop</TITLE>
 | 
			
		||||
GLIBTOP_MOUNTENTRY_LEN
 | 
			
		||||
LIBGTOP_CHECK_VERSION
 | 
			
		||||
glibtop
 | 
			
		||||
glibtop_global_server
 | 
			
		||||
glibtop_init
 | 
			
		||||
glibtop_init_r
 | 
			
		||||
glibtop_init_s
 | 
			
		||||
glibtop_server_features
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/close.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>close</FILE>
 | 
			
		||||
<TITLE>Close</TITLE>
 | 
			
		||||
glibtop_close
 | 
			
		||||
glibtop_close_r
 | 
			
		||||
glibtop_close_s
 | 
			
		||||
glibtop_close_p
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/command.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>command</FILE>
 | 
			
		||||
<TITLE>Command</TITLE>
 | 
			
		||||
GLIBTOP_CMND_QUIT
 | 
			
		||||
GLIBTOP_CMND_SYSDEPS
 | 
			
		||||
GLIBTOP_CMND_CPU
 | 
			
		||||
GLIBTOP_CMND_MEM
 | 
			
		||||
GLIBTOP_CMND_SWAP
 | 
			
		||||
GLIBTOP_CMND_UPTIME
 | 
			
		||||
GLIBTOP_CMND_LOADAVG
 | 
			
		||||
GLIBTOP_CMND_SHM_LIMITS
 | 
			
		||||
GLIBTOP_CMND_MSG_LIMITS
 | 
			
		||||
GLIBTOP_CMND_SEM_LIMITS
 | 
			
		||||
GLIBTOP_CMND_PROCLIST
 | 
			
		||||
GLIBTOP_CMND_PROC_STATE
 | 
			
		||||
GLIBTOP_CMND_PROC_UID
 | 
			
		||||
GLIBTOP_CMND_PROC_MEM
 | 
			
		||||
GLIBTOP_CMND_PROC_TIME
 | 
			
		||||
GLIBTOP_CMND_PROC_SIGNAL
 | 
			
		||||
GLIBTOP_CMND_PROC_KERNEL
 | 
			
		||||
GLIBTOP_CMND_PROC_SEGMENT
 | 
			
		||||
GLIBTOP_CMND_PROC_ARGS
 | 
			
		||||
GLIBTOP_CMND_PROC_MAP
 | 
			
		||||
GLIBTOP_CMND_MOUNTLIST
 | 
			
		||||
GLIBTOP_CMND_FSUSAGE
 | 
			
		||||
GLIBTOP_CMND_NETLOAD
 | 
			
		||||
GLIBTOP_CMND_PPP
 | 
			
		||||
GLIBTOP_CMND_NETLIST
 | 
			
		||||
GLIBTOP_CMND_PROC_OPEN_FILES
 | 
			
		||||
GLIBTOP_MAX_CMND
 | 
			
		||||
glibtop_command
 | 
			
		||||
glibtop_response
 | 
			
		||||
glibtop_response_union
 | 
			
		||||
glibtop_call
 | 
			
		||||
glibtop_call_l
 | 
			
		||||
glibtop_call_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/glibtop-server.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>glibtop-server</FILE>
 | 
			
		||||
<TITLE>GlibTop Server</TITLE>
 | 
			
		||||
glibtop_server
 | 
			
		||||
glibtop_server_info
 | 
			
		||||
glibtop_closure
 | 
			
		||||
glibtop_server_new
 | 
			
		||||
glibtop_server_ref
 | 
			
		||||
glibtop_server_unref
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/netload.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>netload</FILE>
 | 
			
		||||
<TITLE>Net Load</TITLE>
 | 
			
		||||
GLIBTOP_NETLOAD_IF_FLAGS
 | 
			
		||||
GLIBTOP_NETLOAD_MTU
 | 
			
		||||
GLIBTOP_NETLOAD_SUBNET
 | 
			
		||||
GLIBTOP_NETLOAD_ADDRESS
 | 
			
		||||
GLIBTOP_NETLOAD_PACKETS_IN
 | 
			
		||||
GLIBTOP_NETLOAD_PACKETS_OUT
 | 
			
		||||
GLIBTOP_NETLOAD_PACKETS_TOTAL
 | 
			
		||||
GLIBTOP_NETLOAD_BYTES_IN
 | 
			
		||||
GLIBTOP_NETLOAD_BYTES_OUT
 | 
			
		||||
GLIBTOP_NETLOAD_BYTES_TOTAL
 | 
			
		||||
GLIBTOP_NETLOAD_ERRORS_IN
 | 
			
		||||
GLIBTOP_NETLOAD_ERRORS_OUT
 | 
			
		||||
GLIBTOP_NETLOAD_ERRORS_TOTAL
 | 
			
		||||
GLIBTOP_NETLOAD_COLLISIONS
 | 
			
		||||
GLIBTOP_NETLOAD_ADDRESS6
 | 
			
		||||
GLIBTOP_NETLOAD_PREFIX6
 | 
			
		||||
GLIBTOP_NETLOAD_SCOPE6
 | 
			
		||||
GLIBTOP_NETLOAD_HWADDRESS
 | 
			
		||||
GLIBTOP_MAX_NETLOAD
 | 
			
		||||
glibtop_netload
 | 
			
		||||
glibtop_get_netload
 | 
			
		||||
glibtop_get_netload_r
 | 
			
		||||
glibtop_get_netload_l
 | 
			
		||||
glibtop_init_netload_p
 | 
			
		||||
glibtop_get_netload_p
 | 
			
		||||
glibtop_init_netload_s
 | 
			
		||||
glibtop_get_netload_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/ppp.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>ppp</FILE>
 | 
			
		||||
<TITLE>PPP</TITLE>
 | 
			
		||||
GLIBTOP_PPP_STATE
 | 
			
		||||
GLIBTOP_PPP_BYTES_IN
 | 
			
		||||
GLIBTOP_PPP_BYTES_OUT
 | 
			
		||||
GLIBTOP_MAX_PPP
 | 
			
		||||
glibtop_ppp
 | 
			
		||||
glibtop_get_ppp
 | 
			
		||||
glibtop_get_ppp_r
 | 
			
		||||
glibtop_get_ppp_l
 | 
			
		||||
glibtop_init_ppp_p
 | 
			
		||||
glibtop_get_ppp_p
 | 
			
		||||
glibtop_init_ppp_s
 | 
			
		||||
glibtop_get_ppp_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/shm_limits.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>shm_limits</FILE>
 | 
			
		||||
<TITLE>Shared Memory Limits</TITLE>
 | 
			
		||||
GLIBTOP_IPC_SHMMAX
 | 
			
		||||
GLIBTOP_IPC_SHMMIN
 | 
			
		||||
GLIBTOP_IPC_SHMMNI
 | 
			
		||||
GLIBTOP_IPC_SHMSEG
 | 
			
		||||
GLIBTOP_IPC_SHMALL
 | 
			
		||||
GLIBTOP_MAX_SHM_LIMITS
 | 
			
		||||
glibtop_shm_limits
 | 
			
		||||
glibtop_get_shm_limits
 | 
			
		||||
glibtop_get_shm_limits_r
 | 
			
		||||
glibtop_get_shm_limits_l
 | 
			
		||||
glibtop_init_shm_limits_p
 | 
			
		||||
glibtop_get_shm_limits_p
 | 
			
		||||
glibtop_init_shm_limits_s
 | 
			
		||||
glibtop_get_shm_limits_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/uptime.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>uptime</FILE>
 | 
			
		||||
<TITLE>Uptime</TITLE>
 | 
			
		||||
GLIBTOP_UPTIME_UPTIME
 | 
			
		||||
GLIBTOP_UPTIME_IDLETIME
 | 
			
		||||
GLIBTOP_UPTIME_BOOT_TIME
 | 
			
		||||
GLIBTOP_MAX_UPTIME
 | 
			
		||||
glibtop_uptime
 | 
			
		||||
glibtop_get_uptime
 | 
			
		||||
glibtop_get_uptime_r
 | 
			
		||||
glibtop_get_uptime_l
 | 
			
		||||
glibtop_init_uptime_p
 | 
			
		||||
glibtop_get_uptime_p
 | 
			
		||||
glibtop_init_uptime_s
 | 
			
		||||
glibtop_get_uptime_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/netlist.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>netlist</FILE>
 | 
			
		||||
<TITLE>Net List</TITLE>
 | 
			
		||||
GLIBTOP_NETLIST_NUMBER
 | 
			
		||||
GLIBTOP_MAX_NETLIST
 | 
			
		||||
glibtop_netlist
 | 
			
		||||
glibtop_get_netlist
 | 
			
		||||
glibtop_get_netlist_r
 | 
			
		||||
glibtop_get_netlist_l
 | 
			
		||||
glibtop_init_netlist_p
 | 
			
		||||
glibtop_get_netlist_p
 | 
			
		||||
glibtop_init_netlist_s
 | 
			
		||||
glibtop_get_netlist_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/open.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>open</FILE>
 | 
			
		||||
GLIBTOP_INIT_NO_OPEN
 | 
			
		||||
GLIBTOP_INIT_NO_INIT
 | 
			
		||||
GLIBTOP_FEATURES_NO_SERVER
 | 
			
		||||
GLIBTOP_FEATURES_EXCEPT
 | 
			
		||||
GLIBTOP_METHOD_DIRECT
 | 
			
		||||
GLIBTOP_METHOD_PIPE
 | 
			
		||||
GLIBTOP_METHOD_INET
 | 
			
		||||
GLIBTOP_METHOD_UNIX
 | 
			
		||||
GLIBTOP_ERROR_METHOD_IGNORE
 | 
			
		||||
GLIBTOP_ERROR_METHOD_WARN_ONCE
 | 
			
		||||
GLIBTOP_ERROR_METHOD_WARN
 | 
			
		||||
GLIBTOP_ERROR_METHOD_ABORT
 | 
			
		||||
GLIBTOP_ERROR_METHOD_DEFAULT
 | 
			
		||||
glibtop_open_l
 | 
			
		||||
glibtop_init_p
 | 
			
		||||
glibtop_open_p
 | 
			
		||||
glibtop_open_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/parameter.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>parameter</FILE>
 | 
			
		||||
GLIBTOP_PARAM_METHOD
 | 
			
		||||
GLIBTOP_PARAM_FEATURES
 | 
			
		||||
GLIBTOP_PARAM_COMMAND
 | 
			
		||||
GLIBTOP_PARAM_HOST
 | 
			
		||||
GLIBTOP_PARAM_PORT
 | 
			
		||||
GLIBTOP_PARAM_ERROR_METHOD
 | 
			
		||||
GLIBTOP_PARAM_REQUIRED
 | 
			
		||||
glibtop_get_parameter
 | 
			
		||||
glibtop_set_parameter
 | 
			
		||||
glibtop_get_parameter_l
 | 
			
		||||
glibtop_set_parameter_l
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procargs.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procargs</FILE>
 | 
			
		||||
GLIBTOP_PROC_ARGS_SIZE
 | 
			
		||||
GLIBTOP_MAX_PROC_ARGS
 | 
			
		||||
glibtop_proc_args
 | 
			
		||||
glibtop_get_proc_args_l
 | 
			
		||||
glibtop_get_proc_args
 | 
			
		||||
glibtop_get_proc_args_r
 | 
			
		||||
glibtop_init_proc_args_p
 | 
			
		||||
glibtop_get_proc_args_p
 | 
			
		||||
glibtop_init_proc_args_s
 | 
			
		||||
glibtop_get_proc_args_s
 | 
			
		||||
glibtop_get_proc_argv_l
 | 
			
		||||
glibtop_get_proc_argv
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procmem.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procmem</FILE>
 | 
			
		||||
GLIBTOP_PROC_MEM_SIZE
 | 
			
		||||
GLIBTOP_PROC_MEM_VSIZE
 | 
			
		||||
GLIBTOP_PROC_MEM_RESIDENT
 | 
			
		||||
GLIBTOP_PROC_MEM_SHARE
 | 
			
		||||
GLIBTOP_PROC_MEM_RSS
 | 
			
		||||
GLIBTOP_PROC_MEM_RSS_RLIM
 | 
			
		||||
GLIBTOP_MAX_PROC_MEM
 | 
			
		||||
glibtop_proc_mem
 | 
			
		||||
glibtop_get_proc_mem
 | 
			
		||||
glibtop_get_proc_mem_r
 | 
			
		||||
glibtop_get_proc_mem_l
 | 
			
		||||
glibtop_init_proc_mem_p
 | 
			
		||||
glibtop_get_proc_mem_p
 | 
			
		||||
glibtop_init_proc_mem_s
 | 
			
		||||
glibtop_get_proc_mem_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procopenfiles.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procopenfiles</FILE>
 | 
			
		||||
GLIBTOP_PROC_OPEN_FILES_NUMBER
 | 
			
		||||
GLIBTOP_PROC_OPEN_FILES_TOTAL
 | 
			
		||||
GLIBTOP_PROC_OPEN_FILES_SIZE
 | 
			
		||||
GLIBTOP_MAX_PROC_OPEN_FILES
 | 
			
		||||
GLIBTOP_FILE_ENTRY_FD
 | 
			
		||||
GLIBTOP_FILE_ENTRY_NAME
 | 
			
		||||
GLIBTOP_FILE_ENTRY_TYPE
 | 
			
		||||
GLIBTOP_FILE_ENTRY_INETSOCKET_DST_HOST
 | 
			
		||||
GLIBTOP_FILE_ENTRY_INETSOCKET_DST_PORT
 | 
			
		||||
GLIBTOP_MAX_OPEN_FILE_ENTRY
 | 
			
		||||
GLIBTOP_OPEN_FILENAME_LEN
 | 
			
		||||
GLIBTOP_OPEN_DEST_HOST_LEN
 | 
			
		||||
glibtop_open_files_entry
 | 
			
		||||
glibtop_proc_open_files
 | 
			
		||||
glibtop_get_proc_open_files
 | 
			
		||||
glibtop_get_proc_open_files_r
 | 
			
		||||
glibtop_get_proc_open_files_l
 | 
			
		||||
glibtop_init_proc_open_files_p
 | 
			
		||||
glibtop_get_proc_open_files_p
 | 
			
		||||
glibtop_init_proc_open_files_s
 | 
			
		||||
glibtop_get_proc_open_files_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procsegment.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procsegment</FILE>
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_TEXT_RSS
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_SHLIB_RSS
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_DATA_RSS
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_STACK_RSS
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_DIRTY_SIZE
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_START_CODE
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_END_CODE
 | 
			
		||||
GLIBTOP_PROC_SEGMENT_START_STACK
 | 
			
		||||
GLIBTOP_MAX_PROC_SEGMENT
 | 
			
		||||
glibtop_proc_segment
 | 
			
		||||
glibtop_get_proc_segment
 | 
			
		||||
glibtop_get_proc_segment_r
 | 
			
		||||
glibtop_get_proc_segment_l
 | 
			
		||||
glibtop_init_proc_segment_p
 | 
			
		||||
glibtop_get_proc_segment_p
 | 
			
		||||
glibtop_init_proc_segment_s
 | 
			
		||||
glibtop_get_proc_segment_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procsignal.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procsignal</FILE>
 | 
			
		||||
GLIBTOP_PROC_SIGNAL_SIGNAL
 | 
			
		||||
GLIBTOP_PROC_SIGNAL_BLOCKED
 | 
			
		||||
GLIBTOP_PROC_SIGNAL_SIGIGNORE
 | 
			
		||||
GLIBTOP_PROC_SIGNAL_SIGCATCH
 | 
			
		||||
GLIBTOP_MAX_PROC_SIGNAL
 | 
			
		||||
glibtop_proc_signal
 | 
			
		||||
glibtop_get_proc_signal
 | 
			
		||||
glibtop_get_proc_signal_r
 | 
			
		||||
glibtop_get_proc_signal_l
 | 
			
		||||
glibtop_init_proc_signal_p
 | 
			
		||||
glibtop_get_proc_signal_p
 | 
			
		||||
glibtop_init_proc_signal_s
 | 
			
		||||
glibtop_get_proc_signal_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/sysdeps.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>sysdeps</FILE>
 | 
			
		||||
GLIBTOP_SYSDEPS_FEATURES
 | 
			
		||||
GLIBTOP_SYSDEPS_CPU
 | 
			
		||||
GLIBTOP_SYSDEPS_MEM
 | 
			
		||||
GLIBTOP_SYSDEPS_SWAP
 | 
			
		||||
GLIBTOP_SYSDEPS_UPTIME
 | 
			
		||||
GLIBTOP_SYSDEPS_LOADAVG
 | 
			
		||||
GLIBTOP_SYSDEPS_SHM_LIMITS
 | 
			
		||||
GLIBTOP_SYSDEPS_MSG_LIMITS
 | 
			
		||||
GLIBTOP_SYSDEPS_SEM_LIMITS
 | 
			
		||||
GLIBTOP_SYSDEPS_PROCLIST
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_STATE
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_UID
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_MEM
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_TIME
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_SIGNAL
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_KERNEL
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_SEGMENT
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_ARGS
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_MAP
 | 
			
		||||
GLIBTOP_SYSDEPS_MOUNTLIST
 | 
			
		||||
GLIBTOP_SYSDEPS_FSUSAGE
 | 
			
		||||
GLIBTOP_SYSDEPS_NETLOAD
 | 
			
		||||
GLIBTOP_SYSDEPS_PPP
 | 
			
		||||
GLIBTOP_SYSDEPS_NETLIST
 | 
			
		||||
GLIBTOP_SYSDEPS_PROC_OPEN_FILES
 | 
			
		||||
GLIBTOP_MAX_SYSDEPS
 | 
			
		||||
GLIBTOP_SYSDEPS_ALL
 | 
			
		||||
glibtop_sysdeps
 | 
			
		||||
glibtop_get_sysdeps
 | 
			
		||||
glibtop_get_sysdeps_r
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procstate.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procstate</FILE>
 | 
			
		||||
GLIBTOP_PROC_STATE_CMD
 | 
			
		||||
GLIBTOP_PROC_STATE_STATE
 | 
			
		||||
GLIBTOP_PROC_STATE_UID
 | 
			
		||||
GLIBTOP_PROC_STATE_GID
 | 
			
		||||
GLIBTOP_PROC_STATE_RUID
 | 
			
		||||
GLIBTOP_PROC_STATE_RGID
 | 
			
		||||
GLIBTOP_PROC_STATE_HAS_CPU
 | 
			
		||||
GLIBTOP_PROC_STATE_PROCESSOR
 | 
			
		||||
GLIBTOP_PROC_STATE_LAST_PROCESSOR
 | 
			
		||||
GLIBTOP_MAX_PROC_STATE
 | 
			
		||||
GLIBTOP_PROCESS_RUNNING
 | 
			
		||||
GLIBTOP_PROCESS_INTERRUPTIBLE
 | 
			
		||||
GLIBTOP_PROCESS_UNINTERRUPTIBLE
 | 
			
		||||
GLIBTOP_PROCESS_ZOMBIE
 | 
			
		||||
GLIBTOP_PROCESS_STOPPED
 | 
			
		||||
GLIBTOP_PROCESS_SWAPPING
 | 
			
		||||
GLIBTOP_PROCESS_DEAD
 | 
			
		||||
glibtop_proc_state
 | 
			
		||||
glibtop_get_proc_state
 | 
			
		||||
glibtop_get_proc_state_r
 | 
			
		||||
glibtop_get_proc_state_l
 | 
			
		||||
glibtop_init_proc_state_p
 | 
			
		||||
glibtop_get_proc_state_p
 | 
			
		||||
glibtop_init_proc_state_s
 | 
			
		||||
glibtop_get_proc_state_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procuid.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procuid</FILE>
 | 
			
		||||
GLIBTOP_PROC_UID_UID
 | 
			
		||||
GLIBTOP_PROC_UID_EUID
 | 
			
		||||
GLIBTOP_PROC_UID_GID
 | 
			
		||||
GLIBTOP_PROC_UID_EGID
 | 
			
		||||
GLIBTOP_PROC_UID_SUID
 | 
			
		||||
GLIBTOP_PROC_UID_SGID
 | 
			
		||||
GLIBTOP_PROC_UID_FSUID
 | 
			
		||||
GLIBTOP_PROC_UID_FSGID
 | 
			
		||||
GLIBTOP_PROC_UID_PID
 | 
			
		||||
GLIBTOP_PROC_UID_PPID
 | 
			
		||||
GLIBTOP_PROC_UID_PGRP
 | 
			
		||||
GLIBTOP_PROC_UID_SESSION
 | 
			
		||||
GLIBTOP_PROC_UID_TTY
 | 
			
		||||
GLIBTOP_PROC_UID_TPGID
 | 
			
		||||
GLIBTOP_PROC_UID_PRIORITY
 | 
			
		||||
GLIBTOP_PROC_UID_NICE
 | 
			
		||||
GLIBTOP_PROC_UID_NGROUPS
 | 
			
		||||
GLIBTOP_PROC_UID_GROUPS
 | 
			
		||||
GLIBTOP_MAX_PROC_UID
 | 
			
		||||
glibtop_proc_uid
 | 
			
		||||
GLIBTOP_MAX_GROUPS
 | 
			
		||||
glibtop_get_proc_uid
 | 
			
		||||
glibtop_get_proc_uid_r
 | 
			
		||||
glibtop_get_proc_uid_l
 | 
			
		||||
glibtop_init_proc_uid_p
 | 
			
		||||
glibtop_get_proc_uid_p
 | 
			
		||||
glibtop_init_proc_uid_s
 | 
			
		||||
glibtop_get_proc_uid_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/proctime.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>proctime</FILE>
 | 
			
		||||
GLIBTOP_PROC_TIME_START_TIME
 | 
			
		||||
GLIBTOP_PROC_TIME_RTIME
 | 
			
		||||
GLIBTOP_PROC_TIME_UTIME
 | 
			
		||||
GLIBTOP_PROC_TIME_STIME
 | 
			
		||||
GLIBTOP_PROC_TIME_CUTIME
 | 
			
		||||
GLIBTOP_PROC_TIME_CSTIME
 | 
			
		||||
GLIBTOP_PROC_TIME_TIMEOUT
 | 
			
		||||
GLIBTOP_PROC_TIME_IT_REAL_VALUE
 | 
			
		||||
GLIBTOP_PROC_TIME_FREQUENCY
 | 
			
		||||
GLIBTOP_PROC_TIME_XCPU_UTIME
 | 
			
		||||
GLIBTOP_PROC_TIME_XCPU_STIME
 | 
			
		||||
GLIBTOP_MAX_PROC_TIME
 | 
			
		||||
glibtop_proc_time
 | 
			
		||||
glibtop_get_proc_time
 | 
			
		||||
glibtop_get_proc_time_r
 | 
			
		||||
glibtop_get_proc_time_l
 | 
			
		||||
glibtop_init_proc_time_p
 | 
			
		||||
glibtop_get_proc_time_p
 | 
			
		||||
glibtop_init_proc_time_s
 | 
			
		||||
glibtop_get_proc_time_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/signal.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>signal</FILE>
 | 
			
		||||
glibtop_signame
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/procmap.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>procmap</FILE>
 | 
			
		||||
GLIBTOP_PROC_MAP_NUMBER
 | 
			
		||||
GLIBTOP_PROC_MAP_TOTAL
 | 
			
		||||
GLIBTOP_PROC_MAP_SIZE
 | 
			
		||||
GLIBTOP_MAX_PROC_MAP
 | 
			
		||||
GLIBTOP_MAP_ENTRY_START
 | 
			
		||||
GLIBTOP_MAP_ENTRY_END
 | 
			
		||||
GLIBTOP_MAP_ENTRY_OFFSET
 | 
			
		||||
GLIBTOP_MAP_ENTRY_PERM
 | 
			
		||||
GLIBTOP_MAP_ENTRY_INODE
 | 
			
		||||
GLIBTOP_MAP_ENTRY_DEVICE
 | 
			
		||||
GLIBTOP_MAP_ENTRY_FILENAME
 | 
			
		||||
GLIBTOP_MAP_ENTRY_SIZE
 | 
			
		||||
GLIBTOP_MAP_ENTRY_RSS
 | 
			
		||||
GLIBTOP_MAP_ENTRY_SHARED_CLEAN
 | 
			
		||||
GLIBTOP_MAP_ENTRY_SHARED_DIRTY
 | 
			
		||||
GLIBTOP_MAP_ENTRY_PRIVATE_CLEAN
 | 
			
		||||
GLIBTOP_MAP_ENTRY_PRIVATE_DIRTY
 | 
			
		||||
GLIBTOP_MAX_MAP_ENTRY
 | 
			
		||||
GLIBTOP_MAP_FILENAME_LEN
 | 
			
		||||
GLIBTOP_MAP_PERM_READ
 | 
			
		||||
GLIBTOP_MAP_PERM_WRITE
 | 
			
		||||
GLIBTOP_MAP_PERM_EXECUTE
 | 
			
		||||
GLIBTOP_MAP_PERM_SHARED
 | 
			
		||||
GLIBTOP_MAP_PERM_PRIVATE
 | 
			
		||||
glibtop_map_entry
 | 
			
		||||
glibtop_proc_map
 | 
			
		||||
glibtop_get_proc_map
 | 
			
		||||
glibtop_get_proc_map_r
 | 
			
		||||
glibtop_get_proc_map_l
 | 
			
		||||
glibtop_init_proc_map_p
 | 
			
		||||
glibtop_get_proc_map_p
 | 
			
		||||
glibtop_init_proc_map_s
 | 
			
		||||
glibtop_get_proc_map_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/sysinfo.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>sysinfo</FILE>
 | 
			
		||||
GLIBTOP_SYSINFO_NCPU
 | 
			
		||||
GLIBTOP_SYSINFO_CPUINFO
 | 
			
		||||
GLIBTOP_MAX_SYSINFO
 | 
			
		||||
glibtop_sysinfo
 | 
			
		||||
glibtop_entry
 | 
			
		||||
glibtop_get_sysinfo_r
 | 
			
		||||
glibtop_get_sysinfo_s
 | 
			
		||||
glibtop_get_sysinfo
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/union.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>union</FILE>
 | 
			
		||||
glibtop_union
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/version.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>version</FILE>
 | 
			
		||||
LIBGTOP_VERSION_STRING
 | 
			
		||||
glibtop_send_version
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/proclist.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>proclist</FILE>
 | 
			
		||||
GLIBTOP_PROCLIST_NUMBER
 | 
			
		||||
GLIBTOP_PROCLIST_TOTAL
 | 
			
		||||
GLIBTOP_PROCLIST_SIZE
 | 
			
		||||
GLIBTOP_MAX_PROCLIST
 | 
			
		||||
GLIBTOP_KERN_PROC_ALL
 | 
			
		||||
GLIBTOP_KERN_PROC_PID
 | 
			
		||||
GLIBTOP_KERN_PROC_PGRP
 | 
			
		||||
GLIBTOP_KERN_PROC_SESSION
 | 
			
		||||
GLIBTOP_KERN_PROC_TTY
 | 
			
		||||
GLIBTOP_KERN_PROC_UID
 | 
			
		||||
GLIBTOP_KERN_PROC_RUID
 | 
			
		||||
GLIBTOP_KERN_PROC_MASK
 | 
			
		||||
GLIBTOP_EXCLUDE_IDLE
 | 
			
		||||
GLIBTOP_EXCLUDE_SYSTEM
 | 
			
		||||
GLIBTOP_EXCLUDE_NOTTY
 | 
			
		||||
glibtop_proclist
 | 
			
		||||
glibtop_get_proclist
 | 
			
		||||
glibtop_get_proclist_r
 | 
			
		||||
glibtop_get_proclist_l
 | 
			
		||||
glibtop_init_proclist_p
 | 
			
		||||
glibtop_get_proclist_p
 | 
			
		||||
glibtop_init_proclist_s
 | 
			
		||||
glibtop_get_proclist_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/sem_limits.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>sem_limits</FILE>
 | 
			
		||||
GLIBTOP_IPC_SEMMAP
 | 
			
		||||
GLIBTOP_IPC_SEMMNI
 | 
			
		||||
GLIBTOP_IPC_SEMMNS
 | 
			
		||||
GLIBTOP_IPC_SEMMNU
 | 
			
		||||
GLIBTOP_IPC_SEMMSL
 | 
			
		||||
GLIBTOP_IPC_SEMOPM
 | 
			
		||||
GLIBTOP_IPC_SEMUME
 | 
			
		||||
GLIBTOP_IPC_SEMUSZ
 | 
			
		||||
GLIBTOP_IPC_SEMVMX
 | 
			
		||||
GLIBTOP_IPC_SEMAEM
 | 
			
		||||
GLIBTOP_MAX_SEM_LIMITS
 | 
			
		||||
glibtop_sem_limits
 | 
			
		||||
glibtop_get_sem_limits
 | 
			
		||||
glibtop_get_sem_limits_r
 | 
			
		||||
glibtop_get_sem_limits_l
 | 
			
		||||
glibtop_init_sem_limits_p
 | 
			
		||||
glibtop_get_sem_limits_p
 | 
			
		||||
glibtop_init_sem_limits_s
 | 
			
		||||
glibtop_get_sem_limits_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/prockernel.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>prockernel</FILE>
 | 
			
		||||
GLIBTOP_PROC_KERNEL_K_FLAGS
 | 
			
		||||
GLIBTOP_PROC_KERNEL_MIN_FLT
 | 
			
		||||
GLIBTOP_PROC_KERNEL_MAJ_FLT
 | 
			
		||||
GLIBTOP_PROC_KERNEL_CMIN_FLT
 | 
			
		||||
GLIBTOP_PROC_KERNEL_CMAJ_FLT
 | 
			
		||||
GLIBTOP_PROC_KERNEL_KSTK_ESP
 | 
			
		||||
GLIBTOP_PROC_KERNEL_KSTK_EIP
 | 
			
		||||
GLIBTOP_PROC_KERNEL_NWCHAN
 | 
			
		||||
GLIBTOP_PROC_KERNEL_WCHAN
 | 
			
		||||
GLIBTOP_MAX_PROC_KERNEL
 | 
			
		||||
glibtop_proc_kernel
 | 
			
		||||
glibtop_get_proc_kernel
 | 
			
		||||
glibtop_get_proc_kernel_r
 | 
			
		||||
glibtop_get_proc_kernel_l
 | 
			
		||||
glibtop_init_proc_kernel_p
 | 
			
		||||
glibtop_get_proc_kernel_p
 | 
			
		||||
glibtop_init_proc_kernel_s
 | 
			
		||||
glibtop_get_proc_kernel_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/fsusage.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>fsusage</FILE>
 | 
			
		||||
GLIBTOP_FSUSAGE_BLOCKS
 | 
			
		||||
GLIBTOP_FSUSAGE_BFREE
 | 
			
		||||
GLIBTOP_FSUSAGE_BAVAIL
 | 
			
		||||
GLIBTOP_FSUSAGE_FILES
 | 
			
		||||
GLIBTOP_FSUSAGE_FFREE
 | 
			
		||||
GLIBTOP_FSUSAGE_BLOCK_SIZE
 | 
			
		||||
GLIBTOP_FSUSAGE_READ
 | 
			
		||||
GLIBTOP_FSUSAGE_WRITE
 | 
			
		||||
GLIBTOP_MAX_FSUSAGE
 | 
			
		||||
glibtop_fsusage
 | 
			
		||||
glibtop_get_fsusage
 | 
			
		||||
glibtop_get_fsusage_r
 | 
			
		||||
glibtop_get_fsusage_l
 | 
			
		||||
glibtop_get_fsusage_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/loadavg.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>loadavg</FILE>
 | 
			
		||||
GLIBTOP_LOADAVG_LOADAVG
 | 
			
		||||
GLIBTOP_LOADAVG_NR_RUNNING
 | 
			
		||||
GLIBTOP_LOADAVG_NR_TASKS
 | 
			
		||||
GLIBTOP_LOADAVG_LAST_PID
 | 
			
		||||
GLIBTOP_MAX_LOADAVG
 | 
			
		||||
glibtop_loadavg
 | 
			
		||||
glibtop_get_loadavg
 | 
			
		||||
glibtop_get_loadavg_r
 | 
			
		||||
glibtop_get_loadavg_l
 | 
			
		||||
glibtop_init_loadavg_p
 | 
			
		||||
glibtop_get_loadavg_p
 | 
			
		||||
glibtop_init_loadavg_s
 | 
			
		||||
glibtop_get_loadavg_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/mem.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>mem</FILE>
 | 
			
		||||
GLIBTOP_MEM_TOTAL
 | 
			
		||||
GLIBTOP_MEM_USED
 | 
			
		||||
GLIBTOP_MEM_FREE
 | 
			
		||||
GLIBTOP_MEM_SHARED
 | 
			
		||||
GLIBTOP_MEM_BUFFER
 | 
			
		||||
GLIBTOP_MEM_CACHED
 | 
			
		||||
GLIBTOP_MEM_USER
 | 
			
		||||
GLIBTOP_MEM_LOCKED
 | 
			
		||||
GLIBTOP_MAX_MEM
 | 
			
		||||
glibtop_mem
 | 
			
		||||
glibtop_get_mem
 | 
			
		||||
glibtop_get_mem_r
 | 
			
		||||
glibtop_get_mem_l
 | 
			
		||||
glibtop_init_mem_p
 | 
			
		||||
glibtop_get_mem_p
 | 
			
		||||
glibtop_init_mem_s
 | 
			
		||||
glibtop_get_mem_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/mountlist.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>mountlist</FILE>
 | 
			
		||||
GLIBTOP_MOUNTLIST_NUMBER
 | 
			
		||||
GLIBTOP_MOUNTLIST_TOTAL
 | 
			
		||||
GLIBTOP_MOUNTLIST_SIZE
 | 
			
		||||
GLIBTOP_MAX_MOUNTLIST
 | 
			
		||||
glibtop_mountentry
 | 
			
		||||
glibtop_mountlist
 | 
			
		||||
glibtop_get_mountlist
 | 
			
		||||
glibtop_get_mountlist_r
 | 
			
		||||
glibtop_get_mountlist_l
 | 
			
		||||
glibtop_get_mountlist_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/msg_limits.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>msg_limits</FILE>
 | 
			
		||||
GLIBTOP_IPC_MSGPOOL
 | 
			
		||||
GLIBTOP_IPC_MSGMAP
 | 
			
		||||
GLIBTOP_IPC_MSGMAX
 | 
			
		||||
GLIBTOP_IPC_MSGMNB
 | 
			
		||||
GLIBTOP_IPC_MSGMNI
 | 
			
		||||
GLIBTOP_IPC_MSGSSZ
 | 
			
		||||
GLIBTOP_IPC_MSGTQL
 | 
			
		||||
GLIBTOP_MAX_MSG_LIMITS
 | 
			
		||||
glibtop_msg_limits
 | 
			
		||||
glibtop_get_msg_limits
 | 
			
		||||
glibtop_get_msg_limits_r
 | 
			
		||||
glibtop_get_msg_limits_l
 | 
			
		||||
glibtop_init_msg_limits_p
 | 
			
		||||
glibtop_get_msg_limits_p
 | 
			
		||||
glibtop_init_msg_limits_s
 | 
			
		||||
glibtop_get_msg_limits_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/cpu.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>cpu</FILE>
 | 
			
		||||
GLIBTOP_CPU_TOTAL
 | 
			
		||||
GLIBTOP_CPU_USER
 | 
			
		||||
GLIBTOP_CPU_NICE
 | 
			
		||||
GLIBTOP_CPU_SYS
 | 
			
		||||
GLIBTOP_CPU_IDLE
 | 
			
		||||
GLIBTOP_CPU_FREQUENCY
 | 
			
		||||
GLIBTOP_XCPU_TOTAL
 | 
			
		||||
GLIBTOP_XCPU_USER
 | 
			
		||||
GLIBTOP_XCPU_NICE
 | 
			
		||||
GLIBTOP_XCPU_SYS
 | 
			
		||||
GLIBTOP_XCPU_IDLE
 | 
			
		||||
GLIBTOP_XCPU_FLAGS
 | 
			
		||||
GLIBTOP_CPU_IOWAIT
 | 
			
		||||
GLIBTOP_CPU_IRQ
 | 
			
		||||
GLIBTOP_CPU_SOFTIRQ
 | 
			
		||||
GLIBTOP_XCPU_IOWAIT
 | 
			
		||||
GLIBTOP_XCPU_IRQ
 | 
			
		||||
GLIBTOP_XCPU_SOFTIRQ
 | 
			
		||||
GLIBTOP_MAX_CPU
 | 
			
		||||
GLIBTOP_NCPU
 | 
			
		||||
glibtop_cpu
 | 
			
		||||
glibtop_get_cpu
 | 
			
		||||
glibtop_get_cpu_r
 | 
			
		||||
glibtop_get_cpu_l
 | 
			
		||||
glibtop_init_cpu_p
 | 
			
		||||
glibtop_get_cpu_p
 | 
			
		||||
glibtop_init_cpu_s
 | 
			
		||||
glibtop_get_cpu_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
<INCLUDE>glibtop/swap.h</INCLUDE>
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>swap</FILE>
 | 
			
		||||
GLIBTOP_SWAP_TOTAL
 | 
			
		||||
GLIBTOP_SWAP_USED
 | 
			
		||||
GLIBTOP_SWAP_FREE
 | 
			
		||||
GLIBTOP_SWAP_PAGEIN
 | 
			
		||||
GLIBTOP_SWAP_PAGEOUT
 | 
			
		||||
GLIBTOP_MAX_SWAP
 | 
			
		||||
glibtop_swap
 | 
			
		||||
glibtop_get_swap
 | 
			
		||||
glibtop_get_swap_r
 | 
			
		||||
glibtop_get_swap_l
 | 
			
		||||
glibtop_init_swap_p
 | 
			
		||||
glibtop_get_swap_p
 | 
			
		||||
glibtop_init_swap_s
 | 
			
		||||
glibtop_get_swap_s
 | 
			
		||||
</SECTION>
 | 
			
		||||
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
<?xml version="1.0" standalone="no"?>
 | 
			
		||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
 | 
			
		||||
    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
 | 
			
		||||
<phrase>@PACKAGE_VERSION@</phrase>
 | 
			
		||||
							
								
								
									
										2
									
								
								dtd/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								dtd/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
Makefile.in
 | 
			
		||||
Makefile
 | 
			
		||||
							
								
								
									
										9
									
								
								dtd/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								dtd/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
backenddir	= @LIBGTOP_BACKEND_DIR@
 | 
			
		||||
 | 
			
		||||
backend_DATA	= \
 | 
			
		||||
	libgtop-backends.dtd	\
 | 
			
		||||
	libgtop-backend-info.dtd
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST	= |
 | 
			
		||||
	$(backend_DATA)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								dtd/libgtop-backend-info.dtd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								dtd/libgtop-backend-info.dtd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)>
 | 
			
		||||
<!ELEMENT name (short_name,long_name?)>
 | 
			
		||||
<!ELEMENT short_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT long_name (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT description (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT authors (author)+>
 | 
			
		||||
<!ELEMENT author (author_name,author_email?)>
 | 
			
		||||
<!ELEMENT author_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT author_email (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT legalnotice (license,copyright?)>
 | 
			
		||||
<!ELEMENT license (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT copyright (holder)+>
 | 
			
		||||
<!ELEMENT holder (holder_year?,holder_name,holder_email?)>
 | 
			
		||||
<!ELEMENT holder_year (#PCDATA)>
 | 
			
		||||
<!ELEMENT holder_name (#PCDATA)>
 | 
			
		||||
<!ELEMENT holder_email (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT comments (comment)+>
 | 
			
		||||
<!ELEMENT comment (#PCDATA)>
 | 
			
		||||
							
								
								
									
										11
									
								
								dtd/libgtop-backends.dtd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								dtd/libgtop-backends.dtd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<!ELEMENT Backends (Backend)+>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT Backend (Name,Location)>
 | 
			
		||||
<!ELEMENT Name (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)>
 | 
			
		||||
<!ELEMENT LibtoolName (#PCDATA)>
 | 
			
		||||
<!ELEMENT ShlibName (#PCDATA)>
 | 
			
		||||
 | 
			
		||||
<!ELEMENT ExtraLibs (ExtraLib)+>
 | 
			
		||||
<!ELEMENT ExtraLib (LibtoolName?,ShlibName)>
 | 
			
		||||
							
								
								
									
										16
									
								
								examples/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								examples/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
first
 | 
			
		||||
first_linux
 | 
			
		||||
first_static
 | 
			
		||||
second
 | 
			
		||||
third
 | 
			
		||||
third_linux
 | 
			
		||||
third_static
 | 
			
		||||
second_static
 | 
			
		||||
second_linux
 | 
			
		||||
smp_static sysdeps_static netload_static procmap_static mountlist_static
 | 
			
		||||
smp sysdeps netload procmap mountlist
 | 
			
		||||
timings timings_static
 | 
			
		||||
@@ -1,152 +1,3 @@
 | 
			
		||||
2007-05-19  Benoît Dejean  <benoit@placenet.org>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am:
 | 
			
		||||
	* mem.c: (main):
 | 
			
		||||
	* wd.c: (main):
 | 
			
		||||
 | 
			
		||||
	Fixed wd and new simple mem example.
 | 
			
		||||
 | 
			
		||||
2006-02-27  Benoît Dejean  <benoit@placenet.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (pprint_get_proc_mem), (main):
 | 
			
		||||
 | 
			
		||||
	Added proc_mem example.
 | 
			
		||||
 | 
			
		||||
2005-12-15  Benoît Dejean  <benoit@placenet.org>
 | 
			
		||||
 | 
			
		||||
	* proclist.c: (print_pids), (main):
 | 
			
		||||
	
 | 
			
		||||
	Improved example.
 | 
			
		||||
 | 
			
		||||
2005-12-12  Benoît Dejean  <benoit@placenet.org>
 | 
			
		||||
 | 
			
		||||
	* .cvsignore:
 | 
			
		||||
	* Makefile.am:
 | 
			
		||||
	* proclist.c: (main):
 | 
			
		||||
	* procmap.c: (main):
 | 
			
		||||
 | 
			
		||||
	Added quick example for glibtop_get_proclist()
 | 
			
		||||
	and updated procmap example to display smap.
 | 
			
		||||
 | 
			
		||||
2005-08-02  Benoît Dejean  <TazForEver@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (pprint_get_cpu), (pprint_get_loadavg),
 | 
			
		||||
	(pprint_get_mem), (pprint_get_msg_limits), (pprint_get_netlist),
 | 
			
		||||
	(pprint_get_swap), (pprint_get_uptime), (pprint_get_proc_kernel),
 | 
			
		||||
	(main):
 | 
			
		||||
 | 
			
		||||
	Added pprint_get_proc_kernel(pid).
 | 
			
		||||
	Fixed prototypes.
 | 
			
		||||
 | 
			
		||||
2005-01-22  Benoît Dejean  <TazForEver@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* openfiles.c: (show_open_files): Updated.
 | 
			
		||||
 | 
			
		||||
2004-12-23  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* netload.c: (main):
 | 
			
		||||
	* procmap.c: (main): s/glibtop_error/g_error/g
 | 
			
		||||
 | 
			
		||||
2004-11-15  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* netload.c: (hwaddress_format_for_display), (main): Updated.
 | 
			
		||||
 | 
			
		||||
2004-11-13  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (pprint_get_fsusage), (pprint_get_mountlist),
 | 
			
		||||
	(pprint_get_netload), (pprint_get_netlist), (main): Updated.
 | 
			
		||||
 | 
			
		||||
2004-09-25  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (main): Re-added pprint_get_msg_limits()
 | 
			
		||||
 | 
			
		||||
i2004-09-25  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* df.c: (main):
 | 
			
		||||
	* pprint.c: (main):
 | 
			
		||||
	* procargs.c: (main): Added missing call to glibgtop_init() / glibtop_close()
 | 
			
		||||
 | 
			
		||||
2004-09-24  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* .cvsignore:
 | 
			
		||||
	* Makefile.am:
 | 
			
		||||
	* ../configure.in
 | 
			
		||||
	* df.c: (print_fsusage), (main): Added new example, just like 'df'.
 | 
			
		||||
 | 
			
		||||
2004-09-22  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (main): Disable pprint_get_msg_limits() because it can fail.
 | 
			
		||||
 | 
			
		||||
2004-09-21  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (pprint_get_swap), (main): Updated.
 | 
			
		||||
 | 
			
		||||
2004-09-21  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* procargs.c: (show_args), (main): Updated.
 | 
			
		||||
 | 
			
		||||
2004-09-21  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (pprint_get_mountlist), (pprint_get_netload),
 | 
			
		||||
	(pprint_get_uptime), (main): Updated.
 | 
			
		||||
 | 
			
		||||
2004-09-21  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* pprint.c: (pprint_get_mountlist): Updated.
 | 
			
		||||
 | 
			
		||||
2004-09-21  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* procargs.c: (show_args), (main): Updated.
 | 
			
		||||
 | 
			
		||||
2004-09-20  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* .cvsignore:
 | 
			
		||||
	* Makefile.am:
 | 
			
		||||
	* pprint.c: (pprint_get_cpu), (pprint_get_fsusage),
 | 
			
		||||
	(pprint_get_loadavg), (pprint_get_mem), (pprint_get_mountlist),
 | 
			
		||||
	(pprint_get_msg_limits), (main): Added new example : pretty prints
 | 
			
		||||
	the result of glibtop_*. Work in progress.
 | 
			
		||||
	
 | 
			
		||||
	Now builds procargs.
 | 
			
		||||
	
 | 
			
		||||
	* ../configure.in: Added to static list.
 | 
			
		||||
 | 
			
		||||
2004-07-07  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
	* procargs.c: Added glibtop_get_proc_argv demo.
 | 
			
		||||
 | 
			
		||||
2003-12-27  Ole Laursen  <olau@hardworking.dk>
 | 
			
		||||
 | 
			
		||||
	* mountlist.c: Updated to display block size too.
 | 
			
		||||
 | 
			
		||||
2004-03-04  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* smp.c: use libgtop-i18n.h
 | 
			
		||||
 | 
			
		||||
2003-10-21  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am:
 | 
			
		||||
	* smp.c:
 | 
			
		||||
	* sysdeps.c: (main): install only one library, libgtop-2.0
 | 
			
		||||
	Fix build-time warnings due to the redefinition of guint64
 | 
			
		||||
	Fix building smp.c and sysdeps.c
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* first.c:
 | 
			
		||||
	* mountlist.c:
 | 
			
		||||
	* netload.c:
 | 
			
		||||
	* procmap.c:
 | 
			
		||||
	* second.c:
 | 
			
		||||
	* smp.c:
 | 
			
		||||
	* sysdeps.c:
 | 
			
		||||
	* third.c:
 | 
			
		||||
	* timings.c: fixed compilation
 | 
			
		||||
 | 
			
		||||
2003-10-20  Bastien Nocera  <hadess@hadess.net>
 | 
			
		||||
 | 
			
		||||
	* Makefile.am: removed traces of guile, intllibs and libgnomesupport
 | 
			
		||||
 | 
			
		||||
2001-01-14  Abel Cheung  <maddog@linux.org.hk>
 | 
			
		||||
 | 
			
		||||
	* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE.
 | 
			
		||||
@@ -167,7 +18,7 @@ i2004-09-25  Benoît Dejean  <tazforever@dlfp.org>
 | 
			
		||||
 | 
			
		||||
Fri Apr  9 00:14:52 1999 Timur Bakeyev  <timur@gnu.org>
 | 
			
		||||
 | 
			
		||||
	* timings.c: Added timersub defenition, to make code compilable on
 | 
			
		||||
	* timings.c: Added timersub defenition, to make code compilable on 
 | 
			
		||||
	BSDI.
 | 
			
		||||
 | 
			
		||||
1999-03-24  Martin Baulig  <martin@home-of-linux.org>
 | 
			
		||||
@@ -233,11 +84,11 @@ Fri Apr  9 00:14:52 1999 Timur Bakeyev  <timur@gnu.org>
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
@@ -6,55 +6,116 @@ INCLUDES		= @INCLUDES@
 | 
			
		||||
 | 
			
		||||
DEFS			= @DEFS@
 | 
			
		||||
 | 
			
		||||
noinst_PROGRAMS	= 	first second pprint procargs df netlist \
 | 
			
		||||
# 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 \
 | 
			
		||||
			  openfiles smp proclist mem wd
 | 
			
		||||
			  @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
 | 
			
		||||
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 -lm
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
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 -lm
 | 
			
		||||
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
 | 
			
		||||
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@
 | 
			
		||||
 | 
			
		||||
pprint_SOURCES	        = pprint.c
 | 
			
		||||
pprint_LDADD		= $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
procargs_SOURCES	  = procargs.c
 | 
			
		||||
procargs_LDADD		  = $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
df_SOURCES	  = df.c
 | 
			
		||||
df_LDADD		  = $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
netlist_SOURCES		= netlist.c
 | 
			
		||||
netlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
openfiles_SOURCES	= openfiles.c
 | 
			
		||||
openfiles_LDADD		= $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
proclist_SOURCES	= proclist.c
 | 
			
		||||
proclist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
wd_SOURCES	= wd.c
 | 
			
		||||
wd_LDADD	= $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
 | 
			
		||||
mem_SOURCE	= mem.c
 | 
			
		||||
mem_LDADD	= $(top_builddir)/lib/libgtop-2.0.la
 | 
			
		||||
timings_static_SOURCES	= $(timings_SOURCES)
 | 
			
		||||
timings_static_LDADD	= $(timings_LDADD)
 | 
			
		||||
timings_static_LDFLAGS	= -static
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,51 +0,0 @@
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/fsusage.h>
 | 
			
		||||
#include <glibtop/mountlist.h>
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void print_fsusage(const char *mountpoint)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_fsusage buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_fsusage(&buf, mountpoint);
 | 
			
		||||
 | 
			
		||||
  printf("%-20s %-10llu %-10llu %-10llu %.1f\n",
 | 
			
		||||
	 mountpoint,
 | 
			
		||||
	 buf.blocks * buf.block_size >> 20,
 | 
			
		||||
	 (buf.blocks - buf.bavail) * buf.block_size >> 20,
 | 
			
		||||
	 buf.bavail * buf.block_size >> 20,
 | 
			
		||||
	 (buf.blocks - buf.bavail) * 100.0 / buf.blocks
 | 
			
		||||
	 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
{
 | 
			
		||||
  glibtop_mountlist buf;
 | 
			
		||||
  glibtop_mountentry *entries;
 | 
			
		||||
  size_t i;
 | 
			
		||||
 | 
			
		||||
  glibtop_init();
 | 
			
		||||
 | 
			
		||||
  printf("%-20s %-10s %-10s %-10s %-10s\n",
 | 
			
		||||
	 "Filesystem", "Size", "Used", "Avail", "Use%");
 | 
			
		||||
 | 
			
		||||
  entries = glibtop_get_mountlist(&buf, FALSE);
 | 
			
		||||
 | 
			
		||||
  for(i = 0; i < buf.number; ++i)
 | 
			
		||||
    {
 | 
			
		||||
      print_fsusage(entries[i].mountdir);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  g_free(entries);
 | 
			
		||||
 | 
			
		||||
  glibtop_close();
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,17 +21,12 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/parameter.h>
 | 
			
		||||
 | 
			
		||||
@@ -57,7 +54,7 @@ main (int argc, char *argv [])
 | 
			
		||||
	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));
 | 
			
		||||
@@ -137,7 +134,7 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	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,
 | 
			
		||||
@@ -161,7 +158,7 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	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,
 | 
			
		||||
@@ -219,7 +216,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) sysdeps.ppp);
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	ptr = glibtop_get_proclist (&data.proclist, 0, 0);
 | 
			
		||||
 | 
			
		||||
	printf ("Proclist     (0x%08lx): %lu, %lu, %lu\n",
 | 
			
		||||
@@ -235,7 +232,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		printf ("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (ptr);
 | 
			
		||||
	glibtop_free (ptr);
 | 
			
		||||
 | 
			
		||||
	pid = getpid ();
 | 
			
		||||
	ppid = getppid ();
 | 
			
		||||
@@ -310,7 +307,7 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	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,
 | 
			
		||||
@@ -349,7 +346,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_args.size,
 | 
			
		||||
		args ? args : "");
 | 
			
		||||
 | 
			
		||||
	g_free (args);
 | 
			
		||||
	glibtop_free (args);
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
 | 
			
		||||
@@ -459,7 +456,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_args.size,
 | 
			
		||||
		args ? args : "");
 | 
			
		||||
 | 
			
		||||
	g_free (args);
 | 
			
		||||
	glibtop_free (args);
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
 | 
			
		||||
@@ -570,7 +567,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(unsigned long) data.proc_args.size,
 | 
			
		||||
		args ? args : "");
 | 
			
		||||
 | 
			
		||||
	g_free (args);
 | 
			
		||||
	glibtop_free (args);
 | 
			
		||||
 | 
			
		||||
	glibtop_close ();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/mem.h>
 | 
			
		||||
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_mem buf;
 | 
			
		||||
 | 
			
		||||
	glibtop_init();
 | 
			
		||||
 | 
			
		||||
	g_print("%lx\n", glibtop_global_server->features);
 | 
			
		||||
 | 
			
		||||
	glibtop_get_mem(&buf);
 | 
			
		||||
 | 
			
		||||
	glibtop_close();
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,17 +21,12 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/parameter.h>
 | 
			
		||||
 | 
			
		||||
@@ -52,11 +49,11 @@ main (int argc, char *argv [])
 | 
			
		||||
	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);
 | 
			
		||||
@@ -76,7 +73,7 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT; c++) {
 | 
			
		||||
		mount_entries = glibtop_get_mountlist (&mount_list, 1);
 | 
			
		||||
 | 
			
		||||
		g_free (mount_entries);
 | 
			
		||||
		glibtop_free (mount_entries);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf ("sbrk (0) = %p\n\n", sbrk (0));
 | 
			
		||||
@@ -92,21 +89,21 @@ main (int argc, char *argv [])
 | 
			
		||||
			mount_entries [index].type,
 | 
			
		||||
			mount_entries [index].devname);
 | 
			
		||||
 | 
			
		||||
	printf ("\n\n%-16s %9s %9s %9s %9s %9s %9s\n",
 | 
			
		||||
		"Mount", "Blocks", "Free", "Avail", "Files", "Free", "BlockSz");
 | 
			
		||||
	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 ("%-16s %9Lu %9Lu %9Lu %9Lu %9Lu %9d\n",
 | 
			
		||||
		printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n",
 | 
			
		||||
			mount_entries [index].mountdir,
 | 
			
		||||
			fsusage.blocks, fsusage.bfree,
 | 
			
		||||
			fsusage.bavail, fsusage.files,
 | 
			
		||||
			fsusage.ffree, fsusage.block_size);
 | 
			
		||||
			fsusage.ffree);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (mount_entries);
 | 
			
		||||
	glibtop_free (mount_entries);
 | 
			
		||||
 | 
			
		||||
	printf ("\nsbrk (0) = %p\n\n", sbrk (0));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,17 +21,12 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/parameter.h>
 | 
			
		||||
 | 
			
		||||
@@ -42,24 +39,6 @@
 | 
			
		||||
#define PROFILE_COUNT	1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static char* hwaddress_format_for_display(glibtop_netload *buf)
 | 
			
		||||
{
 | 
			
		||||
	unsigned i;
 | 
			
		||||
	GString *repr = g_string_new("");
 | 
			
		||||
	char *str;
 | 
			
		||||
 | 
			
		||||
	for(i = 0; i < sizeof buf->hwaddress; ++i)
 | 
			
		||||
		g_string_append_printf(repr, "%02X:",
 | 
			
		||||
				       (unsigned) ((char*)buf->hwaddress)[i]);
 | 
			
		||||
 | 
			
		||||
	repr->str [ repr->len - 1] = ' ';
 | 
			
		||||
	str = g_string_free(repr, FALSE);
 | 
			
		||||
	g_strstrip(str);
 | 
			
		||||
	return str;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main (int argc, char *argv [])
 | 
			
		||||
{
 | 
			
		||||
@@ -67,8 +46,6 @@ main (int argc, char *argv [])
 | 
			
		||||
	unsigned method, count, port;
 | 
			
		||||
	struct in_addr addr, subnet;
 | 
			
		||||
	char *address_string, *subnet_string;
 | 
			
		||||
	char address6_string[INET6_ADDRSTRLEN], prefix6_string[INET6_ADDRSTRLEN];
 | 
			
		||||
	char *hwaddress_string;
 | 
			
		||||
	char buffer [BUFSIZ];
 | 
			
		||||
 | 
			
		||||
	count = PROFILE_COUNT;
 | 
			
		||||
@@ -76,7 +53,7 @@ main (int argc, char *argv [])
 | 
			
		||||
	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));
 | 
			
		||||
@@ -98,63 +75,49 @@ main (int argc, char *argv [])
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, 0);
 | 
			
		||||
 | 
			
		||||
	if (argc != 2)
 | 
			
		||||
		g_error ("Usage: %s interface", argv [0]);
 | 
			
		||||
 | 
			
		||||
		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 = g_strdup (inet_ntoa (addr));
 | 
			
		||||
	subnet_string  = g_strdup (inet_ntoa (subnet));
 | 
			
		||||
	address_string = glibtop_strdup (inet_ntoa (addr));
 | 
			
		||||
	subnet_string  = glibtop_strdup (inet_ntoa (subnet));
 | 
			
		||||
 | 
			
		||||
	inet_ntop (AF_INET6, netload.address6, address6_string, INET6_ADDRSTRLEN);
 | 
			
		||||
	inet_ntop (AF_INET6, netload.prefix6,  prefix6_string,  INET6_ADDRSTRLEN);
 | 
			
		||||
	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);
 | 
			
		||||
 | 
			
		||||
	hwaddress_string = hwaddress_format_for_display(&netload);
 | 
			
		||||
 | 
			
		||||
	printf ("Network Load (0x%016llx):\n\n"
 | 
			
		||||
		"\tInterface Flags:\t0x%016llx\n"
 | 
			
		||||
		"\tAddress:\t\t0x%08x - %s\n"
 | 
			
		||||
		"\tSubnet:\t\t\t0x%08x - %s\n\n"
 | 
			
		||||
		"\tMTU:\t\t\t%d\n"
 | 
			
		||||
		"\tCollisions:\t\t%llu\n\n"
 | 
			
		||||
		"\tPackets In:\t\t%llu\n"
 | 
			
		||||
		"\tPackets Out:\t\t%llu\n"
 | 
			
		||||
		"\tPackets Total:\t\t%llu\n\n"
 | 
			
		||||
		"\tBytes In:\t\t%llu\n"
 | 
			
		||||
		"\tBytes Out:\t\t%llu\n"
 | 
			
		||||
		"\tBytes Total:\t\t%llu\n\n"
 | 
			
		||||
		"\tErrors In:\t\t%llu\n"
 | 
			
		||||
		"\tErrors Out:\t\t%llu\n"
 | 
			
		||||
		"\tErrors Total:\t\t%llu\n\n"
 | 
			
		||||
		"\tAddress6:\t\t%s\n"
 | 
			
		||||
		"\tPrefix6:\t\t%s\n"
 | 
			
		||||
		"\tScope6:\t\t\t%#03x\n\n"
 | 
			
		||||
		"\tHarware Address:\t%s\n\n",
 | 
			
		||||
		netload.flags,
 | 
			
		||||
		netload.if_flags,
 | 
			
		||||
		(guint32) netload.address, address_string,
 | 
			
		||||
		(guint32) netload.subnet,  subnet_string,
 | 
			
		||||
		netload.mtu,
 | 
			
		||||
		netload.collisions,
 | 
			
		||||
		netload.packets_in,
 | 
			
		||||
		netload.packets_out,
 | 
			
		||||
		netload.packets_total,
 | 
			
		||||
		netload.bytes_in,
 | 
			
		||||
		netload.bytes_out,
 | 
			
		||||
		netload.bytes_total,
 | 
			
		||||
		netload.errors_in,
 | 
			
		||||
		netload.errors_out,
 | 
			
		||||
		netload.errors_total,
 | 
			
		||||
		address6_string,
 | 
			
		||||
		prefix6_string,
 | 
			
		||||
		(int) netload.scope6,
 | 
			
		||||
		hwaddress_string);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	g_free (address_string);
 | 
			
		||||
	g_free (subnet_string);
 | 
			
		||||
	glibtop_free (address_string);
 | 
			
		||||
	glibtop_free (subnet_string);
 | 
			
		||||
 | 
			
		||||
	glibtop_close ();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,68 +0,0 @@
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/procopenfiles.h>
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
static void show_open_files(pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_proc_open_files buf;
 | 
			
		||||
  glibtop_open_files_entry *files;
 | 
			
		||||
  unsigned i;
 | 
			
		||||
 | 
			
		||||
  files = glibtop_get_proc_open_files(&buf, pid);
 | 
			
		||||
 | 
			
		||||
  printf("<%ld>\n", (long)pid);
 | 
			
		||||
 | 
			
		||||
  for(i = 0; i < buf.number; ++i)
 | 
			
		||||
  {
 | 
			
		||||
	  printf("\tfd = %d\t", files[i].fd);
 | 
			
		||||
 | 
			
		||||
	  switch(files[i].type)
 | 
			
		||||
	  {
 | 
			
		||||
	  case GLIBTOP_FILE_TYPE_FILE:
 | 
			
		||||
		  printf("file \"%s\"\n", files[i].info.file.name);
 | 
			
		||||
		  break;
 | 
			
		||||
 | 
			
		||||
	  case GLIBTOP_FILE_TYPE_PIPE:
 | 
			
		||||
		  printf("pipe\n");
 | 
			
		||||
		  break;
 | 
			
		||||
 | 
			
		||||
	  case GLIBTOP_FILE_TYPE_INETSOCKET:
 | 
			
		||||
		  printf("socket %s:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port);
 | 
			
		||||
		  break;
 | 
			
		||||
 | 
			
		||||
	  case GLIBTOP_FILE_TYPE_LOCALSOCKET:
 | 
			
		||||
		  printf("localsocket %s\n", files[i].info.localsock.name);
 | 
			
		||||
		  break;
 | 
			
		||||
	  }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  putchar('\n');
 | 
			
		||||
 | 
			
		||||
  g_free(files);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_init();
 | 
			
		||||
 | 
			
		||||
  show_open_files(getpid());
 | 
			
		||||
 | 
			
		||||
  while(*++argv)
 | 
			
		||||
    {
 | 
			
		||||
      pid_t pid = strtol(*argv, NULL, 10);
 | 
			
		||||
      show_open_files(pid);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  glibtop_close();
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,324 +0,0 @@
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/union.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define buf_offsetof(MEMBER) ((ptrdiff_t)&(buf.MEMBER) - (ptrdiff_t)&buf)
 | 
			
		||||
 | 
			
		||||
#define HEADER_PPRINT(FUNC) printf("### " #FUNC " ###\nsizeof *buf = %lu B\n", \
 | 
			
		||||
(unsigned long) sizeof buf)
 | 
			
		||||
 | 
			
		||||
#define PPRINT(DATA, FORMAT) printf("\t%4lu B %3lu " #DATA " = " FORMAT "\n", \
 | 
			
		||||
(unsigned long) sizeof buf.DATA, (unsigned long) buf_offsetof(DATA), buf.DATA)
 | 
			
		||||
 | 
			
		||||
#define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do { \
 | 
			
		||||
size_t i; \
 | 
			
		||||
printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \
 | 
			
		||||
(unsigned long) sizeof buf.ARRAY, (unsigned long) buf_offsetof(ARRAY),\
 | 
			
		||||
(unsigned long) G_N_ELEMENTS(buf.ARRAY)); \
 | 
			
		||||
for(i = 0; i < (SIZE - 1); ++i) printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]); \
 | 
			
		||||
printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \
 | 
			
		||||
} while(0)
 | 
			
		||||
 | 
			
		||||
#define FOOTER_PPRINT() putchar('\n');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_cpu(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_cpu buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_cpu(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_cpu);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(total, "%llu");
 | 
			
		||||
  PPRINT(user, "%llu");
 | 
			
		||||
  PPRINT(nice, "%llu");
 | 
			
		||||
  PPRINT(sys, "%llu");
 | 
			
		||||
  PPRINT(idle, "%llu");
 | 
			
		||||
  PPRINT(iowait, "%llu");
 | 
			
		||||
  PPRINT(irq, "%llu");
 | 
			
		||||
  PPRINT(softirq, "%llu");
 | 
			
		||||
  PPRINT(frequency, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_total, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_user, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_nice, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_sys, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_idle, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_iowait, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_irq, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT_ARRAY(xcpu_softirq, GLIBTOP_NCPU, "%llu");
 | 
			
		||||
  PPRINT(xcpu_flags, "%llx");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_fsusage(const char *mountpoint)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_fsusage buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_fsusage(&buf, mountpoint);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_fsusage);
 | 
			
		||||
  printf("pprint_get_fsusage (mountpoint = \"%s\"\n", mountpoint);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(blocks, "%llu");
 | 
			
		||||
  PPRINT(bfree, "%llu");
 | 
			
		||||
  PPRINT(bavail, "%llu");
 | 
			
		||||
  PPRINT(files, "%llu");
 | 
			
		||||
  PPRINT(ffree, "%llu");
 | 
			
		||||
  PPRINT(block_size, "%u");
 | 
			
		||||
  PPRINT(read, "%llu");
 | 
			
		||||
  PPRINT(write, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_loadavg(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_loadavg buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_loadavg(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_loadavg);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT_ARRAY(loadavg, 3, "%f");
 | 
			
		||||
  PPRINT(nr_running, "%llu");
 | 
			
		||||
  PPRINT(nr_tasks, "%llu");
 | 
			
		||||
  PPRINT(last_pid, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_mem(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_mem buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_mem(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_mem);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(total, "%llu");
 | 
			
		||||
  PPRINT(used, "%llu");
 | 
			
		||||
  PPRINT(free, "%llu");
 | 
			
		||||
  PPRINT(shared, "%llu");
 | 
			
		||||
  PPRINT(buffer, "%llu");
 | 
			
		||||
  PPRINT(cached, "%llu");
 | 
			
		||||
  PPRINT(user, "%llu");
 | 
			
		||||
  PPRINT(locked, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_mountlist(gboolean allfs)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_mountlist buf;
 | 
			
		||||
  glibtop_mountentry *entries;
 | 
			
		||||
  size_t i;
 | 
			
		||||
 | 
			
		||||
  entries = glibtop_get_mountlist(&buf, allfs);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_mountlist);
 | 
			
		||||
  printf("glibtop_get_mountlist (allfs = %d)\n", allfs);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(number, "%llu");
 | 
			
		||||
  PPRINT(total, "%llu");
 | 
			
		||||
  PPRINT(size, "%llu");
 | 
			
		||||
 | 
			
		||||
  printf("\t%4llu B entries[%llu] = \n\t\t{\n", buf.total, buf.number);
 | 
			
		||||
 | 
			
		||||
  for(i = 0; i < buf.number; ++i)
 | 
			
		||||
    {
 | 
			
		||||
      printf("\t\t .%lu = { .dev = %#llx,"
 | 
			
		||||
	     " .devname = \"%s\","
 | 
			
		||||
	     " .mountir = \"%s\","
 | 
			
		||||
	     " .type = \"%s\" }\n",
 | 
			
		||||
	     (unsigned long) i, entries[i].dev,
 | 
			
		||||
	     entries[i].devname,
 | 
			
		||||
	     entries[i].mountdir,
 | 
			
		||||
	     entries[i].type);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  printf("\t\t}\n");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
 | 
			
		||||
  g_free(entries);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_msg_limits(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_msg_limits buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_msg_limits(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_msg_limits);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(msgpool, "%llu");
 | 
			
		||||
  PPRINT(msgmap, "%llu");
 | 
			
		||||
  PPRINT(msgmax, "%llu");
 | 
			
		||||
  PPRINT(msgmnb, "%llu");
 | 
			
		||||
  PPRINT(msgmni, "%llu");
 | 
			
		||||
  PPRINT(msgssz, "%llu");
 | 
			
		||||
  PPRINT(msgtql, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_netload(const char *iface)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_netload buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_netload(&buf, iface);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_netload);
 | 
			
		||||
  printf("glibtop_get_netload (iface = \"%s\")\n", iface);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_netlist(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_netlist buf;
 | 
			
		||||
  char **devices;
 | 
			
		||||
  guint32 i;
 | 
			
		||||
 | 
			
		||||
  devices = glibtop_get_netlist(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_netlist);
 | 
			
		||||
 | 
			
		||||
  for(i = 0; i < buf.number; ++i)
 | 
			
		||||
  {
 | 
			
		||||
	  printf("\t%s\n", devices[i]);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
 | 
			
		||||
  g_strfreev(devices);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_swap(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_swap buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_swap(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_swap);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(total, "%llu");
 | 
			
		||||
  PPRINT(used, "%llu");
 | 
			
		||||
  PPRINT(free, "%llu");
 | 
			
		||||
  PPRINT(pagein, "%llu");
 | 
			
		||||
  PPRINT(pageout, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_uptime(void)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_uptime buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_uptime(&buf);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_uptime);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(uptime, "%f");
 | 
			
		||||
  PPRINT(idletime, "%f");
 | 
			
		||||
  PPRINT(boot_time, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_proc_kernel(pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_proc_kernel buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_proc_kernel(&buf, pid);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_proc_kernel);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(k_flags, "%llu");
 | 
			
		||||
  PPRINT(min_flt, "%llu");
 | 
			
		||||
  PPRINT(maj_flt, "%llu");
 | 
			
		||||
  PPRINT(cmin_flt, "%llu");
 | 
			
		||||
  PPRINT(cmaj_flt, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void pprint_get_proc_mem(pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_proc_mem buf;
 | 
			
		||||
 | 
			
		||||
  glibtop_get_proc_mem(&buf, pid);
 | 
			
		||||
 | 
			
		||||
  HEADER_PPRINT(glibtop_get_proc_mem);
 | 
			
		||||
  PPRINT(flags, "%#llx");
 | 
			
		||||
  PPRINT(size, "%llu");
 | 
			
		||||
  PPRINT(vsize, "%llu");
 | 
			
		||||
  PPRINT(resident, "%llu");
 | 
			
		||||
  PPRINT(share, "%llu");
 | 
			
		||||
  PPRINT(rss, "%llu");
 | 
			
		||||
  PPRINT(rss_rlim, "%llu");
 | 
			
		||||
  FOOTER_PPRINT();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
{
 | 
			
		||||
  glibtop_init();
 | 
			
		||||
 | 
			
		||||
  pprint_get_cpu();
 | 
			
		||||
 | 
			
		||||
  pprint_get_fsusage("/");
 | 
			
		||||
 | 
			
		||||
  pprint_get_loadavg();
 | 
			
		||||
 | 
			
		||||
  pprint_get_mem();
 | 
			
		||||
 | 
			
		||||
  pprint_get_mountlist(TRUE);
 | 
			
		||||
  pprint_get_mountlist(FALSE);
 | 
			
		||||
 | 
			
		||||
  pprint_get_msg_limits();
 | 
			
		||||
 | 
			
		||||
  pprint_get_swap();
 | 
			
		||||
 | 
			
		||||
  pprint_get_netlist();
 | 
			
		||||
 | 
			
		||||
  pprint_get_netload("eth0");
 | 
			
		||||
  pprint_get_netload("ppp0");
 | 
			
		||||
  pprint_get_netload("<unknown>");
 | 
			
		||||
/* pprint_get_sysinfo(); */
 | 
			
		||||
 | 
			
		||||
  pprint_get_uptime();
 | 
			
		||||
 | 
			
		||||
  pprint_get_proc_kernel(getpid());
 | 
			
		||||
  pprint_get_proc_mem(getpid());
 | 
			
		||||
 | 
			
		||||
  glibtop_close();
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,51 +0,0 @@
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/procargs.h>
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
static void show_args(pid_t pid, unsigned max_len)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_proc_args buf;
 | 
			
		||||
  char ** const pargv = glibtop_get_proc_argv(&buf, pid, max_len);
 | 
			
		||||
 | 
			
		||||
  char **parg = pargv;
 | 
			
		||||
 | 
			
		||||
  printf("<%ld>\t", (long)pid);
 | 
			
		||||
 | 
			
		||||
  while(*parg)
 | 
			
		||||
    {
 | 
			
		||||
      printf("\"%s\" ", *parg);
 | 
			
		||||
      parg++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  putchar('\n');
 | 
			
		||||
 | 
			
		||||
  g_strfreev(pargv);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
  glibtop_init();
 | 
			
		||||
 | 
			
		||||
  show_args(getpid(), 0);
 | 
			
		||||
  show_args(getpid(), 15);
 | 
			
		||||
 | 
			
		||||
  while(*++argv)
 | 
			
		||||
    {
 | 
			
		||||
      pid_t pid = strtol(*argv, NULL, 10);
 | 
			
		||||
      show_args(pid, 0);
 | 
			
		||||
      show_args(pid, 15);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  glibtop_close();
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/proclist.h>
 | 
			
		||||
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void print_pids(guint64 which, guint64 arg)
 | 
			
		||||
{
 | 
			
		||||
	unsigned *pids;
 | 
			
		||||
	unsigned i;
 | 
			
		||||
	glibtop_proclist buf;
 | 
			
		||||
 | 
			
		||||
	pids = glibtop_get_proclist(&buf, which, arg);
 | 
			
		||||
 | 
			
		||||
	printf("glibtop_get_proclist(%#llx, %llu) -> %lu processes\n",
 | 
			
		||||
	       which, arg, (unsigned long)buf.number);
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < buf.number; ++i)
 | 
			
		||||
		printf("%u ", pids[i]);
 | 
			
		||||
 | 
			
		||||
	putchar('\n');
 | 
			
		||||
	putchar('\n');
 | 
			
		||||
 | 
			
		||||
	g_free(pids);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init();
 | 
			
		||||
 | 
			
		||||
	print_pids(GLIBTOP_KERN_PROC_ALL, 0);
 | 
			
		||||
	print_pids(GLIBTOP_KERN_PROC_UID, getuid());
 | 
			
		||||
 | 
			
		||||
	glibtop_close();
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,22 +21,20 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
#include <stdio.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>
 | 
			
		||||
@@ -46,6 +46,9 @@
 | 
			
		||||
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;
 | 
			
		||||
@@ -57,7 +60,7 @@ main (int argc, char *argv [])
 | 
			
		||||
	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));
 | 
			
		||||
@@ -79,7 +82,11 @@ main (int argc, char *argv [])
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, 0);
 | 
			
		||||
 | 
			
		||||
	if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
 | 
			
		||||
		g_error ("Usage: %s pid", argv [0]);
 | 
			
		||||
		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);
 | 
			
		||||
 | 
			
		||||
@@ -89,10 +96,16 @@ main (int argc, char *argv [])
 | 
			
		||||
		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' : '-';
 | 
			
		||||
@@ -139,23 +152,11 @@ main (int argc, char *argv [])
 | 
			
		||||
				 perm);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		g_print("smaps flags:%#llx size:%llu rss:%llu "
 | 
			
		||||
			"shared_clean:%llu shared_dirty:%llu "
 | 
			
		||||
			"private_clean:%llu private_dirty: %llu\n",
 | 
			
		||||
			maps[i].flags,
 | 
			
		||||
			maps[i].size >> 10,
 | 
			
		||||
			maps[i].rss >> 10,
 | 
			
		||||
			maps[i].shared_clean >> 10,
 | 
			
		||||
			maps[i].shared_dirty >> 10,
 | 
			
		||||
			maps[i].private_clean >> 10,
 | 
			
		||||
			maps[i].private_dirty >> 10);
 | 
			
		||||
 | 
			
		||||
		if (filename && (filename != maps [i].filename))
 | 
			
		||||
			g_free ((void*)filename);
 | 
			
		||||
			glibtop_free (filename);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (maps);
 | 
			
		||||
	glibtop_free (maps);
 | 
			
		||||
 | 
			
		||||
	glibtop_close ();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,18 +21,13 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/union.h>
 | 
			
		||||
#include <glibtop/sysdeps.h>
 | 
			
		||||
@@ -48,11 +45,11 @@ output (pid_t pid)
 | 
			
		||||
	double b_total, b_utime, b_stime;
 | 
			
		||||
	double s_total, s_utime, s_stime;
 | 
			
		||||
	double my_utime, my_stime;
 | 
			
		||||
	unsigned int ncpu;
 | 
			
		||||
	int ncpu;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
	glibtop_get_proc_state (&data.proc_state, pid);
 | 
			
		||||
 | 
			
		||||
	printf ("Proc_State   PID  %5d (0x%08lx): "
 | 
			
		||||
@@ -61,9 +58,9 @@ output (pid_t pid)
 | 
			
		||||
		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,
 | 
			
		||||
@@ -75,7 +72,7 @@ output (pid_t pid)
 | 
			
		||||
		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,
 | 
			
		||||
@@ -85,7 +82,7 @@ output (pid_t pid)
 | 
			
		||||
		(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): "
 | 
			
		||||
@@ -101,7 +98,7 @@ output (pid_t pid)
 | 
			
		||||
		(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,
 | 
			
		||||
@@ -116,7 +113,7 @@ output (pid_t pid)
 | 
			
		||||
		(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,
 | 
			
		||||
@@ -154,7 +151,7 @@ output (pid_t pid)
 | 
			
		||||
		(unsigned long) data.proc_args.size,
 | 
			
		||||
		args ? args : "");
 | 
			
		||||
 | 
			
		||||
	g_free (args);
 | 
			
		||||
	glibtop_free (args);
 | 
			
		||||
 | 
			
		||||
	printf ("\n");
 | 
			
		||||
 | 
			
		||||
@@ -162,7 +159,7 @@ output (pid_t pid)
 | 
			
		||||
	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;
 | 
			
		||||
 | 
			
		||||
@@ -244,7 +241,7 @@ main (int argc, char *argv [])
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init ();
 | 
			
		||||
 | 
			
		||||
	glibtop_get_sysdeps (&sysdeps);
 | 
			
		||||
@@ -290,11 +287,11 @@ main (int argc, char *argv [])
 | 
			
		||||
	for (i = 0; i < proclist.number; i++) {
 | 
			
		||||
 | 
			
		||||
		pid = ptr [i];
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		output (pid);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (ptr);
 | 
			
		||||
	glibtop_free (ptr);
 | 
			
		||||
 | 
			
		||||
	exit (0);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,15 +21,12 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main (int argc, char *argv [])
 | 
			
		||||
@@ -40,6 +39,10 @@ main (int argc, char *argv [])
 | 
			
		||||
	char separator [BUFSIZ], buffer [BUFSIZ];
 | 
			
		||||
	int ncpu, i;
 | 
			
		||||
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
 | 
			
		||||
	textdomain (GETTEXT_PACKAGE);
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init();
 | 
			
		||||
 | 
			
		||||
	glibtop_get_cpu (&cpu);
 | 
			
		||||
@@ -65,16 +68,16 @@ main (int argc, char *argv [])
 | 
			
		||||
	memset (separator, '-', 91);
 | 
			
		||||
	separator [92] = '\0';
 | 
			
		||||
 | 
			
		||||
	sprintf (buffer, "Ticks (%ld per second):", frequency);
 | 
			
		||||
	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);
 | 
			
		||||
		_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
 | 
			
		||||
 | 
			
		||||
	printf ("CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n",
 | 
			
		||||
	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,
 | 
			
		||||
		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],
 | 
			
		||||
@@ -91,11 +94,11 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	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",
 | 
			
		||||
	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,
 | 
			
		||||
@@ -111,13 +114,13 @@ main (int argc, char *argv [])
 | 
			
		||||
		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",
 | 
			
		||||
		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,
 | 
			
		||||
		_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user,
 | 
			
		||||
		s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
 | 
			
		||||
 | 
			
		||||
	exit (0);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,18 +21,12 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/sysdeps.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/parameter.h>
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +46,7 @@ main (int argc, char *argv [])
 | 
			
		||||
	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));
 | 
			
		||||
@@ -73,7 +69,7 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	glibtop_get_sysdeps (&sysdeps);
 | 
			
		||||
 | 
			
		||||
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f)) ? 1 : 0)
 | 
			
		||||
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
 | 
			
		||||
 | 
			
		||||
	printf ("Sysdeps (0x%08lx):\n\n"
 | 
			
		||||
		"\tfeatures:\t\t0x%08lx\n\n"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,7 @@
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   Copyright (C) 2004 Nicol<EFBFBD>s Lichtmaier
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
   Modified by Nicol<EFBFBD>s Lichtmaier to give a process open files.
 | 
			
		||||
/* 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.
 | 
			
		||||
 | 
			
		||||
@@ -22,30 +21,37 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procopenfiles.h>
 | 
			
		||||
     
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
#include <glibtop/union.h>
 | 
			
		||||
#include <glibtop/sysdeps.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_open_files =
 | 
			
		||||
(1L << GLIBTOP_PROC_OPEN_FILES_NUMBER)|
 | 
			
		||||
(1L << GLIBTOP_PROC_OPEN_FILES_TOTAL)|
 | 
			
		||||
(1L << GLIBTOP_PROC_OPEN_FILES_SIZE);
 | 
			
		||||
void main_prog(int argc, char *argv[]);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
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_init_proc_open_files_s (glibtop *server)
 | 
			
		||||
main_prog (int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_open_files = _glibtop_sysdeps_proc_open_files;
 | 
			
		||||
}
 | 
			
		||||
	glibtop_boot_guile ();
 | 
			
		||||
#ifdef GLIBTOP_GUILE_NAMES
 | 
			
		||||
	glibtop_boot_guile_names ();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* XXX Unimplemented on FreeBSD */
 | 
			
		||||
glibtop_open_files_entry *
 | 
			
		||||
glibtop_get_proc_open_files_s (glibtop *server, glibtop_proc_open_files *buf,	pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	return NULL;
 | 
			
		||||
	gh_repl (argc, argv);
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,17 +21,12 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#  include <config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <libintl.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
#include <glibtop/xmalloc.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/parameter.h>
 | 
			
		||||
 | 
			
		||||
@@ -89,7 +86,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		"Feature", "Flags", "Count", "utime", "stime");
 | 
			
		||||
	printf ("-------------------------------------------"
 | 
			
		||||
		"---------------\n");
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	glibtop_init_r (&glibtop_global_server, 0, 0);
 | 
			
		||||
 | 
			
		||||
	getrusage (RUSAGE_SELF, &total_start);
 | 
			
		||||
@@ -190,7 +187,7 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
 | 
			
		||||
		ptr = glibtop_get_proclist (&data.proclist, 0, 0);
 | 
			
		||||
		g_free (ptr);
 | 
			
		||||
		glibtop_free (ptr);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	getrusage (RUSAGE_SELF, &rusage_end);
 | 
			
		||||
@@ -305,7 +302,7 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
	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,
 | 
			
		||||
@@ -336,7 +333,7 @@ main (int argc, char *argv [])
 | 
			
		||||
		(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,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/procwd.h>
 | 
			
		||||
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	pid_t pid;
 | 
			
		||||
	glibtop_proc_wd buf;
 | 
			
		||||
	char **dirs, **dir;
 | 
			
		||||
 | 
			
		||||
	if (argc < 2 || !(pid = strtoul(argv[1], NULL, 0)))
 | 
			
		||||
		pid = getpid();
 | 
			
		||||
 | 
			
		||||
	glibtop_init();
 | 
			
		||||
 | 
			
		||||
	dirs = glibtop_get_proc_wd(&buf, pid);
 | 
			
		||||
 | 
			
		||||
	g_print("Process %u:\n"
 | 
			
		||||
		" - root: '%s'\n"
 | 
			
		||||
		" - exe: '%s'\n"
 | 
			
		||||
		" - working directories:\n",
 | 
			
		||||
		(unsigned)pid, buf.root, buf.exe);
 | 
			
		||||
 | 
			
		||||
	for (dir = dirs; *dir; ++dir)
 | 
			
		||||
		g_print("   - '%s'\n", *dir);
 | 
			
		||||
 | 
			
		||||
	g_strfreev(dirs);
 | 
			
		||||
 | 
			
		||||
	glibtop_close();
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
void|cpu|ulong(total,user,nice,sys,idle,iowait,irq,softirq,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4],xcpu_iowait[4],xcpu_irq[4],xcpu_softirq[4])
 | 
			
		||||
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)
 | 
			
		||||
@@ -6,7 +6,7 @@ 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)
 | 
			
		||||
pid_t*|proclist|ulong(number,size,total)|long(which,arg)
 | 
			
		||||
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)
 | 
			
		||||
@@ -16,11 +16,7 @@ void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_e
 | 
			
		||||
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_open_files_entry *|proc_open_files|ulong(number)|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)
 | 
			
		||||
char **|netlist|unsigned(number)
 | 
			
		||||
char **|proc_wd|ulong(number),str(root),str(exe)|pid_t(pid)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										100
									
								
								glibtop.h
									
									
									
									
									
								
							
							
						
						
									
										100
									
								
								glibtop.h
									
									
									
									
									
								
							@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -22,37 +24,10 @@
 | 
			
		||||
#ifndef __GLIBTOP_H__
 | 
			
		||||
#define __GLIBTOP_H__
 | 
			
		||||
 | 
			
		||||
#include <glib/gmacros.h>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
typedef struct _glibtop		glibtop;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  LIBGTOP_CHECK_VERSION
 | 
			
		||||
 *  @major: Major version number
 | 
			
		||||
 *  @minor: Minor version number
 | 
			
		||||
 *  @micro: Micro version number
 | 
			
		||||
 *
 | 
			
		||||
 *  Checks if the version given is compatable with this version of the
 | 
			
		||||
 *  library.  For example, LIBGTOP_CHECK_VERSION(1.2.3) would return TRUE
 | 
			
		||||
 *  if the version is 1.2.5, and FALSE if 1.1.0.  This can be used in
 | 
			
		||||
 *  build tests.
 | 
			
		||||
 *
 | 
			
		||||
 **/
 | 
			
		||||
 | 
			
		||||
#include <libgtopconfig.h>
 | 
			
		||||
 | 
			
		||||
#define LIBGTOP_CHECK_VERSION(major, minor, micro)    \
 | 
			
		||||
(LIBGTOP_MAJOR_VERSION > (major) || \
 | 
			
		||||
(LIBGTOP_MAJOR_VERSION == (major) && LIBGTOP_MINOR_VERSION > (minor)) || \
 | 
			
		||||
(LIBGTOP_MAJOR_VERSION == (major) && LIBGTOP_MINOR_VERSION == (minor) && \
 | 
			
		||||
LIBGTOP_MICRO_VERSION >= (micro)))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_server.h>
 | 
			
		||||
#include <glibtop/types.h>
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_GLIBTOP_MACHINE_H
 | 
			
		||||
#include <glibtop_machine.h>
 | 
			
		||||
@@ -62,25 +37,22 @@ LIBGTOP_MICRO_VERSION >= (micro)))
 | 
			
		||||
#define GLIBTOP_MOUNTENTRY_LEN	79
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef struct _glibtop		glibtop;
 | 
			
		||||
 | 
			
		||||
#include <glibtop/sysdeps.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct _glibtop
 | 
			
		||||
{
 | 
			
		||||
	unsigned flags;
 | 
			
		||||
	unsigned method;		/* Server Method */
 | 
			
		||||
	unsigned error_method;		/* Error Method */
 | 
			
		||||
#ifdef HAVE_GLIBTOP_MACHINE_H
 | 
			
		||||
 | 
			
		||||
struct _glibtop
 | 
			
		||||
{
 | 
			
		||||
	unsigned flags;
 | 
			
		||||
	unsigned method;		/* Server Method */
 | 
			
		||||
	unsigned error_method;		/* Error Method */
 | 
			
		||||
	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 */
 | 
			
		||||
	int real_ncpu;			/* Real number of CPUs. Only ncpu are monitored */
 | 
			
		||||
	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 */
 | 
			
		||||
@@ -94,39 +66,13 @@ struct _glibtop
 | 
			
		||||
	pid_t pid;			/* PID of the server */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#else /* !HAVE_GLIBTOP_MACHINE_H */
 | 
			
		||||
 | 
			
		||||
struct _glibtop
 | 
			
		||||
{
 | 
			
		||||
	unsigned flags;
 | 
			
		||||
	unsigned method;		/* Server Method */
 | 
			
		||||
	unsigned error_method;		/* Error Method */
 | 
			
		||||
	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 */
 | 
			
		||||
	int real_ncpu;			/* Real number of CPUs. Only ncpu are monitored */
 | 
			
		||||
	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 */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif /* HAVE_GLIBTOP_MACHINE_H */
 | 
			
		||||
 | 
			
		||||
extern glibtop *glibtop_global_server;
 | 
			
		||||
 | 
			
		||||
extern const unsigned long glibtop_server_features;
 | 
			
		||||
 | 
			
		||||
glibtop *
 | 
			
		||||
glibtop_init (void);
 | 
			
		||||
#define glibtop_init()	glibtop_init_r(&glibtop_global_server, 0, 0);
 | 
			
		||||
 | 
			
		||||
#define glibtop_close()	glibtop_close_r(glibtop_global_server);
 | 
			
		||||
 | 
			
		||||
glibtop *
 | 
			
		||||
glibtop_init_r (glibtop **server_ptr,
 | 
			
		||||
@@ -138,6 +84,24 @@ glibtop_init_s (glibtop **server_ptr,
 | 
			
		||||
		unsigned long features,
 | 
			
		||||
		unsigned flags);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
#ifdef GLIBTOP_GUILE
 | 
			
		||||
 | 
			
		||||
/* You need to link with -lgtop_guile to get this stuff here. */
 | 
			
		||||
 | 
			
		||||
void glibtop_boot_guile (void);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef GLIBTOP_GUILE_NAMES
 | 
			
		||||
 | 
			
		||||
/* You need to link with -lgtop_guile_names to get this stuff here. */
 | 
			
		||||
 | 
			
		||||
void glibtop_boot_guile_names (void);
 | 
			
		||||
 | 
			
		||||
#ifndef GLIBTOP_NAMES
 | 
			
		||||
#define GLIBTOP_NAMES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								include/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								include/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
							
								
								
									
										2
									
								
								include/glibtop/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								include/glibtop/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
@@ -3,12 +3,8 @@ glibtopdir		= $(includedir)/libgtop-2.0/glibtop
 | 
			
		||||
glibtop_HEADERS		= close.h loadavg.h prockernel.h procstate.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 \
 | 
			
		||||
			  procsegment.h sysdeps.h global.h \
 | 
			
		||||
			  procsignal.h union.h gnuserv.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 \
 | 
			
		||||
			  sysinfo.h ppp.h procargs.h netload.h \
 | 
			
		||||
			  procwd.h \
 | 
			
		||||
			  netlist.h procopenfiles.h open.h
 | 
			
		||||
 | 
			
		||||
noinst_HEADERS		= error.h write.h read_data.h read.h init_hooks.h
 | 
			
		||||
			  inodedb.h sysinfo.h ppp.h procargs.h netload.h
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								include/glibtop/array.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								include/glibtop/array.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
/* -*- 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>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_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
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 | 
			
		||||
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
@@AUTOGEN_COMMENT@@
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -24,15 +26,13 @@
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
void glibtop_close (void);
 | 
			
		||||
BEGIN_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
void glibtop_close_r (glibtop *server);
 | 
			
		||||
 | 
			
		||||
void glibtop_close_s (glibtop *server);
 | 
			
		||||
void glibtop_close_p (glibtop *server);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
END_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -26,7 +28,7 @@
 | 
			
		||||
#include <glibtop/sysdeps.h>
 | 
			
		||||
#include <glibtop/union.h>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
BEGIN_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_CMND_QUIT		0
 | 
			
		||||
#define GLIBTOP_CMND_SYSDEPS		1
 | 
			
		||||
@@ -55,11 +57,8 @@ G_BEGIN_DECLS
 | 
			
		||||
#define GLIBTOP_CMND_FSUSAGE		21
 | 
			
		||||
#define GLIBTOP_CMND_NETLOAD		22
 | 
			
		||||
#define GLIBTOP_CMND_PPP		23
 | 
			
		||||
#define GLIBTOP_CMND_NETLIST		24
 | 
			
		||||
#define GLIBTOP_CMND_PROC_OPEN_FILES	25
 | 
			
		||||
#define GLIBTOP_CMND_PROC_WD		26
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_MAX_CMND		27
 | 
			
		||||
#define GLIBTOP_MAX_CMND		24
 | 
			
		||||
 | 
			
		||||
#define _GLIBTOP_PARAM_SIZE		16
 | 
			
		||||
 | 
			
		||||
@@ -70,8 +69,8 @@ typedef union  _glibtop_response_union	glibtop_response_union;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_command
 | 
			
		||||
{
 | 
			
		||||
	guint64	command;
 | 
			
		||||
	guint64	size, data_size;
 | 
			
		||||
	u_int64_t	command;
 | 
			
		||||
	u_int64_t	size, data_size;
 | 
			
		||||
	char		parameter [_GLIBTOP_PARAM_SIZE];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -83,8 +82,8 @@ union _glibtop_response_union
 | 
			
		||||
 | 
			
		||||
struct _glibtop_response
 | 
			
		||||
{
 | 
			
		||||
	gint64 offset;
 | 
			
		||||
	guint64 size, data_size;
 | 
			
		||||
	int64_t offset;
 | 
			
		||||
	u_int64_t size, data_size;
 | 
			
		||||
	glibtop_response_union u;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -98,6 +97,6 @@ void *
 | 
			
		||||
glibtop_call_s (glibtop *server, unsigned command, size_t send_size,
 | 
			
		||||
		const void *send_buf, size_t recv_size, void *recv_buf);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
END_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										91
									
								
								include/glibtop/compat_10.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								include/glibtop/compat_10.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
			
		||||
/* -*- 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>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_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
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -25,7 +27,7 @@
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/global.h>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
BEGIN_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_CPU_TOTAL	0
 | 
			
		||||
#define GLIBTOP_CPU_USER	1
 | 
			
		||||
@@ -39,49 +41,31 @@ G_BEGIN_DECLS
 | 
			
		||||
#define GLIBTOP_XCPU_NICE	8
 | 
			
		||||
#define GLIBTOP_XCPU_SYS	9
 | 
			
		||||
#define GLIBTOP_XCPU_IDLE	10
 | 
			
		||||
#define GLIBTOP_XCPU_FLAGS	11
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_CPU_IOWAIT	12
 | 
			
		||||
#define GLIBTOP_CPU_IRQ		13
 | 
			
		||||
#define GLIBTOP_CPU_SOFTIRQ	14
 | 
			
		||||
#define GLIBTOP_XCPU_IOWAIT	15
 | 
			
		||||
#define GLIBTOP_XCPU_IRQ	16
 | 
			
		||||
#define GLIBTOP_XCPU_SOFTIRQ	17
 | 
			
		||||
#define GLIBTOP_MAX_CPU		11
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_MAX_CPU		18
 | 
			
		||||
 | 
			
		||||
/* Nobody should really be using more than 4 processors.
 | 
			
		||||
   Yes we are :)
 | 
			
		||||
   Nobody should really be using more than 32 processors.
 | 
			
		||||
*/
 | 
			
		||||
#define GLIBTOP_NCPU		32
 | 
			
		||||
/* Nobody should really be using more than 4 processors. */
 | 
			
		||||
#define GLIBTOP_NCPU		4
 | 
			
		||||
 | 
			
		||||
typedef struct _glibtop_cpu	glibtop_cpu;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_cpu
 | 
			
		||||
{
 | 
			
		||||
	guint64	flags;
 | 
			
		||||
	guint64 total;				/* GLIBTOP_CPU_TOTAL		*/
 | 
			
		||||
	guint64 user;				/* GLIBTOP_CPU_USER		*/
 | 
			
		||||
	guint64 nice;				/* GLIBTOP_CPU_NICE		*/
 | 
			
		||||
	guint64 sys;				/* GLIBTOP_CPU_SYS		*/
 | 
			
		||||
	guint64 idle;				/* GLIBTOP_CPU_IDLE		*/
 | 
			
		||||
	guint64 iowait;				/* GLIBTOP_CPU_IOWAIT		*/
 | 
			
		||||
	guint64 irq;				/* GLIBTOP_CPU_IRQ		*/
 | 
			
		||||
	guint64 softirq;			/* GLIBTOP_CPU_SOFTIRQ		*/
 | 
			
		||||
	guint64 frequency;			/* GLIBTOP_CPU_FREQUENCY	*/
 | 
			
		||||
	guint64 xcpu_total [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_TOTAL		*/
 | 
			
		||||
	guint64 xcpu_user [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_USER		*/
 | 
			
		||||
	guint64 xcpu_nice [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_NICE		*/
 | 
			
		||||
	guint64 xcpu_sys  [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_SYS		*/
 | 
			
		||||
	guint64 xcpu_idle [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IDLE		*/
 | 
			
		||||
	guint64 xcpu_iowait [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IOWAIT		*/
 | 
			
		||||
	guint64 xcpu_irq [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IRQ		*/
 | 
			
		||||
	guint64 xcpu_softirq  [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_SOFTIRQ		*/
 | 
			
		||||
	guint64 xcpu_flags;	                /* GLIBTOP_XCPU_IDLE		*/
 | 
			
		||||
	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		*/
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void glibtop_get_cpu(glibtop_cpu *buf);
 | 
			
		||||
#define glibtop_get_cpu(cpu)	glibtop_get_cpu_l(glibtop_global_server, cpu)
 | 
			
		||||
 | 
			
		||||
#if GLIBTOP_SUID_CPU
 | 
			
		||||
#define glibtop_get_cpu_r	glibtop_get_cpu_p
 | 
			
		||||
@@ -92,14 +76,24 @@ void glibtop_get_cpu(glibtop_cpu *buf);
 | 
			
		||||
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
 | 
			
		||||
 | 
			
		||||
#if GLIBTOP_SUID_CPU
 | 
			
		||||
void _glibtop_init_cpu_p (glibtop *server);
 | 
			
		||||
void glibtop_init_cpu_p (glibtop *server);
 | 
			
		||||
void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
 | 
			
		||||
#else
 | 
			
		||||
void _glibtop_init_cpu_s (glibtop *server);
 | 
			
		||||
void glibtop_init_cpu_s (glibtop *server);
 | 
			
		||||
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef GLIBTOP_NAMES
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
/* You need to link with -lgtop_names to get this stuff here. */
 | 
			
		||||
 | 
			
		||||
extern const char *glibtop_names_cpu [];
 | 
			
		||||
extern const unsigned glibtop_types_cpu [];
 | 
			
		||||
extern const char *glibtop_labels_cpu [];
 | 
			
		||||
extern const char *glibtop_descriptions_cpu [];
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
END_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
/* $Id$ */
 | 
			
		||||
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
@@ -19,33 +21,116 @@
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This is private API
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_ERROR_H__
 | 
			
		||||
#define __GLIBTOP_ERROR_H__
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
BEGIN_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
void glibtop_error_vr (glibtop *server, const char *format, va_list args) G_GNUC_NORETURN;
 | 
			
		||||
void glibtop_warn_vr (glibtop *server, const char *format, va_list args);
 | 
			
		||||
void glibtop_error_io_vr (glibtop *server, const char *format, int, va_list args) G_GNUC_NORETURN;
 | 
			
		||||
void glibtop_warn_io_vr (glibtop *server, const char *format, int, va_list args);
 | 
			
		||||
#ifndef G_GNUC_UNUSED
 | 
			
		||||
#if	__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
 | 
			
		||||
#define G_GNUC_UNUSED				\
 | 
			
		||||
  __attribute__((unused))
 | 
			
		||||
#else	/* !__GNUC__ */
 | 
			
		||||
#define	G_GNUC_UNUSED
 | 
			
		||||
#endif	/* !__GNUC__ */
 | 
			
		||||
#endif /* defined G_GNUC_UNUSED */
 | 
			
		||||
 | 
			
		||||
void glibtop_error_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
 | 
			
		||||
void glibtop_warn_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
 | 
			
		||||
void glibtop_error_io_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
 | 
			
		||||
void glibtop_warn_io_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
 | 
			
		||||
void glibtop_error_vr (glibtop *server, char *format, va_list args);
 | 
			
		||||
void glibtop_warn_vr (glibtop *server, char *format, va_list args);
 | 
			
		||||
 | 
			
		||||
void glibtop_error (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
 | 
			
		||||
void glibtop_warn (const char *format, ...) G_GNUC_PRINTF(1, 2);
 | 
			
		||||
void glibtop_error_io (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
 | 
			
		||||
void glibtop_warn_io (const char *format, ...) G_GNUC_PRINTF(1, 2);
 | 
			
		||||
void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args);
 | 
			
		||||
void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
static void G_GNUC_UNUSED
 | 
			
		||||
glibtop_error_r (glibtop *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_error_vr (server, format, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void G_GNUC_UNUSED
 | 
			
		||||
glibtop_warn_r (glibtop *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_warn_vr (server, format, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void G_GNUC_UNUSED
 | 
			
		||||
glibtop_error_io_r (glibtop *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_error_io_vr (server, format, errno, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void G_GNUC_UNUSED
 | 
			
		||||
glibtop_warn_io_r (glibtop *server, char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_warn_io_vr (server, format, errno, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef  __GNUC__
 | 
			
		||||
 | 
			
		||||
#define glibtop_error(p1, args...)	glibtop_error_r(glibtop_global_server , p1 , ## args)
 | 
			
		||||
#define glibtop_warn(p1, args...)	glibtop_warn_r(glibtop_global_server , p1 , ## args)
 | 
			
		||||
 | 
			
		||||
#define glibtop_error_io(p1, args...)	glibtop_error_io_r(glibtop_global_server , p1 , ## args)
 | 
			
		||||
#define glibtop_warn_io(p1, args...)	glibtop_warn_io_r(glibtop_global_server , p1 , ## args)
 | 
			
		||||
 | 
			
		||||
#else /* no __GNUC__ */
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_error (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_error_vr (glibtop_global_server, format, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_warn (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_warn_vr (glibtop_global_server, format, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_error_io (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_error_io_vr (glibtop_global_server, format, errno, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glibtop_warn_io (char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list args;
 | 
			
		||||
	va_start (args, format);
 | 
			
		||||
	glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
 | 
			
		||||
	va_end (args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* no __GNUC__ */
 | 
			
		||||
 | 
			
		||||
END_LIBGTOP_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										95
									
								
								include/glibtop/errors.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								include/glibtop/errors.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
			
		||||
/* -*- 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>
 | 
			
		||||
 | 
			
		||||
#include <glib/gerror.h>
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_ERROR glibtop_error_quark ()
 | 
			
		||||
 | 
			
		||||
GQuark glibtop_error_quark (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    GLIBTOP_ERROR_NO_ERROR = 0,
 | 
			
		||||
    GLIBTOP_ERROR_UNKNOWN,
 | 
			
		||||
    GLIBTOP_ERROR_INVALID_ARGUMENT,
 | 
			
		||||
    GLIBTOP_ERROR_NO_SUCH_PARAMETER,
 | 
			
		||||
    GLIBTOP_ERROR_READONLY_VALUE,
 | 
			
		||||
    GLIBTOP_ERROR_SIZE_MISMATCH,
 | 
			
		||||
 | 
			
		||||
    GLIBTOP_ERROR_SERVER_COMM_FAILURE,
 | 
			
		||||
 | 
			
		||||
    GLIBTOP_ERROR_NO_SUCH_PROCESS,
 | 
			
		||||
 | 
			
		||||
    GLIBTOP_ERROR_NO_KERNEL_SUPPORT,
 | 
			
		||||
    GLIBTOP_ERROR_INCOMPATIBLE_KERNEL,
 | 
			
		||||
 | 
			
		||||
    GLIBTOP_ERROR_NO_SUCH_BACKEND,
 | 
			
		||||
    GLIBTOP_ERROR_NOT_IMPLEMENTED,
 | 
			
		||||
    GLIBTOP_ERROR_NO_BACKEND_OPENED,
 | 
			
		||||
 | 
			
		||||
    GLIBTOP_ERROR_DEMARSHAL_ERROR
 | 
			
		||||
} glibtop_error;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		  const char *format, va_list args);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_io_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		     int io_errno, const char *format, va_list args);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		 const char *format, va_list args);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_io_vl (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		    int io_errno, const char *format, va_list args);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		 char *format, ...);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		char *format, ...);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_error_io_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		    char *format, ...);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_warn_io_l (glibtop_client *client, glibtop_error code,
 | 
			
		||||
		   char *format, ...);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user