Compare commits
6 Commits
LIBGTOP_2_
...
gnome-2-10
Author | SHA1 | Date | |
---|---|---|---|
|
d014a21108 | ||
|
71808ffc6b | ||
|
f5376fa413 | ||
|
60bf48c330 | ||
|
bb3b9f9b05 | ||
|
f89afb0748 |
42
.cvsignore
Normal file
42
.cvsignore
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
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
|
||||||
|
autom4te.cache
|
||||||
|
COPYING
|
||||||
|
INSTALL
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
|
libgtopconfig.h
|
722
ChangeLog
722
ChangeLog
@@ -1,724 +1,6 @@
|
|||||||
2007-05-19 Benoît Dejean <benoit@placenet.org>
|
2005-06-13 Benoît Dejean <TazForEver@dlfp.org>
|
||||||
|
|
||||||
* features.def:
|
* NEWS: Released 2.10.2.
|
||||||
* include/glibtop/proclist.h:
|
|
||||||
|
|
||||||
Small API change.
|
|
||||||
get_proclist returns pid_t instead of unsigned for consistency.
|
|
||||||
I have checked many archs and this doesn't break the ABI.
|
|
||||||
|
|
||||||
2007-05-17 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version number.
|
|
||||||
|
|
||||||
2007-05-14 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* include/glibtop/Makefile.am:
|
|
||||||
* lib/Makefile.am:
|
|
||||||
|
|
||||||
Fixed dist.
|
|
||||||
|
|
||||||
2007-05-13 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.19.2.
|
|
||||||
|
|
||||||
2007-05-10 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* lib/libgtop.sym:
|
|
||||||
|
|
||||||
Added missing *_p symbols.
|
|
||||||
|
|
||||||
2007-05-07 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* lib/Makefile.am:
|
|
||||||
* lib/libgtop.sym:
|
|
||||||
|
|
||||||
Updated libtool version.
|
|
||||||
Now uses a symbol list instead of a regex.
|
|
||||||
|
|
||||||
2007-05-07 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* New API to get cwd, root and exe path
|
|
||||||
of a process. API not frozen yet.
|
|
||||||
|
|
||||||
2007-04-27 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
Got rid of InodeDB.
|
|
||||||
This feature was optionnal and i have never heard of anyone using
|
|
||||||
it. I have never touched it so it may be broken since 2.6.
|
|
||||||
|
|
||||||
2007-04-11 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* *:
|
|
||||||
|
|
||||||
Renamed all glibtop_init_xxx functions
|
|
||||||
to _glibtop_init_xxx so they get internal visibility.
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version number.
|
|
||||||
|
|
||||||
2007-03-13 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* MAINTAINERS:
|
|
||||||
|
|
||||||
Updated.
|
|
||||||
|
|
||||||
2007-02-25 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.14.8.
|
|
||||||
|
|
||||||
2007-02-20 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* *:
|
|
||||||
|
|
||||||
Removed noisy $Id$.
|
|
||||||
|
|
||||||
2007-02-18 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
* sysdeps/Makefile.am:
|
|
||||||
|
|
||||||
Huge (k)FreeBSD update.
|
|
||||||
(k)FreeBSD support is freebsd/
|
|
||||||
Other BSD are in bsd/
|
|
||||||
|
|
||||||
Patch by Joe Marcus Clarke <marcus@freebsd.org>
|
|
||||||
Alexander Nedotsukov <bland@FreeBSD.org>
|
|
||||||
|
|
||||||
Closes #407693.
|
|
||||||
|
|
||||||
2007-02-14 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* lib/read.c: (glibtop_read_l):
|
|
||||||
* lib/write.c: (glibtop_write_l):
|
|
||||||
|
|
||||||
Handle EINTR.
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Post release version bump.
|
|
||||||
|
|
||||||
2007-02-10 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.14.7.
|
|
||||||
|
|
||||||
2007-01-14 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.14.6.
|
|
||||||
|
|
||||||
2007-01-11 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version number to 2.14.6.
|
|
||||||
|
|
||||||
* *:
|
|
||||||
|
|
||||||
Got rid of CVS admin files.
|
|
||||||
|
|
||||||
2006-12-03 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* doc/reference/libgtop-docs.xml:
|
|
||||||
* glibtop.h:
|
|
||||||
* include/glibtop/sysinfo.h:
|
|
||||||
|
|
||||||
Made gtk-doc happy in order to dist.
|
|
||||||
|
|
||||||
2006-12-03 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.14.5.
|
|
||||||
|
|
||||||
2006-12-02 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* Makefile.am:
|
|
||||||
* configure.in:
|
|
||||||
* doc/Makefile.am:
|
|
||||||
* doc/reference/Makefile.am:
|
|
||||||
* doc/reference/libgtop-docs.xml:
|
|
||||||
* doc/reference/libgtop-sections.txt:
|
|
||||||
* doc/reference/version.xml.in:
|
|
||||||
* gtk-doc.make:
|
|
||||||
* sysdeps/common/default.c:
|
|
||||||
|
|
||||||
Converted to gtk-doc.
|
|
||||||
Patch by Germán Poó-Caamaño <gpoo@ubiobio.cl>.
|
|
||||||
|
|
||||||
2006-12-01 Julio M. Merino Vidal <jmmv@NetBSD.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
|
|
||||||
Use the AS_HELP_STRING macro to format help messages.
|
|
||||||
Fixes bug #337068.
|
|
||||||
|
|
||||||
2006-11-27 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
|
|
||||||
Added kfreebsd support.
|
|
||||||
Patch by Petr Salinger <Petr.Salinger@seznam.cz>.
|
|
||||||
|
|
||||||
2006-11-27 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version number.
|
|
||||||
|
|
||||||
2006-09-16 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.14.4.
|
|
||||||
|
|
||||||
2006-09-10 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* include/glibtop/procstate.h:
|
|
||||||
|
|
||||||
Removed wrong inline documentation.
|
|
||||||
Closes #355286.
|
|
||||||
|
|
||||||
2006-09-05 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.14.3.
|
|
||||||
|
|
||||||
2006-08-14 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* src/inodedb/Makefile.am:
|
|
||||||
|
|
||||||
Fixed inodedb build with --as-needed to please people
|
|
||||||
who want to compile and optimize broken, deprecated and
|
|
||||||
never-used feature.
|
|
||||||
Patch by Daniel Gryniewicz <dang@gentoo.org>
|
|
||||||
Closes #341041.
|
|
||||||
|
|
||||||
2006-08-10 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version number.
|
|
||||||
|
|
||||||
* glibtop.h:
|
|
||||||
* include/glibtop/init_hooks.h:
|
|
||||||
|
|
||||||
Added missing G_(BEGIN|END)_DECLS.
|
|
||||||
|
|
||||||
2006-07-27 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.14.2.
|
|
||||||
|
|
||||||
2006-07-27 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* include/glibtop/netload.h:
|
|
||||||
|
|
||||||
Tiny interface addition to handle wireless interfaces.
|
|
||||||
|
|
||||||
2006-06-26 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* po/Makefile.in.in.in:
|
|
||||||
|
|
||||||
Dropped dead file.
|
|
||||||
|
|
||||||
2006-06-25 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* Makefile.am:
|
|
||||||
|
|
||||||
Fixed build.
|
|
||||||
Closes #341779.
|
|
||||||
|
|
||||||
2006-06-24 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* Makefile.am:
|
|
||||||
|
|
||||||
Build examples only when needed.
|
|
||||||
Patch by dmacks@netspace.org.
|
|
||||||
Closes #342863.
|
|
||||||
|
|
||||||
2006-06-24 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
* sysdeps/solaris/glibtop_machine.h:
|
|
||||||
|
|
||||||
Updated the GLIBTOP_SOLARIS_RELEASE
|
|
||||||
|
|
||||||
Patch by hua.zhang@sun.com.
|
|
||||||
Closes #345821.
|
|
||||||
|
|
||||||
2006-06-24 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Don't use kvm on newer solaris.
|
|
||||||
Patch by hua.zhang@sun.com.
|
|
||||||
Closes #345811.
|
|
||||||
|
|
||||||
2006-06-04 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
|
|
||||||
Removed undefined LIBGTOP_HACKER_TESTS.
|
|
||||||
Closes #342890.
|
|
||||||
|
|
||||||
2006-06-03 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* .cvsignore:
|
|
||||||
* Makefile.am:
|
|
||||||
* configure.in:
|
|
||||||
* po/LINGUAS:
|
|
||||||
|
|
||||||
Use po/LINGUAS.
|
|
||||||
Closes #337902.
|
|
||||||
|
|
||||||
2006-04-18 German Poo-Caaman~o <gpoo@ubiobio.cl>
|
|
||||||
|
|
||||||
* /include/glibtop/cpu.h:
|
|
||||||
* /include/glibtop/fsusage.h:
|
|
||||||
* /include/glibtop/loadavg.h:
|
|
||||||
* /include/glibtop/mem.h:
|
|
||||||
* /include/glibtop/mountlist.h:
|
|
||||||
* /include/glibtop/msg_limits.h:
|
|
||||||
* /include/glibtop/netload.h:
|
|
||||||
* /include/glibtop/ppp.h:
|
|
||||||
* /include/glibtop/procargs.h:
|
|
||||||
* /include/glibtop/prockernel.h:
|
|
||||||
* /include/glibtop/proclist.h:
|
|
||||||
* /include/glibtop/procmap.h:
|
|
||||||
* /include/glibtop/procmem.h:
|
|
||||||
* /include/glibtop/procopenfiles.h:
|
|
||||||
* /include/glibtop/procsegment.h:
|
|
||||||
* /include/glibtop/procsignal.h:
|
|
||||||
* /include/glibtop/procstate.h:
|
|
||||||
* /include/glibtop/proctime.h:
|
|
||||||
* /include/glibtop/procuid.h:
|
|
||||||
* /include/glibtop/sem_limits.h:
|
|
||||||
* /include/glibtop/shm_limits.h:
|
|
||||||
* /include/glibtop/swap.h:
|
|
||||||
* /include/glibtop/sysdeps.h:
|
|
||||||
* /include/glibtop/uptime.h:
|
|
||||||
|
|
||||||
Changed struct's definitions to be one type-one member. To
|
|
||||||
avoid problems with any further gtk-doc's implementation.
|
|
||||||
|
|
||||||
2006-04-18 Kjartan Maraas <kmaraas@gnome.org>
|
|
||||||
|
|
||||||
* configure.in: Remove obsolete entry for no_NO
|
|
||||||
* po/no.po: And the translation.
|
|
||||||
|
|
||||||
2006-04-10 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.14.1.
|
|
||||||
|
|
||||||
2006-04-10 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* lib/open.c: (glibtop_open_l):
|
|
||||||
* lib/read.c: (glibtop_read_l):
|
|
||||||
* lib/write.c: (glibtop_write_l):
|
|
||||||
|
|
||||||
Fixed a bunch of signedness warnings.
|
|
||||||
|
|
||||||
2006-04-04 Julio M. Merino Vidal <jmmv@NetBSD.org>
|
|
||||||
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
* sysdeps/freebsd/msg_limits.c:
|
|
||||||
|
|
||||||
Use configure checks to detect whether we need to define either
|
|
||||||
KERNEL or _KERNEL to get the definition of 'struct msginfo' in a
|
|
||||||
BSD system. This replaces the previous checks in the code that
|
|
||||||
relied on __FreeBSD__ and similar macros.
|
|
||||||
|
|
||||||
Before this change, the explicit definition of _KERNEL in the
|
|
||||||
msg_limits.c file broke the build in NetBSD because it made the
|
|
||||||
system headers pull in stuff unavailable to userland.
|
|
||||||
|
|
||||||
Fixes bug #337207.
|
|
||||||
|
|
||||||
2006-04-04 Julio M. Merino Vidal <jmmv@NetBSD.org>
|
|
||||||
|
|
||||||
* libgtop-sysdeps.m4:
|
|
||||||
* sysdeps/freebsd/Makefile.am:
|
|
||||||
|
|
||||||
Check for the kvm library and use it to link the suid freebsd
|
|
||||||
sysdeps code (only if available). This library provides all the
|
|
||||||
kvm_* functions used in it and is needed, at least, under NetBSD.
|
|
||||||
|
|
||||||
Fixes bug #337247.
|
|
||||||
|
|
||||||
2006-04-04 Julio M. Merino Vidal <jmmv@NetBSD.org>
|
|
||||||
|
|
||||||
* sysdeps/aix/glibtop_server.h:
|
|
||||||
* sysdeps/freebsd/glibtop_server.h:
|
|
||||||
* sysdeps/osf1/glibtop_server.h:
|
|
||||||
* sysdeps/stub/glibtop_server.h:
|
|
||||||
* sysdeps/stub_suid/glibtop_server.h:
|
|
||||||
|
|
||||||
Synch the list of GLIBTOP_SUID_* constants with those expected by
|
|
||||||
the lib/sysdeps.c file. Fixes the build under, at least, NetBSD
|
|
||||||
and FreeBSD.
|
|
||||||
|
|
||||||
Fixes bug #337246.
|
|
||||||
|
|
||||||
2006-04-02 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version to 2.14.1.
|
|
||||||
Removed no longer needed gcc flag.
|
|
||||||
|
|
||||||
2006-04-02 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* src/daemon/daemon.h:
|
|
||||||
* src/daemon/gnuserv.c: (main):
|
|
||||||
|
|
||||||
Reverted. See #336837
|
|
||||||
|
|
||||||
2006-03-18 Vladimer Sichinava <vlsichinava@gmail.com>
|
|
||||||
|
|
||||||
* configure.in: Added "ka" (Georgian) to ALL_LINGUAS
|
|
||||||
|
|
||||||
2006-03-13 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.14.0.
|
|
||||||
|
|
||||||
2006-02-27 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.13.92.
|
|
||||||
|
|
||||||
2006-02-20 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bump version to 2.13.4.
|
|
||||||
Reordered libs. Closes #329153.
|
|
||||||
|
|
||||||
2006-01-23 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* NEW:
|
|
||||||
|
|
||||||
Released 2.13.3.
|
|
||||||
|
|
||||||
2006-01-02 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.13.2.
|
|
||||||
|
|
||||||
2006-01-02 James Henstridge <james@jamesh.id.au>
|
|
||||||
|
|
||||||
* configure.in (LT_VERSION_INFO): add quotes around symbol definition.
|
|
||||||
|
|
||||||
2005-12-15 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.13.1.
|
|
||||||
|
|
||||||
2005-12-13 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.13.0.
|
|
||||||
|
|
||||||
2005-12-12 James Henstridge <james@jamesh.id.au>
|
|
||||||
|
|
||||||
* doc/auto-macros.texi.in: remove unused file.
|
|
||||||
|
|
||||||
* doc/libgtop2.texi: don't include auto-macros.texi.
|
|
||||||
|
|
||||||
* doc/Makefile.am: don't build auto-macros.texi, since none of its
|
|
||||||
macros are used in the documentation any more.
|
|
||||||
|
|
||||||
* include/glibtop/global.h: don't include <config.h> from headers.
|
|
||||||
|
|
||||||
* .../*.c: make sure <config.h> is the first thing included.
|
|
||||||
|
|
||||||
* acinclude.m4: m4_include() libgtop-sysdeps.m4 rather than
|
|
||||||
inlining it.
|
|
||||||
|
|
||||||
* acinclude.m4, libgtop-sysdeps.m4: use third argument to
|
|
||||||
AC_DEFINE() to set the comment.
|
|
||||||
|
|
||||||
* configure.in: modernise a bit.
|
|
||||||
|
|
||||||
* acconfig.h: remove file, since it is deprecated
|
|
||||||
|
|
||||||
* autogen.sh: require automake 1.9 instead of 1.4.
|
|
||||||
|
|
||||||
2005-12-09 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* glibtop.h:
|
|
||||||
* include/glibtop/cpu.h:
|
|
||||||
* include/glibtop/procmap.h:
|
|
||||||
|
|
||||||
Increased GLIBTOP_NCPU to 32.
|
|
||||||
Added real_ncpu to struct glibtop.
|
|
||||||
Added smaps members to glibtop_map_entry.
|
|
||||||
|
|
||||||
Bumped version number to 2.13.0
|
|
||||||
Broke ABI again. Sorry.
|
|
||||||
|
|
||||||
2005-12-08 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* doc/reference.texi:
|
|
||||||
* include/glibtop/limits.h:
|
|
||||||
|
|
||||||
Dropped unused file and updated documentation.
|
|
||||||
|
|
||||||
2005-12-07 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Bumped version number.
|
|
||||||
|
|
||||||
2005-12-04 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
|
||||||
|
|
||||||
* configure.in: Added 'th' (Thai) to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2005-11-29 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.12.2.
|
|
||||||
No 2.12.1.
|
|
||||||
|
|
||||||
2005-11-17 Timur Jamakeev <timurj@cvs.gnome.org>
|
|
||||||
|
|
||||||
* configure.in: Added 'ky' (Kirghiz) to ALL_LINGUAS.
|
|
||||||
|
|
||||||
2005-10-30 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* include/glibtop/glibtop-backend-info.h:
|
|
||||||
* include/glibtop/glibtop-backend.h:
|
|
||||||
* include/glibtop/glibtop-client.h:
|
|
||||||
* lib/glibtop-backend-info.c:
|
|
||||||
* lib/glibtop-backend.c:
|
|
||||||
* lib/glibtop-client-private.h:
|
|
||||||
* lib/glibtop-client.c:
|
|
||||||
* lib/test-backends.c:
|
|
||||||
* sysdeps/common/backend.c:
|
|
||||||
* sysdeps/common/libgtop-common.backend:
|
|
||||||
|
|
||||||
Dropped many dead files.
|
|
||||||
Bumped release number.
|
|
||||||
I guess this closes #320250.
|
|
||||||
|
|
||||||
2005-10-28 Erdal Ronahi <erdal.ronahi@gmail.com>
|
|
||||||
|
|
||||||
* configure.in: Added ku (Kurdish) to ALL_LINGUAS
|
|
||||||
|
|
||||||
2005-09-04 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Released 2.12.0.
|
|
||||||
|
|
||||||
2005-08-22 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
|
|
||||||
Hum hum, it's better if release number is 2.11.92 too.
|
|
||||||
|
|
||||||
2005-08-22 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.11.92.
|
|
||||||
|
|
||||||
2005-08-08 Benoît Dejean <benoit@placenet.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
|
|
||||||
Released 2.11.91.
|
|
||||||
|
|
||||||
2005-08-04 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* examples/Makefile.am:
|
|
||||||
|
|
||||||
Removed static examples.
|
|
||||||
|
|
||||||
2005-08-02 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* include/glibtop/Makefile.am:
|
|
||||||
* include/glibtop/glibtop-server.h:
|
|
||||||
* include/glibtop/init_hooks.h:
|
|
||||||
* include/glibtop/sysdeps.h:
|
|
||||||
* lib/init.c: (glibtop_init_s):
|
|
||||||
* lib/sysdeps.c:
|
|
||||||
* sysdeps/aix/open.c: (glibtop_init_p):
|
|
||||||
* sysdeps/common/sysdeps_suid.c:
|
|
||||||
* sysdeps/freebsd/open.c: (glibtop_init_p):
|
|
||||||
* sysdeps/osf1/open_suid.c: (glibtop_init_p):
|
|
||||||
* sysdeps/solaris/open_suid.c: (glibtop_init_p):
|
|
||||||
* sysdeps/stub_suid/open.c: (glibtop_init_p):
|
|
||||||
|
|
||||||
Moved _glibtop_init_hook_[sp] declaration to private
|
|
||||||
glibtop/init_hooks.h. Marked them const.
|
|
||||||
|
|
||||||
Fixed GLIBTOP_SUID_NETLIST issues.
|
|
||||||
|
|
||||||
2005-07-24 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* NEWS:
|
|
||||||
* configure.in: Released 2.11.90.
|
|
||||||
|
|
||||||
2005-07-22 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in: 2.11.3 post release version bump.
|
|
||||||
|
|
||||||
2005-07-13 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* NEWS: Released 2.11.2.
|
|
||||||
|
|
||||||
2005-07-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in: 2.11.2 post release version bump.
|
|
||||||
|
|
||||||
2005-07-03 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* NEWS: Released 2.11.1.
|
|
||||||
|
|
||||||
2005-06-15 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* sysdeps/common/Makefile.am:
|
|
||||||
* sysdeps/linux/Makefile.am: Removed LT_VERSION_INFO from LDFLAGS
|
|
||||||
when unused.
|
|
||||||
|
|
||||||
2005-06-08 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in: 2.11.1 post release version bump.
|
|
||||||
|
|
||||||
2005-06-08 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* NEWS: Released 2.11.0.
|
|
||||||
|
|
||||||
2005-06-07 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in:
|
|
||||||
* glibtop.h:
|
|
||||||
* include/glibtop/close.h:
|
|
||||||
* include/glibtop/cpu.h:
|
|
||||||
* include/glibtop/fsusage.h:
|
|
||||||
* include/glibtop/loadavg.h:
|
|
||||||
* include/glibtop/mem.h:
|
|
||||||
* include/glibtop/mountlist.h:
|
|
||||||
* include/glibtop/msg_limits.h:
|
|
||||||
* include/glibtop/netlist.h:
|
|
||||||
* include/glibtop/netload.h:
|
|
||||||
* include/glibtop/ppp.h:
|
|
||||||
* include/glibtop/procargs.h:
|
|
||||||
* include/glibtop/prockernel.h:
|
|
||||||
* include/glibtop/proclist.h:
|
|
||||||
* include/glibtop/procmap.h:
|
|
||||||
* include/glibtop/procmem.h:
|
|
||||||
* include/glibtop/procopenfiles.h:
|
|
||||||
* include/glibtop/procsegment.h:
|
|
||||||
* include/glibtop/procsignal.h:
|
|
||||||
* include/glibtop/procstate.h:
|
|
||||||
* include/glibtop/proctime.h:
|
|
||||||
* include/glibtop/procuid.h:
|
|
||||||
* include/glibtop/sem_limits.h:
|
|
||||||
* include/glibtop/shm_limits.h:
|
|
||||||
* include/glibtop/swap.h:
|
|
||||||
* include/glibtop/sysdeps.h:
|
|
||||||
* include/glibtop/sysinfo.h:
|
|
||||||
* include/glibtop/uptime.h:
|
|
||||||
* sysdeps/common/Makefile.am:
|
|
||||||
* sysdeps/common/default.c: (glibtop_close), (glibtop_init),
|
|
||||||
(glibtop_get_cpu), (glibtop_get_fsusage), (glibtop_get_uptime),
|
|
||||||
(glibtop_get_sysinfo), (glibtop_get_swap), (glibtop_get_proc_uid),
|
|
||||||
(glibtop_get_proc_time), (glibtop_get_proc_state),
|
|
||||||
(glibtop_get_proc_signal), (glibtop_get_proc_segment),
|
|
||||||
(glibtop_get_proc_open_files), (glibtop_get_proc_mem),
|
|
||||||
(glibtop_get_proc_map), (glibtop_get_proc_args),
|
|
||||||
(glibtop_get_proc_argv), (glibtop_get_proclist),
|
|
||||||
(glibtop_get_proc_kernel), (glibtop_get_ppp),
|
|
||||||
(glibtop_get_netlist), (glibtop_get_netload),
|
|
||||||
(glibtop_get_mountlist), (glibtop_get_mem), (glibtop_get_loadavg),
|
|
||||||
(glibtop_get_msg_limits), (glibtop_get_sem_limits),
|
|
||||||
(glibtop_get_shm_limits), (glibtop_get_sysdeps):
|
|
||||||
|
|
||||||
Added a lot of new functions to replace dirty macros.
|
|
||||||
Every macro glibtop_get_*(buf[, args]) has been turned to a function.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* dtd/: Bye bye.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* backends/: Removed useless files.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* examples/smp.c: (main): Removed translation.
|
|
||||||
|
|
||||||
* lib/lib.pl:
|
|
||||||
* lib/read.c:
|
|
||||||
* lib/read_data.c:
|
|
||||||
* lib/write.c:
|
|
||||||
* src/daemon/gnuserv.c: s/gi18n.h/gi18n-lib.h.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* acinclude.m4: bye bye support.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* support/ : Removed unused files.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* examples/smp.c:
|
|
||||||
* include/Makefile.am:
|
|
||||||
* include/libgtop-i18n.h:
|
|
||||||
* lib/lib.pl:
|
|
||||||
* lib/read.c:
|
|
||||||
* lib/read_data.c:
|
|
||||||
* lib/write.c:
|
|
||||||
* src/daemon/gnuserv.c: Got rid of include/libgtop-i18n.h.
|
|
||||||
|
|
||||||
2005-06-06 Benoît Dejean <TazForEver@dlfp.org>
|
|
||||||
|
|
||||||
* configure.in: version bump.
|
|
||||||
|
|
||||||
2005-06-05 Benoît Dejean <TazForEver@dlfp.org>
|
2005-06-05 Benoît Dejean <TazForEver@dlfp.org>
|
||||||
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
Benoît Dejean
|
Email: martin@home-of-linux.org
|
||||||
E-mail: benoit@placenet.org
|
Email: dave@srce.hr
|
||||||
Userid: bdejean
|
Benoît Dejean (tazforever@dlfp.org)
|
||||||
|
|
||||||
|
19
Makefile.am
19
Makefile.am
@@ -1,11 +1,5 @@
|
|||||||
|
|
||||||
if EXAMPLES
|
SUBDIRS = po misc include sysdeps lib src examples doc
|
||||||
EXAMPLES_DIR = examples
|
|
||||||
else
|
|
||||||
EXAMPLES_DIR =
|
|
||||||
endif
|
|
||||||
|
|
||||||
SUBDIRS = po misc include sysdeps lib src $(EXAMPLES_DIR) doc
|
|
||||||
|
|
||||||
libgtopinclude_HEADERS = glibtop.h libgtopconfig.h
|
libgtopinclude_HEADERS = glibtop.h libgtopconfig.h
|
||||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||||
@@ -13,15 +7,7 @@ libgtopincludedir = $(includedir)/libgtop-2.0
|
|||||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
|
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
|
||||||
features.def libgtopconfig.h.in \
|
features.def libgtopconfig.h.in \
|
||||||
libgtop-sysdeps.m4 README \
|
libgtop-sysdeps.m4 README \
|
||||||
libgtop-2.0.pc.in acinclude.m4 \
|
libgtop-2.0.pc.in acinclude.m4
|
||||||
intltool-extract.in \
|
|
||||||
intltool-merge.in \
|
|
||||||
intltool-update.in
|
|
||||||
|
|
||||||
DISTCLEANFILES = \
|
|
||||||
intltool-extract \
|
|
||||||
intltool-merge \
|
|
||||||
intltool-update
|
|
||||||
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
cp libgtop.spec $(distdir)
|
cp libgtop.spec $(distdir)
|
||||||
@@ -32,4 +18,3 @@ pkgconfig_DATA = libgtop-2.0.pc
|
|||||||
libgtop-features.def: features.def
|
libgtop-features.def: features.def
|
||||||
@LN_S@ $< $@
|
@LN_S@ $< $@
|
||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
|
|
||||||
|
238
NEWS
238
NEWS
@@ -1,238 +1,10 @@
|
|||||||
12 January 2009: Overview of changes in 2.24.3
|
June 12, 2005: Overview of changes from 2.10.1 to 2.10.2
|
||||||
==============================================
|
|
||||||
* linux:
|
|
||||||
- fixed potential memory leak. Vincent Untz.
|
|
||||||
- fixed read(2) usage. Should fix the missing cpus bug in system-monitor.
|
|
||||||
* darwin:
|
|
||||||
- fixed build. "paul".
|
|
||||||
|
|
||||||
22 Septembre 2008: Overview of changes in 2.24.0
|
|
||||||
================================================
|
|
||||||
* Translation updates.
|
|
||||||
|
|
||||||
18 August 2008: Overview of changes in 2.23.90
|
|
||||||
==============================================
|
|
||||||
* freebsd:
|
|
||||||
- updated port by Joe Marcus Clarke.
|
|
||||||
|
|
||||||
23 June 2008: Overview of changes in 2.23.4
|
|
||||||
===========================================
|
|
||||||
* linux:
|
|
||||||
- Fixed and improved glibtop_get_fsusage with kernel >= 2.6.25.
|
|
||||||
Closes #539360.
|
|
||||||
|
|
||||||
24 May 2008: Overview of changes in 2.23.2
|
|
||||||
==========================================
|
|
||||||
* glibtop_get_proc_open_files API can also lists IPv6 TCP sockets.
|
|
||||||
* glibtop_get_proc_affinity : new API to retrieve process CPU affinity.
|
|
||||||
|
|
||||||
(Let's hope one day i'll find the gtk-doc documentation ...)
|
|
||||||
|
|
||||||
* linux:
|
|
||||||
- fixed parsing of big /proc/stat for uptime.
|
|
||||||
|
|
||||||
04 April 2008: Overview of changes in 2.22.1
|
|
||||||
============================================
|
|
||||||
* Fixed compilation/dist for !linux.
|
|
||||||
Closes #525953.
|
|
||||||
|
|
||||||
10 Mars 2008: Overview of changes in 2.22.0
|
|
||||||
===========================================
|
|
||||||
* linux:
|
|
||||||
- fixed proc_kernel.
|
|
||||||
|
|
||||||
25 February 2008: Overview of changes in 2.21.92
|
|
||||||
================================================
|
|
||||||
* linux:
|
|
||||||
- fixed smaps parsing on >= 2.6.24.x.
|
|
||||||
|
|
||||||
14 January 2008: Overview of changes in 2.21.5
|
|
||||||
==============================================
|
|
||||||
* freebsd:
|
|
||||||
- fixed build on GNU/kfreebsd. Petr Salinger.
|
|
||||||
- fixed procmem units. Kuang-che Wu.
|
|
||||||
|
|
||||||
28 October 2007: Overview of changes in 2.21.1
|
|
||||||
==============================================
|
|
||||||
* don't export _p/_s private symbols anymore. This is not an API/ABI breakage.
|
|
||||||
* darwin implementation by Benjamin Reed.
|
|
||||||
* linux:
|
|
||||||
- splitted fsusage and mountlist implementations;
|
|
||||||
- smarter mountlist(allfs = False);
|
|
||||||
- fixed some compile warning on 64bit;
|
|
||||||
* solaris:
|
|
||||||
- fixed netload build by Henry Zhang.
|
|
||||||
|
|
||||||
16 September 2007: Overview of changes in 2.20.0
|
|
||||||
================================================
|
|
||||||
* Updated translations.
|
|
||||||
|
|
||||||
27 August 2007: Overview of changes in 2.19.92
|
|
||||||
==============================================
|
|
||||||
* Fixed stupid hardwired path in linux/sysinfo.c
|
|
||||||
|
|
||||||
26 August 2007: Overview of changes in 2.19.91
|
|
||||||
==============================================
|
|
||||||
* Translations updates.
|
|
||||||
* linux:
|
|
||||||
- Small internal improvement. Might fix sysinfo when having more than
|
|
||||||
8 CPUS.
|
|
||||||
|
|
||||||
9 July 2007: Overview of changes in 2.19.5
|
|
||||||
==========================================
|
|
||||||
* linux:
|
|
||||||
- fixed proc_map for >= 2.6.22
|
|
||||||
* freebsd:
|
|
||||||
- implemented procwd and procopenfiles
|
|
||||||
Joe Marcus Clarke
|
|
||||||
|
|
||||||
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
|
|
||||||
========================================================
|
========================================================
|
||||||
|
* glibtop_get_mountlist() : Added tmpfs to ignore list.
|
||||||
|
* Re-install open.h to please GTop (libgtop perl wrapper).
|
||||||
* Linux:
|
* Linux:
|
||||||
- little improvements for 2.6.
|
* Fixed compilation on mips.
|
||||||
|
* Added pagein/pageout 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
|
April 10, 2005: Overview of changes from 2.10.0 to 2.10.1
|
||||||
=========================================================
|
=========================================================
|
||||||
|
168
acconfig.h
Normal file
168
acconfig.h
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
|
||||||
|
/* 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 guint64
|
||||||
|
#undef int64_t
|
||||||
|
|
||||||
|
#undef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
|
||||||
|
#undef GLIBTOP_GUILE
|
||||||
|
#undef GLIBTOP_GUILE_NAMES
|
||||||
|
#undef GLIBTOP_EXAMPLES
|
||||||
|
#undef GLIBTOP_INODEDB
|
||||||
|
|
||||||
|
#undef NEED_LIBGTOP
|
||||||
|
|
||||||
|
#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
|
377
acinclude.m4
377
acinclude.m4
@@ -30,7 +30,7 @@ changequote([,]), [#include <sys/types.h>
|
|||||||
], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
|
], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
|
||||||
AC_MSG_RESULT($ac_cv_type_$1)
|
AC_MSG_RESULT($ac_cv_type_$1)
|
||||||
if test $ac_cv_type_$1 = no; then
|
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
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
|
|||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
gcc_need_declarations="$gcc_need_declarations $1"
|
gcc_need_declarations="$gcc_need_declarations $1"
|
||||||
gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
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
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
@@ -157,8 +157,7 @@ yes
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
|
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
|
||||||
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
|
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_LISTMNTENT, 1,
|
AC_DEFINE(MOUNTED_LISTMNTENT)
|
||||||
[Define if there is a function named listmntent that can be used to list all mounted filesystems. [UNICOS]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -177,8 +176,7 @@ AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
|
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
|
||||||
if test $fu_cv_sys_mounted_getmntent1 = yes; then
|
if test $fu_cv_sys_mounted_getmntent1 = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_GETMNTENT1, 1,
|
AC_DEFINE(MOUNTED_GETMNTENT1)
|
||||||
[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]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -192,8 +190,7 @@ fu_cv_sys_mounted_getmntent2=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
|
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
|
||||||
if test $fu_cv_sys_mounted_getmntent2 = yes; then
|
if test $fu_cv_sys_mounted_getmntent2 = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_GETMNTENT2, 1,
|
AC_DEFINE(MOUNTED_GETMNTENT2)
|
||||||
[Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes two arguments. [SVR4]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -218,8 +215,7 @@ fu_cv_sys_mounted_getsstat=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
|
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
|
||||||
if test $fu_cv_sys_mounted_getsstat = yes; then
|
if test $fu_cv_sys_mounted_getsstat = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_GETFSSTAT, 1,
|
AC_DEFINE(MOUNTED_GETFSSTAT)
|
||||||
[Define if there is a function named getfsstat for reading the list of mounted filesystems. [DEC Alpha running OSF/1]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -233,8 +229,7 @@ fu_cv_sys_mounted_vmount=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
|
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
|
||||||
if test $fu_cv_sys_mounted_vmount = yes; then
|
if test $fu_cv_sys_mounted_vmount = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_VMOUNT, 1,
|
AC_DEFINE(MOUNTED_VMOUNT)
|
||||||
[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]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -251,8 +246,7 @@ fu_cv_sys_mounted_fread_fstyp=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
|
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
|
||||||
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
|
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_FREAD_FSTYP, 1,
|
AC_DEFINE(MOUNTED_FREAD_FSTYP)
|
||||||
[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]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -273,8 +267,7 @@ test -n "$ok" \
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
|
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
|
||||||
if test $fu_cv_sys_mounted_getmntinfo = yes; then
|
if test $fu_cv_sys_mounted_getmntinfo = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_GETMNTINFO, 1,
|
AC_DEFINE(MOUNTED_GETMNTINFO)
|
||||||
[Define if there is a function named getmntinfo for reading the list of mounted filesystems. [4.4BSD]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -292,8 +285,7 @@ fu_cv_sys_mounted_getmnt=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
|
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
|
||||||
if test $fu_cv_sys_mounted_getmnt = yes; then
|
if test $fu_cv_sys_mounted_getmnt = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_GETMNT, 1,
|
AC_DEFINE(MOUNTED_GETMNT)
|
||||||
[Define if there is a function named getmnt for reading the list of mounted filesystems. [Ultrix]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -307,8 +299,7 @@ fu_cv_sys_mounted_fread=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
|
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
|
||||||
if test $fu_cv_sys_mounted_fread = yes; then
|
if test $fu_cv_sys_mounted_fread = yes; then
|
||||||
list_mounted_fs=found
|
list_mounted_fs=found
|
||||||
AC_DEFINE(MOUNTED_FREAD, 1,
|
AC_DEFINE(MOUNTED_FREAD)
|
||||||
[Define if there is no specific function for reading the list of mounted filesystems. fread will be used to read /etc/mnttab. [SVR2]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -337,8 +328,7 @@ fu_cv_sys_stat_statvfs=yes,
|
|||||||
fu_cv_sys_stat_statvfs=no)])
|
fu_cv_sys_stat_statvfs=no)])
|
||||||
if test $fu_cv_sys_stat_statvfs = yes; then
|
if test $fu_cv_sys_stat_statvfs = yes; then
|
||||||
space=yes
|
space=yes
|
||||||
AC_DEFINE(STAT_STATVFS, 1,
|
AC_DEFINE(STAT_STATVFS)
|
||||||
[Define if there is a function named statvfs. [SVR4]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -362,8 +352,7 @@ fu_cv_sys_stat_statfs3_osf1=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
|
||||||
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
|
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
|
||||||
space=yes
|
space=yes
|
||||||
AC_DEFINE(STAT_STATFS3_OSF1, 1,
|
AC_DEFINE(STAT_STATFS3_OSF1)
|
||||||
[Define if statfs takes 3 args. [DEC Alpha running OSF/1]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -394,8 +383,7 @@ fu_cv_sys_stat_statfs2_bsize=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
|
||||||
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
|
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
|
||||||
space=yes
|
space=yes
|
||||||
AC_DEFINE(STAT_STATFS2_BSIZE, 1,
|
AC_DEFINE(STAT_STATFS2_BSIZE)
|
||||||
[Define if statfs takes 2 args and struct statfs has a field named f_bsize. [4.3BSD, SunOS 4, HP-UX, AIX PS/2]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -416,8 +404,7 @@ fu_cv_sys_stat_statfs4=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
|
||||||
if test $fu_cv_sys_stat_statfs4 = yes; then
|
if test $fu_cv_sys_stat_statfs4 = yes; then
|
||||||
space=yes
|
space=yes
|
||||||
AC_DEFINE(STAT_STATFS4, 1,
|
AC_DEFINE(STAT_STATFS4)
|
||||||
[Define if statfs takes 4 args. [SVR3, Dynix, Irix, Dolphin]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -445,8 +432,7 @@ fu_cv_sys_stat_statfs2_fsize=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
|
||||||
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
|
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
|
||||||
space=yes
|
space=yes
|
||||||
AC_DEFINE(STAT_STATFS2_FSIZE, 1,
|
AC_DEFINE(STAT_STATFS2_FSIZE)
|
||||||
[Define if statfs takes 2 args and struct statfs has a field named f_fsize. [4.4BSD, NetBSD]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -477,17 +463,14 @@ fu_cv_sys_stat_fs_data=no)])
|
|||||||
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
|
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
|
||||||
if test $fu_cv_sys_stat_fs_data = yes; then
|
if test $fu_cv_sys_stat_fs_data = yes; then
|
||||||
space=yes
|
space=yes
|
||||||
AC_DEFINE(STAT_STATFS2_FS_DATA, 1,
|
AC_DEFINE(STAT_STATFS2_FS_DATA)
|
||||||
[Define if statfs takes 2 args and the second argument has type struct fs_data. [Ultrix]])
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test $space = no; then
|
if test $space = no; then
|
||||||
# SVR2
|
# SVR2
|
||||||
AC_TRY_CPP([#include <sys/filsys.h>],
|
AC_TRY_CPP([#include <sys/filsys.h>],
|
||||||
AC_DEFINE(STAT_READ_FILSYS, 1,
|
AC_DEFINE(STAT_READ_FILSYS) space=yes)
|
||||||
[Define if there is no specific function for reading filesystems usage information and you have the <sys/filsys.h> header file. [SVR2]])
|
|
||||||
space=yes)
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$list_mounted_fs" && test $space != no; then
|
if test -n "$list_mounted_fs" && test $space != no; then
|
||||||
@@ -512,14 +495,330 @@ fu_cv_sys_truncating_statfs=yes,
|
|||||||
fu_cv_sys_truncating_statfs=no,
|
fu_cv_sys_truncating_statfs=no,
|
||||||
)])
|
)])
|
||||||
if test $fu_cv_sys_truncating_statfs = yes; then
|
if test $fu_cv_sys_truncating_statfs = yes; then
|
||||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
|
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
|
||||||
[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.]])
|
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
||||||
|
|
||||||
AC_CHECKING(for AFS)
|
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([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)
|
||||||
|
|
||||||
|
if test x$hacker_mode = xyes ; then
|
||||||
|
LIBGTOP_HACKER_TESTS
|
||||||
|
fi
|
||||||
|
|
||||||
|
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*)
|
||||||
|
libgtop_sysdeps_dir=linux
|
||||||
|
libgtop_use_machine_h=no
|
||||||
|
libgtop_have_sysinfo=yes
|
||||||
|
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"
|
echo "You need to install gnome-common from the GNOME CVS"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
REQUIRED_AUTOMAKE_VERSION=1.9
|
USE_GNOME2_MACROS=1 . gnome-autogen.sh
|
||||||
. 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
|
50
backends/common/ChangeLog
Normal file
50
backends/common/ChangeLog
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-common.c: (_open_common): s/u_int64_t/guint64/
|
||||||
|
|
||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-common.h: fixed compilation
|
||||||
|
|
||||||
|
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 *, guint64, 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,
|
||||||
|
guint64 features, const char **backend_args)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_common (glibtop_server *server, glibtop_backend *backend,
|
||||||
|
void *closure)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@@ -1,3 +1,7 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,18 +23,14 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#ifndef __GLIBTOP_BACKEND_COMMON_H__
|
||||||
|
#define __GLIBTOP_BACKEND_COMMON_H__
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/glibtop-backend.h>
|
||||||
|
#include <glibtop/glibtop-backend-info.h>
|
||||||
|
|
||||||
void
|
#endif
|
||||||
glibtop_open_s (glibtop *server,
|
|
||||||
const char *program_name,
|
|
||||||
const unsigned long features,
|
|
||||||
const unsigned flags)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_close_s (glibtop *server)
|
|
||||||
{ }
|
|
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
|
125
backends/server/ChangeLog
Normal file
125
backends/server/ChangeLog
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
2004-08-22 Benoît Dejean <tazforever@dlfp.org>
|
||||||
|
|
||||||
|
* server.c: (handle_slave_connection): Replaced //comment by /*C89*/.
|
||||||
|
|
||||||
|
2004-03-09 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* command.c: (glibtop_call_i):
|
||||||
|
* demarshal.pl:
|
||||||
|
* marshal.pl:
|
||||||
|
* read_data.c: (glibtop_read_data_i):
|
||||||
|
* server.c: (handle_slave_connection): fix g_malloc usage on non-Linux
|
||||||
|
platforms (patch by Benoît Dejean <bnet@ifrance.com>)
|
||||||
|
|
||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-server.c: (_open_server):
|
||||||
|
* backend-server.h:
|
||||||
|
* command.h.in: s/u_int64_t/guint64/
|
||||||
|
|
||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-server.h:
|
||||||
|
* command.h.in:
|
||||||
|
* demarshal.pl:
|
||||||
|
* server.h: fixed compilation
|
||||||
|
|
||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-server.c: (_open_server):
|
||||||
|
* command.c: (glibtop_call_i):
|
||||||
|
* demarshal.pl:
|
||||||
|
* marshal.pl:
|
||||||
|
* read_data.c: (glibtop_read_data_i):
|
||||||
|
* server.c: (main), (handle_slave_connection):
|
||||||
|
replace all the xmalloc crap by glib memory management functions
|
||||||
|
|
||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* Makefile.am: removed traces of guile, intllibs and libgnomesupport
|
||||||
|
|
||||||
|
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'.
|
||||||
|
|
84
backends/server/Makefile.am
Normal file
84
backends/server/Makefile.am
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
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 *, guint64, 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,
|
||||||
|
guint64 features, const char **backend_args)
|
||||||
|
{
|
||||||
|
backend_server_private *priv;
|
||||||
|
|
||||||
|
priv = g_malloc (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;
|
||||||
|
}
|
||||||
|
|
65
backends/server/backend-server.h
Normal file
65
backends/server/backend-server.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/* -*- 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/glibtop-backend.h>
|
||||||
|
#include <glibtop/glibtop-backend-info.h>
|
||||||
|
|
||||||
|
typedef struct _backend_server_private backend_server_private;
|
||||||
|
|
||||||
|
struct _backend_server_private
|
||||||
|
{
|
||||||
|
guint64 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
|
||||||
|
|
94
backends/server/command.c
Normal file
94
backends/server/command.c
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
/* -*- 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 = {0};
|
||||||
|
glibtop_response resp = {0};
|
||||||
|
|
||||||
|
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 = g_malloc (resp.data_size);
|
||||||
|
|
||||||
|
glibtop_read_i (priv, resp.data_size, ptr);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
@@ -1,3 +1,9 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
@@AUTOGEN_COMMENT@@
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,47 +25,35 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_MACHINE_H__
|
#ifndef __GLIBTOP_COMMAND_H__
|
||||||
#define __GLIBTOP_MACHINE_H__
|
#define __GLIBTOP_COMMAND_H__
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <glibtop.h>
|
||||||
#include <nlist.h>
|
#include <glibtop/union.h>
|
||||||
#include <kvm.h>
|
|
||||||
#include <sys/dkstat.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <sys/user.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/sysctl.h>
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
#ifdef __FreeBSD__
|
|
||||||
#include <osreldate.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __NetBSD__
|
|
||||||
#include <sys/proc.h>
|
|
||||||
|
|
||||||
#ifndef SRUN
|
|
||||||
#define SRUN SACTIVE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef struct _glibtop_machine glibtop_machine;
|
@@GLIBTOP_COMMAND_CONSTANTS@@
|
||||||
|
|
||||||
struct _glibtop_machine
|
#define _GLIBTOP_PARAM_SIZE 16
|
||||||
|
|
||||||
|
typedef struct _glibtop_command glibtop_command;
|
||||||
|
typedef struct _glibtop_response glibtop_response;
|
||||||
|
|
||||||
|
struct _glibtop_command
|
||||||
{
|
{
|
||||||
uid_t uid, euid;
|
guint64 command;
|
||||||
gid_t gid, egid;
|
guint64 param_size, send_size, data_size;
|
||||||
|
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
/* The kernel descriptor, used by kvm_* calls. We keep and re-use
|
struct _glibtop_response
|
||||||
* it rather than re-getting it for almost all function
|
{
|
||||||
* invocations. */
|
int retval;
|
||||||
kvm_t *kd;
|
int glibtop_errno;
|
||||||
|
guint64 recv_size, data_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GLIBTOP_MACHINE_H__ */
|
#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;
|
385
backends/server/demarshal.pl
Normal file
385
backends/server/demarshal.pl
Normal file
@@ -0,0 +1,385 @@
|
|||||||
|
#!/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 '';
|
||||||
|
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 = g_malloc (_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 = g_malloc (_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 .= "g_malloc (_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 .= "g_malloc (_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 = "\tg_free (_LIBGTOP_SEND_buf);\n";
|
||||||
|
$send_buf_free_code .= "\tg_free (_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 = g_malloc (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] = g_strdup (_LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
|
||||||
|
$call_code .= "\tptrlist [array->number] = NULL;\n\n";
|
||||||
|
$call_code .= "\tg_free (retval);\n";
|
||||||
|
$call_code .= "\tretval = ptrlist;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
|
||||||
|
$size_code, $send_buf_code, $marshal_code,
|
||||||
|
$call_code, $send_buf_free_code);
|
||||||
|
|
||||||
|
$return_code = '';
|
||||||
|
if ($retval !~ /^void$/) {
|
||||||
|
$return_code .= "\treturn retval;\n";
|
||||||
|
} else {
|
||||||
|
$return_code .= "\treturn;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code .= $return_code;
|
||||||
|
|
||||||
|
$func_decl = 'static '.$retval."\n";
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
} else {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
|
||||||
|
$local_var_code, $local_var_init_code,
|
||||||
|
$total_code);
|
||||||
|
|
||||||
|
|
||||||
|
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
|
||||||
|
&toupper($feature), $total_code,
|
||||||
|
&toupper($feature));
|
||||||
|
|
||||||
|
print $total_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$call_vector_code = '';
|
||||||
|
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||||
|
$feature = $features{$nr};
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
|
||||||
|
if ($orig =~ /^@/) {
|
||||||
|
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||||
|
} else {
|
||||||
|
$call_vector_code .= sprintf
|
||||||
|
(qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
|
||||||
|
&toupper($feature), $feature);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
|
||||||
|
print $call_vector_code;
|
||||||
|
print '};';
|
||||||
|
print '';
|
||||||
|
|
@@ -1,8 +1,9 @@
|
|||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
Copyright (C) 2004 Nicol<EFBFBD>s Lichtmaier
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Modified by Nicol<EFBFBD>s Lichtmaier to give a process open files.
|
/* $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.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
@@ -22,30 +23,24 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#include <backend-server.h>
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/error.h>
|
|
||||||
#include <glibtop/procopenfiles.h>
|
|
||||||
|
|
||||||
#include <glibtop_suid.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);
|
|
||||||
|
|
||||||
/* Init function. */
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_glibtop_init_proc_open_files_s (glibtop *server)
|
glibtop_read_i (backend_server_private *priv, size_t size, void *buf)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_open_files = _glibtop_sysdeps_proc_open_files;
|
int ret = 0;
|
||||||
}
|
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
|
||||||
|
size, priv->input [0]);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* XXX Unimplemented on FreeBSD */
|
ret = read (priv->input [0], buf, size);
|
||||||
glibtop_open_files_entry *
|
|
||||||
glibtop_get_proc_open_files_s (glibtop *server, glibtop_proc_open_files *buf, pid_t pid)
|
#ifdef DEBUG
|
||||||
{
|
fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
|
||||||
return NULL;
|
#endif
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
|
glibtop_error_io_r (priv->server, "read %d bytes", size);
|
||||||
}
|
}
|
@@ -1,3 +1,7 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,38 +23,36 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_SUID_H__
|
#include <backend-server.h>
|
||||||
#define __GLIBTOP_SUID_H__
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
void *
|
||||||
|
glibtop_read_data_i (backend_server_private *priv)
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
void *ptr;
|
||||||
|
int ret;
|
||||||
|
|
||||||
#if _IN_LIBGTOP
|
#ifdef DEBUG
|
||||||
#include <sys/param.h>
|
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define KI_PROC(ki) (&(ki))->kp_proc)
|
ret = read (priv->input [0], (void *)&size, sizeof (size_t));
|
||||||
#define KI_EPROC(ki) (&(ki))->kp_eproc)
|
|
||||||
|
|
||||||
#define FORCEUREAD 1
|
if (ret < 0)
|
||||||
#define UREADOK(ki) (FORCEUREAD || (KI_PROC(ki)->p_flag & P_INMEM))
|
glibtop_error_io_r (priv->server, "read data size");
|
||||||
|
|
||||||
static inline void glibtop_suid_enter (glibtop *server) {
|
|
||||||
setregid (server->machine.gid, server->machine.egid);
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void glibtop_suid_leave (glibtop *server) {
|
|
||||||
if (setregid (server->machine.egid, server->machine.gid))
|
|
||||||
_exit (1);
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
glibtop_init_p (glibtop *server, const unsigned long features,
|
|
||||||
const unsigned flags);
|
|
||||||
void
|
|
||||||
glibtop_open_p (glibtop *server, const char *program_name,
|
|
||||||
const unsigned long features,
|
|
||||||
const unsigned flags);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!size) return NULL;
|
||||||
|
|
||||||
|
ptr = g_malloc (size);
|
||||||
|
|
||||||
|
ret = read (priv->input [0], ptr, size);
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
|
glibtop_error_io_r (priv->server, "read data %d bytes");
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
189
backends/server/server.c
Normal file
189
backends/server/server.c
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
/* -*- 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 = g_malloc (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 = g_malloc (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);
|
||||||
|
}
|
||||||
|
}
|
83
backends/server/server.h
Normal file
83
backends/server/server.h
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/* -*- 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/open.h>
|
||||||
|
#include <glibtop/union.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"
|
||||||
|
|
||||||
|
G_BEGIN_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;
|
||||||
|
|
||||||
|
G_END_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");
|
||||||
|
}
|
||||||
|
}
|
@@ -1,5 +1,11 @@
|
|||||||
/*
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
This file is part of LibGTop 2.0.
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
under the terms of the GNU General Public License as published by
|
under the terms of the GNU General Public License as published by
|
||||||
@@ -17,28 +23,21 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_SUID_H__
|
#include <backend-server.h>
|
||||||
#define __GLIBTOP_SUID_H__
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
static inline void glibtop_suid_enter (glibtop *server) {
|
|
||||||
setreuid (server->machine.uid, server->machine.euid);
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void glibtop_suid_leave (glibtop *server) {
|
|
||||||
if (setreuid (server->machine.euid, server->machine.uid))
|
|
||||||
_exit (1);
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_init_p (glibtop *server, const unsigned long features,
|
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf)
|
||||||
const unsigned flags);
|
{
|
||||||
void
|
int ret;
|
||||||
glibtop_open_p (glibtop *server, const char *program_name,
|
|
||||||
const unsigned long features,
|
|
||||||
const unsigned flags);
|
|
||||||
|
|
||||||
G_END_DECLS
|
if (size == 0) return;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
|
||||||
#endif
|
#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
|
68
backends/sysdeps/ChangeLog
Normal file
68
backends/sysdeps/ChangeLog
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-sysdeps.c: (_open_sysdeps): s/u_int64_t/guint64/
|
||||||
|
|
||||||
|
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||||
|
|
||||||
|
* backend-sysdeps.h: fixed compilation
|
||||||
|
|
||||||
|
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 *, guint64, 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,
|
||||||
|
guint64 features, const char **backend_args)
|
||||||
|
{
|
||||||
|
glibtop_init_func_t *init_fkt;
|
||||||
|
|
||||||
|
/* Do the initialization, but only if not already initialized. */
|
||||||
|
|
||||||
|
if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
|
||||||
|
glibtop_open_s (server, "glibtop", features, 0);
|
||||||
|
|
||||||
|
for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
|
||||||
|
(*init_fkt) (server);
|
||||||
|
|
||||||
|
server->info->sysdeps.pointer_size = sizeof (void*)*8;
|
||||||
|
|
||||||
|
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_sysdeps (glibtop_server *server, glibtop_backend *backend,
|
||||||
|
void *closure)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@@ -1,7 +1,11 @@
|
|||||||
/* Copyright (C) 1998 Joshua Sled
|
/* -*- 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.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Joshua Sled <jsled@xcf.berkeley.edu>, July 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
under the terms of the GNU General Public License as published by
|
under the terms of the GNU General Public License as published by
|
||||||
@@ -19,12 +23,14 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#ifndef __GLIBTOP_BACKEND_SYSDEPS_H__
|
||||||
|
#define __GLIBTOP_BACKEND_SYSDEPS_H__
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
/* Closes pipe to gtop server. */
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/glibtop-backend.h>
|
||||||
|
#include <glibtop/glibtop-backend-info.h>
|
||||||
|
|
||||||
void
|
#endif
|
||||||
glibtop_close_p (glibtop *server)
|
|
||||||
{ }
|
|
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 '';
|
||||||
|
|
236
configure.in
236
configure.in
@@ -2,50 +2,59 @@ dnl
|
|||||||
dnl Configure script for the Gnome library
|
dnl Configure script for the Gnome library
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
m4_define([libgtop_major_version], [2])
|
AC_INIT(copyright.txt)
|
||||||
m4_define([libgtop_minor_version], [24])
|
AM_CONFIG_HEADER(config.h)
|
||||||
m4_define([libgtop_micro_version], [3])
|
AC_CANONICAL_SYSTEM
|
||||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
|
||||||
|
LIBGTOP_MAJOR_VERSION=2
|
||||||
|
LIBGTOP_MINOR_VERSION=10
|
||||||
|
LIBGTOP_MICRO_VERSION=2
|
||||||
|
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||||
|
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
|
||||||
|
|
||||||
dnl increment if the interface has additions, changes, removals.
|
dnl increment if the interface has additions, changes, removals.
|
||||||
m4_define([libgtop_current], [9])
|
LIBGTOP_CURRENT=5
|
||||||
|
|
||||||
dnl increment any time the source changes; set to
|
dnl increment any time the source changes; set to
|
||||||
dnl 0 if you increment CURRENT
|
dnl 0 if you increment CURRENT
|
||||||
m4_define([libgtop_revision], [0])
|
LIBGTOP_REVISION=0
|
||||||
|
|
||||||
dnl increment if any interfaces have been added; set to 0
|
dnl increment if any interfaces have been added; set to 0
|
||||||
dnl if any interfaces have been removed. removal has
|
dnl if any interfaces have been removed. removal has
|
||||||
dnl precedence over adding, so set to 0 if both happened.
|
dnl precedence over adding, so set to 0 if both happened.
|
||||||
m4_define([libgtop_age], [2])
|
LIBGTOP_AGE=0
|
||||||
|
|
||||||
|
# you can set this to `-snap' for instance to create
|
||||||
|
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||||
|
LIBGTOP_VERSION_SUFFIX=
|
||||||
|
|
||||||
# Increase each time you change the client/server protocol.
|
# Increase each time you change the client/server protocol.
|
||||||
m4_define([libgtop_server_version], [5])
|
LIBGTOP_SERVER_VERSION=5
|
||||||
|
|
||||||
# Version code calculation
|
# Version code calculation
|
||||||
m4_define([libgtop_version_code], [m4_eval(libgtop_major_version * 1000000 + libgtop_minor_version * 1000 + libgtop_micro_version)])
|
LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION`
|
||||||
|
|
||||||
AC_PREREQ(2.59)
|
AC_SUBST(LIBGTOP_MAJOR_VERSION)
|
||||||
AC_INIT([libgtop], [libgtop_version],
|
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
||||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=libgtop])
|
AC_SUBST(LIBGTOP_MICRO_VERSION)
|
||||||
AC_CONFIG_SRCDIR(copyright.txt)
|
AC_SUBST(LIBGTOP_INTERFACE_AGE)
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_SUBST(LIBGTOP_BINARY_AGE)
|
||||||
|
AC_SUBST(LIBGTOP_SERVER_VERSION)
|
||||||
AC_CANONICAL_SYSTEM
|
AC_SUBST(LIBGTOP_VERSION)
|
||||||
|
AC_SUBST(LIBGTOP_VERSION_CODE)
|
||||||
AM_INIT_AUTOMAKE
|
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
|
||||||
AC_SUBST(ACLOCAL_AMFLAGS, [\${ACLOCAL_FLAGS}])
|
|
||||||
|
|
||||||
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])
|
|
||||||
|
|
||||||
# libtool versioning
|
# libtool versioning
|
||||||
AC_SUBST(LT_VERSION_INFO,
|
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
||||||
["-version-info libgtop_current:libgtop_revision:libgtop_age"])
|
LT_CURRENT=$LIBGTOP_CURRENT
|
||||||
|
LT_REVISION=$LIBGTOP_REVISION
|
||||||
|
LT_AGE=$LIBGTOP_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 ."
|
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
|
||||||
|
|
||||||
@@ -87,12 +96,57 @@ AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
|||||||
GNOME_LIBGTOP_SYSDEPS
|
GNOME_LIBGTOP_SYSDEPS
|
||||||
GNOME_LIBGTOP_TYPES
|
GNOME_LIBGTOP_TYPES
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
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 $smp_static_examples pprint_static procargs_static df_static netlist netlist_static openfiles_static"
|
||||||
|
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)
|
||||||
|
|
||||||
GLIB_REQUIRED=2.6.0
|
GLIB_REQUIRED=2.6.0
|
||||||
|
|
||||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
||||||
AC_SUBST(GLIB_CFLAGS)
|
AC_SUBST(GLIB_CFLAGS)
|
||||||
AC_SUBST(GLIB_LIBS)
|
AC_SUBST(GLIB_LIBS)
|
||||||
|
|
||||||
|
AC_CHECK_HEADER(popt.h,[POPT=yes],[POPT=no])
|
||||||
|
AC_MSG_CHECKING(for popt.h)
|
||||||
|
if test x$POPT = xyes ; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([libgtop requires the popt development libraries])
|
||||||
|
fi
|
||||||
|
|
||||||
AC_CHECK_HEADER(ifaddrs.h, [HAVE_IFADDRS_H=yes], [HAVE_IFADDRS_H=no])
|
AC_CHECK_HEADER(ifaddrs.h, [HAVE_IFADDRS_H=yes], [HAVE_IFADDRS_H=no])
|
||||||
if test x$HAVE_IFADDRS_H = xyes ; then
|
if test x$HAVE_IFADDRS_H = xyes ; then
|
||||||
AC_DEFINE(HAVE_IFADDRS_H, 1, [defined if you have ifaddrs.h])
|
AC_DEFINE(HAVE_IFADDRS_H, 1, [defined if you have ifaddrs.h])
|
||||||
@@ -137,42 +191,32 @@ if test x$HAVE_ISDN_H = xyes ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dnl AIX
|
dnl AIX
|
||||||
AC_CHECK_LIB(perfstat, vmgetinfo,
|
AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the 'vmgetinfo' function in libperfstat])
|
||||||
AC_DEFINE(HAVE_VMGETINFO, 1,
|
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
|
||||||
[Define to 1 if you have the 'vmgetinfo' function in libperfstat]))
|
|
||||||
|
|
||||||
dnl Solaris
|
dnl Solaris
|
||||||
case "$host_os" in
|
AC_CHECK_LIB(kstat, kstat_open)
|
||||||
solaris*)
|
AC_CHECK_FUNCS(getloadavg swapctl)
|
||||||
AC_CHECK_LIB(kstat, kstat_open)
|
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
|
||||||
AC_CHECK_FUNCS(getloadavg swapctl)
|
|
||||||
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
|
|
||||||
|
|
||||||
|
dnl Some versions of Solaris require -lelf for -lkvm
|
||||||
dnl Some versions of Solaris require -lelf for -lkvm
|
AC_CHECK_LIB(kvm, kvm_open,[
|
||||||
case $host_os in
|
LIBS="-lkvm $LIBS"
|
||||||
solaris[[8-9]] | solaris2.[[0-9]].*)
|
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
|
||||||
AC_CHECK_LIB(kvm, kvm_open,[
|
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
|
||||||
LIBS="-lkvm $LIBS"
|
[ac_save_LIBS="$LIBS"
|
||||||
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
|
LIBS="-lkvm -lelf $LIBS"
|
||||||
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
|
AC_TRY_LINK([char kvm_open();], [kvm_open()],
|
||||||
[ac_save_LIBS="$LIBS"
|
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
|
||||||
LIBS="-lkvm -lelf $LIBS"
|
LIBS="$ac_save_LIBS"
|
||||||
AC_TRY_LINK([char kvm_open();], [kvm_open()],
|
])
|
||||||
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
|
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
|
||||||
LIBS="$ac_save_LIBS"
|
AC_MSG_RESULT(yes)
|
||||||
])
|
LIBS="-lkvm -lelf $LIBS"
|
||||||
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
|
else
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(no)
|
||||||
LIBS="-lkvm -lelf $LIBS"
|
fi
|
||||||
else
|
])
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl For DEC OSF1
|
dnl For DEC OSF1
|
||||||
AC_CHECK_LIB(mach, vm_statistics)
|
AC_CHECK_LIB(mach, vm_statistics)
|
||||||
@@ -192,7 +236,7 @@ CFLAGS=$saved_CFLAGS
|
|||||||
AC_CHECK_FUNC(socket,
|
AC_CHECK_FUNC(socket,
|
||||||
[AC_CHECK_HEADER(netinet/in.h,
|
[AC_CHECK_HEADER(netinet/in.h,
|
||||||
[AC_CHECK_HEADER(arpa/inet.h, [
|
[AC_CHECK_HEADER(arpa/inet.h, [
|
||||||
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_MSG_CHECKING("for sun_len member in struct sockaddr_un")
|
||||||
AC_TRY_LINK([
|
AC_TRY_LINK([
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -200,7 +244,7 @@ AC_CHECK_FUNC(socket,
|
|||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
],
|
],
|
||||||
[static struct sockaddr_un x; x.sun_len = 1;],
|
[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)])])])])
|
[AC_MSG_RESULT(no)])])])])
|
||||||
|
|
||||||
dnl Checks for library functions.
|
dnl Checks for library functions.
|
||||||
@@ -210,15 +254,13 @@ AC_TYPE_SIGNAL
|
|||||||
AC_FUNC_STRFTIME
|
AC_FUNC_STRFTIME
|
||||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||||
|
|
||||||
IT_PROG_INTLTOOL([0.35.0])
|
ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id it ja ko lt lv mi mk ml mn ms nb ne nl nn no or pa pl pt pt_BR ro ru rw sk sl sq sr sr@Latn sv ta tr uk vi xh zh_CN zh_TW"
|
||||||
|
|
||||||
GETTEXT_PACKAGE=libgtop-2.0
|
GETTEXT_PACKAGE=libgtop-2.0
|
||||||
AC_SUBST(GETTEXT_PACKAGE)
|
AC_SUBST(GETTEXT_PACKAGE)
|
||||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
|
||||||
[Define to the gettext package used by the library])
|
|
||||||
|
|
||||||
AM_GLIB_GNU_GETTEXT
|
AM_GLIB_GNU_GETTEXT
|
||||||
GLIB_DEFINE_LOCALEDIR([GTOPLOCALEDIR])
|
|
||||||
|
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
|
|
||||||
@@ -245,7 +287,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" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) }
|
||||||
test -z "$with_xauth" && with_xauth=yes
|
test -z "$with_xauth" && with_xauth=yes
|
||||||
if test "$with_xauth" = "yes"; then
|
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)
|
XE_SPACE(libs_xauth, $X_LIBS -lXau)
|
||||||
fi
|
fi
|
||||||
CPPFLAGS="$saved_CPPFLAGS"
|
CPPFLAGS="$saved_CPPFLAGS"
|
||||||
@@ -255,15 +297,8 @@ dnl For diskusage stuff
|
|||||||
GNOME_FILEUTILS_CHECKS
|
GNOME_FILEUTILS_CHECKS
|
||||||
|
|
||||||
dnl Debugging
|
dnl Debugging
|
||||||
AC_ARG_ENABLE(debug,
|
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
||||||
AS_HELP_STRING([--enable-debug],
|
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
||||||
[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]))
|
|
||||||
|
|
||||||
dnl These definitions are expanded in make.
|
dnl These definitions are expanded in make.
|
||||||
LIBGTOP_LIBS='-L$(libdir)'
|
LIBGTOP_LIBS='-L$(libdir)'
|
||||||
@@ -273,6 +308,10 @@ if test x$libgtop_use_machine_h = xyes ; then
|
|||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$build_inodedb = xyes ; then
|
||||||
|
LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB"
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$libgtop_smp = xyes ; then
|
if test x$libgtop_smp = xyes ; then
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP"
|
||||||
fi
|
fi
|
||||||
@@ -283,14 +322,8 @@ fi
|
|||||||
|
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS $GLIB_CFLAGS"
|
LIBGTOP_INCS="$LIBGTOP_INCS $GLIB_CFLAGS"
|
||||||
|
|
||||||
libgtop_save_prefix="$prefix"
|
LIBGTOP_BINDIR='$(bindir)'
|
||||||
libgtop_save_exec_prefix="$exec_prefix"
|
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
|
||||||
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"
|
|
||||||
|
|
||||||
sysdeps_dir="$libgtop_sysdeps_dir"
|
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||||
AC_SUBST(sysdeps_dir)
|
AC_SUBST(sysdeps_dir)
|
||||||
@@ -301,7 +334,7 @@ else
|
|||||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
|
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
|
||||||
fi
|
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"
|
||||||
|
|
||||||
@@ -319,27 +352,11 @@ if test "$GCC" = "yes" ; then
|
|||||||
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
||||||
-Wnested-externs -Wpointer-arith \
|
-Wnested-externs -Wpointer-arith \
|
||||||
-Wcast-align -Wsign-compare \
|
-Wcast-align -Wsign-compare \
|
||||||
|
-fno-strict-aliasing \
|
||||||
$CFLAGS"
|
$CFLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
INCLUDES="-I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $X_CFLAGS"
|
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $CFLAGS $X_CFLAGS "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
|
||||||
|
|
||||||
# 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])
|
|
||||||
|
|
||||||
AC_SUBST(INCLUDES)
|
AC_SUBST(INCLUDES)
|
||||||
|
|
||||||
@@ -360,9 +377,7 @@ fi
|
|||||||
AC_SUBST(sysdeps_suid_lib)
|
AC_SUBST(sysdeps_suid_lib)
|
||||||
AC_SUBST(server_programs)
|
AC_SUBST(server_programs)
|
||||||
|
|
||||||
GTK_DOC_CHECK(1.4)
|
AC_OUTPUT([
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
|
||||||
Makefile
|
Makefile
|
||||||
libgtop.spec
|
libgtop.spec
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
@@ -379,17 +394,12 @@ sysdeps/linux/Makefile
|
|||||||
sysdeps/freebsd/Makefile
|
sysdeps/freebsd/Makefile
|
||||||
sysdeps/solaris/Makefile
|
sysdeps/solaris/Makefile
|
||||||
sysdeps/aix/Makefile
|
sysdeps/aix/Makefile
|
||||||
sysdeps/bsd/Makefile
|
|
||||||
sysdeps/darwin/Makefile
|
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/daemon/Makefile
|
src/daemon/Makefile
|
||||||
|
src/inodedb/Makefile
|
||||||
lib/Makefile
|
lib/Makefile
|
||||||
examples/Makefile
|
examples/Makefile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
doc/reference/Makefile
|
|
||||||
doc/reference/version.xml
|
|
||||||
libgtop-2.0.pc
|
libgtop-2.0.pc
|
||||||
libgtopconfig.h
|
libgtopconfig.h
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_OUTPUT
|
|
||||||
|
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
|
11
doc/.cvsignore
Normal file
11
doc/.cvsignore
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
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
|
||||||
|
mdate-sh
|
@@ -1,14 +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>
|
2005-01-03 Benoît Dejean <TazForEver@dlfp.org>
|
||||||
|
|
||||||
* reference.texi: Updated.
|
* reference.texi: Updated.
|
||||||
|
@@ -1,8 +1,38 @@
|
|||||||
SUBDIRS = reference
|
|
||||||
|
|
||||||
info_TEXINFOS = libgtop2.texi
|
info_TEXINFOS = libgtop2.texi
|
||||||
|
|
||||||
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.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_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_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
|
@setchapternewpage odd
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
|
@include auto-macros.texi
|
||||||
@include version.texi
|
@include version.texi
|
||||||
|
|
||||||
@ifinfo
|
@ifinfo
|
||||||
|
@@ -111,7 +111,7 @@ The @samp{xcpu_} values are for SMP systems - they are the same than
|
|||||||
@code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle},
|
@code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle},
|
||||||
@code{iowait}, @code{irq} and @code{softirq}
|
@code{iowait}, @code{irq} and @code{softirq}
|
||||||
except that they are arrays of @code{GLIBTOP_NCPU} (defined in
|
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.
|
in the system.
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@@ -493,7 +493,7 @@ glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf,
|
|||||||
@end cartouche
|
@end cartouche
|
||||||
@end example
|
@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
|
@example
|
||||||
@cartouche
|
@cartouche
|
||||||
@@ -680,7 +680,7 @@ Standard unix nice level of process.
|
|||||||
Number of additional process groups.
|
Number of additional process groups.
|
||||||
@item groups
|
@item groups
|
||||||
Array of additional process 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
|
@end table
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@@ -1484,7 +1484,13 @@ struct _glibtop_mountentry
|
|||||||
@end cartouche
|
@end cartouche
|
||||||
@end example
|
@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
|
@table @code
|
||||||
@item devname
|
@item devname
|
||||||
|
@@ -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)>
|
26
examples/.cvsignore
Normal file
26
examples/.cvsignore
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
.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
|
||||||
|
pprint
|
||||||
|
pprint_static
|
||||||
|
procargs
|
||||||
|
procargs_static
|
||||||
|
df
|
||||||
|
df_static
|
||||||
|
netlist
|
||||||
|
netlist_static
|
||||||
|
openfiles
|
||||||
|
openfiles_static
|
@@ -1,43 +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>
|
2005-01-22 Benoît Dejean <TazForEver@dlfp.org>
|
||||||
|
|
||||||
* openfiles.c: (show_open_files): Updated.
|
* openfiles.c: (show_open_files): Updated.
|
||||||
|
@@ -8,55 +8,112 @@ DEFS = @DEFS@
|
|||||||
|
|
||||||
noinst_PROGRAMS = first second pprint procargs df netlist \
|
noinst_PROGRAMS = first second pprint procargs df netlist \
|
||||||
mountlist procmap netload sysdeps timings \
|
mountlist procmap netload sysdeps timings \
|
||||||
openfiles smp proclist mem wd affinity
|
openfiles \
|
||||||
|
@static_targets@ @smp_examples@
|
||||||
|
|
||||||
|
EXTRA_PROGRAMS = first_static second_static \
|
||||||
|
mountlist_static procmap_static \
|
||||||
|
smp smp_static openfiles_static \
|
||||||
|
netload_static sysdeps_static \
|
||||||
|
timings_static pprint_static procargs_static \
|
||||||
|
df_static netlist_static
|
||||||
|
|
||||||
first_SOURCES = first.c
|
first_SOURCES = first.c
|
||||||
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
first_static_SOURCES = $(first_SOURCES)
|
||||||
|
first_static_LDADD = $(first_LDADD)
|
||||||
|
first_static_LDFLAGS = -static
|
||||||
|
|
||||||
second_SOURCES = second.c
|
second_SOURCES = second.c
|
||||||
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
||||||
|
|
||||||
|
second_static_SOURCES = $(second_SOURCES)
|
||||||
|
second_static_LDADD = $(second_LDADD)
|
||||||
|
second_static_LDFLAGS = -static
|
||||||
|
|
||||||
procmap_SOURCES = procmap.c
|
procmap_SOURCES = procmap.c
|
||||||
procmap_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
procmap_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
procmap_static_SOURCES = $(procmap_SOURCES)
|
||||||
|
procmap_static_LDADD = $(procmap_LDADD)
|
||||||
|
procmap_static_LDFLAGS = -static
|
||||||
|
|
||||||
netload_SOURCES = netload.c
|
netload_SOURCES = netload.c
|
||||||
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
netload_static_SOURCES = $(netload_SOURCES)
|
||||||
|
netload_static_LDADD = $(netload_LDADD)
|
||||||
|
netload_static_LDFLAGS = -static
|
||||||
|
|
||||||
sysdeps_SOURCES = sysdeps.c
|
sysdeps_SOURCES = sysdeps.c
|
||||||
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
|
||||||
|
sysdeps_static_LDADD = $(sysdeps_LDADD)
|
||||||
|
sysdeps_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
|
||||||
mountlist_SOURCES = mountlist.c
|
mountlist_SOURCES = mountlist.c
|
||||||
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
||||||
|
mountlist_static_LDADD = $(mountlist_LDADD)
|
||||||
|
mountlist_static_LDFLAGS= -static
|
||||||
|
|
||||||
|
|
||||||
smp_SOURCES = smp.c
|
smp_SOURCES = smp.c
|
||||||
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
||||||
|
|
||||||
|
smp_static_SOURCES = $(smp_SOURCES)
|
||||||
|
smp_static_LDADD = $(smp_LDADD)
|
||||||
|
smp_static_LDFLAGS = -static
|
||||||
|
|
||||||
timings_SOURCES = timings.c
|
timings_SOURCES = timings.c
|
||||||
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
timings_static_SOURCES = $(timings_SOURCES)
|
||||||
|
timings_static_LDADD = $(timings_LDADD)
|
||||||
|
timings_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
|
||||||
pprint_SOURCES = pprint.c
|
pprint_SOURCES = pprint.c
|
||||||
pprint_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
pprint_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
pprint_static_SOURCES = $(pprint_SOURCES)
|
||||||
|
pprint_static_LDADD = $(pprint_LDADD)
|
||||||
|
pprint_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
|
||||||
procargs_SOURCES = procargs.c
|
procargs_SOURCES = procargs.c
|
||||||
procargs_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
procargs_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
procargs_static_SOURCES = $(procargs_SOURCES)
|
||||||
|
procargs_static_LDADD = $(procargs_LDADD)
|
||||||
|
procargs_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
|
||||||
df_SOURCES = df.c
|
df_SOURCES = df.c
|
||||||
df_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
df_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
df_static_SOURCES = $(df_SOURCES)
|
||||||
|
df_static_LDADD = $(df_LDADD)
|
||||||
|
df_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
|
||||||
netlist_SOURCES = netlist.c
|
netlist_SOURCES = netlist.c
|
||||||
netlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
netlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
netlist_static_SOURCES = $(netlist_SOURCES)
|
||||||
|
netlist_static_LDADD = $(netlist_LDADD)
|
||||||
|
netlist_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
|
||||||
openfiles_SOURCES = openfiles.c
|
openfiles_SOURCES = openfiles.c
|
||||||
openfiles_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
openfiles_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
proclist_SOURCES = proclist.c
|
openfiles_static_SOURCES = $(openfiles_SOURCES)
|
||||||
proclist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
openfiles_static_LDADD = $(openfiles_LDADD)
|
||||||
|
openfiles_static_LDFLAGS = -static
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
affinity_SOURCES = affinity.c
|
|
||||||
affinity_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
|
||||||
|
@@ -1,34 +0,0 @@
|
|||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/procaffinity.h>
|
|
||||||
|
|
||||||
#include <glib.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
glibtop_proc_affinity buf;
|
|
||||||
guint16 *cpus;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
if (argc < 2 || !(pid = strtoul(argv[1], NULL, 0)))
|
|
||||||
pid = getpid();
|
|
||||||
|
|
||||||
glibtop_init();
|
|
||||||
|
|
||||||
cpus = glibtop_get_proc_affinity(&buf, pid);
|
|
||||||
|
|
||||||
g_print("Process %u:\n"
|
|
||||||
" - all: %d\n",
|
|
||||||
(unsigned)pid, buf.all);
|
|
||||||
|
|
||||||
for (i = 0; i != buf.number; ++i)
|
|
||||||
g_print(" - CPU#%u is set\n", cpus[i]);
|
|
||||||
|
|
||||||
g_free(cpus);
|
|
||||||
|
|
||||||
glibtop_close();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@@ -1,6 +1,3 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
|
||||||
#include <glibtop/fsusage.h>
|
#include <glibtop/fsusage.h>
|
||||||
@@ -15,43 +12,35 @@ static void print_fsusage(const char *mountpoint)
|
|||||||
|
|
||||||
glibtop_get_fsusage(&buf, mountpoint);
|
glibtop_get_fsusage(&buf, mountpoint);
|
||||||
|
|
||||||
printf("%-30s %10llu %10llu %10llu %5.1f %10llu %10llu\n",
|
printf("%-20s %-10llu %-10llu %-10llu %.1f\n",
|
||||||
mountpoint,
|
mountpoint,
|
||||||
buf.blocks * buf.block_size >> 20,
|
buf.blocks * buf.block_size >> 20,
|
||||||
(buf.blocks - buf.bavail) * buf.block_size >> 20,
|
(buf.blocks - buf.bavail) * buf.block_size >> 20,
|
||||||
buf.bavail * buf.block_size >> 20,
|
buf.bavail * buf.block_size >> 20,
|
||||||
(buf.blocks - buf.bavail) * 100.0 / (buf.blocks ? buf.blocks : 1.0),
|
(buf.blocks - buf.bavail) * 100.0 / buf.blocks
|
||||||
buf.read,
|
|
||||||
buf.write
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main()
|
||||||
{
|
{
|
||||||
glibtop_mountlist buf;
|
glibtop_mountlist buf;
|
||||||
|
glibtop_mountentry *entries;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
glibtop_init();
|
glibtop_init();
|
||||||
|
|
||||||
printf("%-30s %10s %10s %10s %5s %10s %10s\n",
|
printf("%-20s %-10s %-10s %-10s %-10s\n",
|
||||||
"Filesystem", "Size", "Used", "Avail", "Use%", "Read", "Write");
|
"Filesystem", "Size", "Used", "Avail", "Use%");
|
||||||
|
|
||||||
if (argc > 1) {
|
entries = glibtop_get_mountlist(&buf, FALSE);
|
||||||
while (*++argv)
|
|
||||||
print_fsusage(*argv);
|
|
||||||
} else {
|
|
||||||
glibtop_mountentry *entries;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
entries = glibtop_get_mountlist(&buf, TRUE);
|
for(i = 0; i < buf.number; ++i)
|
||||||
|
{
|
||||||
|
print_fsusage(entries[i].mountdir);
|
||||||
|
}
|
||||||
|
|
||||||
for(i = 0; i < buf.number; ++i)
|
g_free(entries);
|
||||||
{
|
|
||||||
print_fsusage(entries[i].mountdir);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free(entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
glibtop_close();
|
glibtop_close();
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -47,9 +45,9 @@ main (int argc, char *argv [])
|
|||||||
{
|
{
|
||||||
glibtop_union data;
|
glibtop_union data;
|
||||||
glibtop_sysdeps sysdeps;
|
glibtop_sysdeps sysdeps;
|
||||||
unsigned c, method, count, port, i;
|
unsigned c, method, count, port, i, *ptr;
|
||||||
char buffer [BUFSIZ];
|
char buffer [BUFSIZ];
|
||||||
pid_t pid, ppid, *ptr;
|
pid_t pid, ppid;
|
||||||
char *args;
|
char *args;
|
||||||
|
|
||||||
count = PROFILE_COUNT;
|
count = PROFILE_COUNT;
|
||||||
|
@@ -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
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@@ -18,10 +18,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@@ -1,7 +1,3 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/procopenfiles.h>
|
#include <glibtop/procopenfiles.h>
|
||||||
|
|
||||||
@@ -37,16 +33,9 @@ static void show_open_files(pid_t pid)
|
|||||||
printf("socket %s:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port);
|
printf("socket %s:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GLIBTOP_FILE_TYPE_INET6SOCKET:
|
|
||||||
printf("socket [%s]:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GLIBTOP_FILE_TYPE_LOCALSOCKET:
|
case GLIBTOP_FILE_TYPE_LOCALSOCKET:
|
||||||
printf("localsocket %s\n", files[i].info.localsock.name);
|
printf("localsocket %s\n", files[i].info.localsock.name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
|
||||||
printf("unknown type\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,12 +1,7 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
|
||||||
#include <glibtop/union.h>
|
#include <glibtop/union.h>
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -33,7 +28,7 @@ printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_cpu(void)
|
static void pprint_get_cpu()
|
||||||
{
|
{
|
||||||
glibtop_cpu buf;
|
glibtop_cpu buf;
|
||||||
|
|
||||||
@@ -86,7 +81,7 @@ static void pprint_get_fsusage(const char *mountpoint)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_loadavg(void)
|
static void pprint_get_loadavg()
|
||||||
{
|
{
|
||||||
glibtop_loadavg buf;
|
glibtop_loadavg buf;
|
||||||
|
|
||||||
@@ -103,7 +98,7 @@ static void pprint_get_loadavg(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_mem(void)
|
static void pprint_get_mem()
|
||||||
{
|
{
|
||||||
glibtop_mem buf;
|
glibtop_mem buf;
|
||||||
|
|
||||||
@@ -161,7 +156,7 @@ static void pprint_get_mountlist(gboolean allfs)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_msg_limits(void)
|
static void pprint_get_msg_limits()
|
||||||
{
|
{
|
||||||
glibtop_msg_limits buf;
|
glibtop_msg_limits buf;
|
||||||
|
|
||||||
@@ -194,7 +189,7 @@ static void pprint_get_netload(const char *iface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_netlist(void)
|
static void pprint_get_netlist()
|
||||||
{
|
{
|
||||||
glibtop_netlist buf;
|
glibtop_netlist buf;
|
||||||
char **devices;
|
char **devices;
|
||||||
@@ -216,7 +211,7 @@ static void pprint_get_netlist(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_swap(void)
|
static void pprint_get_swap()
|
||||||
{
|
{
|
||||||
glibtop_swap buf;
|
glibtop_swap buf;
|
||||||
|
|
||||||
@@ -234,7 +229,7 @@ static void pprint_get_swap(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pprint_get_uptime(void)
|
static void pprint_get_uptime()
|
||||||
{
|
{
|
||||||
glibtop_uptime buf;
|
glibtop_uptime buf;
|
||||||
|
|
||||||
@@ -251,41 +246,6 @@ static void pprint_get_uptime(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
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()
|
int main()
|
||||||
{
|
{
|
||||||
@@ -315,9 +275,6 @@ int main()
|
|||||||
|
|
||||||
pprint_get_uptime();
|
pprint_get_uptime();
|
||||||
|
|
||||||
pprint_get_proc_kernel(getpid());
|
|
||||||
pprint_get_proc_mem(getpid());
|
|
||||||
|
|
||||||
glibtop_close();
|
glibtop_close();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -1,7 +1,3 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/procargs.h>
|
#include <glibtop/procargs.h>
|
||||||
|
|
||||||
|
@@ -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)
|
|
||||||
{
|
|
||||||
pid_t *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
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -35,6 +33,9 @@
|
|||||||
|
|
||||||
#include <glibtop/procmap.h>
|
#include <glibtop/procmap.h>
|
||||||
|
|
||||||
|
#ifdef GLIBTOP_INODEDB
|
||||||
|
#include <glibtop/inodedb.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
@@ -46,6 +47,9 @@
|
|||||||
int
|
int
|
||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
{
|
{
|
||||||
|
#ifdef GLIBTOP_INODEDB
|
||||||
|
glibtop_inodedb *inodedb;
|
||||||
|
#endif
|
||||||
glibtop_proc_map procmap;
|
glibtop_proc_map procmap;
|
||||||
glibtop_map_entry *maps;
|
glibtop_map_entry *maps;
|
||||||
unsigned method, count, port, i;
|
unsigned method, count, port, i;
|
||||||
@@ -81,6 +85,10 @@ main (int argc, char *argv [])
|
|||||||
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
||||||
g_error ("Usage: %s pid", argv [0]);
|
g_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);
|
fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid);
|
||||||
|
|
||||||
maps = glibtop_get_proc_map (&procmap, pid);
|
maps = glibtop_get_proc_map (&procmap, pid);
|
||||||
@@ -93,6 +101,12 @@ main (int argc, char *argv [])
|
|||||||
if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME))
|
if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME))
|
||||||
filename = maps [i].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 [0] = (maps [i].perm & GLIBTOP_MAP_PERM_READ) ? 'r' : '-';
|
||||||
perm [1] = (maps [i].perm & GLIBTOP_MAP_PERM_WRITE) ? 'w' : '-';
|
perm [1] = (maps [i].perm & GLIBTOP_MAP_PERM_WRITE) ? 'w' : '-';
|
||||||
perm [2] = (maps [i].perm & GLIBTOP_MAP_PERM_EXECUTE) ? 'x' : '-';
|
perm [2] = (maps [i].perm & GLIBTOP_MAP_PERM_EXECUTE) ? 'x' : '-';
|
||||||
@@ -108,10 +122,10 @@ main (int argc, char *argv [])
|
|||||||
|
|
||||||
if (sizeof (void*) == 8)
|
if (sizeof (void*) == 8)
|
||||||
format = "%016lx-%016lx %016lx - "
|
format = "%016lx-%016lx %016lx - "
|
||||||
"%02x:%02x %08lu - %5.5s - %s\n";
|
"%02x:%02x %08lu - %4s - %s\n";
|
||||||
else
|
else
|
||||||
format = "%08lx-%08lx %08lx - "
|
format = "%08lx-%08lx %08lx - "
|
||||||
"%02x:%02x %08lu - %5.5s - %s\n";
|
"%02x:%02x %08lu - %4s - %s\n";
|
||||||
|
|
||||||
fprintf (stderr, format,
|
fprintf (stderr, format,
|
||||||
(unsigned long) maps [i].start,
|
(unsigned long) maps [i].start,
|
||||||
@@ -139,18 +153,6 @@ main (int argc, char *argv [])
|
|||||||
perm);
|
perm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
g_print("smaps flags:%#llx size:%lluKiB rss:%lluKiB "
|
|
||||||
"shared_clean:%lluKib shared_dirty:%lluKiB "
|
|
||||||
"private_clean:%lluKiB private_dirty: %lluKiB\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))
|
if (filename && (filename != maps [i].filename))
|
||||||
g_free ((void*)filename);
|
g_free ((void*)filename);
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -239,8 +237,7 @@ main (int argc, char *argv [])
|
|||||||
{
|
{
|
||||||
glibtop_proclist proclist;
|
glibtop_proclist proclist;
|
||||||
glibtop_sysdeps sysdeps;
|
glibtop_sysdeps sysdeps;
|
||||||
unsigned i;
|
unsigned *ptr, pid, i;
|
||||||
pid_t *ptr, pid;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -29,6 +31,8 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/cpu.h>
|
#include <glibtop/cpu.h>
|
||||||
|
|
||||||
|
#include "libgtop-i18n.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
{
|
{
|
||||||
@@ -40,6 +44,10 @@ main (int argc, char *argv [])
|
|||||||
char separator [BUFSIZ], buffer [BUFSIZ];
|
char separator [BUFSIZ], buffer [BUFSIZ];
|
||||||
int ncpu, i;
|
int ncpu, i;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init();
|
glibtop_init();
|
||||||
|
|
||||||
glibtop_get_cpu (&cpu);
|
glibtop_get_cpu (&cpu);
|
||||||
@@ -65,16 +73,16 @@ main (int argc, char *argv [])
|
|||||||
memset (separator, '-', 91);
|
memset (separator, '-', 91);
|
||||||
separator [92] = '\0';
|
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,
|
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);
|
(unsigned long) cpu.flags, total, user, nice, sys, idle);
|
||||||
|
|
||||||
for (i = 0; i < glibtop_global_server->ncpu; i++) {
|
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.flags,
|
||||||
(unsigned long) cpu.xcpu_total [i],
|
(unsigned long) cpu.xcpu_total [i],
|
||||||
(unsigned long) cpu.xcpu_user [i],
|
(unsigned long) cpu.xcpu_user [i],
|
||||||
@@ -91,11 +99,11 @@ main (int argc, char *argv [])
|
|||||||
|
|
||||||
printf ("%s\n\n\n", separator);
|
printf ("%s\n\n\n", separator);
|
||||||
|
|
||||||
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", "Percent:",
|
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"),
|
||||||
"Total (%)", "User (%)", "Nice (%)", "Sys (%)",
|
_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"),
|
||||||
"Idle (%)", separator);
|
_("Idle (%)"), separator);
|
||||||
|
|
||||||
printf ("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n",
|
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,
|
(unsigned long) cpu.flags, (double) total * 100.0 / total,
|
||||||
(double) user * 100.0 / total,
|
(double) user * 100.0 / total,
|
||||||
(double) nice * 100.0 / total,
|
(double) nice * 100.0 / total,
|
||||||
@@ -111,13 +119,13 @@ main (int argc, char *argv [])
|
|||||||
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
|
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
|
||||||
p_idle = ((double) cpu.xcpu_idle [i]) * 100.0 / idle;
|
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,
|
i, (unsigned long) cpu.flags, p_total, p_user, p_nice,
|
||||||
p_sys, p_idle);
|
p_sys, p_idle);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator,
|
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);
|
s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,10 +21,6 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
@@ -44,7 +42,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef PROFILE_COUNT_EXPENSIVE
|
#ifndef PROFILE_COUNT_EXPENSIVE
|
||||||
#define PROFILE_COUNT_EXPENSIVE (PROFILE_COUNT / 10)
|
#define PROFILE_COUNT_EXPENSIVE 10000L
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 + (unsigned long) elapsed_utime.tv_usec)
|
#define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 + (unsigned long) elapsed_utime.tv_usec)
|
||||||
@@ -73,13 +71,13 @@ int
|
|||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
{
|
{
|
||||||
glibtop_union data;
|
glibtop_union data;
|
||||||
unsigned c;
|
unsigned c, count, *ptr;
|
||||||
struct rusage total_start, total_end;
|
struct rusage total_start, total_end;
|
||||||
struct rusage rusage_start, rusage_end;
|
struct rusage rusage_start, rusage_end;
|
||||||
struct timeval elapsed_utime, elapsed_stime;
|
struct timeval elapsed_utime, elapsed_stime;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
pid = getpid ();
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
@@ -184,10 +182,12 @@ main (int argc, char *argv [])
|
|||||||
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
||||||
pid_t* ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
||||||
g_free (ptr);
|
g_free (ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,26 +205,9 @@ main (int argc, char *argv [])
|
|||||||
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
pid = getpid ();
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
printf ("\n");
|
||||||
char** ptr = glibtop_get_netlist (&data.netlist);
|
|
||||||
g_strfreev (ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_end);
|
|
||||||
|
|
||||||
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
|
||||||
&elapsed_utime);
|
|
||||||
|
|
||||||
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
|
||||||
&elapsed_stime);
|
|
||||||
|
|
||||||
printf ("Netlist (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
|
||||||
(unsigned long) data.proclist.flags,
|
|
||||||
PROFILE_COUNT_EXPENSIVE,
|
|
||||||
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
|
||||||
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
@@ -282,27 +265,6 @@ main (int argc, char *argv [])
|
|||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
|
||||||
glibtop_map_entry* entries;
|
|
||||||
entries = glibtop_get_proc_map (&data.proc_map, pid);
|
|
||||||
g_free (entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_end);
|
|
||||||
|
|
||||||
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
|
||||||
&elapsed_utime);
|
|
||||||
|
|
||||||
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
|
||||||
&elapsed_stime);
|
|
||||||
|
|
||||||
printf ("Proc_Map (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
|
||||||
(unsigned long) data.proc_map.flags, PROFILE_COUNT_EXPENSIVE,
|
|
||||||
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
|
||||||
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
glibtop_get_proc_segment (&data.proc_segment, pid);
|
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||||
|
|
||||||
@@ -321,27 +283,6 @@ main (int argc, char *argv [])
|
|||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++) {
|
|
||||||
char** argv;
|
|
||||||
argv = glibtop_get_proc_argv (&data.proc_args, pid, 0);
|
|
||||||
g_strfreev(argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_end);
|
|
||||||
|
|
||||||
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
|
||||||
&elapsed_utime);
|
|
||||||
|
|
||||||
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
|
||||||
&elapsed_stime);
|
|
||||||
|
|
||||||
printf ("Proc_Args (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
|
||||||
(unsigned long) data.proc_args.flags, PROFILE_COUNT,
|
|
||||||
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
|
||||||
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
|
||||||
|
|
||||||
getrusage (RUSAGE_SELF, &rusage_start);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
glibtop_get_proc_time (&data.proc_time, pid);
|
glibtop_get_proc_time (&data.proc_time, pid);
|
||||||
|
|
||||||
|
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
@@ -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|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
||||||
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
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)
|
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_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_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid)
|
||||||
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
||||||
@@ -22,6 +22,4 @@ 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|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)
|
void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
||||||
char **|netlist|unsigned(number)
|
char **|netlist|unsigned(number)
|
||||||
char **|proc_wd|ulong(number),str(root),str(exe)|pid_t(pid)
|
|
||||||
guint16*|proc_affinity|ulong(number),int(all)|pid_t(pid)
|
|
||||||
|
|
||||||
|
54
glibtop.h
54
glibtop.h
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -22,10 +24,6 @@
|
|||||||
#ifndef __GLIBTOP_H__
|
#ifndef __GLIBTOP_H__
|
||||||
#define __GLIBTOP_H__
|
#define __GLIBTOP_H__
|
||||||
|
|
||||||
#include <glib/gmacros.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
typedef struct _glibtop glibtop;
|
typedef struct _glibtop glibtop;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,20 +65,18 @@ LIBGTOP_MICRO_VERSION >= (micro)))
|
|||||||
|
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
|
|
||||||
|
struct _glibtop
|
||||||
|
{
|
||||||
|
unsigned flags;
|
||||||
|
unsigned method; /* Server Method */
|
||||||
|
unsigned error_method; /* Error Method */
|
||||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
|
||||||
struct _glibtop
|
|
||||||
{
|
|
||||||
unsigned flags;
|
|
||||||
unsigned method; /* Server Method */
|
|
||||||
unsigned error_method; /* Error Method */
|
|
||||||
glibtop_machine machine; /* Machine dependent data */
|
glibtop_machine machine; /* Machine dependent data */
|
||||||
|
#endif
|
||||||
int input [2]; /* Pipe client <- server */
|
int input [2]; /* Pipe client <- server */
|
||||||
int output [2]; /* Pipe client -> server */
|
int output [2]; /* Pipe client -> server */
|
||||||
int socket; /* Accepted connection of a socket */
|
int socket; /* Accepted connection of a socket */
|
||||||
int ncpu; /* Number of CPUs, zero if single-processor */
|
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 */
|
unsigned long os_version_code; /* Version code of the operating system */
|
||||||
const char *name; /* Program name for error messages */
|
const char *name; /* Program name for error messages */
|
||||||
const char *server_command; /* Command used to invoke server */
|
const char *server_command; /* Command used to invoke server */
|
||||||
@@ -94,39 +90,13 @@ struct _glibtop
|
|||||||
pid_t pid; /* PID of the server */
|
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 glibtop *glibtop_global_server;
|
||||||
|
|
||||||
extern const unsigned long glibtop_server_features;
|
extern const unsigned long glibtop_server_features;
|
||||||
|
|
||||||
glibtop *
|
#define glibtop_init() glibtop_init_r(&glibtop_global_server, 0, 0);
|
||||||
glibtop_init (void);
|
|
||||||
|
#define glibtop_close() glibtop_close_r(glibtop_global_server);
|
||||||
|
|
||||||
glibtop *
|
glibtop *
|
||||||
glibtop_init_r (glibtop **server_ptr,
|
glibtop_init_r (glibtop **server_ptr,
|
||||||
@@ -138,6 +108,4 @@ glibtop_init_s (glibtop **server_ptr,
|
|||||||
unsigned long features,
|
unsigned long features,
|
||||||
unsigned flags);
|
unsigned flags);
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
2
include/.cvsignore
Normal file
2
include/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
@@ -1,2 +1,4 @@
|
|||||||
SUBDIRS = glibtop
|
SUBDIRS = glibtop
|
||||||
|
|
||||||
|
EXTRA_DIST = libgtop-i18n.h
|
||||||
|
|
||||||
|
2
include/glibtop/.cvsignore
Normal file
2
include/glibtop/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
@@ -7,8 +7,7 @@ glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
|||||||
procsegment.h sysdeps.h global.h \
|
procsegment.h sysdeps.h global.h \
|
||||||
procsignal.h union.h gnuserv.h \
|
procsignal.h union.h gnuserv.h \
|
||||||
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
||||||
sysinfo.h ppp.h procargs.h netload.h \
|
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
|
||||||
procwd.h procaffinity.h \
|
|
||||||
netlist.h procopenfiles.h open.h
|
netlist.h procopenfiles.h open.h
|
||||||
|
|
||||||
noinst_HEADERS = error.h write.h read_data.h read.h init_hooks.h
|
noinst_HEADERS = error.h write.h read_data.h read.h
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
@@AUTOGEN_COMMENT@@
|
@@AUTOGEN_COMMENT@@
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -26,8 +28,6 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
void glibtop_close (void);
|
|
||||||
|
|
||||||
void glibtop_close_r (glibtop *server);
|
void glibtop_close_r (glibtop *server);
|
||||||
|
|
||||||
void glibtop_close_s (glibtop *server);
|
void glibtop_close_s (glibtop *server);
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -57,10 +59,8 @@ G_BEGIN_DECLS
|
|||||||
#define GLIBTOP_CMND_PPP 23
|
#define GLIBTOP_CMND_PPP 23
|
||||||
#define GLIBTOP_CMND_NETLIST 24
|
#define GLIBTOP_CMND_NETLIST 24
|
||||||
#define GLIBTOP_CMND_PROC_OPEN_FILES 25
|
#define GLIBTOP_CMND_PROC_OPEN_FILES 25
|
||||||
#define GLIBTOP_CMND_PROC_WD 26
|
|
||||||
#define GLIBTOP_CMND_PROC_AFFINITY 27
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_CMND 28
|
#define GLIBTOP_MAX_CMND 26
|
||||||
|
|
||||||
#define _GLIBTOP_PARAM_SIZE 16
|
#define _GLIBTOP_PARAM_SIZE 16
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -50,38 +52,35 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
#define GLIBTOP_MAX_CPU 18
|
#define GLIBTOP_MAX_CPU 18
|
||||||
|
|
||||||
/* Nobody should really be using more than 4 processors.
|
/* Nobody should really be using more than 4 processors. */
|
||||||
Yes we are :)
|
#define GLIBTOP_NCPU 4
|
||||||
Nobody should really be using more than 32 processors.
|
|
||||||
*/
|
|
||||||
#define GLIBTOP_NCPU 32
|
|
||||||
|
|
||||||
typedef struct _glibtop_cpu glibtop_cpu;
|
typedef struct _glibtop_cpu glibtop_cpu;
|
||||||
|
|
||||||
struct _glibtop_cpu
|
struct _glibtop_cpu
|
||||||
{
|
{
|
||||||
guint64 flags;
|
guint64 flags,
|
||||||
guint64 total; /* GLIBTOP_CPU_TOTAL */
|
total, /* GLIBTOP_CPU_TOTAL */
|
||||||
guint64 user; /* GLIBTOP_CPU_USER */
|
user, /* GLIBTOP_CPU_USER */
|
||||||
guint64 nice; /* GLIBTOP_CPU_NICE */
|
nice, /* GLIBTOP_CPU_NICE */
|
||||||
guint64 sys; /* GLIBTOP_CPU_SYS */
|
sys, /* GLIBTOP_CPU_SYS */
|
||||||
guint64 idle; /* GLIBTOP_CPU_IDLE */
|
idle, /* GLIBTOP_CPU_IDLE */
|
||||||
guint64 iowait; /* GLIBTOP_CPU_IOWAIT */
|
iowait, /* GLIBTOP_CPU_IOWAIT */
|
||||||
guint64 irq; /* GLIBTOP_CPU_IRQ */
|
irq, /* GLIBTOP_CPU_IRQ */
|
||||||
guint64 softirq; /* GLIBTOP_CPU_SOFTIRQ */
|
softirq, /* GLIBTOP_CPU_SOFTIRQ */
|
||||||
guint64 frequency; /* GLIBTOP_CPU_FREQUENCY */
|
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
||||||
guint64 xcpu_total [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_TOTAL */
|
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
|
||||||
guint64 xcpu_user [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_USER */
|
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
|
||||||
guint64 xcpu_nice [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_NICE */
|
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
|
||||||
guint64 xcpu_sys [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_SYS */
|
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
|
||||||
guint64 xcpu_idle [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IDLE */
|
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IDLE */
|
||||||
guint64 xcpu_iowait [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IOWAIT */
|
xcpu_iowait [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IOWAIT */
|
||||||
guint64 xcpu_irq [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IRQ */
|
xcpu_irq [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IRQ */
|
||||||
guint64 xcpu_softirq [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_SOFTIRQ */
|
xcpu_softirq [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SOFTIRQ */
|
||||||
guint64 xcpu_flags; /* GLIBTOP_XCPU_IDLE */
|
xcpu_flags; /* 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
|
#if GLIBTOP_SUID_CPU
|
||||||
#define glibtop_get_cpu_r glibtop_get_cpu_p
|
#define glibtop_get_cpu_r glibtop_get_cpu_p
|
||||||
@@ -92,10 +91,10 @@ void glibtop_get_cpu(glibtop_cpu *buf);
|
|||||||
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
|
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_CPU
|
#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);
|
void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
|
||||||
#else
|
#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);
|
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -31,20 +33,20 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
void glibtop_error_vr (glibtop *server, const char *format, va_list args) G_GNUC_NORETURN;
|
void glibtop_error_vr (glibtop *server, const char *format, va_list args) G_GNUC_INTERNAL G_GNUC_NORETURN;
|
||||||
void glibtop_warn_vr (glibtop *server, const char *format, va_list args);
|
void glibtop_warn_vr (glibtop *server, const char *format, va_list args) G_GNUC_INTERNAL;
|
||||||
void glibtop_error_io_vr (glibtop *server, const char *format, int, va_list args) G_GNUC_NORETURN;
|
void glibtop_error_io_vr (glibtop *server, const char *format, int, va_list args) G_GNUC_INTERNAL G_GNUC_NORETURN;
|
||||||
void glibtop_warn_io_vr (glibtop *server, const char *format, int, va_list args);
|
void glibtop_warn_io_vr (glibtop *server, const char *format, int, va_list args) G_GNUC_INTERNAL;
|
||||||
|
|
||||||
void glibtop_error_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
|
void glibtop_error_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
|
||||||
void glibtop_warn_r (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
|
void glibtop_warn_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL 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_error_io_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL 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_warn_io_r (glibtop *server, const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(2, 3);
|
||||||
|
|
||||||
void glibtop_error (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
|
void glibtop_error (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
|
||||||
void glibtop_warn (const char *format, ...) G_GNUC_PRINTF(1, 2);
|
void glibtop_warn (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2);
|
||||||
void glibtop_error_io (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
|
void glibtop_error_io (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
|
||||||
void glibtop_warn_io (const char *format, ...) G_GNUC_PRINTF(1, 2);
|
void glibtop_warn_io (const char *format, ...) G_GNUC_INTERNAL G_GNUC_PRINTF(1, 2);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
@@ -41,17 +43,17 @@ typedef struct _glibtop_fsusage glibtop_fsusage;
|
|||||||
|
|
||||||
struct _glibtop_fsusage
|
struct _glibtop_fsusage
|
||||||
{
|
{
|
||||||
guint64 flags;
|
guint64 flags,
|
||||||
guint64 blocks; /* Total number of blocks. */
|
blocks, /* Total number of blocks. */
|
||||||
guint64 bfree; /* Free blocks available to superuser. */
|
bfree, /* Free blocks available to superuser. */
|
||||||
guint64 bavail; /* Free blocks available to non-superuser. */
|
bavail, /* Free blocks available to non-superuser. */
|
||||||
guint64 files; /* Total file nodes. */
|
files, /* Total file nodes. */
|
||||||
guint64 ffree; /* Free file nodes. */
|
ffree; /* Free file nodes. */
|
||||||
guint32 block_size; /* Size of a block in bytes. */
|
guint32 block_size; /* Size of a block in bytes. */
|
||||||
guint64 read, write; /* Total blocks read and written */
|
guint64 read, write; /* Total blocks read and written */
|
||||||
};
|
};
|
||||||
|
|
||||||
void glibtop_get_fsusage(glibtop_fsusage *buf, const char *mount_dir);
|
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
|
||||||
|
|
||||||
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
|
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
|
||||||
|
|
||||||
|
102
include/glibtop/glibtop-backend-info.h
Normal file
102
include/glibtop/glibtop-backend-info.h
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
/* -*- 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_INFO_H__
|
||||||
|
#define __GLIBTOP_BACKEND_INFO_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
|
#include <glibtop/glibtop-server.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
typedef struct _glibtop_backend_info glibtop_backend_info;
|
||||||
|
typedef struct _glibtop_backend_entry glibtop_backend_entry;
|
||||||
|
typedef struct _glibtop_backend_module glibtop_backend_module;
|
||||||
|
|
||||||
|
typedef struct _glibtop_call_vector glibtop_call_vector;
|
||||||
|
|
||||||
|
typedef int (*glibtop_backend_open_func_t) (glibtop_server *, glibtop_backend *,
|
||||||
|
guint64, const char **);
|
||||||
|
typedef int (*glibtop_backend_close_func_t) (glibtop_server *, glibtop_backend *,
|
||||||
|
glibtop_closure *);
|
||||||
|
|
||||||
|
struct _glibtop_backend_info
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
glibtop_backend_open_func_t open;
|
||||||
|
glibtop_backend_close_func_t close;
|
||||||
|
glibtop_call_vector *call_vector;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef _IN_LIBGTOP
|
||||||
|
|
||||||
|
#include <gmodule.h>
|
||||||
|
|
||||||
|
/* private structure */
|
||||||
|
struct _glibtop_backend_module
|
||||||
|
{
|
||||||
|
int refcount;
|
||||||
|
GModule *module;
|
||||||
|
GSList *extra_modules;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_backend_entry
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
char *libtool_name;
|
||||||
|
char *shlib_name;
|
||||||
|
|
||||||
|
GSList *extra_libs;
|
||||||
|
|
||||||
|
/* This is const since you must not attempt to
|
||||||
|
* write into gmodule loaded memory. */
|
||||||
|
const glibtop_backend_info *info;
|
||||||
|
|
||||||
|
/* private pointer */
|
||||||
|
glibtop_backend_module *_priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _IN_LIBGTOP */
|
||||||
|
|
||||||
|
long
|
||||||
|
glibtop_register_backend (glibtop_backend_entry *entry);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_unregister_backend (long id);
|
||||||
|
|
||||||
|
glibtop_backend_entry *
|
||||||
|
glibtop_backend_by_id (long id);
|
||||||
|
|
||||||
|
glibtop_backend_entry *
|
||||||
|
glibtop_backend_by_name (const char *backend_name);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_init_backends (void);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
85
include/glibtop/glibtop-backend.h
Normal file
85
include/glibtop/glibtop-backend.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 2.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_BACKEND_H__
|
||||||
|
#define __GLIBTOP_BACKEND_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define GLIBTOP_TYPE_BACKEND (glibtop_backend_get_type ())
|
||||||
|
#define GLIBTOP_BACKEND(backend) (G_TYPE_CHECK_INSTANCE_CAST ((backend), GLIBTOP_TYPE_BACKEND, glibtop_backend))
|
||||||
|
#define GLIBTOP_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLIBTOP_TYPE_BACKEND, glibtop_backend_class))
|
||||||
|
#define GLIBTOP_IS_BACKEND(backend) (G_TYPE_CHECK_INSTANCE_TYPE ((backend), GLIBTOP_TYPE_BACKEND))
|
||||||
|
#define GLIBTOP_IS_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLIBTOP_TYPE_BACKEND))
|
||||||
|
#define GLIBTOP_BACKEND_GET_CLASS(backend)(G_TYPE_INSTANCE_GET_CLASS ((backend), GLIBTOP_TYPE_BACKEND, glibtop_backend_class))
|
||||||
|
|
||||||
|
#define GLIBTOP_BACKEND_TYPE(backend) (G_TYPE_FROM_INSTANCE (backend))
|
||||||
|
#define GLIBTOP_BACKEND_TYPE_NAME(backend)(g_type_name (GLIBTOP_BACKEND_TYPE (backend)))
|
||||||
|
|
||||||
|
/* --- typedefs & structures --- */
|
||||||
|
typedef struct _glibtop_backend glibtop_backend;
|
||||||
|
typedef struct _glibtop_backend_class glibtop_backend_class;
|
||||||
|
typedef struct _glibtop_backend_private glibtop_backend_private;
|
||||||
|
|
||||||
|
#include <glibtop/glibtop-backend-info.h>
|
||||||
|
|
||||||
|
struct _glibtop_backend
|
||||||
|
{
|
||||||
|
GObject object;
|
||||||
|
|
||||||
|
/* <private> */
|
||||||
|
glibtop_backend_private *_priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_backend_class
|
||||||
|
{
|
||||||
|
GObjectClass parent_class;;
|
||||||
|
};
|
||||||
|
|
||||||
|
GType
|
||||||
|
glibtop_backend_get_type (void);
|
||||||
|
|
||||||
|
glibtop_backend *
|
||||||
|
glibtop_backend_get (const char *backend_name, guint64 features,
|
||||||
|
const char **backend_args, GError **error);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_backend_set_closure_data (glibtop_backend *backend, glibtop_closure *closure);
|
||||||
|
|
||||||
|
glibtop_closure *
|
||||||
|
glibtop_backend_get_closure_data (glibtop_backend *backend);
|
||||||
|
|
||||||
|
glibtop_call_vector *
|
||||||
|
glibtop_backend_get_call_vector (glibtop_backend *backend);
|
||||||
|
|
||||||
|
glibtop_server *
|
||||||
|
glibtop_backend_get_server (glibtop_backend *backend);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
97
include/glibtop/glibtop-client.h
Normal file
97
include/glibtop/glibtop-client.h
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
/* -*- 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 2.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_CLIENT_H__
|
||||||
|
#define __GLIBTOP_CLIENT_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
#include <glibtop/glibtop-backend.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define GLIBTOP_TYPE_CLIENT (glibtop_client_get_type ())
|
||||||
|
#define GLIBTOP_CLIENT(client) (G_TYPE_CHECK_INSTANCE_CAST ((client), GLIBTOP_TYPE_CLIENT, glibtop_client))
|
||||||
|
#define GLIBTOP_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLIBTOP_TYPE_CLIENT, glibtop_client_class))
|
||||||
|
#define GLIBTOP_IS_CLIENT(client) (G_TYPE_CHECK_INSTANCE_TYPE ((client), GLIBTOP_TYPE_CLIENT))
|
||||||
|
#define GLIBTOP_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLIBTOP_TYPE_CLIENT))
|
||||||
|
#define GLIBTOP_CLIENT_GET_CLASS(client)(G_TYPE_INSTANCE_GET_CLASS ((client), GLIBTOP_TYPE_CLIENT, glibtop_client_class))
|
||||||
|
|
||||||
|
#define GLIBTOP_CLIENT_TYPE(client) (G_TYPE_FROM_INSTANCE (client))
|
||||||
|
#define GLIBTOP_CLIENT_TYPE_NAME(client)(g_type_name (GLIBTOP_CLIENT_TYPE (client)))
|
||||||
|
|
||||||
|
/* --- typedefs & structures --- */
|
||||||
|
typedef struct _glibtop_client glibtop_client;
|
||||||
|
typedef struct _glibtop_client_class glibtop_client_class;
|
||||||
|
typedef struct _glibtop_client_private glibtop_client_private;
|
||||||
|
|
||||||
|
struct _glibtop_client
|
||||||
|
{
|
||||||
|
GObject object;
|
||||||
|
|
||||||
|
/* <public> */
|
||||||
|
GError *error;
|
||||||
|
|
||||||
|
/* <private> */
|
||||||
|
glibtop_client_private *_priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_client_class
|
||||||
|
{
|
||||||
|
GObjectClass parent_class;;
|
||||||
|
|
||||||
|
void (*error) (glibtop_client *client, GError *error);
|
||||||
|
void (*warning) (glibtop_client *client, GError *error);
|
||||||
|
};
|
||||||
|
|
||||||
|
GType
|
||||||
|
glibtop_client_get_type (void);
|
||||||
|
|
||||||
|
glibtop_client *
|
||||||
|
glibtop_client_new (void);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_client_propagate_error (glibtop_client *client, GError *error);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_client_propagate_warning (glibtop_client *client, GError *error);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_client_open_backend (glibtop_client *client, const char *backend_name,
|
||||||
|
guint64 features, const char **backend_args);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_client_add_backend (glibtop_client *client,
|
||||||
|
glibtop_backend *backend);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_client_remove_backend (glibtop_client *client,
|
||||||
|
glibtop_backend *backend);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
75
include/glibtop/glibtop-server.h
Normal file
75
include/glibtop/glibtop-server.h
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
/* -*- 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 2.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_SERVER_H__
|
||||||
|
#define __GLIBTOP_SERVER_H__
|
||||||
|
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
typedef struct _glibtop_server glibtop_server;
|
||||||
|
typedef struct _glibtop_server_info glibtop_server_info;
|
||||||
|
|
||||||
|
typedef struct _glibtop_closure glibtop_closure;
|
||||||
|
|
||||||
|
typedef int (*glibtop_init_func_t) (glibtop_server *, glibtop_closure *);
|
||||||
|
|
||||||
|
extern glibtop_init_func_t _glibtop_init_hook_s [];
|
||||||
|
extern glibtop_init_func_t _glibtop_init_hook_p [];
|
||||||
|
|
||||||
|
struct _glibtop_server_info
|
||||||
|
{
|
||||||
|
int ncpu; /* Number of CPUs, zero if single-processor */
|
||||||
|
unsigned long features; /* Server is required for this features */
|
||||||
|
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
||||||
|
glibtop_sysdeps required; /* Required feature list */
|
||||||
|
glibtop_sysdeps wanted; /* We only want this features */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_server
|
||||||
|
{
|
||||||
|
glibtop_server_info *info;
|
||||||
|
|
||||||
|
int refcount;
|
||||||
|
unsigned flags;
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
void *_priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
glibtop_server *
|
||||||
|
glibtop_server_new (void);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_server_ref (glibtop_server *server);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_server_unref (glibtop_server *server);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -24,6 +26,10 @@
|
|||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
|
#ifdef _IN_LIBGTOP
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _IN_LIBGTOP
|
#ifdef _IN_LIBGTOP
|
||||||
|
|
||||||
#endif /* _IN_LIBGTOP */
|
#endif /* _IN_LIBGTOP */
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
#ifndef H_LIBGTOP_INIT_HOOKS_1122955666
|
|
||||||
#define H_LIBGTOP_INIT_HOOKS_1122955666
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
typedef void (*_glibtop_init_func_t)(glibtop *);
|
|
||||||
|
|
||||||
extern const _glibtop_init_func_t _glibtop_init_hook_s[];
|
|
||||||
extern const _glibtop_init_func_t _glibtop_init_hook_p[];
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* H_LIBGTOP_INIT_HOOKS_1122955666 */
|
|
67
include/glibtop/inodedb.h
Normal file
67
include/glibtop/inodedb.h
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
/* 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_INODEDB_H__
|
||||||
|
#define __GLIBTOP_INODEDB_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <gdbm.h>
|
||||||
|
|
||||||
|
#define GLIBTOP_INODEDB_SYSTEM 1
|
||||||
|
#define GLIBTOP_INODEDB_USER 2
|
||||||
|
#define GLIBTOP_INODEDB_CACHE 4
|
||||||
|
|
||||||
|
#define GLIBTOP_INODEDB_ALL 7
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
typedef struct _glibtop_inodedb glibtop_inodedb;
|
||||||
|
|
||||||
|
typedef struct _glibtop_inodedb_key glibtop_inodedb_key;
|
||||||
|
|
||||||
|
struct _glibtop_inodedb_key
|
||||||
|
{
|
||||||
|
guint64 device, inode;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_inodedb
|
||||||
|
{
|
||||||
|
GDBM_FILE system_dbf, user_dbf;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define glibtop_inodedb_open(p1,p2) glibtop_inodedb_open_s(glibtop_global_server, p1, p2)
|
||||||
|
#define glibtop_inodedb_lookup(p1,p2,p3) glibtop_inodedb_lookup_s(glibtop_global_server, p1, p2, p3)
|
||||||
|
#define glibtop_inodedb_close(p1) glibtop_inodedb_close_s(glibtop_global_server)
|
||||||
|
|
||||||
|
glibtop_inodedb *
|
||||||
|
glibtop_inodedb_open_s (glibtop *server, unsigned databases, unsigned long cache_size);
|
||||||
|
|
||||||
|
const char *
|
||||||
|
glibtop_inodedb_lookup_s (glibtop *server,
|
||||||
|
glibtop_inodedb *inodedb,
|
||||||
|
guint64 device, guint64 inode);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_inodedb_close_s (glibtop *server, glibtop_inodedb *inodedb);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
56
include/glibtop/limits.h
Normal file
56
include/glibtop/limits.h
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_LIMITS_H__
|
||||||
|
#define __GLIBTOP_LIMITS_H__
|
||||||
|
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Nobody should really be using more than 64 processors. */
|
||||||
|
#define GLIBTOP_NCPU 64
|
||||||
|
|
||||||
|
/* Maximum number of process groups in glibtop_proc_uid. */
|
||||||
|
#define GLIBTOP_MAX_GROUPS 32
|
||||||
|
|
||||||
|
/* Maximum length of a mountpoint/device name in glibtop_mountlist. */
|
||||||
|
#define GLIBTOP_MOUNTENTRY_LEN 79
|
||||||
|
|
||||||
|
/* Maximum length of a network interface name. */
|
||||||
|
#define GLIBTOP_INTERFACE_LEN 32
|
||||||
|
|
||||||
|
/* Length of a network interface address in bytes. */
|
||||||
|
#define GLIBTOP_IFADDR_LEN 16
|
||||||
|
|
||||||
|
/* This is ((guint64)-1) */
|
||||||
|
#define GLIBTOP_UNLIMITED (~(guint64)0)
|
||||||
|
|
||||||
|
/* Maximum length of a backend name. */
|
||||||
|
#define GLIBTOP_BACKEND_NAME_LEN 40
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -40,12 +42,12 @@ struct _glibtop_loadavg
|
|||||||
{
|
{
|
||||||
guint64 flags;
|
guint64 flags;
|
||||||
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
|
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
|
||||||
guint64 nr_running; /* GLIBTOP_LOADAVG_NR_RUNNING */
|
guint64 nr_running, /* GLIBTOP_LOADAVG_NR_RUNNING */
|
||||||
guint64 nr_tasks; /* GLIBTOP_LOADAVG_NR_TASKS */
|
nr_tasks, /* GLIBTOP_LOADAVG_NR_TASKS */
|
||||||
guint64 last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
|
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
|
||||||
};
|
};
|
||||||
|
|
||||||
void glibtop_get_loadavg(glibtop_loadavg *buf);
|
#define glibtop_get_loadavg(loadavg) glibtop_get_loadavg_l(glibtop_global_server, loadavg)
|
||||||
|
|
||||||
#if GLIBTOP_SUID_LOADAVG
|
#if GLIBTOP_SUID_LOADAVG
|
||||||
#define glibtop_get_loadavg_r glibtop_get_loadavg_p
|
#define glibtop_get_loadavg_r glibtop_get_loadavg_p
|
||||||
@@ -56,10 +58,10 @@ void glibtop_get_loadavg(glibtop_loadavg *buf);
|
|||||||
void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
|
void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_LOADAVG
|
#if GLIBTOP_SUID_LOADAVG
|
||||||
void _glibtop_init_loadavg_p (glibtop *server);
|
void glibtop_init_loadavg_p (glibtop *server);
|
||||||
void glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
|
void glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
|
||||||
#else
|
#else
|
||||||
void _glibtop_init_loadavg_s (glibtop *server);
|
void glibtop_init_loadavg_s (glibtop *server);
|
||||||
void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
|
void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user