Compare commits
394 Commits
LIBGTOP_2_
...
LIBGTOP_2_
Author | SHA1 | Date | |
---|---|---|---|
|
1f7f18b399 | ||
|
a7a9e7e9f8 | ||
|
c51a13bf0e | ||
|
d497c25081 | ||
|
3345ef1704 | ||
|
af52067b3a | ||
|
a3e3a224a2 | ||
|
b9e498c0b8 | ||
|
875df72edf | ||
|
c5e81bacbf | ||
|
8663fc3fda | ||
|
37487d4e62 | ||
|
d52fc3f868 | ||
|
bc79bf010a | ||
|
7f477561f0 | ||
|
c7e0a7ac59 | ||
|
bc6ff2cb59 | ||
|
1826be8ef6 | ||
|
739e9cac4a | ||
|
8c7e0e6f2e | ||
|
46c9f6ebeb | ||
|
e6d6b0bba7 | ||
|
8d60c52922 | ||
|
21f74a6427 | ||
|
05b94bd263 | ||
|
956527cb57 | ||
|
d8f9e265cf | ||
|
64fe5d591b | ||
|
12502c2673 | ||
|
5d2f45803b | ||
|
3c21c70b64 | ||
|
9e6115f322 | ||
|
cead508eae | ||
|
26d85d02fb | ||
|
afa9757a0e | ||
|
80855eabe2 | ||
|
3558c4d5c3 | ||
|
1870a03538 | ||
|
214e1decbd | ||
|
3c173b95b4 | ||
|
2083db6c34 | ||
|
a7cf016d67 | ||
|
ec7922c6bd | ||
|
c2104f2f0b | ||
|
47776e8f21 | ||
|
88cd202147 | ||
|
6226594f04 | ||
|
580558333e | ||
|
702e3775c3 | ||
|
a597640830 | ||
|
a956784797 | ||
|
e71023b362 | ||
|
89f9c1d43a | ||
|
29adf02352 | ||
|
35030c878b | ||
|
9b916ee402 | ||
|
23ca9669ae | ||
|
d66ae501f9 | ||
|
ccb10a7b33 | ||
|
9d2131a4b5 | ||
|
7d3059e732 | ||
|
d3add9e115 | ||
|
101fe5874f | ||
|
3afe2bf629 | ||
|
e296c3a37a | ||
|
2f3120d6c9 | ||
|
806a816026 | ||
|
ba7355df9e | ||
|
451f9f9d6c | ||
|
52fa57a39b | ||
|
aa5ac8fc10 | ||
|
a7db1f4dfd | ||
|
91a312768d | ||
|
d9a666470c | ||
|
79fc0e70c0 | ||
|
532f5ceb4f | ||
|
a326e2dcac | ||
|
8a626d9f97 | ||
|
a6513af1c6 | ||
|
95b2dfa326 | ||
|
ac3ad6d2aa | ||
|
4186c9a956 | ||
|
7770480ad2 | ||
|
50f20979df | ||
|
78ec6945df | ||
|
170b03f4f2 | ||
|
c183276e2b | ||
|
d7945bdc36 | ||
|
2930c9f092 | ||
|
fe6a33a5fd | ||
|
30ebfb45d0 | ||
|
b43a1e01c0 | ||
|
88d606d814 | ||
|
dd0d06898a | ||
|
3e77f3cf13 | ||
|
22a1120348 | ||
|
da4dc46b7a | ||
|
03bcc48da6 | ||
|
708285f0d2 | ||
|
a0493a0ff1 | ||
|
9f7d505d20 | ||
|
78cb7832c5 | ||
|
b3979e6942 | ||
|
92d3176303 | ||
|
e5c7f87f50 | ||
|
7e506a6c83 | ||
|
1645027004 | ||
|
8e656af060 | ||
|
4efcfb2cb3 | ||
|
59da1618b0 | ||
|
e9ce3ccc1c | ||
|
84e45a6519 | ||
|
96fe554afd | ||
|
16e0c943b2 | ||
|
f409c553f5 | ||
|
b6a10fd8f7 | ||
|
efeca4a865 | ||
|
5e70932b66 | ||
|
d499bd3761 | ||
|
48e3d5b2ec | ||
|
55270e618e | ||
|
a5c897b846 | ||
|
b0093954b3 | ||
|
c81e055427 | ||
|
06fb19b5c6 | ||
|
f8d9557257 | ||
|
ef2ed50bf7 | ||
|
c19ba1af03 | ||
|
c1e5bdfb16 | ||
|
be7dabf75d | ||
|
d37b1b9a2e | ||
|
6f755a5ca7 | ||
|
4cd022b315 | ||
|
69873a143d | ||
|
f5655f12d3 | ||
|
a71839c0a7 | ||
|
74d9b24132 | ||
|
d4ee5eb884 | ||
|
872a4180e4 | ||
|
e8351bae05 | ||
|
adb38dd2a3 | ||
|
755d5fe5f5 | ||
|
d1891b11ef | ||
|
765a919305 | ||
|
ad2f74dbc3 | ||
|
b017d60c83 | ||
|
29a991160c | ||
|
59fd67c7e0 | ||
|
bbc10e3790 | ||
|
f4f88ff224 | ||
|
fffccf3309 | ||
|
3c0e03ee89 | ||
|
fa9216f771 | ||
|
83a9bef192 | ||
|
ca4dc56342 | ||
|
a97ee0a513 | ||
|
41a723fde4 | ||
|
f673d2ea37 | ||
|
cae488a4ee | ||
|
ad79ab9540 | ||
|
e958d8dbbe | ||
|
a58e2f6385 | ||
|
c505f26427 | ||
|
53aec7429f | ||
|
6099a46f42 | ||
|
1711b912f1 | ||
|
c817a9fac1 | ||
|
a1657f81cb | ||
|
0561316344 | ||
|
2c0f291b3c | ||
|
fc7d872381 | ||
|
c97d63f368 | ||
|
675145ea55 | ||
|
965bd33d55 | ||
|
7a5e1a0f37 | ||
|
da24dd8fd9 | ||
|
717ee1c88f | ||
|
f031b77b3b | ||
|
e0ae6ebcaa | ||
|
16123b6fe9 | ||
|
672da9122e | ||
|
35f0277afd | ||
|
8d77e50c03 | ||
|
82dc5aefe1 | ||
|
f2f5ab9b73 | ||
|
49acc8769c | ||
|
15759a964a | ||
|
649b88a7fa | ||
|
073a6dd8c1 | ||
|
d61ad50e23 | ||
|
53c43e6e90 | ||
|
b43e879cc0 | ||
|
0fdfd65a2a | ||
|
1ac8744251 | ||
|
bbbbb27edc | ||
|
a5982555b9 | ||
|
7d44f04aed | ||
|
c9dc0d0ef8 | ||
|
e82f908824 | ||
|
8365f40856 | ||
|
b2917db0be | ||
|
3d21fd97f6 | ||
|
666a347f25 | ||
|
68db204d6a | ||
|
fbe5c8da8e | ||
|
a354ca2635 | ||
|
639ea4870c | ||
|
702d9a1501 | ||
|
ea1a6dbaca | ||
|
bb60753844 | ||
|
d9781917c5 | ||
|
bd119a72e2 | ||
|
78c10bca9b | ||
|
270ec235c1 | ||
|
2362be986b | ||
|
8a1e1cff91 | ||
|
46380bf655 | ||
|
91dda5b70d | ||
|
9b263e0fbb | ||
|
793807b07e | ||
|
9898e7ee58 | ||
|
7ecdcd712d | ||
|
703a17f3f0 | ||
|
92a9e7d937 | ||
|
01c7e99aa6 | ||
|
6fe16f1d91 | ||
|
fcb83e637d | ||
|
50e4e07013 | ||
|
ab40c94db3 | ||
|
fee415ecd8 | ||
|
647a313d5b | ||
|
70ac398a44 | ||
|
48056f7d8a | ||
|
7ca4171652 | ||
|
1537eea7e5 | ||
|
0a425e4e41 | ||
|
0fa9c9bc61 | ||
|
9561cf34b2 | ||
|
be721ca476 | ||
|
265da513de | ||
|
a180cb5b10 | ||
|
c517f20195 | ||
|
e4ad12fd93 | ||
|
c22300d109 | ||
|
bffc09b594 | ||
|
b7fd73bc5c | ||
|
15904773f3 | ||
|
b76ae7b1ca | ||
|
006eddb5fe | ||
|
7566ccf311 | ||
|
cde49f488c | ||
|
ce9ce223ca | ||
|
71900c0e30 | ||
|
817057bc3c | ||
|
9fe6dadcec | ||
|
3e06f95c84 | ||
|
2ca1905547 | ||
|
65d2d61d41 | ||
|
8a4fd3c971 | ||
|
c09e2fdead | ||
|
fe5bb1c39c | ||
|
4b310d26f7 | ||
|
83759b2a4a | ||
|
209219d5ce | ||
|
8ce468228a | ||
|
e9e2b7c09b | ||
|
2fa0dc1cd8 | ||
|
faa80b7b24 | ||
|
7ff2372249 | ||
|
f378a263b0 | ||
|
77b892ebf7 | ||
|
db2fed4da3 | ||
|
160bdeaecd | ||
|
1d6debfa56 | ||
|
bbb6cbaa87 | ||
|
ce229a4e19 | ||
|
544aff2f18 | ||
|
74f20ca469 | ||
|
edd5156ca0 | ||
|
7e5ccec8bf | ||
|
fdf313cdf6 | ||
|
9a6bb02fb1 | ||
|
e6f0664c3b | ||
|
405f0602e0 | ||
|
b3dfc1d1d2 | ||
|
13025c6c5f | ||
|
bbcbe6b67d | ||
|
6c586e844f | ||
|
a1677aefa8 | ||
|
9f91b2ddb8 | ||
|
ca8d9657f0 | ||
|
5bd4c5feeb | ||
|
15a4ba35a9 | ||
|
f028bd79bf | ||
|
d809faba3e | ||
|
d0833edb66 | ||
|
9aae957919 | ||
|
6d24f84fd6 | ||
|
fe08779c6c | ||
|
804b82eff8 | ||
|
61889bc182 | ||
|
c29887d4b0 | ||
|
edb1e6a773 | ||
|
5d97c3fa5e | ||
|
e830a8eeb6 | ||
|
a6410588cd | ||
|
339b79b100 | ||
|
831f0e7d68 | ||
|
4882405885 | ||
|
5b15a2d1a5 | ||
|
6954b81396 | ||
|
35dd4cf1ca | ||
|
0b0b1ab43c | ||
|
a6311d88c3 | ||
|
f561120748 | ||
|
b35532dd6f | ||
|
c7d323749c | ||
|
3d1997ca94 | ||
|
b3fd15c190 | ||
|
601cfef32f | ||
|
86fd7f23c4 | ||
|
3668b5bb19 | ||
|
89f531cdbc | ||
|
35488aef90 | ||
|
dc31c8b8dd | ||
|
a205458dbe | ||
|
9ccd5cc4cb | ||
|
0fb5f3df88 | ||
|
c82734255b | ||
|
19ebd69b93 | ||
|
c93a83e78a | ||
|
c968c56913 | ||
|
8508785c67 | ||
|
9d142723a6 | ||
|
a0afc5616a | ||
|
423d0e353d | ||
|
a4307cb35d | ||
|
0bc628484c | ||
|
3bdad36198 | ||
|
7a4c9fb40f | ||
|
8c5093a395 | ||
|
5ccd5980c0 | ||
|
60c8aae6d9 | ||
|
28a5db91d2 | ||
|
770e39d2d2 | ||
|
8ca47ad9e0 | ||
|
49f1de8217 | ||
|
63cc547156 | ||
|
fcfd0bd852 | ||
|
4b6c206598 | ||
|
e81e7db939 | ||
|
91adde3f3d | ||
|
ef95ef85ff | ||
|
ff160fa9f3 | ||
|
11f37815a3 | ||
|
16d9eebd1b | ||
|
71c1792637 | ||
|
6fc4a48c6f | ||
|
550b9743c7 | ||
|
36fe063384 | ||
|
42c697c37e | ||
|
91c53d4f22 | ||
|
878826c871 | ||
|
f9b9b8dbd9 | ||
|
d20bbf57fe | ||
|
6bbc66417a | ||
|
336d234bce | ||
|
a6df633a6f | ||
|
8cd69ad3df | ||
|
ab2881a412 | ||
|
bce095739f | ||
|
d872544eb7 | ||
|
03e96ce487 | ||
|
95dfedd71d | ||
|
4cda07c19c | ||
|
182f069928 | ||
|
647f7c7be8 | ||
|
808a2d48ac | ||
|
5b39a4831d | ||
|
275d96b6c7 | ||
|
a6f5be63ce | ||
|
b818519801 | ||
|
7a3d548bb6 | ||
|
dff4386212 | ||
|
cb4a95bf02 | ||
|
3502306b83 | ||
|
69767956dc | ||
|
e8158ec1b1 | ||
|
995ca5afb9 | ||
|
40c2e53355 | ||
|
4c0a0244e5 | ||
|
e794406321 | ||
|
e0882a5c68 | ||
|
4a7fb7c8cf |
@@ -39,3 +39,10 @@ INSTALL
|
||||
install-sh
|
||||
missing
|
||||
mkinstalldirs
|
||||
libgtopconfig.h
|
||||
intltool-extract.in
|
||||
intltool-extract
|
||||
intltool-merge.in
|
||||
intltool-merge
|
||||
intltool-update.in
|
||||
intltool-update
|
||||
|
3
AUTHORS
3
AUTHORS
@@ -1,4 +1,3 @@
|
||||
Benoit Dejean (tazforever@dlfp.org)
|
||||
|
||||
Martin Baulig (martin@home-of-linux.org)
|
||||
Drazen Kacar (dave@srce.hr)
|
||||
Benoît Dejean (tazforever@dlfp.org)
|
||||
|
@@ -1,28 +0,0 @@
|
||||
# Making releases:
|
||||
# LIBGTOP_MICRO_VERSION += 1;
|
||||
# LIBGTOP_INTERFACE_AGE += 1;
|
||||
# LIBGTOP_BINARY_AGE += 1;
|
||||
# if any functions have been added, set LIBGTOP_INTERFACE_AGE to 0.
|
||||
# if backwards compatibility has been broken,
|
||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
||||
#
|
||||
LIBGTOP_MAJOR_VERSION=1
|
||||
LIBGTOP_MINOR_VERSION=90
|
||||
LIBGTOP_MICRO_VERSION=0
|
||||
|
||||
LIBGTOP_INTERFACE_AGE=0
|
||||
LIBGTOP_BINARY_AGE=0
|
||||
# you can set this to `-snap' for instance to create
|
||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||
LIBGTOP_VERSION_SUFFIX=
|
||||
|
||||
# Increase each time you change the client/server protocol.
|
||||
LIBGTOP_SERVER_VERSION=5
|
||||
|
||||
# Don't change this
|
||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||
LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc`
|
||||
|
||||
# For automake.
|
||||
VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX
|
||||
PACKAGE=libgtop
|
@@ -1,2 +1,3 @@
|
||||
Email: martin@home-of-linux.org
|
||||
Email: dave@srce.hr
|
||||
Current maintainer : Benoît Dejean (benoit@placenet.org)
|
||||
|
22
Makefile.am
22
Makefile.am
@@ -1,13 +1,27 @@
|
||||
|
||||
SUBDIRS = po misc include sysdeps lib src examples doc
|
||||
if EXAMPLES
|
||||
EXAMPLES_DIR = examples
|
||||
else
|
||||
EXAMPLES_DIR =
|
||||
endif
|
||||
|
||||
libgtopinclude_HEADERS = glibtop.h
|
||||
SUBDIRS = po misc include sysdeps lib src $(EXAMPLES_DIR) doc
|
||||
|
||||
libgtopinclude_HEADERS = glibtop.h libgtopconfig.h
|
||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||
|
||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
|
||||
LIBGTOP-VERSION features.def \
|
||||
features.def libgtopconfig.h.in \
|
||||
libgtop-sysdeps.m4 README \
|
||||
libgtop-mirror.sh 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:
|
||||
cp libgtop.spec $(distdir)
|
||||
|
164
NEWS
164
NEWS
@@ -1,3 +1,167 @@
|
||||
July 27, 2006: Overview of changes in 2.14.2
|
||||
============================================
|
||||
* Updated solaris support (hua.zhang@sun.com)
|
||||
* Small linux updates and improvments.
|
||||
|
||||
April 10, 2006: Overview of changes in 2.14.1
|
||||
=============================================
|
||||
* Updated translations.
|
||||
* Fixed NetBSD port (Julio M. Merino Vidal <jmmv@NetBSD.org>).
|
||||
* Fixed some warnings.
|
||||
|
||||
Mars 13, 2006: Overview of changes in 2.14.0
|
||||
============================================
|
||||
* Updated translations.
|
||||
|
||||
February 27, 2006: Overview of changes in 2.13.92
|
||||
=================================================
|
||||
* Fixed proc_state documentation.
|
||||
* Updated mountlist ignore list.
|
||||
|
||||
January 23, 2006: Overview of changes in 2.13.3
|
||||
===============================================
|
||||
* linux:
|
||||
- fixe get_procmap for linux < 2.6.14.
|
||||
|
||||
January 2, 2006: Overview of changes in 2.13.2
|
||||
==============================================
|
||||
* Fixed libtool versioning (James Henstridge)
|
||||
|
||||
December 15, 2005: Overview of changes in 2.13.1
|
||||
================================================
|
||||
* linux:
|
||||
- fixed proclist
|
||||
- implemented server->real_ncpu
|
||||
|
||||
December 13, 2005: Overview of changes in 2.13.0
|
||||
================================================
|
||||
* Requires automake-1.9 (James Henstridge)
|
||||
* Supports up to 32 CPU
|
||||
* Supports Linux smaps
|
||||
* linux: fixed SMP detection
|
||||
|
||||
This release is not ABI compatible with previous releases. Sorry.
|
||||
|
||||
November 29, 2005: Overview of changes from 2.12.0 to 2.12.1
|
||||
============================================================
|
||||
* Dropped dead files
|
||||
* linux: 1-line cleanup.
|
||||
|
||||
September 4, 2005: Overview of changes from 2.11.92 to 2.12.0
|
||||
=============================================================
|
||||
* Updated translations.
|
||||
|
||||
August 22, 2005: Overview of changes from 2.11.91 to 2.11.92
|
||||
============================================================
|
||||
* Linux:
|
||||
- fixed for 2.6 without /sys
|
||||
- glibtop_get_cpu() : Do not add irq, softirq and iowait to idle.
|
||||
|
||||
August 9, 2005: Overview of changes from 2.11.90 to 2.11.91
|
||||
===========================================================
|
||||
* All:
|
||||
- cleaned some headers.
|
||||
- removed static examples.
|
||||
* Linux:
|
||||
- fixed some issues with 2.6 without /sys
|
||||
|
||||
July 24, 2005: Overview of changes from 2.11.2 to 2.11.90
|
||||
=========================================================
|
||||
* Linux:
|
||||
- fixed glibtop_uptime .flags.
|
||||
|
||||
July &3, 2005: Overview of changes from 2.11.1 to 2.11.2
|
||||
========================================================
|
||||
* Linux:
|
||||
- little improvements for 2.6.
|
||||
|
||||
July 3, 2005: Overview of changes from 2.11.0 to 2.11.1
|
||||
=======================================================
|
||||
* Linux:
|
||||
- glibtop_get_swap : added page(in|out) for linux 2.6.
|
||||
|
||||
June 8, 2005: Overview of changes from 2.10.x to 2.11.0
|
||||
=======================================================
|
||||
* Replaced a lot of macros by functions
|
||||
* Got rid of dozens of useless files.
|
||||
* libgtop 2.11.x are and will stay API and ABI compatible with 2.10.x, i swear.
|
||||
|
||||
April 10, 2005: Overview of changes from 2.10.0 to 2.10.1
|
||||
=========================================================
|
||||
* Updated i18n.
|
||||
* Little cleanup and fixed gcc-4.0 compilation.
|
||||
* linux: fixed loadavg and uptime if locale != C.
|
||||
Updated siglist.
|
||||
* Tighter libgtop-2.0.pc.
|
||||
|
||||
Mars 7, 2005: Overview of Changes from 2.9.92 to 2.10.0
|
||||
=======================================================
|
||||
* Updated i18n.
|
||||
|
||||
February 28, 2005: Overview of Changes from 2.9.90 to 2.9.92
|
||||
============================================================
|
||||
* *BSD updated by marcus@freebsd.org (Joe Marcus Clarke).
|
||||
* Removed a lot of dead files :)
|
||||
* Don't build&install libgtop_daemon when it's never used.
|
||||
|
||||
February 6, 2004: Overview of Changes from 2.9.90 to 2.9.91
|
||||
==========================================================
|
||||
* Fixed typo in stub.
|
||||
* Updated i18n.
|
||||
|
||||
January 24, 2004: Overview of Changes from 2.9.4 to 2.9.90
|
||||
==========================================================
|
||||
* Updated Linux support.
|
||||
|
||||
January 10, 2004: Overview of Changes from 2.9.3 to 2.9.4
|
||||
=========================================================
|
||||
* New glibtop_proc_open_files nick@reloco.com.ar (Nicolás Lichtmaier).
|
||||
* Updated AIX support (Christophe Belle).
|
||||
|
||||
December 20, 2004: Overview of Changes from 2.9.0 to 2.9.3
|
||||
==========================================================
|
||||
* Removed libgtop_names.
|
||||
* Fixed Argument passing between library and server. #139809.
|
||||
* *BSD updated by marcus@freebsd.org (Joe Marcus Clarke).
|
||||
* glibtop_get_mountlist(False) now ignores 'unknown' fs.
|
||||
|
||||
|
||||
November 30, 2004: Overview of Changes from 2.8.1 to 2.9.0
|
||||
=========================================================
|
||||
* glibtop_get_netload : Fixed segfault on linux with ppp devices.
|
||||
* NEW glibtop_get_netlist : retrieves the list of all available interfaces.
|
||||
* NEW LIBGTOP_CHECK_VERSION(major, minor, micro)
|
||||
* Removed dead kernel patch and implementation.
|
||||
* Cleanups on Linux and Solaris.
|
||||
|
||||
October 11, 2004: Overview of Changes from 2.8.0 to 2.8.1
|
||||
=========================================================
|
||||
* Improved Solaris and AIX support.
|
||||
|
||||
|
||||
August 13, 2004: Overview of Changes from 2.7.92 to 2.8.0
|
||||
=========================================================
|
||||
* No changes
|
||||
|
||||
|
||||
August 30, 2004:
|
||||
===============
|
||||
* Applied some *BSD patches.
|
||||
* Removed old files.
|
||||
|
||||
|
||||
August 15, 2004:
|
||||
===============
|
||||
* Fixed compilation with C89-only compilers and old libc.
|
||||
|
||||
|
||||
August 3, 2004:
|
||||
==============
|
||||
* Some cleanups.
|
||||
* Fixed the behaviour of some linux proc_*() functions.
|
||||
* Updated the documentation.
|
||||
|
||||
|
||||
July 19, 2004: Overview of Changes from 2.6.1 to 2.7.4
|
||||
======================================================
|
||||
* Plenty of code cleanups. Uninlined a lot of functions. ~5-10KB object size
|
||||
|
16
README
16
README
@@ -1,8 +1,20 @@
|
||||
$Id$
|
||||
|
||||
LATEST NEWS:
|
||||
===========
|
||||
|
||||
Please look also in the file 'NEWS' for latest news.
|
||||
|
||||
Martin
|
||||
|
||||
|
||||
ChangeLogs:
|
||||
==========
|
||||
|
||||
LibGTop has many ChangeLogs files. The following files are the the
|
||||
most important :
|
||||
|
||||
- ChangeLog is the main ChangeLog.
|
||||
- sysdeps/<arch>/ChangeLog is the ChangeLog for arch specific changes.
|
||||
- sysdeps/common/ChangeLog is the ChangeLog for common changes (shared
|
||||
implementation between archs).
|
||||
|
||||
Benoît
|
||||
|
170
acconfig.h
170
acconfig.h
@@ -1,170 +0,0 @@
|
||||
|
||||
/* Define if gethostname () must be declared. */
|
||||
#undef NEED_DECLARATION_GETHOSTNAME
|
||||
|
||||
/* Define if setreuid () must be declared. */
|
||||
#undef NEED_DECLARATION_SETREUID
|
||||
|
||||
/* Define if setregid () must be declared. */
|
||||
#undef NEED_DECLARATION_SETREGID
|
||||
|
||||
/* Define if getpagesize () must be declared. */
|
||||
#undef NEED_DECLARATION_GETPAGESIZE
|
||||
|
||||
/* Define if program_invocation_name must be declared. */
|
||||
#undef NEED_DECLARATION_PROGRAM_INVOCATION_NAME
|
||||
|
||||
@TOP@
|
||||
|
||||
#undef ENABLE_NLS
|
||||
#undef HAVE_CATGETS
|
||||
#undef GETTEXT_PACKAGE
|
||||
#undef HAVE_GETTEXT
|
||||
#undef HAVE_LC_MESSAGES
|
||||
#undef HAVE_STPCPY
|
||||
#undef HAVE_STRUCT_OSOCKADDR
|
||||
#undef PACKAGE
|
||||
#undef VERSION
|
||||
#undef HAVE_LIBSM
|
||||
#undef HAVE_LIBINTL_H
|
||||
#undef HAVE_GTK_SIGNAL_HANDLER_PENDING
|
||||
|
||||
/* Do not remove this comments and the empty lines; they are needed */
|
||||
#undef HAVE_PROGRAM_INVOCATION_SHORT_NAME
|
||||
/* Define if you have the Andrew File System. */
|
||||
#undef AFS
|
||||
|
||||
/* Define one of the following to indicate how a program can
|
||||
get a list of mounted filesystems. */
|
||||
|
||||
/* Define if there is no specific function for reading the list of
|
||||
mounted filesystems. fread will be used to read /etc/mnttab. [SVR2] */
|
||||
#undef MOUNTED_FREAD
|
||||
|
||||
/* Define if (like SVR2) there is no specific function for reading the
|
||||
list of mounted filesystems, and your system has these header files:
|
||||
<sys/fstyp.h> and <sys/statfs.h>. [SVR3] */
|
||||
#undef MOUNTED_FREAD_FSTYP
|
||||
|
||||
/* Define if there is a function named getfsstat for reading the list
|
||||
of mounted filesystems. [DEC Alpha running OSF/1] */
|
||||
#undef MOUNTED_GETFSSTAT
|
||||
|
||||
/* Define if there is a function named getmnt for reading the list of
|
||||
mounted filesystems. [Ultrix] */
|
||||
#undef MOUNTED_GETMNT
|
||||
|
||||
/* Define if there is a function named getmntent for reading the list
|
||||
of mounted filesystems, and that function takes a single argument.
|
||||
[4.3BSD, SunOS, HP-UX, Dynix, Irix] */
|
||||
#undef MOUNTED_GETMNTENT1
|
||||
|
||||
/* Define if there is a function named getmntent for reading the list of
|
||||
mounted filesystems, and that function takes two arguments. [SVR4] */
|
||||
#undef MOUNTED_GETMNTENT2
|
||||
|
||||
/* Define if there is a function named getmntinfo for reading the list
|
||||
of mounted filesystems. [4.4BSD] */
|
||||
#undef MOUNTED_GETMNTINFO
|
||||
|
||||
/* Define if there is a function named listmntent that can be used to
|
||||
list all mounted filesystems. [UNICOS] */
|
||||
#undef MOUNTED_LISTMNTENT
|
||||
|
||||
/* Define if there is a function named mntctl that can be used to read
|
||||
the list of mounted filesystems, and there is a system header file
|
||||
that declares `struct vmount.' [AIX] */
|
||||
#undef MOUNTED_VMOUNT
|
||||
|
||||
/* Define one of the following to indicate how a program can obtain
|
||||
filesystems usage information. */
|
||||
|
||||
/* Define if statfs takes 3 args. [DEC Alpha running OSF/1] */
|
||||
#undef STAT_STATFS3_OSF1
|
||||
|
||||
/* Define if there is no specific function for reading filesystems usage
|
||||
information and you have the <sys/filsys.h> header file. [SVR2] */
|
||||
#undef STAT_READ_FILSYS
|
||||
|
||||
/* Define if statfs takes 2 args and struct statfs has a field named f_bsize.
|
||||
[4.3BSD, SunOS 4, HP-UX, AIX PS/2] */
|
||||
#undef STAT_STATFS2_BSIZE
|
||||
|
||||
/* Define if statfs takes 2 args and struct statfs has a field named f_fsize.
|
||||
[4.4BSD, NetBSD] */
|
||||
#undef STAT_STATFS2_FSIZE
|
||||
|
||||
/* Define if statfs takes 2 args and the second argument has
|
||||
type struct fs_data. [Ultrix] */
|
||||
#undef STAT_STATFS2_FS_DATA
|
||||
|
||||
/* Define if statfs takes 4 args. [SVR3, Dynix, Irix, Dolphin] */
|
||||
#undef STAT_STATFS4
|
||||
|
||||
/* Define if there is a function named statvfs. [SVR4] */
|
||||
#undef STAT_STATVFS
|
||||
|
||||
/* Define if the block counts reported by statfs may be truncated to 2GB
|
||||
and the correct values may be stored in the f_spare array.
|
||||
[SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
|
||||
SunOS 4.1.1 seems not to be affected.] */
|
||||
#undef STATFS_TRUNCATES_BLOCK_COUNTS
|
||||
|
||||
|
||||
/* to fix a bug in autoheader on DEC OSF1. */
|
||||
#undef HAVE_PROGRAM_INVOCATION_NAME
|
||||
|
||||
#undef HAVE_SOCKETS
|
||||
#undef HAVE_SOCKADDR_SUN_LEN
|
||||
|
||||
#undef HAVE_LIBJPEG
|
||||
#undef HAVE_LIBGIF
|
||||
#undef HAVE_LIBTIFF
|
||||
#undef HAVE_LIBZ
|
||||
#undef HAVE_LIBPNG
|
||||
#undef HAVE_GMP2_INCLUDE_DIR
|
||||
#undef HAVE_GUILE
|
||||
|
||||
#undef ssize_t
|
||||
#undef guint64
|
||||
#undef int64_t
|
||||
|
||||
#undef HAVE_GLIBTOP_MACHINE_H
|
||||
|
||||
#undef GLIBTOP_NAMES
|
||||
#undef GLIBTOP_GUILE
|
||||
#undef GLIBTOP_GUILE_NAMES
|
||||
#undef GLIBTOP_EXAMPLES
|
||||
#undef GLIBTOP_INODEDB
|
||||
|
||||
#undef NEED_LIBGTOP
|
||||
|
||||
#undef HAVE_LINUX_TABLE
|
||||
#undef HAVE_LIBGTOP_SMP
|
||||
|
||||
#undef HAVE_XAUTH
|
||||
|
||||
/* Define if your have the I4B package. */
|
||||
#undef HAVE_I4B
|
||||
#undef HAVE_I4B_ACCT
|
||||
|
||||
/* Define to enable debugging. */
|
||||
#undef LIBGTOP_ENABLE_DEBUG
|
||||
#undef LIBGTOP_FATAL_WARNINGS
|
||||
|
||||
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
|
||||
* the running kernel (if we don't have configured kernel sources).
|
||||
*/
|
||||
#undef GLIBTOP_LINUX_VERSION_CODE
|
||||
|
||||
/* Solaris release code (eg. 251 for Solaris 2.5.1). */
|
||||
#undef GLIBTOP_SOLARIS_RELEASE
|
||||
|
||||
/* Define if you want to use LibGTop without GNOME. */
|
||||
#undef WITHOUT_GNOME
|
||||
|
||||
/* Define if you have the <procfs.h> header file */
|
||||
#undef HAVE_PROCFS_H
|
||||
|
||||
/* Define if you have the <sys/procfs.h> header file */
|
||||
#undef HAVE_SYS_PROCFS_H
|
431
acinclude.m4
431
acinclude.m4
@@ -30,7 +30,7 @@ changequote([,]), [#include <sys/types.h>
|
||||
], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
|
||||
AC_MSG_RESULT($ac_cv_type_$1)
|
||||
if test $ac_cv_type_$1 = no; then
|
||||
AC_DEFINE($1, $2)
|
||||
AC_DEFINE($1, $2, [Define to $2 if <sys/types.h> does not define.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -72,7 +72,7 @@ if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
gcc_need_declarations="$gcc_need_declarations $1"
|
||||
gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
AC_DEFINE_UNQUOTED($gcc_tr_decl)
|
||||
AC_DEFINE_UNQUOTED($gcc_tr_decl, 1, [Define if $1 () must be declared.])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
@@ -157,7 +157,8 @@ yes
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
|
||||
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_LISTMNTENT)
|
||||
AC_DEFINE(MOUNTED_LISTMNTENT, 1,
|
||||
[Define if there is a function named listmntent that can be used to list all mounted filesystems. [UNICOS]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -176,7 +177,8 @@ AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
|
||||
if test $fu_cv_sys_mounted_getmntent1 = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT1)
|
||||
AC_DEFINE(MOUNTED_GETMNTENT1, 1,
|
||||
[Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes a single argument. [4.3BSD, SunOS, HP-UX, Dynix, Irix]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -190,7 +192,8 @@ fu_cv_sys_mounted_getmntent2=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
|
||||
if test $fu_cv_sys_mounted_getmntent2 = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT2)
|
||||
AC_DEFINE(MOUNTED_GETMNTENT2, 1,
|
||||
[Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes two arguments. [SVR4]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -215,7 +218,8 @@ fu_cv_sys_mounted_getsstat=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
|
||||
if test $fu_cv_sys_mounted_getsstat = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETFSSTAT)
|
||||
AC_DEFINE(MOUNTED_GETFSSTAT, 1,
|
||||
[Define if there is a function named getfsstat for reading the list of mounted filesystems. [DEC Alpha running OSF/1]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -229,7 +233,8 @@ fu_cv_sys_mounted_vmount=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
|
||||
if test $fu_cv_sys_mounted_vmount = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_VMOUNT)
|
||||
AC_DEFINE(MOUNTED_VMOUNT, 1,
|
||||
[Define if there is a function named mntctl that can be used to read the list of mounted filesystems, and there is a system header file that declares `struct vmount.' [AIX]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -246,7 +251,8 @@ fu_cv_sys_mounted_fread_fstyp=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
|
||||
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD_FSTYP)
|
||||
AC_DEFINE(MOUNTED_FREAD_FSTYP, 1,
|
||||
[Define if (like SVR2) there is no specific function for reading the list of mounted filesystems, and your system has these header files: <sys/fstyp.h> and <sys/statfs.h>. [SVR3]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -267,7 +273,8 @@ test -n "$ok" \
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
|
||||
if test $fu_cv_sys_mounted_getmntinfo = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTINFO)
|
||||
AC_DEFINE(MOUNTED_GETMNTINFO, 1,
|
||||
[Define if there is a function named getmntinfo for reading the list of mounted filesystems. [4.4BSD]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -285,7 +292,8 @@ fu_cv_sys_mounted_getmnt=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
|
||||
if test $fu_cv_sys_mounted_getmnt = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNT)
|
||||
AC_DEFINE(MOUNTED_GETMNT, 1,
|
||||
[Define if there is a function named getmnt for reading the list of mounted filesystems. [Ultrix]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -299,7 +307,8 @@ fu_cv_sys_mounted_fread=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
|
||||
if test $fu_cv_sys_mounted_fread = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD)
|
||||
AC_DEFINE(MOUNTED_FREAD, 1,
|
||||
[Define if there is no specific function for reading the list of mounted filesystems. fread will be used to read /etc/mnttab. [SVR2]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -328,7 +337,8 @@ fu_cv_sys_stat_statvfs=yes,
|
||||
fu_cv_sys_stat_statvfs=no)])
|
||||
if test $fu_cv_sys_stat_statvfs = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATVFS)
|
||||
AC_DEFINE(STAT_STATVFS, 1,
|
||||
[Define if there is a function named statvfs. [SVR4]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -352,7 +362,8 @@ fu_cv_sys_stat_statfs3_osf1=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
|
||||
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS3_OSF1)
|
||||
AC_DEFINE(STAT_STATFS3_OSF1, 1,
|
||||
[Define if statfs takes 3 args. [DEC Alpha running OSF/1]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -383,7 +394,8 @@ fu_cv_sys_stat_statfs2_bsize=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
|
||||
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS2_BSIZE)
|
||||
AC_DEFINE(STAT_STATFS2_BSIZE, 1,
|
||||
[Define if statfs takes 2 args and struct statfs has a field named f_bsize. [4.3BSD, SunOS 4, HP-UX, AIX PS/2]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -404,7 +416,8 @@ fu_cv_sys_stat_statfs4=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
|
||||
if test $fu_cv_sys_stat_statfs4 = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS4)
|
||||
AC_DEFINE(STAT_STATFS4, 1,
|
||||
[Define if statfs takes 4 args. [SVR3, Dynix, Irix, Dolphin]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -432,7 +445,8 @@ fu_cv_sys_stat_statfs2_fsize=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
|
||||
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS2_FSIZE)
|
||||
AC_DEFINE(STAT_STATFS2_FSIZE, 1,
|
||||
[Define if statfs takes 2 args and struct statfs has a field named f_fsize. [4.4BSD, NetBSD]])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -463,14 +477,17 @@ fu_cv_sys_stat_fs_data=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
|
||||
if test $fu_cv_sys_stat_fs_data = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS2_FS_DATA)
|
||||
AC_DEFINE(STAT_STATFS2_FS_DATA, 1,
|
||||
[Define if statfs takes 2 args and the second argument has type struct fs_data. [Ultrix]])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# SVR2
|
||||
AC_TRY_CPP([#include <sys/filsys.h>],
|
||||
AC_DEFINE(STAT_READ_FILSYS) space=yes)
|
||||
AC_DEFINE(STAT_READ_FILSYS, 1,
|
||||
[Define if there is no specific function for reading filesystems usage information and you have the <sys/filsys.h> header file. [SVR2]])
|
||||
space=yes)
|
||||
fi
|
||||
|
||||
if test -n "$list_mounted_fs" && test $space != no; then
|
||||
@@ -495,384 +512,14 @@ fu_cv_sys_truncating_statfs=yes,
|
||||
fu_cv_sys_truncating_statfs=no,
|
||||
)])
|
||||
if test $fu_cv_sys_truncating_statfs = yes; then
|
||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
|
||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
|
||||
[Define if the block counts reported by statfs may be truncated to 2GB and the correct values may be stored in the f_spare array. [SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be affected.]])
|
||||
fi
|
||||
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
||||
|
||||
AC_CHECKING(for AFS)
|
||||
test -d /afs && AC_DEFINE(AFS)
|
||||
])
|
||||
|
||||
dnl GNOME_SUPPORT_CHECKS
|
||||
dnl Check for various support functions needed by the standard
|
||||
dnl Gnome libraries. Sets LIBOBJS, might define some macros.
|
||||
dnl This should only be used when building the Gnome libs;
|
||||
dnl Gnome clients should not need this macro.
|
||||
AC_DEFUN([GNOME_SUPPORT_CHECKS],[
|
||||
# we need an `awk' to build `gnomesupport.h'
|
||||
AC_REQUIRE([AC_PROG_AWK])
|
||||
|
||||
# this should go away soon
|
||||
need_gnome_support=yes
|
||||
|
||||
AC_CHECK_FUNCS(getopt_long,,
|
||||
[AC_LIBOBJ(getopt)
|
||||
AC_LIBOBJ(getopt1)])
|
||||
|
||||
# for `scandir'
|
||||
AC_HEADER_DIRENT
|
||||
|
||||
# copied from `configure.in' of `libiberty'
|
||||
vars="program_invocation_short_name program_invocation_name sys_errlist"
|
||||
for v in $vars; do
|
||||
AC_MSG_CHECKING([for $v])
|
||||
AC_CACHE_VAL(gnome_cv_var_$v,
|
||||
[AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
|
||||
[eval "gnome_cv_var_$v=yes"],
|
||||
[eval "gnome_cv_var_$v=no"])])
|
||||
if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
AC_DEFINE_UNQUOTED($n)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
done
|
||||
|
||||
AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
|
||||
AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
|
||||
|
||||
AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize))
|
||||
|
||||
# to include `error.c' error.c has some HAVE_* checks
|
||||
AC_CHECK_FUNCS(vprintf doprnt strerror_r)
|
||||
# stolen from am_func_error_at_line
|
||||
AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
|
||||
[AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
|
||||
am_cv_lib_error_at_line=yes,
|
||||
am_cv_lib_error_at_line=no)])
|
||||
if test $am_cv_lib_error_at_line = no; then
|
||||
AC_LIBOBJ(error)
|
||||
fi
|
||||
|
||||
# This is required if we declare setreuid () and setregid ().
|
||||
AC_TYPE_UID_T
|
||||
|
||||
# see if we need to declare some functions. Solaris is notorious for
|
||||
# putting functions into the `libc' but not listing them in the headers
|
||||
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
|
||||
GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
|
||||
GCC_NEED_DECLARATION(scandir,[
|
||||
#ifdef HAVE_DIRENT_H
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
])
|
||||
|
||||
AC_SUBST(need_gnome_support)
|
||||
|
||||
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
|
||||
test -d /afs && AC_DEFINE(AFS, 1, [Define if you have the Andrew File System.])
|
||||
])
|
||||
|
||||
|
||||
dnl This file is intended for use both internally in libgtop and in every program
|
||||
dnl that wants to use it.
|
||||
dnl
|
||||
dnl It defines the following variables:
|
||||
dnl
|
||||
dnl * 'libgtop_sysdeps_dir' - sysdeps dir for libgtop.
|
||||
dnl * 'libgtop_use_machine_h' - some of system dependend parts of libgtop provide
|
||||
dnl their own header file. In this case we need to
|
||||
dnl define 'HAVE_GLIBTOP_MACHINE_H'.
|
||||
dnl * 'libgtop_need_server' - is the server really needed? Defines 'NEED_LIBGTOP'
|
||||
dnl if true; defines conditional 'NEED_LIBGTOP'.
|
||||
|
||||
AC_DEFUN([LIBGTOP_HACKER_TESTS],[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
AC_ARG_WITH(linux-table,
|
||||
[ --with-linux-table Use the table () function from Martin Baulig],
|
||||
[linux_table="$withval"],[linux_table=auto])
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
if test $linux_table = yes ; then
|
||||
AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no)
|
||||
elif test $linux_table = auto ; then
|
||||
AC_MSG_CHECKING(for table function in Linux Kernel)
|
||||
AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/table.h>
|
||||
|
||||
#include <syscall.h>
|
||||
|
||||
static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param);
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
union table tbl;
|
||||
int ret;
|
||||
|
||||
ret = table (TABLE_VERSION, NULL, NULL);
|
||||
|
||||
if (ret == -1)
|
||||
exit (-errno);
|
||||
|
||||
exit (ret < 1 ? ret : 0);
|
||||
}
|
||||
], linux_table=yes, linux_table=no, linux_table=no)
|
||||
AC_MSG_RESULT($linux_table)
|
||||
fi
|
||||
if test $linux_table = yes ; then
|
||||
AC_DEFINE(HAVE_LINUX_TABLE)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
AC_SUBST(libgtop_sysdeps_dir)
|
||||
AC_SUBST(libgtop_use_machine_h)
|
||||
AC_SUBST(libgtop_need_server)
|
||||
|
||||
AC_ARG_WITH(libgtop-examples,
|
||||
[ --with-libgtop-examples Build the libgtop examples (default=no)],[
|
||||
build_examples="$withval"], [build_examples=no])
|
||||
|
||||
AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes)
|
||||
|
||||
AC_ARG_ENABLE(hacker-mode,
|
||||
[ --enable-hacker-mode Enable building of unstable sysdeps],
|
||||
[hacker_mode="$enableval"], [hacker_mode=no])
|
||||
|
||||
AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes)
|
||||
|
||||
linux_table=auto
|
||||
if test x$hacker_mode = xyes ; then
|
||||
LIBGTOP_HACKER_TESTS
|
||||
fi
|
||||
AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes)
|
||||
|
||||
AC_ARG_WITH(libgtop-smp,
|
||||
[ --with-libgtop-smp Enable SMP support (default-auto)],[
|
||||
libgtop_smp="$withval"],[libgtop_smp=auto])
|
||||
|
||||
if test $libgtop_smp = auto ; then
|
||||
AC_MSG_CHECKING(whether to enable SMP support)
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
libgtop_smp=yes
|
||||
;;
|
||||
aix*)
|
||||
libgtop_smp=yes
|
||||
;;
|
||||
*)
|
||||
libgtop_smp=no
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT($libgtop_smp)
|
||||
fi
|
||||
|
||||
if test $libgtop_smp = yes ; then
|
||||
AC_DEFINE(HAVE_LIBGTOP_SMP)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes)
|
||||
|
||||
AC_MSG_CHECKING(for libgtop sysdeps directory)
|
||||
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
if test x$linux_table = xyes ; then
|
||||
libgtop_sysdeps_dir=kernel
|
||||
libgtop_use_machine_h=no
|
||||
else
|
||||
libgtop_sysdeps_dir=linux
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_have_sysinfo=yes
|
||||
fi
|
||||
libgtop_need_server=no
|
||||
;;
|
||||
freebsd*|netbsd*|openbsd*|bsdi*)
|
||||
libgtop_sysdeps_dir=freebsd
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||
;;
|
||||
solaris*)
|
||||
libgtop_sysdeps_dir=solaris
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||
;;
|
||||
aix*)
|
||||
libgtop_sysdeps_dir=aix
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
|
||||
;;
|
||||
*)
|
||||
if test x$hacker_mode = xyes ; then
|
||||
case "$host_os" in
|
||||
sunos4*)
|
||||
#Please note that this port is obsolete and not working at
|
||||
#all. It is only useful for people who want to fix it ... :-)
|
||||
libgtop_sysdeps_dir=sun4
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
osf*)
|
||||
libgtop_sysdeps_dir=osf1
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
*)
|
||||
libgtop_sysdeps_dir=stub
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
;;
|
||||
esac
|
||||
else
|
||||
libgtop_sysdeps_dir=stub
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
test -z "$libgtop_postinstall" && libgtop_postinstall=:
|
||||
|
||||
AC_MSG_RESULT($libgtop_sysdeps_dir)
|
||||
|
||||
AC_SUBST(libgtop_sysdeps_dir)
|
||||
AC_SUBST(libgtop_postinstall)
|
||||
AC_SUBST(libgtop_have_sysinfo)
|
||||
|
||||
case "$host_os" in
|
||||
*bsd*)
|
||||
AC_CHECK_HEADERS(net/if_var.h)
|
||||
AC_MSG_CHECKING([for I4B])
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_types.h>
|
||||
|
||||
#ifdef HAVE_NET_IF_VAR_H
|
||||
#include <net/if_var.h>
|
||||
#endif
|
||||
|
||||
#include <net/netisr.h>
|
||||
#include <net/route.h>
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#include <net/if_sppp.h>
|
||||
#else
|
||||
#include <i4b/sppp/if_sppp.h>
|
||||
#endif
|
||||
],[
|
||||
size_t size = sizeof (struct sppp);
|
||||
], have_i4b=yes, have_i4b=no)
|
||||
AC_MSG_RESULT($have_i4b)
|
||||
if test x$have_i4b = xyes; then
|
||||
AC_DEFINE(HAVE_I4B)
|
||||
AC_MSG_CHECKING([for I4B accounting])
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_types.h>
|
||||
|
||||
#ifdef HAVE_NET_IF_VAR_H
|
||||
#include <net/if_var.h>
|
||||
#endif
|
||||
|
||||
#include <net/netisr.h>
|
||||
#include <net/route.h>
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#include <net/if_sppp.h>
|
||||
#else
|
||||
#include <i4b/sppp/if_sppp.h>
|
||||
#endif
|
||||
|
||||
#include <machine/i4b_acct.h>
|
||||
],[
|
||||
size_t size = sizeof (struct i4bisppp_softc);
|
||||
], have_i4b_acct=yes, have_i4b_acct=no)
|
||||
AC_MSG_RESULT($have_i4b_acct)
|
||||
if test x$have_i4b_acct = xyes ; then
|
||||
AC_DEFINE(HAVE_I4B_ACCT)
|
||||
else
|
||||
AC_WARN([
|
||||
*** I4B accounting disabled - you won't get any PPP statistics.
|
||||
*** Read "misc/i4b_acct.txt" in the LibGTop source directory
|
||||
*** to see how to enable it.])
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
linux*)
|
||||
os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||
os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q"
|
||||
|
||||
AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes,
|
||||
have_linux_version_h=no)
|
||||
|
||||
if test x$have_linux_version_h = xyes ; then
|
||||
version_code=`cat /usr/include/linux/version.h | \
|
||||
grep \#define | grep LINUX_VERSION_CODE`
|
||||
os_version_code=`echo $version_code | \
|
||||
sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'`
|
||||
else
|
||||
os_version_code=`echo "$os_version_expr" | dc`
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(for Linux kernel version code)
|
||||
AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code)
|
||||
AC_MSG_RESULT($os_version_code)
|
||||
;;
|
||||
solaris*)
|
||||
os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'`
|
||||
os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'`
|
||||
os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'`
|
||||
test -z "$os_micro_version" && os_micro_version=0
|
||||
os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q"
|
||||
os_version_code=`echo "$os_version_expr" | dc`
|
||||
|
||||
AC_MSG_CHECKING(for Solaris release code)
|
||||
AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code)
|
||||
AC_MSG_RESULT($os_version_code)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir)
|
||||
AC_MSG_RESULT($libgtop_use_machine_h)
|
||||
|
||||
AC_MSG_CHECKING(whether we need libgtop)
|
||||
AC_MSG_RESULT($libgtop_need_server)
|
||||
|
||||
if test x$libgtop_need_server = xyes ; then
|
||||
AC_DEFINE(NEED_LIBGTOP)
|
||||
fi
|
||||
|
||||
if test x$libgtop_use_machine_h = xyes ; then
|
||||
AC_DEFINE(HAVE_GLIBTOP_MACHINE_H)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
|
||||
])
|
||||
|
||||
|
||||
m4_include([libgtop-sysdeps.m4])
|
||||
|
@@ -18,4 +18,5 @@ which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common from the GNOME CVS"
|
||||
exit 1
|
||||
}
|
||||
USE_GNOME2_MACROS=1 . gnome-autogen.sh
|
||||
REQUIRED_AUTOMAKE_VERSION=1.9
|
||||
. gnome-autogen.sh
|
||||
|
@@ -1,5 +0,0 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
@@ -1,15 +0,0 @@
|
||||
if NEED_LIBGTOP
|
||||
server_dir = server
|
||||
else
|
||||
server_dir =
|
||||
endif
|
||||
|
||||
if HAVE_SYSDEPS
|
||||
sysdeps_dir = sysdeps
|
||||
else
|
||||
sysdeps_dir =
|
||||
endif
|
||||
|
||||
SUBDIRS = $(server_dir) $(sysdeps_dir) common
|
||||
|
||||
DIST_SUBDIRS = server sysdeps common
|
@@ -1,7 +0,0 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
*.la
|
||||
marshal.c
|
@@ -1,50 +0,0 @@
|
||||
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'.
|
||||
|
@@ -1,47 +0,0 @@
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
if LIBGTOP_USE_GMODULE
|
||||
backendlibdir = $(backenddir)
|
||||
else
|
||||
backendlibdir = $(libdir)
|
||||
endif
|
||||
|
||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-common.backend
|
||||
|
||||
noinst_HEADERS = \
|
||||
backend-common.h
|
||||
|
||||
backendlib_LTLIBRARIES = \
|
||||
libgtop_backend_common.la
|
||||
|
||||
libgtop_backend_common_la_SOURCES = \
|
||||
backend-common.c \
|
||||
marshal.c
|
||||
|
||||
libgtop_backend_common_la_LDFLAGS = \
|
||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
||||
|
||||
libgtop_backend_common_la_LIBADD = \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/lib/libgtop_server.la
|
||||
|
||||
BUILT_SOURCES = \
|
||||
marshal.c
|
||||
|
||||
EXTRA_DIST = \
|
||||
marshal.pl \
|
||||
libgtop-common.backend
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t marshal.c
|
||||
|
@@ -1,61 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-common.h>
|
||||
|
||||
static int
|
||||
_open_common (glibtop_server *, glibtop_backend *, 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,36 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_COMMON_H__
|
||||
#define __GLIBTOP_BACKEND_COMMON_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/glibtop-backend.h>
|
||||
#include <glibtop/glibtop-backend-info.h>
|
||||
|
||||
#endif
|
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||
|
||||
<libgtop:Backend>
|
||||
<libgtop:Name>glibtop-backend-common</libgtop:Name>
|
||||
<libgtop:Location>
|
||||
<libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName>
|
||||
<libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName>
|
||||
</libgtop:Location>
|
||||
</libgtop:Backend>
|
||||
|
||||
</libgtop:Backends>
|
@@ -1,175 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 1;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* marshal.c */';
|
||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <backend-common.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include <glibtop/call-vector.h>';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $orig;
|
||||
|
||||
return unless $orig =~ /^@/;
|
||||
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$first_param_name = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
}
|
||||
}
|
||||
|
||||
if ($line_fields[3] eq '') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
||||
} else {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
||||
}
|
||||
|
||||
$func_decl = 'static '.$retval."\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
}
|
||||
|
||||
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
||||
|
||||
print $total_code;
|
||||
}
|
||||
|
||||
$call_vector_code = '';
|
||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||
$feature = $features{$nr};
|
||||
|
||||
if ($feature =~ /^@/) {
|
||||
$feature =~ s/^@//;
|
||||
|
||||
$call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature);
|
||||
} else {
|
||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||
}
|
||||
}
|
||||
|
||||
print 'glibtop_call_vector glibtop_backend_common_call_vector = {';
|
||||
print $call_vector_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
@@ -1,10 +0,0 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
*.la
|
||||
marshal.c
|
||||
demarshal.c
|
||||
libgtop_server
|
||||
command.h
|
@@ -1,121 +0,0 @@
|
||||
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'.
|
||||
|
@@ -1,84 +0,0 @@
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
INCLUDES = @INCLUDES@ -D_BSD \
|
||||
-DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
|
||||
-DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
|
||||
-DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
|
||||
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
if LIBGTOP_USE_GMODULE
|
||||
backendlibdir = $(backenddir)
|
||||
else
|
||||
backendlibdir = $(libdir)
|
||||
endif
|
||||
|
||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-server.backend
|
||||
|
||||
noinst_HEADERS = \
|
||||
backend-server.h
|
||||
|
||||
backendlib_LTLIBRARIES = \
|
||||
libgtop_backend_server.la
|
||||
|
||||
bin_PROGRAMS = \
|
||||
@server_programs@
|
||||
|
||||
EXTRA_PROGRAMS = \
|
||||
libgtop_server
|
||||
|
||||
libgtop_backend_server_la_SOURCES = \
|
||||
backend-server.c \
|
||||
marshal.c \
|
||||
command.c \
|
||||
read.c \
|
||||
read_data.c \
|
||||
write.c
|
||||
|
||||
libgtop_backend_server_la_LDFLAGS = \
|
||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
||||
|
||||
libgtop_server_SOURCES = \
|
||||
server.c \
|
||||
server.h \
|
||||
demarshal.c \
|
||||
version.c \
|
||||
io.c
|
||||
|
||||
libgtop_server_LDADD = \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_suid_common.la
|
||||
|
||||
if ENABLE_STATIC
|
||||
libgtop_server_LDFLAGS = -static
|
||||
endif
|
||||
|
||||
BUILT_SOURCES = \
|
||||
marshal.c \
|
||||
demarshal.c \
|
||||
command.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
marshal.pl \
|
||||
demarshal.pl \
|
||||
command.pl \
|
||||
command.h.in \
|
||||
libgtop-server.backend
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t marshal.c
|
||||
|
||||
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t demarshal.c
|
||||
|
||||
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
|
||||
mv tmp-t command.h
|
||||
|
@@ -1,113 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
static int
|
||||
_open_server (glibtop_server *, glibtop_backend *, 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;
|
||||
}
|
||||
|
@@ -1,65 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_COMMON_H__
|
||||
#define __GLIBTOP_BACKEND_COMMON_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/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
|
||||
|
@@ -1,100 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
#include "command.h"
|
||||
|
||||
void *
|
||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
|
||||
unsigned command, size_t send_size, const void *send_buf,
|
||||
size_t data_size, const void *data_buf,
|
||||
size_t recv_size, void *recv_ptr,
|
||||
int *retval_ptr)
|
||||
{
|
||||
glibtop_command cmnd;
|
||||
glibtop_response resp;
|
||||
#if 0
|
||||
int retval;
|
||||
#endif
|
||||
|
||||
memset (&cmnd, 0, sizeof (glibtop_command));
|
||||
memset (&resp, 0, sizeof (glibtop_response));
|
||||
|
||||
cmnd.command = command;
|
||||
|
||||
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
|
||||
* send it together with command, so we only need one system call instead
|
||||
* of two. */
|
||||
|
||||
if (send_size <= _GLIBTOP_PARAM_SIZE) {
|
||||
memcpy (cmnd.parameter, send_buf, send_size);
|
||||
cmnd.param_size = send_size;
|
||||
} else {
|
||||
cmnd.send_size = send_size;
|
||||
}
|
||||
|
||||
cmnd.data_size = data_size;
|
||||
|
||||
glibtop_write_i (priv, sizeof (glibtop_command), &cmnd);
|
||||
|
||||
if (data_size) {
|
||||
#ifdef SLAVE_DEBUG
|
||||
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
|
||||
#endif
|
||||
glibtop_write_i (priv, data_size, data_buf);
|
||||
}
|
||||
|
||||
glibtop_read_i (priv, sizeof (glibtop_response), &resp);
|
||||
|
||||
#ifdef SLAVE_DEBUG
|
||||
fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
|
||||
resp.retval, resp.glibtop_errno,
|
||||
(long) resp.recv_size, (long) resp.data_size,
|
||||
recv_ptr, (long) recv_size);
|
||||
#endif
|
||||
|
||||
if (retval_ptr)
|
||||
*retval_ptr = resp.glibtop_errno;
|
||||
|
||||
if (resp.recv_size != recv_size) {
|
||||
glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
|
||||
(long) recv_size, (long) resp.recv_size);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (recv_ptr)
|
||||
glibtop_read_i (priv, recv_size, recv_ptr);
|
||||
|
||||
if (resp.data_size) {
|
||||
void *ptr = g_malloc (resp.data_size);
|
||||
|
||||
glibtop_read_i (priv, resp.data_size, ptr);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
@@AUTOGEN_COMMENT@@
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_COMMAND_H__
|
||||
#define __GLIBTOP_COMMAND_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/union.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@@GLIBTOP_COMMAND_CONSTANTS@@
|
||||
|
||||
#define _GLIBTOP_PARAM_SIZE 16
|
||||
|
||||
typedef struct _glibtop_command glibtop_command;
|
||||
typedef struct _glibtop_response glibtop_response;
|
||||
|
||||
struct _glibtop_command
|
||||
{
|
||||
guint64 command;
|
||||
guint64 param_size, send_size, data_size;
|
||||
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||
};
|
||||
|
||||
struct _glibtop_response
|
||||
{
|
||||
int retval;
|
||||
int glibtop_errno;
|
||||
guint64 recv_size, data_size;
|
||||
};
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
@@ -1,76 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
die "Usage: $0 features.def command.h.in" unless $#ARGV == 1;
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
$constants_decl_code = '';
|
||||
|
||||
open FEATURESDEF, $ARGV[1] or
|
||||
die "open ($ARGV[1]): $!";
|
||||
|
||||
while (<FEATURESDEF>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^\#]/) {
|
||||
&parse_features_def ($_);
|
||||
}
|
||||
}
|
||||
|
||||
close FEATURESDEF;
|
||||
|
||||
sub parse_features_def {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$element_def = $line_fields[3];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$constants_decl_code .= sprintf
|
||||
(qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature),
|
||||
++$feature_count);
|
||||
|
||||
$features{$feature_count} = $feature;
|
||||
}
|
||||
|
||||
chop $constants_decl_code;
|
||||
|
||||
$auto_gen_comment = sprintf
|
||||
(qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]);
|
||||
|
||||
open COMMAND, $ARGV[2] or
|
||||
die "open ($ARGV[2]): $!";
|
||||
|
||||
while (<COMMAND>) {
|
||||
chop;
|
||||
|
||||
s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/;
|
||||
|
||||
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
|
||||
} continue {
|
||||
print $_;
|
||||
}
|
||||
|
||||
close COMMAND;
|
@@ -1,385 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 0;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* demarshal.c */';
|
||||
print "/* This is a generated file. Please modify `demarshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <glibtop.h>';
|
||||
print '#include <glibtop/open.h>';
|
||||
print '';
|
||||
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;
|
@@ -1,114 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
void
|
||||
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
||||
const void *data_ptr)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Really writing %d bytes.\n",
|
||||
sizeof (glibtop_response));
|
||||
#endif
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0)
|
||||
glibtop_warn_io ("write");
|
||||
} else {
|
||||
if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0)
|
||||
glibtop_warn_io ("send");
|
||||
}
|
||||
|
||||
if (resp->recv_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Writing %ld bytes of data.\n",
|
||||
(long) resp->recv_size);
|
||||
#endif
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, recv_ptr, resp->recv_size) < 0)
|
||||
glibtop_warn_io ("write");
|
||||
} else {
|
||||
if (send (s, recv_ptr, resp->recv_size, 0) < 0)
|
||||
glibtop_warn_io ("send");
|
||||
}
|
||||
}
|
||||
|
||||
if (resp->data_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Writing %ld bytes of extra data.\n",
|
||||
(long) resp->data_size);
|
||||
#endif
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, data_ptr, resp->data_size) < 0)
|
||||
glibtop_warn_io ("write");
|
||||
} else {
|
||||
if (send (s, data_ptr, resp->data_size, 0) < 0)
|
||||
glibtop_warn_io ("send");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
do_read (int s, void *ptr, size_t total_size)
|
||||
{
|
||||
int nread;
|
||||
char *tmp_ptr;
|
||||
size_t already_read = 0, remaining = total_size;
|
||||
|
||||
while (already_read < total_size) {
|
||||
if (s)
|
||||
nread = recv (s, ptr, remaining, 0);
|
||||
else
|
||||
nread = read (0, ptr, remaining);
|
||||
|
||||
if ((already_read == 0) && (nread == 0)) {
|
||||
glibtop_warn ("pid %d received eof.", getpid ());
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (nread <= 0) {
|
||||
glibtop_warn_io ("recv");
|
||||
return 0;
|
||||
}
|
||||
|
||||
already_read += nread;
|
||||
remaining -= nread;
|
||||
/* (char *) ptr += nread; */
|
||||
tmp_ptr = ptr;
|
||||
tmp_ptr += nread;
|
||||
ptr = tmp_ptr;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "READ (%d): %d - %d - %d\n",
|
||||
nread, already_read, remaining, total_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
return already_read;
|
||||
}
|
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||
|
||||
<libgtop:Backend>
|
||||
<libgtop:Name>glibtop-backend-server</libgtop:Name>
|
||||
<libgtop:Location>
|
||||
<libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName>
|
||||
<libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName>
|
||||
</libgtop:Location>
|
||||
</libgtop:Backend>
|
||||
|
||||
</libgtop:Backends>
|
@@ -1,305 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 1;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* marshal.c */';
|
||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <backend-server.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include "command.h"';
|
||||
print '#include <glibtop/call-vector.h>';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $orig;
|
||||
return if $orig =~ /^@/;
|
||||
|
||||
$orig_retval = $retval;
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$local_var_init_code = "\t/* variable initialization */\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||
"(char *) _LIBGTOP_SEND_buf;\n";
|
||||
$marshal_code = "\t/* marshal start */\n";
|
||||
$marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
|
||||
$first_param_name = '';
|
||||
$size_code = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
|
||||
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$size_code .= sprintf ("sizeof (size_t)");
|
||||
} else {
|
||||
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
||||
}
|
||||
$size_code .= ";\n";
|
||||
|
||||
if (defined $sizeof_funcs->{$type}) {
|
||||
$size_code .= "\t_LIBGTOP_DATA_len += ";
|
||||
$size_code .= $sizeof_funcs->{$type}->($fields[$field]);
|
||||
$size_code .= ";\n";
|
||||
}
|
||||
|
||||
$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||
"(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
|
||||
|
||||
if (defined $marshal_funcs->{$type}) {
|
||||
$marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
||||
} else {
|
||||
$marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
|
||||
'&'.$fields[$field], "sizeof ($c_type)");
|
||||
}
|
||||
|
||||
$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$marshal_code .= sprintf ("sizeof (size_t)");
|
||||
} else {
|
||||
$marshal_code .= sprintf ("sizeof (%s)", $c_type);
|
||||
}
|
||||
$marshal_code .= ";\n";
|
||||
}
|
||||
}
|
||||
|
||||
$local_var_code = "";
|
||||
$local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
|
||||
$local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
|
||||
if ($need_temp_len) {
|
||||
$local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
|
||||
}
|
||||
$local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
|
||||
$local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
|
||||
if ($retval !~ /^void$/) {
|
||||
$local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
||||
$retval, $retval);
|
||||
}
|
||||
|
||||
$total_code = '';
|
||||
|
||||
$send_buf_code = "\t/* send buffer */\n";
|
||||
$send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
|
||||
if ($need_temp_storage) {
|
||||
$send_buf_code .= "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,46 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
void
|
||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
|
||||
size, priv->input [0]);
|
||||
#endif
|
||||
|
||||
ret = read (priv->input [0], buf, size);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
|
||||
#endif
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "read %d bytes", size);
|
||||
}
|
@@ -1,58 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
void *
|
||||
glibtop_read_data_i (backend_server_private *priv)
|
||||
{
|
||||
size_t size;
|
||||
void *ptr;
|
||||
int ret;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
|
||||
#endif
|
||||
|
||||
ret = read (priv->input [0], (void *)&size, sizeof (size_t));
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "read data size");
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
|
||||
#endif
|
||||
|
||||
if (!size) return NULL;
|
||||
|
||||
ptr = 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;
|
||||
}
|
@@ -1,189 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
static glibtop _glibtop_global_server;
|
||||
glibtop *glibtop_global_server = &_glibtop_global_server;
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
|
||||
#include <sys/utsname.h>
|
||||
|
||||
const unsigned long glibtop_server_features =
|
||||
GLIBTOP_SUID_CPU +
|
||||
GLIBTOP_SUID_MEM +
|
||||
GLIBTOP_SUID_SWAP +
|
||||
GLIBTOP_SUID_UPTIME +
|
||||
GLIBTOP_SUID_LOADAVG +
|
||||
GLIBTOP_SUID_SHM_LIMITS +
|
||||
GLIBTOP_SUID_MSG_LIMITS +
|
||||
GLIBTOP_SUID_SEM_LIMITS +
|
||||
GLIBTOP_SUID_PROCLIST +
|
||||
GLIBTOP_SUID_PROC_STATE +
|
||||
GLIBTOP_SUID_PROC_UID +
|
||||
GLIBTOP_SUID_PROC_MEM +
|
||||
GLIBTOP_SUID_PROC_TIME +
|
||||
GLIBTOP_SUID_PROC_SIGNAL +
|
||||
GLIBTOP_SUID_PROC_KERNEL +
|
||||
GLIBTOP_SUID_PROC_SEGMENT +
|
||||
GLIBTOP_SUID_PROC_ARGS +
|
||||
GLIBTOP_SUID_PROC_MAP +
|
||||
GLIBTOP_SUID_NETINFO +
|
||||
GLIBTOP_SUID_NETLOAD +
|
||||
GLIBTOP_SUID_INTERFACE_NAMES +
|
||||
GLIBTOP_SUID_PPP;
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct utsname uts;
|
||||
int uid, euid, gid, egid;
|
||||
glibtop *server;
|
||||
|
||||
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
|
||||
|
||||
uid = getuid (); euid = geteuid ();
|
||||
gid = getgid (); egid = getegid ();
|
||||
|
||||
if (uname (&uts) < 0) _exit (1);
|
||||
|
||||
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
|
||||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
|
||||
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
|
||||
fprintf (stderr, "Can only run on %s %s %s\n",
|
||||
LIBGTOP_COMPILE_SYSTEM,
|
||||
LIBGTOP_COMPILE_RELEASE,
|
||||
LIBGTOP_COMPILE_MACHINE);
|
||||
_exit (1);
|
||||
}
|
||||
|
||||
server = glibtop_global_server;
|
||||
|
||||
if (!server->_priv)
|
||||
server->_priv = 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);
|
||||
}
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_DAEMON_H__
|
||||
#define __GLIBTOP_DAEMON_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/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
|
@@ -1,62 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
void
|
||||
glibtop_send_version_i (glibtop *server, int fd)
|
||||
{
|
||||
char buffer [BUFSIZ];
|
||||
size_t size;
|
||||
|
||||
sprintf (buffer, LIBGTOP_VERSION_STRING,
|
||||
LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
|
||||
sizeof (glibtop_command),
|
||||
sizeof (glibtop_response),
|
||||
sizeof (glibtop_union),
|
||||
sizeof (glibtop_sysdeps));
|
||||
|
||||
size = strlen (buffer) + 1;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "SERVER ID: |%s|\n", buffer);
|
||||
#endif
|
||||
|
||||
if (fd == 0) {
|
||||
if (write (1, (const void *) &size, sizeof (size)) < 0)
|
||||
glibtop_warn_io_r (server, "write");
|
||||
} else {
|
||||
if (send (fd, (const void *) &size, sizeof (size), 0) < 0)
|
||||
glibtop_warn_io_r (server, "send");
|
||||
}
|
||||
|
||||
if (fd == 0) {
|
||||
if (write (1, (const void *) buffer, size) < 0)
|
||||
glibtop_warn_io_r (server, "write");
|
||||
} else {
|
||||
if (send (fd, (const void *) buffer, size, 0) < 0)
|
||||
glibtop_warn_io_r (server, "send");
|
||||
}
|
||||
}
|
@@ -1,43 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
void
|
||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (size == 0) return;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
|
||||
#endif
|
||||
|
||||
ret = write (priv->output [1], buf, size);
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "write %d bytes", size);
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
*.la
|
||||
marshal.c
|
@@ -1,68 +0,0 @@
|
||||
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.
|
||||
|
@@ -1,47 +0,0 @@
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
if LIBGTOP_USE_GMODULE
|
||||
backendlibdir = $(backenddir)
|
||||
else
|
||||
backendlibdir = $(libdir)
|
||||
endif
|
||||
|
||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-sysdeps.backend
|
||||
|
||||
noinst_HEADERS = \
|
||||
backend-sysdeps.h
|
||||
|
||||
backendlib_LTLIBRARIES = \
|
||||
libgtop_backend_sysdeps.la
|
||||
|
||||
libgtop_backend_sysdeps_la_SOURCES = \
|
||||
backend-sysdeps.c \
|
||||
marshal.c
|
||||
|
||||
libgtop_backend_sysdeps_la_LDFLAGS = \
|
||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
||||
|
||||
libgtop_backend_sysdeps_la_LIBADD = \
|
||||
$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la
|
||||
$(top_builddir)/lib/libgtop_server.la
|
||||
|
||||
BUILT_SOURCES = \
|
||||
marshal.c
|
||||
|
||||
EXTRA_DIST = \
|
||||
marshal.pl \
|
||||
libgtop-sysdeps.backend
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t marshal.c
|
||||
|
@@ -1,76 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-sysdeps.h>
|
||||
|
||||
static int
|
||||
_open_sysdeps (glibtop_server *, glibtop_backend *, 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,36 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_SYSDEPS_H__
|
||||
#define __GLIBTOP_BACKEND_SYSDEPS_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/glibtop-backend.h>
|
||||
#include <glibtop/glibtop-backend-info.h>
|
||||
|
||||
#endif
|
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||
|
||||
<libgtop:Backend>
|
||||
<libgtop:Name>glibtop-backend-sysdeps</libgtop:Name>
|
||||
<libgtop:Location>
|
||||
<libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName>
|
||||
<libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName>
|
||||
</libgtop:Location>
|
||||
</libgtop:Backend>
|
||||
|
||||
</libgtop:Backends>
|
@@ -1,195 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 1;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* marshal.c */';
|
||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <backend-sysdeps.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include <glibtop/call-vector.h>';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $orig;
|
||||
|
||||
return if $orig =~ /^@/;
|
||||
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$first_param_name = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
}
|
||||
}
|
||||
|
||||
if ($line_fields[3] eq '') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
||||
} else {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
||||
}
|
||||
|
||||
$func_decl = 'static '.$retval."\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
}
|
||||
|
||||
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
||||
|
||||
$total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n",
|
||||
&toupper($feature), $total_code,
|
||||
&toupper($feature));
|
||||
|
||||
print $total_code;
|
||||
}
|
||||
|
||||
$init_hook_code = '';
|
||||
$call_vector_code = '';
|
||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||
$feature = $features{$nr};
|
||||
|
||||
if ($feature =~ /^@/) {
|
||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||
} else {
|
||||
$call_vector_code .= sprintf
|
||||
(qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n],
|
||||
&toupper($feature), $feature);
|
||||
}
|
||||
|
||||
if (!($feature =~ /^@/)) {
|
||||
$init_hook_code .= sprintf
|
||||
(qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n],
|
||||
&toupper($feature), $feature);
|
||||
}
|
||||
}
|
||||
$init_hook_code .= sprintf (qq[\tNULL\n]);
|
||||
|
||||
chop $init_hook_code;
|
||||
chop $call_vector_code;
|
||||
|
||||
print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {';
|
||||
print $call_vector_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
||||
print 'glibtop_init_func_t _glibtop_init_hook_s [] = {';
|
||||
print $init_hook_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
215
configure.in
215
configure.in
@@ -2,59 +2,49 @@ dnl
|
||||
dnl Configure script for the Gnome library
|
||||
dnl
|
||||
|
||||
AC_INIT(copyright.txt)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
LIBGTOP_MAJOR_VERSION=2
|
||||
LIBGTOP_MINOR_VERSION=7
|
||||
LIBGTOP_MICRO_VERSION=4
|
||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
|
||||
m4_define([libgtop_major_version], [2])
|
||||
m4_define([libgtop_minor_version], [14])
|
||||
m4_define([libgtop_micro_version], [2])
|
||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
||||
|
||||
dnl increment if the interface has additions, changes, removals.
|
||||
LIBGTOP_CURRENT=3
|
||||
m4_define([libgtop_current], [7])
|
||||
|
||||
dnl increment any time the source changes; set to
|
||||
dnl 0 if you increment CURRENT
|
||||
LIBGTOP_REVISION=0
|
||||
m4_define([libgtop_revision], [0])
|
||||
|
||||
dnl increment if any interfaces have been added; set to 0
|
||||
dnl if any interfaces have been removed. removal has
|
||||
dnl precedence over adding, so set to 0 if both happened.
|
||||
LIBGTOP_AGE=1
|
||||
|
||||
# you can set this to `-snap' for instance to create
|
||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||
LIBGTOP_VERSION_SUFFIX=
|
||||
m4_define([libgtop_age], [0])
|
||||
|
||||
# Increase each time you change the client/server protocol.
|
||||
LIBGTOP_SERVER_VERSION=5
|
||||
m4_define([libgtop_server_version], [5])
|
||||
|
||||
# Version code calculation
|
||||
LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION`
|
||||
m4_define([libgtop_version_code], [m4_eval(libgtop_major_version * 1000000 + libgtop_minor_version * 1000 + libgtop_micro_version)])
|
||||
|
||||
AC_SUBST(LIBGTOP_MAJOR_VERSION)
|
||||
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
||||
AC_SUBST(LIBGTOP_MICRO_VERSION)
|
||||
AC_SUBST(LIBGTOP_INTERFACE_AGE)
|
||||
AC_SUBST(LIBGTOP_BINARY_AGE)
|
||||
AC_SUBST(LIBGTOP_SERVER_VERSION)
|
||||
AC_SUBST(LIBGTOP_VERSION)
|
||||
AC_SUBST(LIBGTOP_VERSION_CODE)
|
||||
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
|
||||
AC_INIT([libgtop], [libgtop_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=libgtop])
|
||||
AC_CONFIG_SRCDIR(copyright.txt)
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
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
|
||||
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
||||
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)
|
||||
AC_SUBST(LT_VERSION_INFO,
|
||||
["-version-info libgtop_current:libgtop_revision:libgtop_age"])
|
||||
|
||||
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
|
||||
|
||||
@@ -109,32 +99,11 @@ fi
|
||||
AM_CONDITIONAL(INODEDB, test x$build_inodedb = xyes)
|
||||
|
||||
if test x$build_inodedb = xyes ; then
|
||||
AC_DEFINE(GLIBTOP_INODEDB)
|
||||
AC_DEFINE(GLIBTOP_INODEDB, 1,
|
||||
[Define if the libgtop inodedb should be built])
|
||||
fi
|
||||
|
||||
AC_DEFINE(GLIBTOP_NAMES)
|
||||
|
||||
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"
|
||||
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.0.0
|
||||
GLIB_REQUIRED=2.6.0
|
||||
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
@@ -148,6 +117,11 @@ else
|
||||
AC_MSG_ERROR([libgtop requires the popt development libraries])
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADER(ifaddrs.h, [HAVE_IFADDRS_H=yes], [HAVE_IFADDRS_H=no])
|
||||
if test x$HAVE_IFADDRS_H = xyes ; then
|
||||
AC_DEFINE(HAVE_IFADDRS_H, 1, [defined if you have ifaddrs.h])
|
||||
fi
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
@@ -187,32 +161,42 @@ if test x$HAVE_ISDN_H = xyes ; then
|
||||
fi
|
||||
|
||||
dnl AIX
|
||||
AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the 'vmgetinfo' function in libperfstat])
|
||||
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
|
||||
AC_CHECK_LIB(perfstat, vmgetinfo,
|
||||
AC_DEFINE(HAVE_VMGETINFO, 1,
|
||||
[Define to 1 if you have the 'vmgetinfo' function in libperfstat]))
|
||||
|
||||
dnl Solaris
|
||||
AC_CHECK_LIB(kstat, kstat_open)
|
||||
AC_CHECK_FUNCS(getloadavg swapctl)
|
||||
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
|
||||
case "$host_os" in
|
||||
solaris*)
|
||||
AC_CHECK_LIB(kstat, kstat_open)
|
||||
AC_CHECK_FUNCS(getloadavg swapctl)
|
||||
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
|
||||
|
||||
dnl Some versions of Solaris require -lelf for -lkvm
|
||||
AC_CHECK_LIB(kvm, kvm_open,[
|
||||
LIBS="-lkvm $LIBS"
|
||||
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
|
||||
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
|
||||
[ac_save_LIBS="$LIBS"
|
||||
LIBS="-lkvm -lelf $LIBS"
|
||||
AC_TRY_LINK([char kvm_open();], [kvm_open()],
|
||||
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
|
||||
LIBS="$ac_save_LIBS"
|
||||
])
|
||||
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
LIBS="-lkvm -lelf $LIBS"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Some versions of Solaris require -lelf for -lkvm
|
||||
case $host_os in
|
||||
solaris[[8-9]] | solaris2.[[0-9]].*)
|
||||
AC_CHECK_LIB(kvm, kvm_open,[
|
||||
LIBS="-lkvm $LIBS"
|
||||
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
|
||||
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
|
||||
[ac_save_LIBS="$LIBS"
|
||||
LIBS="-lkvm -lelf $LIBS"
|
||||
AC_TRY_LINK([char kvm_open();], [kvm_open()],
|
||||
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
|
||||
LIBS="$ac_save_LIBS"
|
||||
])
|
||||
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
LIBS="-lkvm -lelf $LIBS"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl For DEC OSF1
|
||||
AC_CHECK_LIB(mach, vm_statistics)
|
||||
@@ -232,7 +216,7 @@ CFLAGS=$saved_CFLAGS
|
||||
AC_CHECK_FUNC(socket,
|
||||
[AC_CHECK_HEADER(netinet/in.h,
|
||||
[AC_CHECK_HEADER(arpa/inet.h, [
|
||||
AC_DEFINE(HAVE_SOCKETS)
|
||||
AC_DEFINE(HAVE_SOCKETS, 1, [Define if BSD sockets are supported])
|
||||
AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
|
||||
AC_TRY_LINK([
|
||||
#include <sys/types.h>
|
||||
@@ -240,7 +224,7 @@ AC_CHECK_FUNC(socket,
|
||||
#include <sys/un.h>
|
||||
],
|
||||
[static struct sockaddr_un x; x.sun_len = 1;],
|
||||
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
|
||||
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un has a sun_len member])],
|
||||
[AC_MSG_RESULT(no)])])])])
|
||||
|
||||
dnl Checks for library functions.
|
||||
@@ -250,13 +234,15 @@ AC_TYPE_SIGNAL
|
||||
AC_FUNC_STRFTIME
|
||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||
|
||||
ALL_LINGUAS="am ar az be bg bn 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 nl nn no pa pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
|
||||
IT_PROG_INTLTOOL([0.35.0])
|
||||
|
||||
GETTEXT_PACKAGE=libgtop-2.0
|
||||
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
|
||||
GLIB_DEFINE_LOCALEDIR([GTOPLOCALEDIR])
|
||||
|
||||
AC_PATH_XTRA
|
||||
|
||||
@@ -283,7 +269,7 @@ test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h, ,with_xauth=no)
|
||||
test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) }
|
||||
test -z "$with_xauth" && with_xauth=yes
|
||||
if test "$with_xauth" = "yes"; then
|
||||
AC_DEFINE(HAVE_XAUTH)
|
||||
AC_DEFINE(HAVE_XAUTH, 1, [Define if Xauth is supported])
|
||||
XE_SPACE(libs_xauth, $X_LIBS -lXau)
|
||||
fi
|
||||
CPPFLAGS="$saved_CPPFLAGS"
|
||||
@@ -293,8 +279,8 @@ dnl For diskusage stuff
|
||||
GNOME_FILEUTILS_CHECKS
|
||||
|
||||
dnl Debugging
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
||||
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 1, [Define to enable debugging]),)
|
||||
AC_ARG_ENABLE(fatal-warnings, [ --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.
|
||||
LIBGTOP_LIBS='-L$(libdir)'
|
||||
@@ -318,8 +304,14 @@ fi
|
||||
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS $GLIB_CFLAGS"
|
||||
|
||||
LIBGTOP_BINDIR='$(bindir)'
|
||||
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
|
||||
libgtop_save_prefix="$prefix"
|
||||
libgtop_save_exec_prefix="$exec_prefix"
|
||||
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||
test "x$exec_prefix" = xNONE && exec_prefix=$prefix
|
||||
LIBGTOP_BINDIR=`eval echo "${bindir}"`
|
||||
LIBGTOP_SERVER=`eval echo "${bindir}/libgtop_server2"`
|
||||
prefix="$libgtop_save_prefix"
|
||||
exec_prefix="$libgtop_save_exec_prefix"
|
||||
|
||||
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||
AC_SUBST(sysdeps_dir)
|
||||
@@ -330,15 +322,11 @@ else
|
||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
|
||||
fi
|
||||
|
||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
||||
LIBGTOP_EXTRA_LIBS="$GLIB_LIBS $LIBGTOP_EXTRA_LIBS"
|
||||
|
||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS"
|
||||
|
||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
||||
|
||||
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
||||
|
||||
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
||||
|
||||
@@ -346,15 +334,33 @@ AC_SUBST(machine_incs)
|
||||
|
||||
if test "$GCC" = "yes" ; then
|
||||
CFLAGS="\
|
||||
-Winline \
|
||||
-Wall \
|
||||
-std=gnu89 \
|
||||
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
||||
-Wnested-externs -Wpointer-arith \
|
||||
-Wcast-align -Wsign-compare \
|
||||
-fno-strict-aliasing \
|
||||
$CFLAGS"
|
||||
fi
|
||||
|
||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $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"'\"'
|
||||
INCLUDES="-I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $X_CFLAGS"
|
||||
|
||||
# Add various defines to the config.h file ...
|
||||
AH_VERBATIM([_GNU_SOURCE],
|
||||
[/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# define _GNU_SOURCE
|
||||
#endif])
|
||||
AC_DEFINE([_IN_LIBGTOP], 1,
|
||||
[Note that we are building libgtop rather than using it])
|
||||
AC_DEFINE([LIBGTOP_VERSION], ["libgtop_version"],
|
||||
[The libgtop version number])
|
||||
AC_DEFINE([LIBGTOP_SERVER_VERSION], ["libgtop_server_version"],
|
||||
[The libgtop server version])
|
||||
AC_DEFINE([LIBGTOP_VERSION_CODE], [libgtop_version_code],
|
||||
[The libgtop version number as an integer])
|
||||
AC_DEFINE_UNQUOTED([LIBGTOP_SERVER], ["$LIBGTOP_SERVER"],
|
||||
[The path to the libgtop server])
|
||||
|
||||
AC_SUBST(INCLUDES)
|
||||
|
||||
@@ -362,8 +368,6 @@ AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
AC_SUBST(LIBGTOP_LIBS)
|
||||
AC_SUBST(LIBGTOP_INCS)
|
||||
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
||||
AC_SUBST(LIBGTOP_NAMES_INCS)
|
||||
AC_SUBST(LIBGTOP_BINDIR)
|
||||
AC_SUBST(LIBGTOP_SERVER)
|
||||
|
||||
@@ -377,7 +381,7 @@ fi
|
||||
AC_SUBST(sysdeps_suid_lib)
|
||||
AC_SUBST(server_programs)
|
||||
|
||||
AC_OUTPUT([
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
libgtop.spec
|
||||
po/Makefile.in
|
||||
@@ -386,13 +390,11 @@ include/Makefile
|
||||
include/glibtop/Makefile
|
||||
sysdeps/Makefile
|
||||
sysdeps/common/Makefile
|
||||
sysdeps/names/Makefile
|
||||
sysdeps/stub/Makefile
|
||||
sysdeps/stub_suid/Makefile
|
||||
sysdeps/sun4/Makefile
|
||||
sysdeps/osf1/Makefile
|
||||
sysdeps/linux/Makefile
|
||||
sysdeps/kernel/Makefile
|
||||
sysdeps/freebsd/Makefile
|
||||
sysdeps/solaris/Makefile
|
||||
sysdeps/aix/Makefile
|
||||
@@ -403,4 +405,7 @@ lib/Makefile
|
||||
examples/Makefile
|
||||
doc/Makefile
|
||||
libgtop-2.0.pc
|
||||
libgtopconfig.h
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
@@ -1,10 +1,9 @@
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
This file is part of LibGTop 2.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
Contributed by Benoît Dejean <TazForEver@dlfp.org>, 2004.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
|
3
debian/libgtop-dev.files.in
vendored
3
debian/libgtop-dev.files.in
vendored
@@ -1,17 +1,14 @@
|
||||
@PREFIX@/lib/libgtop.a
|
||||
@PREFIX@/lib/libgtop_common.a
|
||||
@PREFIX@/lib/libgtop_names.a
|
||||
@PREFIX@/lib/libgtop_suid_common.a
|
||||
@PREFIX@/lib/libgtop_sysdeps.a
|
||||
@PREFIX@/lib/libgtop.la
|
||||
@PREFIX@/lib/libgtop_common.la
|
||||
@PREFIX@/lib/libgtop_names.la
|
||||
@PREFIX@/lib/libgtop_suid_common.la
|
||||
@PREFIX@/lib/libgtop_sysdeps.la
|
||||
@PREFIX@/lib/libgtopConf.sh
|
||||
@PREFIX@/lib/libgtop.so
|
||||
@PREFIX@/lib/libgtop_common.so
|
||||
@PREFIX@/lib/libgtop_names.so
|
||||
@PREFIX@/lib/libgtop_suid_common.so
|
||||
@PREFIX@/lib/libgtop_sysdeps.so
|
||||
@PREFIX@/lib/libgtop-features.def
|
||||
|
@@ -1,3 +1,20 @@
|
||||
2006-02-21 Benoît Dejean <benoit@placenet.org>
|
||||
|
||||
* reference.texi: Fixed glibtop_get_proc_state doc.
|
||||
Patch by Emil Nowak <emil5@go2.pl>.
|
||||
|
||||
2005-01-03 Benoît Dejean <TazForEver@dlfp.org>
|
||||
|
||||
* reference.texi: Updated.
|
||||
|
||||
2004-12-04 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* reference.texi: Updated.
|
||||
|
||||
2004-08-03 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* reference.texi: Updated.
|
||||
|
||||
2004-07-07 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* reference.texi: updated.
|
||||
|
@@ -1,40 +1,6 @@
|
||||
info_TEXINFOS = libgtop2.texi
|
||||
|
||||
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.texi \
|
||||
auto-macros.texi version.texi main.texi \
|
||||
white-paper.texi
|
||||
version.texi main.texi white-paper.texi
|
||||
|
||||
MAKEINFO = @MAKEINFO@ -I @libgtop_top_builddir@/doc
|
||||
|
||||
EXTRA_DIST = auto-macros.texi.in
|
||||
|
||||
auto-macros.texi: auto-macros.texi.in Makefile
|
||||
## Use sed and then mv to avoid problems if the user interrupts.
|
||||
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
||||
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \
|
||||
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
||||
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
||||
-e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \
|
||||
-e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \
|
||||
-e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \
|
||||
-e 's#\%LIBGTOP_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
|
||||
AM_MAKEINFOFLAGS = -I $(libgtop_top_builddir)/doc
|
||||
|
@@ -1,12 +0,0 @@
|
||||
@c LibGTop major, minor and micro version.
|
||||
@set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION%
|
||||
@set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION%
|
||||
@set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION%
|
||||
|
||||
@c LibGTop version and numerical version code ("1.234.567" -> 1234567).
|
||||
@set LIBGTOP_VERSION "%LIBGTOP_VERSION%"
|
||||
@set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE%
|
||||
|
||||
@c LibGTop server version, increased each time the protocol changes.
|
||||
@set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION%
|
||||
|
@@ -5,7 +5,6 @@
|
||||
@setchapternewpage odd
|
||||
@c %**end of header
|
||||
|
||||
@include auto-macros.texi
|
||||
@include version.texi
|
||||
|
||||
@ifinfo
|
||||
|
@@ -56,18 +56,19 @@ struct _glibtop_cpu
|
||||
nice,
|
||||
sys,
|
||||
idle,
|
||||
iowait,
|
||||
irq,
|
||||
softirq,
|
||||
frequency,
|
||||
xcpu_total [GLIBTOP_NCPU],
|
||||
xcpu_user [GLIBTOP_NCPU],
|
||||
xcpu_nice [GLIBTOP_NCPU],
|
||||
xcpu_sys [GLIBTOP_NCPU],
|
||||
@ifset LIBGTOP-1-1
|
||||
xcpu_idle [GLIBTOP_NCPU],
|
||||
xcpu_iowait [GLIBTOP_NCPU],
|
||||
xcpu_irq [GLIBTOP_NCPU],
|
||||
xcpu_softirq [GLIBTOP_NCPU],
|
||||
xcpu_flags;
|
||||
@end ifset
|
||||
@ifclear LIBGTOP-1-1
|
||||
xcpu_idle [GLIBTOP_NCPU];
|
||||
@end ifclear
|
||||
@};
|
||||
@end cartouche
|
||||
@end example
|
||||
@@ -92,25 +93,33 @@ Number of clock ticks the system spent in system mode.
|
||||
@item idle
|
||||
Number of clock ticks the system spent in the idle task.
|
||||
|
||||
@item iowait
|
||||
Number of clock ticks the system spent waiting for I/O to complete.
|
||||
|
||||
@item irq
|
||||
Number of clock ticks the system spent servicing interrupts.
|
||||
|
||||
@item softirq
|
||||
Number of clock ticks the system spent servicing softirqs.
|
||||
|
||||
@item frequency
|
||||
Tick frequency (default is 100).
|
||||
|
||||
@end table
|
||||
|
||||
The @samp{xcpu_} values are for SMP systems - they are the same than
|
||||
@code{total}, @code{user}, @code{nice}, @code{sys} and @code{idle}
|
||||
@code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle},
|
||||
@code{iowait}, @code{irq} and @code{softirq}
|
||||
except that they are arrays of @code{GLIBTOP_NCPU} (defined in
|
||||
@file{<glibtop/limits.h>}) elements and contain one value for each CPU
|
||||
@file{<glibtop/cpu.h>}) elements and contain one value for each CPU
|
||||
in the system.
|
||||
|
||||
@ifset LIBGTOP-1-1
|
||||
@table @code
|
||||
@item xcpu_flags
|
||||
This is interpreted as a bit-field: on systems like Solaris, not all CPUs
|
||||
need to be running all the time, so we set the corresponding bit for each
|
||||
CPU that is currently running.
|
||||
@end table
|
||||
@end ifset
|
||||
|
||||
Please note that all of the cpu values are absolute values measured in
|
||||
certain units (to get seconds, divide them by @code{frequency}) since system
|
||||
@@ -484,7 +493,7 @@ glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf,
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
Declaration of @code{glibtop_proc_state} in @file{<glibtop/proc_state.h>}:
|
||||
Declaration of @code{glibtop_proc_state} in @file{<glibtop/procstate.h>}:
|
||||
|
||||
@example
|
||||
@cartouche
|
||||
@@ -572,6 +581,7 @@ There are some constants for the @code{state} field:
|
||||
#define GLIBTOP_PROCESS_ZOMBIE 8
|
||||
#define GLIBTOP_PROCESS_STOPPED 16
|
||||
#define GLIBTOP_PROCESS_SWAPPING 32
|
||||
#define GLIBTOP_PROCESS_DEAD 64
|
||||
@end cartouche
|
||||
@end example
|
||||
@end ifset
|
||||
@@ -670,7 +680,7 @@ Standard unix nice level of process.
|
||||
Number of additional process groups.
|
||||
@item groups
|
||||
Array of additional process groups@*
|
||||
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/limits.h>}).
|
||||
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/procuid.h>}).
|
||||
@end table
|
||||
|
||||
@page
|
||||
@@ -717,7 +727,7 @@ Number of pages of virtual memory.
|
||||
@item resident
|
||||
Number of residnet set (non-swapped) pages.
|
||||
@item share
|
||||
Number of pages of shared (mmap'd) memory.
|
||||
Number of pages of shared (mmap\'d) memory.
|
||||
@item rss
|
||||
Number of pages the process has in real memory, minus 3 for administrative
|
||||
purposes.
|
||||
@@ -830,6 +840,7 @@ struct _glibtop_proc_time
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
|
||||
@table @code
|
||||
@item start_time
|
||||
Start time of process in seconds since the epoch
|
||||
@@ -856,6 +867,18 @@ SMP user-mode CPU time accumulated by process
|
||||
SMP kernel-mode CPU time accumulated by process
|
||||
@end table
|
||||
|
||||
|
||||
Please note that under Linux, @code{start_time} value may be strange.
|
||||
Linux kernel defines @code{INITIAL_JIFFIES} which implies a time
|
||||
shift. Because @code{INITIAL_JIFFIES} is not user-space defined, we
|
||||
cannot use it to compute accurate @code{start_time}. On Linux2.6,
|
||||
@code{INITIAL_JIFFIES} is 300 so @code{start_time} is always 3s
|
||||
different from real start time of the given process. You may also get
|
||||
shift results if your system clock is not synchronised with your
|
||||
hardware clock. See @samp{man hwclock}.
|
||||
|
||||
|
||||
|
||||
@page
|
||||
@node glibtop_proc_signal, glibtop_proc_kernel, glibtop_proc_time, System Dependent
|
||||
@subsection Process Signal information
|
||||
@@ -1037,16 +1060,7 @@ struct _glibtop_proc_segment
|
||||
dirty_size,
|
||||
start_code,
|
||||
end_code,
|
||||
start_data,
|
||||
end_data,
|
||||
start_brk,
|
||||
end_brk,
|
||||
start_stack,
|
||||
start_mmap,
|
||||
arg_start,
|
||||
arg_end,
|
||||
env_start,
|
||||
env_end;
|
||||
start_stack;
|
||||
@};
|
||||
@end cartouche
|
||||
@end example
|
||||
@@ -1470,13 +1484,7 @@ struct _glibtop_mountentry
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
@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
|
||||
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}.
|
||||
|
||||
@table @code
|
||||
@item devname
|
||||
@@ -1519,6 +1527,8 @@ struct _glibtop_fsusage
|
||||
files,
|
||||
ffree;
|
||||
guint32 block_size;
|
||||
guint64 read,
|
||||
write;
|
||||
@};
|
||||
@end cartouche
|
||||
@end example
|
||||
@@ -1536,10 +1546,12 @@ Total file nodes.
|
||||
Free file nodes.
|
||||
@item block_size
|
||||
Block size in bytes.
|
||||
@item read
|
||||
Total blocks read.
|
||||
@item write
|
||||
Total blocks written.
|
||||
@end table
|
||||
|
||||
Blocks are usually 512 bytes.
|
||||
|
||||
@page
|
||||
@node Library Functions, , Common Functions, Reference Manual
|
||||
@section Library Functions
|
||||
|
@@ -1,2 +0,0 @@
|
||||
Makefile.in
|
||||
Makefile
|
@@ -1,9 +0,0 @@
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-backends.dtd \
|
||||
libgtop-backend-info.dtd
|
||||
|
||||
EXTRA_DIST = |
|
||||
$(backend_DATA)
|
||||
|
@@ -1,23 +0,0 @@
|
||||
<!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)>
|
||||
<!ELEMENT name (short_name,long_name?)>
|
||||
<!ELEMENT short_name (#PCDATA)>
|
||||
<!ELEMENT long_name (#PCDATA)>
|
||||
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
|
||||
<!ELEMENT authors (author)+>
|
||||
<!ELEMENT author (author_name,author_email?)>
|
||||
<!ELEMENT author_name (#PCDATA)>
|
||||
<!ELEMENT author_email (#PCDATA)>
|
||||
|
||||
<!ELEMENT legalnotice (license,copyright?)>
|
||||
<!ELEMENT license (#PCDATA)>
|
||||
|
||||
<!ELEMENT copyright (holder)+>
|
||||
<!ELEMENT holder (holder_year?,holder_name,holder_email?)>
|
||||
<!ELEMENT holder_year (#PCDATA)>
|
||||
<!ELEMENT holder_name (#PCDATA)>
|
||||
<!ELEMENT holder_email (#PCDATA)>
|
||||
|
||||
<!ELEMENT comments (comment)+>
|
||||
<!ELEMENT comment (#PCDATA)>
|
@@ -1,11 +0,0 @@
|
||||
<!ELEMENT Backends (Backend)+>
|
||||
|
||||
<!ELEMENT Backend (Name,Location)>
|
||||
<!ELEMENT Name (#PCDATA)>
|
||||
|
||||
<!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)>
|
||||
<!ELEMENT LibtoolName (#PCDATA)>
|
||||
<!ELEMENT ShlibName (#PCDATA)>
|
||||
|
||||
<!ELEMENT ExtraLibs (ExtraLib)+>
|
||||
<!ELEMENT ExtraLib (LibtoolName?,ShlibName)>
|
@@ -14,3 +14,14 @@ 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
|
||||
proclist
|
||||
df
|
||||
df_static
|
||||
netlist
|
||||
netlist_static
|
||||
openfiles
|
||||
openfiles_static
|
||||
|
@@ -1,3 +1,108 @@
|
||||
2006-02-27 Benoît Dejean <benoit@placenet.org>
|
||||
|
||||
* pprint.c: (pprint_get_proc_mem), (main):
|
||||
|
||||
Added proc_mem example.
|
||||
|
||||
2005-12-15 Benoît Dejean <benoit@placenet.org>
|
||||
|
||||
* proclist.c: (print_pids), (main):
|
||||
|
||||
Improved example.
|
||||
|
||||
2005-12-12 Benoît Dejean <benoit@placenet.org>
|
||||
|
||||
* .cvsignore:
|
||||
* Makefile.am:
|
||||
* proclist.c: (main):
|
||||
* procmap.c: (main):
|
||||
|
||||
Added quick example for glibtop_get_proclist()
|
||||
and updated procmap example to display smap.
|
||||
|
||||
2005-08-02 Benoît Dejean <TazForEver@dlfp.org>
|
||||
|
||||
* pprint.c: (pprint_get_cpu), (pprint_get_loadavg),
|
||||
(pprint_get_mem), (pprint_get_msg_limits), (pprint_get_netlist),
|
||||
(pprint_get_swap), (pprint_get_uptime), (pprint_get_proc_kernel),
|
||||
(main):
|
||||
|
||||
Added pprint_get_proc_kernel(pid).
|
||||
Fixed prototypes.
|
||||
|
||||
2005-01-22 Benoît Dejean <TazForEver@dlfp.org>
|
||||
|
||||
* openfiles.c: (show_open_files): Updated.
|
||||
|
||||
2004-12-23 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* netload.c: (main):
|
||||
* procmap.c: (main): s/glibtop_error/g_error/g
|
||||
|
||||
2004-11-15 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* netload.c: (hwaddress_format_for_display), (main): Updated.
|
||||
|
||||
2004-11-13 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* pprint.c: (pprint_get_fsusage), (pprint_get_mountlist),
|
||||
(pprint_get_netload), (pprint_get_netlist), (main): Updated.
|
||||
|
||||
2004-09-25 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* pprint.c: (main): Re-added pprint_get_msg_limits()
|
||||
|
||||
i2004-09-25 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* df.c: (main):
|
||||
* pprint.c: (main):
|
||||
* procargs.c: (main): Added missing call to glibgtop_init() / glibtop_close()
|
||||
|
||||
2004-09-24 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* .cvsignore:
|
||||
* Makefile.am:
|
||||
* ../configure.in
|
||||
* df.c: (print_fsusage), (main): Added new example, just like 'df'.
|
||||
|
||||
2004-09-22 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* pprint.c: (main): Disable pprint_get_msg_limits() because it can fail.
|
||||
|
||||
2004-09-21 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* pprint.c: (pprint_get_swap), (main): Updated.
|
||||
|
||||
2004-09-21 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* procargs.c: (show_args), (main): Updated.
|
||||
|
||||
2004-09-21 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* pprint.c: (pprint_get_mountlist), (pprint_get_netload),
|
||||
(pprint_get_uptime), (main): Updated.
|
||||
|
||||
2004-09-21 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* pprint.c: (pprint_get_mountlist): Updated.
|
||||
|
||||
2004-09-21 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* procargs.c: (show_args), (main): Updated.
|
||||
|
||||
2004-09-20 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* .cvsignore:
|
||||
* Makefile.am:
|
||||
* pprint.c: (pprint_get_cpu), (pprint_get_fsusage),
|
||||
(pprint_get_loadavg), (pprint_get_mem), (pprint_get_mountlist),
|
||||
(pprint_get_msg_limits), (main): Added new example : pretty prints
|
||||
the result of glibtop_*. Work in progress.
|
||||
|
||||
Now builds procargs.
|
||||
|
||||
* ../configure.in: Added to static list.
|
||||
|
||||
2004-07-07 Benoît Dejean <tazforever@dlfp.org>
|
||||
|
||||
* procargs.c: Added glibtop_get_proc_argv demo.
|
||||
|
@@ -6,81 +6,48 @@ INCLUDES = @INCLUDES@
|
||||
|
||||
DEFS = @DEFS@
|
||||
|
||||
noinst_PROGRAMS = first second\
|
||||
noinst_PROGRAMS = first second pprint procargs df netlist \
|
||||
mountlist procmap netload sysdeps timings \
|
||||
@static_targets@ @smp_examples@
|
||||
|
||||
EXTRA_PROGRAMS = first_static second_static \
|
||||
mountlist_static procmap_static \
|
||||
third third_static smp smp_static \
|
||||
netload_static sysdeps_static \
|
||||
timings_static
|
||||
openfiles smp proclist
|
||||
|
||||
first_SOURCES = first.c
|
||||
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_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
second_static_SOURCES = $(second_SOURCES)
|
||||
second_static_LDADD = $(second_LDADD)
|
||||
second_static_LDFLAGS = -static
|
||||
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
||||
|
||||
procmap_SOURCES = procmap.c
|
||||
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_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_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
|
||||
sysdeps_static_LDADD = $(sysdeps_LDADD)
|
||||
sysdeps_static_LDFLAGS = -static
|
||||
|
||||
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names-2.0.la
|
||||
|
||||
third_SOURCES = third.c
|
||||
third_LDADD = $(third_names_LIBS) \
|
||||
$(top_builddir)/lib/libgtop-2.0.la \
|
||||
@INTLLIBS@
|
||||
|
||||
third_static_SOURCES = $(third_SOURCES)
|
||||
third_static_LDADD = $(third_LDADD)
|
||||
third_static_LDFLAGS = -static
|
||||
|
||||
mountlist_SOURCES = mountlist.c
|
||||
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
||||
mountlist_static_LDADD = $(mountlist_LDADD)
|
||||
mountlist_static_LDFLAGS= -static
|
||||
|
||||
|
||||
smp_SOURCES = smp.c
|
||||
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
smp_static_SOURCES = $(smp_SOURCES)
|
||||
smp_static_LDADD = $(smp_LDADD)
|
||||
smp_static_LDFLAGS = -static
|
||||
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
||||
|
||||
timings_SOURCES = timings.c
|
||||
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_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
procargs_SOURCES = procargs.c
|
||||
procargs_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
df_SOURCES = df.c
|
||||
df_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
netlist_SOURCES = netlist.c
|
||||
netlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
openfiles_SOURCES = openfiles.c
|
||||
openfiles_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
proclist_SOURCES = proclist.c
|
||||
proclist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
51
examples/df.c
Normal file
51
examples/df.c
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
#include <glibtop.h>
|
||||
|
||||
#include <glibtop/fsusage.h>
|
||||
#include <glibtop/mountlist.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
static void print_fsusage(const char *mountpoint)
|
||||
{
|
||||
glibtop_fsusage buf;
|
||||
|
||||
glibtop_get_fsusage(&buf, mountpoint);
|
||||
|
||||
printf("%-20s %-10llu %-10llu %-10llu %.1f\n",
|
||||
mountpoint,
|
||||
buf.blocks * buf.block_size >> 20,
|
||||
(buf.blocks - buf.bavail) * buf.block_size >> 20,
|
||||
buf.bavail * buf.block_size >> 20,
|
||||
(buf.blocks - buf.bavail) * 100.0 / buf.blocks
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
glibtop_mountlist buf;
|
||||
glibtop_mountentry *entries;
|
||||
size_t i;
|
||||
|
||||
glibtop_init();
|
||||
|
||||
printf("%-20s %-10s %-10s %-10s %-10s\n",
|
||||
"Filesystem", "Size", "Used", "Avail", "Use%");
|
||||
|
||||
entries = glibtop_get_mountlist(&buf, FALSE);
|
||||
|
||||
for(i = 0; i < buf.number; ++i)
|
||||
{
|
||||
print_fsusage(entries[i].mountdir);
|
||||
}
|
||||
|
||||
g_free(entries);
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <stdio.h>
|
||||
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <stdio.h>
|
||||
|
@@ -1,11 +1,6 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
/* Copyright (C) 2004 Benoît Dejean
|
||||
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
|
||||
@@ -23,12 +18,33 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_CLIENT_PRIVATE_H__
|
||||
#define __GLIBTOP_CLIENT_PRIVATE_H__
|
||||
|
||||
struct _glibtop_client_private
|
||||
{
|
||||
GSList *backend_list;
|
||||
};
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/netlist.h>
|
||||
|
||||
|
||||
int main(int argc, char *argv [])
|
||||
{
|
||||
glibtop_netlist buf;
|
||||
char **devices;
|
||||
guint32 i;
|
||||
|
||||
glibtop_init();
|
||||
|
||||
devices = glibtop_get_netlist(&buf);
|
||||
|
||||
for(i = 0; i < buf.number; ++i)
|
||||
{
|
||||
printf("net device '%s'\n", devices[i]);
|
||||
}
|
||||
|
||||
g_strfreev(devices);
|
||||
|
||||
glibtop_close();
|
||||
return 0;
|
||||
}
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <stdio.h>
|
||||
@@ -40,6 +44,24 @@
|
||||
#define PROFILE_COUNT 1
|
||||
#endif
|
||||
|
||||
|
||||
static char* hwaddress_format_for_display(glibtop_netload *buf)
|
||||
{
|
||||
unsigned i;
|
||||
GString *repr = g_string_new("");
|
||||
char *str;
|
||||
|
||||
for(i = 0; i < sizeof buf->hwaddress; ++i)
|
||||
g_string_append_printf(repr, "%02X:",
|
||||
(unsigned) ((char*)buf->hwaddress)[i]);
|
||||
|
||||
repr->str [ repr->len - 1] = ' ';
|
||||
str = g_string_free(repr, FALSE);
|
||||
g_strstrip(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
{
|
||||
@@ -47,6 +69,8 @@ main (int argc, char *argv [])
|
||||
unsigned method, count, port;
|
||||
struct in_addr addr, subnet;
|
||||
char *address_string, *subnet_string;
|
||||
char address6_string[INET6_ADDRSTRLEN], prefix6_string[INET6_ADDRSTRLEN];
|
||||
char *hwaddress_string;
|
||||
char buffer [BUFSIZ];
|
||||
|
||||
count = PROFILE_COUNT;
|
||||
@@ -76,7 +100,7 @@ main (int argc, char *argv [])
|
||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||
|
||||
if (argc != 2)
|
||||
glibtop_error ("Usage: %s interface", argv [0]);
|
||||
g_error ("Usage: %s interface", argv [0]);
|
||||
|
||||
glibtop_get_netload (&netload, argv [1]);
|
||||
|
||||
@@ -86,36 +110,50 @@ main (int argc, char *argv [])
|
||||
address_string = g_strdup (inet_ntoa (addr));
|
||||
subnet_string = g_strdup (inet_ntoa (subnet));
|
||||
|
||||
printf ("Network Load (0x%08lx):\n\n"
|
||||
"\tInterface Flags:\t0x%08lx\n"
|
||||
"\tAddress:\t\t0x%08lx - %s\n"
|
||||
"\tSubnet:\t\t\t0x%08lx - %s\n\n"
|
||||
"\tMTU:\t\t\t%ld\n"
|
||||
"\tCollisions:\t\t%ld\n\n"
|
||||
"\tPackets In:\t\t%ld\n"
|
||||
"\tPackets Out:\t\t%ld\n"
|
||||
"\tPackets Total:\t\t%ld\n\n"
|
||||
"\tBytes In:\t\t%ld\n"
|
||||
"\tBytes Out:\t\t%ld\n"
|
||||
"\tBytes Total:\t\t%ld\n\n"
|
||||
"\tErrors In:\t\t%ld\n"
|
||||
"\tErrors Out:\t\t%ld\n"
|
||||
"\tErrors Total:\t\t%ld\n\n",
|
||||
(unsigned long) netload.flags,
|
||||
(unsigned long) netload.if_flags,
|
||||
(unsigned long) netload.address, address_string,
|
||||
(unsigned long) netload.subnet, subnet_string,
|
||||
(unsigned long) netload.mtu,
|
||||
(unsigned long) netload.collisions,
|
||||
(unsigned long) netload.packets_in,
|
||||
(unsigned long) netload.packets_out,
|
||||
(unsigned long) netload.packets_total,
|
||||
(unsigned long) netload.bytes_in,
|
||||
(unsigned long) netload.bytes_out,
|
||||
(unsigned long) netload.bytes_total,
|
||||
(unsigned long) netload.errors_in,
|
||||
(unsigned long) netload.errors_out,
|
||||
(unsigned long) netload.errors_total);
|
||||
inet_ntop (AF_INET6, netload.address6, address6_string, INET6_ADDRSTRLEN);
|
||||
inet_ntop (AF_INET6, netload.prefix6, prefix6_string, INET6_ADDRSTRLEN);
|
||||
|
||||
hwaddress_string = hwaddress_format_for_display(&netload);
|
||||
|
||||
printf ("Network Load (0x%016llx):\n\n"
|
||||
"\tInterface Flags:\t0x%016llx\n"
|
||||
"\tAddress:\t\t0x%08x - %s\n"
|
||||
"\tSubnet:\t\t\t0x%08x - %s\n\n"
|
||||
"\tMTU:\t\t\t%d\n"
|
||||
"\tCollisions:\t\t%llu\n\n"
|
||||
"\tPackets In:\t\t%llu\n"
|
||||
"\tPackets Out:\t\t%llu\n"
|
||||
"\tPackets Total:\t\t%llu\n\n"
|
||||
"\tBytes In:\t\t%llu\n"
|
||||
"\tBytes Out:\t\t%llu\n"
|
||||
"\tBytes Total:\t\t%llu\n\n"
|
||||
"\tErrors In:\t\t%llu\n"
|
||||
"\tErrors Out:\t\t%llu\n"
|
||||
"\tErrors Total:\t\t%llu\n\n"
|
||||
"\tAddress6:\t\t%s\n"
|
||||
"\tPrefix6:\t\t%s\n"
|
||||
"\tScope6:\t\t\t%#03x\n\n"
|
||||
"\tHarware Address:\t%s\n\n",
|
||||
netload.flags,
|
||||
netload.if_flags,
|
||||
(guint32) netload.address, address_string,
|
||||
(guint32) netload.subnet, subnet_string,
|
||||
netload.mtu,
|
||||
netload.collisions,
|
||||
netload.packets_in,
|
||||
netload.packets_out,
|
||||
netload.packets_total,
|
||||
netload.bytes_in,
|
||||
netload.bytes_out,
|
||||
netload.bytes_total,
|
||||
netload.errors_in,
|
||||
netload.errors_out,
|
||||
netload.errors_total,
|
||||
address6_string,
|
||||
prefix6_string,
|
||||
(int) netload.scope6,
|
||||
hwaddress_string);
|
||||
|
||||
|
||||
g_free (address_string);
|
||||
g_free (subnet_string);
|
||||
|
68
examples/openfiles.c
Normal file
68
examples/openfiles.c
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/procopenfiles.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
static void show_open_files(pid_t pid)
|
||||
{
|
||||
glibtop_proc_open_files buf;
|
||||
glibtop_open_files_entry *files;
|
||||
unsigned i;
|
||||
|
||||
files = glibtop_get_proc_open_files(&buf, pid);
|
||||
|
||||
printf("<%ld>\n", (long)pid);
|
||||
|
||||
for(i = 0; i < buf.number; ++i)
|
||||
{
|
||||
printf("\tfd = %d\t", files[i].fd);
|
||||
|
||||
switch(files[i].type)
|
||||
{
|
||||
case GLIBTOP_FILE_TYPE_FILE:
|
||||
printf("file \"%s\"\n", files[i].info.file.name);
|
||||
break;
|
||||
|
||||
case GLIBTOP_FILE_TYPE_PIPE:
|
||||
printf("pipe\n");
|
||||
break;
|
||||
|
||||
case GLIBTOP_FILE_TYPE_INETSOCKET:
|
||||
printf("socket %s:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port);
|
||||
break;
|
||||
|
||||
case GLIBTOP_FILE_TYPE_LOCALSOCKET:
|
||||
printf("localsocket %s\n", files[i].info.localsock.name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
putchar('\n');
|
||||
|
||||
g_free(files);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
glibtop_init();
|
||||
|
||||
show_open_files(getpid());
|
||||
|
||||
while(*++argv)
|
||||
{
|
||||
pid_t pid = strtol(*argv, NULL, 10);
|
||||
show_open_files(pid);
|
||||
}
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
324
examples/pprint.c
Normal file
324
examples/pprint.c
Normal file
@@ -0,0 +1,324 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
#include <glibtop/union.h>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
#define buf_offsetof(MEMBER) ((ptrdiff_t)&(buf.MEMBER) - (ptrdiff_t)&buf)
|
||||
|
||||
#define HEADER_PPRINT(FUNC) printf("### " #FUNC " ###\nsizeof *buf = %lu B\n", \
|
||||
(unsigned long) sizeof buf)
|
||||
|
||||
#define PPRINT(DATA, FORMAT) printf("\t%4lu B %3lu " #DATA " = " FORMAT "\n", \
|
||||
(unsigned long) sizeof buf.DATA, (unsigned long) buf_offsetof(DATA), buf.DATA)
|
||||
|
||||
#define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do { \
|
||||
size_t i; \
|
||||
printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \
|
||||
(unsigned long) sizeof buf.ARRAY, (unsigned long) buf_offsetof(ARRAY),\
|
||||
(unsigned long) G_N_ELEMENTS(buf.ARRAY)); \
|
||||
for(i = 0; i < (SIZE - 1); ++i) printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]); \
|
||||
printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \
|
||||
} while(0)
|
||||
|
||||
#define FOOTER_PPRINT() putchar('\n');
|
||||
|
||||
|
||||
|
||||
static void pprint_get_cpu(void)
|
||||
{
|
||||
glibtop_cpu buf;
|
||||
|
||||
glibtop_get_cpu(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_cpu);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(user, "%llu");
|
||||
PPRINT(nice, "%llu");
|
||||
PPRINT(sys, "%llu");
|
||||
PPRINT(idle, "%llu");
|
||||
PPRINT(iowait, "%llu");
|
||||
PPRINT(irq, "%llu");
|
||||
PPRINT(softirq, "%llu");
|
||||
PPRINT(frequency, "%llu");
|
||||
PPRINT_ARRAY(xcpu_total, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_user, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_nice, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_sys, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_idle, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_iowait, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_irq, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_softirq, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT(xcpu_flags, "%llx");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_fsusage(const char *mountpoint)
|
||||
{
|
||||
glibtop_fsusage buf;
|
||||
|
||||
glibtop_get_fsusage(&buf, mountpoint);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_fsusage);
|
||||
printf("pprint_get_fsusage (mountpoint = \"%s\"\n", mountpoint);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(blocks, "%llu");
|
||||
PPRINT(bfree, "%llu");
|
||||
PPRINT(bavail, "%llu");
|
||||
PPRINT(files, "%llu");
|
||||
PPRINT(ffree, "%llu");
|
||||
PPRINT(block_size, "%u");
|
||||
PPRINT(read, "%llu");
|
||||
PPRINT(write, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_loadavg(void)
|
||||
{
|
||||
glibtop_loadavg buf;
|
||||
|
||||
glibtop_get_loadavg(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_loadavg);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT_ARRAY(loadavg, 3, "%f");
|
||||
PPRINT(nr_running, "%llu");
|
||||
PPRINT(nr_tasks, "%llu");
|
||||
PPRINT(last_pid, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_mem(void)
|
||||
{
|
||||
glibtop_mem buf;
|
||||
|
||||
glibtop_get_mem(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_mem);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(used, "%llu");
|
||||
PPRINT(free, "%llu");
|
||||
PPRINT(shared, "%llu");
|
||||
PPRINT(buffer, "%llu");
|
||||
PPRINT(cached, "%llu");
|
||||
PPRINT(user, "%llu");
|
||||
PPRINT(locked, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_mountlist(gboolean allfs)
|
||||
{
|
||||
glibtop_mountlist buf;
|
||||
glibtop_mountentry *entries;
|
||||
size_t i;
|
||||
|
||||
entries = glibtop_get_mountlist(&buf, allfs);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_mountlist);
|
||||
printf("glibtop_get_mountlist (allfs = %d)\n", allfs);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(number, "%llu");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(size, "%llu");
|
||||
|
||||
printf("\t%4llu B entries[%llu] = \n\t\t{\n", buf.total, buf.number);
|
||||
|
||||
for(i = 0; i < buf.number; ++i)
|
||||
{
|
||||
printf("\t\t .%lu = { .dev = %#llx,"
|
||||
" .devname = \"%s\","
|
||||
" .mountir = \"%s\","
|
||||
" .type = \"%s\" }\n",
|
||||
(unsigned long) i, entries[i].dev,
|
||||
entries[i].devname,
|
||||
entries[i].mountdir,
|
||||
entries[i].type);
|
||||
}
|
||||
|
||||
printf("\t\t}\n");
|
||||
FOOTER_PPRINT();
|
||||
|
||||
g_free(entries);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_msg_limits(void)
|
||||
{
|
||||
glibtop_msg_limits buf;
|
||||
|
||||
glibtop_get_msg_limits(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_msg_limits);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(msgpool, "%llu");
|
||||
PPRINT(msgmap, "%llu");
|
||||
PPRINT(msgmax, "%llu");
|
||||
PPRINT(msgmnb, "%llu");
|
||||
PPRINT(msgmni, "%llu");
|
||||
PPRINT(msgssz, "%llu");
|
||||
PPRINT(msgtql, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_netload(const char *iface)
|
||||
{
|
||||
glibtop_netload buf;
|
||||
|
||||
glibtop_get_netload(&buf, iface);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_netload);
|
||||
printf("glibtop_get_netload (iface = \"%s\")\n", iface);
|
||||
PPRINT(flags, "%#llx");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
static void pprint_get_netlist(void)
|
||||
{
|
||||
glibtop_netlist buf;
|
||||
char **devices;
|
||||
guint32 i;
|
||||
|
||||
devices = glibtop_get_netlist(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_netlist);
|
||||
|
||||
for(i = 0; i < buf.number; ++i)
|
||||
{
|
||||
printf("\t%s\n", devices[i]);
|
||||
}
|
||||
|
||||
FOOTER_PPRINT();
|
||||
|
||||
g_strfreev(devices);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_swap(void)
|
||||
{
|
||||
glibtop_swap buf;
|
||||
|
||||
glibtop_get_swap(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_swap);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(used, "%llu");
|
||||
PPRINT(free, "%llu");
|
||||
PPRINT(pagein, "%llu");
|
||||
PPRINT(pageout, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pprint_get_uptime(void)
|
||||
{
|
||||
glibtop_uptime buf;
|
||||
|
||||
glibtop_get_uptime(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_uptime);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(uptime, "%f");
|
||||
PPRINT(idletime, "%f");
|
||||
PPRINT(boot_time, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void pprint_get_proc_kernel(pid_t pid)
|
||||
{
|
||||
glibtop_proc_kernel buf;
|
||||
|
||||
glibtop_get_proc_kernel(&buf, pid);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_proc_kernel);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(k_flags, "%llu");
|
||||
PPRINT(min_flt, "%llu");
|
||||
PPRINT(maj_flt, "%llu");
|
||||
PPRINT(cmin_flt, "%llu");
|
||||
PPRINT(cmaj_flt, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
static void pprint_get_proc_mem(pid_t pid)
|
||||
{
|
||||
glibtop_proc_mem buf;
|
||||
|
||||
glibtop_get_proc_mem(&buf, pid);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_proc_mem);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(size, "%llu");
|
||||
PPRINT(vsize, "%llu");
|
||||
PPRINT(resident, "%llu");
|
||||
PPRINT(share, "%llu");
|
||||
PPRINT(rss, "%llu");
|
||||
PPRINT(rss_rlim, "%llu");
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
glibtop_init();
|
||||
|
||||
pprint_get_cpu();
|
||||
|
||||
pprint_get_fsusage("/");
|
||||
|
||||
pprint_get_loadavg();
|
||||
|
||||
pprint_get_mem();
|
||||
|
||||
pprint_get_mountlist(TRUE);
|
||||
pprint_get_mountlist(FALSE);
|
||||
|
||||
pprint_get_msg_limits();
|
||||
|
||||
pprint_get_swap();
|
||||
|
||||
pprint_get_netlist();
|
||||
|
||||
pprint_get_netload("eth0");
|
||||
pprint_get_netload("ppp0");
|
||||
pprint_get_netload("<unknown>");
|
||||
/* pprint_get_sysinfo(); */
|
||||
|
||||
pprint_get_uptime();
|
||||
|
||||
pprint_get_proc_kernel(getpid());
|
||||
pprint_get_proc_mem(getpid());
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,30 +1,51 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/procargs.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
static void show_args(pid_t pid, unsigned max_len)
|
||||
{
|
||||
while(*++argv)
|
||||
glibtop_proc_args buf;
|
||||
char ** const pargv = glibtop_get_proc_argv(&buf, pid, max_len);
|
||||
|
||||
char **parg = pargv;
|
||||
|
||||
printf("<%ld>\t", (long)pid);
|
||||
|
||||
while(*parg)
|
||||
{
|
||||
glibtop_proc_args buf;
|
||||
pid_t pid = strtol(*argv, NULL, 10);
|
||||
char ** const pargv = glibtop_get_proc_argv(&buf, pid, 20);
|
||||
|
||||
char **parg = pargv;
|
||||
|
||||
printf("<%ld>\t", (long)pid);
|
||||
|
||||
while(*parg)
|
||||
{
|
||||
printf("\"%s\"\t", *parg);
|
||||
parg++;
|
||||
}
|
||||
|
||||
putchar('\n');
|
||||
|
||||
g_strfreev(pargv);
|
||||
printf("\"%s\" ", *parg);
|
||||
parg++;
|
||||
}
|
||||
|
||||
putchar('\n');
|
||||
|
||||
g_strfreev(pargv);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
glibtop_init();
|
||||
|
||||
show_args(getpid(), 0);
|
||||
show_args(getpid(), 15);
|
||||
|
||||
while(*++argv)
|
||||
{
|
||||
pid_t pid = strtol(*argv, NULL, 10);
|
||||
show_args(pid, 0);
|
||||
show_args(pid, 15);
|
||||
}
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
43
examples/proclist.c
Normal file
43
examples/proclist.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/proclist.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
static void print_pids(guint64 which, guint64 arg)
|
||||
{
|
||||
unsigned *pids;
|
||||
unsigned i;
|
||||
glibtop_proclist buf;
|
||||
|
||||
pids = glibtop_get_proclist(&buf, which, arg);
|
||||
|
||||
printf("glibtop_get_proclist(%#llx, %llu) -> %lu processes\n",
|
||||
which, arg, (unsigned long)buf.number);
|
||||
|
||||
for (i = 0; i < buf.number; ++i)
|
||||
printf("%u ", pids[i]);
|
||||
|
||||
putchar('\n');
|
||||
putchar('\n');
|
||||
|
||||
g_free(pids);
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
glibtop_init();
|
||||
|
||||
print_pids(GLIBTOP_KERN_PROC_ALL, 0);
|
||||
print_pids(GLIBTOP_KERN_PROC_UID, getuid());
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <stdio.h>
|
||||
@@ -83,7 +87,7 @@ main (int argc, char *argv [])
|
||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||
|
||||
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
||||
glibtop_error ("Usage: %s pid", argv [0]);
|
||||
g_error ("Usage: %s pid", argv [0]);
|
||||
|
||||
#ifdef GLIBTOP_INODEDB
|
||||
inodedb = glibtop_inodedb_open (0, 0);
|
||||
@@ -153,6 +157,18 @@ main (int argc, char *argv [])
|
||||
perm);
|
||||
}
|
||||
|
||||
|
||||
g_print("smaps flags:%#llx size:%llu rss:%llu "
|
||||
"shared_clean:%llu shared_dirty:%llu "
|
||||
"private_clean:%llu private_dirty: %llu\n",
|
||||
maps[i].flags,
|
||||
maps[i].size >> 10,
|
||||
maps[i].rss >> 10,
|
||||
maps[i].shared_clean >> 10,
|
||||
maps[i].shared_dirty >> 10,
|
||||
maps[i].private_clean >> 10,
|
||||
maps[i].private_dirty >> 10);
|
||||
|
||||
if (filename && (filename != maps [i].filename))
|
||||
g_free ((void*)filename);
|
||||
}
|
||||
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
@@ -31,8 +31,6 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/cpu.h>
|
||||
|
||||
#include "libgtop-i18n.h"
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
{
|
||||
@@ -44,10 +42,6 @@ main (int argc, char *argv [])
|
||||
char separator [BUFSIZ], buffer [BUFSIZ];
|
||||
int ncpu, i;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init();
|
||||
|
||||
glibtop_get_cpu (&cpu);
|
||||
@@ -73,16 +67,16 @@ main (int argc, char *argv [])
|
||||
memset (separator, '-', 91);
|
||||
separator [92] = '\0';
|
||||
|
||||
sprintf (buffer, _("Ticks (%ld per second):"), frequency);
|
||||
sprintf (buffer, "Ticks (%ld per second):", frequency);
|
||||
|
||||
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
|
||||
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
|
||||
"Total", "User", "Nice", "Sys", "Idle", separator);
|
||||
|
||||
printf (_("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"),
|
||||
printf ("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n",
|
||||
(unsigned long) cpu.flags, total, user, nice, sys, idle);
|
||||
|
||||
for (i = 0; i < glibtop_global_server->ncpu; i++) {
|
||||
printf (_("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i,
|
||||
printf ("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n", i,
|
||||
(unsigned long) cpu.flags,
|
||||
(unsigned long) cpu.xcpu_total [i],
|
||||
(unsigned long) cpu.xcpu_user [i],
|
||||
@@ -99,11 +93,11 @@ main (int argc, char *argv [])
|
||||
|
||||
printf ("%s\n\n\n", separator);
|
||||
|
||||
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"),
|
||||
_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"),
|
||||
_("Idle (%)"), separator);
|
||||
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", "Percent:",
|
||||
"Total (%)", "User (%)", "Nice (%)", "Sys (%)",
|
||||
"Idle (%)", separator);
|
||||
|
||||
printf (_("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"),
|
||||
printf ("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n",
|
||||
(unsigned long) cpu.flags, (double) total * 100.0 / total,
|
||||
(double) user * 100.0 / total,
|
||||
(double) nice * 100.0 / total,
|
||||
@@ -119,13 +113,13 @@ main (int argc, char *argv [])
|
||||
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
|
||||
p_idle = ((double) cpu.xcpu_idle [i]) * 100.0 / idle;
|
||||
|
||||
printf (_("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"),
|
||||
printf ("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n",
|
||||
i, (unsigned long) cpu.flags, p_total, p_user, p_nice,
|
||||
p_sys, p_idle);
|
||||
}
|
||||
|
||||
printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator,
|
||||
_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user,
|
||||
"Spin:", s_total * 100.0 / total, s_user * 100.0 / user,
|
||||
s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
|
||||
|
||||
exit (0);
|
||||
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <stdio.h>
|
||||
|
@@ -1,58 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
|
||||
void main_prog(int argc, char *argv[]);
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
gh_enter (argc, argv, main_prog);
|
||||
exit (0);
|
||||
}
|
||||
|
||||
void
|
||||
main_prog (int argc, char *argv[])
|
||||
{
|
||||
glibtop_boot_guile ();
|
||||
#ifdef GLIBTOP_GUILE_NAMES
|
||||
glibtop_boot_guile_names ();
|
||||
#endif
|
||||
|
||||
gh_repl (argc, argv);
|
||||
}
|
@@ -21,6 +21,10 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <libintl.h>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
void|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4])
|
||||
void|cpu|ulong(total,user,nice,sys,idle,iowait,irq,softirq,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4],xcpu_iowait[4],xcpu_irq[4],xcpu_softirq[4])
|
||||
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
||||
void|swap|ulong(total,used,free,pagein,pageout)
|
||||
void|uptime|double(uptime,idletime)
|
||||
@@ -16,7 +16,10 @@ void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_e
|
||||
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_stack)|pid_t(pid)
|
||||
char *|proc_args|ulong(size)|pid_t(pid):unsigned(max_len)
|
||||
glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid)
|
||||
glibtop_open_files_entry *|proc_open_files|ulong(number)|pid_t(pid)
|
||||
glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs)
|
||||
void|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string|mount_dir
|
||||
void|netload|ulong(if_flags,mtu,subnet,address,packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string|interface
|
||||
void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
||||
char **|netlist|unsigned(number)
|
||||
|
||||
|
29
glibtop.h
29
glibtop.h
@@ -26,11 +26,31 @@
|
||||
|
||||
typedef struct _glibtop glibtop;
|
||||
|
||||
/**
|
||||
* LIBGTOP_CHECK_VERSION
|
||||
* @major: Major version number
|
||||
* @minor: Minor version number
|
||||
* @micro: Micro version number
|
||||
*
|
||||
* Checks if the version given is compatable with this version of the
|
||||
* library. For example, LIBGTOP_CHECK_VERSION(1.2.3) would return TRUE
|
||||
* if the version is 1.2.5, and FALSE if 1.1.0. This can be used in
|
||||
* build tests.
|
||||
*
|
||||
**/
|
||||
|
||||
#include <libgtopconfig.h>
|
||||
|
||||
#define LIBGTOP_CHECK_VERSION(major, minor, micro) \
|
||||
(LIBGTOP_MAJOR_VERSION > (major) || \
|
||||
(LIBGTOP_MAJOR_VERSION == (major) && LIBGTOP_MINOR_VERSION > (minor)) || \
|
||||
(LIBGTOP_MAJOR_VERSION == (major) && LIBGTOP_MINOR_VERSION == (minor) && \
|
||||
LIBGTOP_MICRO_VERSION >= (micro)))
|
||||
|
||||
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop_server.h>
|
||||
#include <glibtop/types.h>
|
||||
|
||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||
#include <glibtop_machine.h>
|
||||
@@ -43,6 +63,7 @@ typedef struct _glibtop glibtop;
|
||||
|
||||
#include <glibtop/sysdeps.h>
|
||||
|
||||
#include <glibtop/close.h>
|
||||
|
||||
struct _glibtop
|
||||
{
|
||||
@@ -56,6 +77,7 @@ struct _glibtop
|
||||
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 */
|
||||
@@ -73,9 +95,8 @@ extern glibtop *glibtop_global_server;
|
||||
|
||||
extern const unsigned long glibtop_server_features;
|
||||
|
||||
#define glibtop_init() glibtop_init_r(&glibtop_global_server, 0, 0);
|
||||
|
||||
#define glibtop_close() glibtop_close_r(glibtop_global_server);
|
||||
glibtop *
|
||||
glibtop_init (void);
|
||||
|
||||
glibtop *
|
||||
glibtop_init_r (glibtop **server_ptr,
|
||||
|
@@ -1,4 +1,2 @@
|
||||
SUBDIRS = glibtop
|
||||
|
||||
EXTRA_DIST = libgtop-i18n.h
|
||||
|
||||
|
@@ -3,8 +3,11 @@ glibtopdir = $(includedir)/libgtop-2.0/glibtop
|
||||
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||
sem_limits.h uptime.h command.h mem.h proclist.h \
|
||||
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
|
||||
procmem.h procuid.h swap.h write.h error.h open.h \
|
||||
procsegment.h read.h sysdeps.h global.h \
|
||||
procsignal.h read_data.h union.h types.h gnuserv.h \
|
||||
procmem.h procuid.h swap.h \
|
||||
procsegment.h sysdeps.h global.h \
|
||||
procsignal.h union.h gnuserv.h \
|
||||
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h
|
||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
|
||||
netlist.h procopenfiles.h open.h
|
||||
|
||||
noinst_HEADERS = error.h write.h read_data.h read.h init_hooks.h
|
||||
|
@@ -1,50 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_ARRAY_H__
|
||||
#define __GLIBTOP_ARRAY_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_ARRAY_NUMBER 0
|
||||
#define GLIBTOP_ARRAY_SIZE 1
|
||||
#define GLIBTOP_ARRAY_TOTAL 2
|
||||
|
||||
#define GLIBTOP_MAX_ARRAY 3
|
||||
|
||||
typedef struct _glibtop_array glibtop_array;
|
||||
|
||||
struct _glibtop_array
|
||||
{
|
||||
guint64 flags,
|
||||
number, /* GLIBTOP_ARRAY_NUMBER */
|
||||
size, /* GLIBTOP_ARRAY_SIZE */
|
||||
total; /* GLIBTOP_ARRAY_TOTAL */
|
||||
};
|
||||
|
||||
#endif
|
@@ -28,6 +28,8 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
void glibtop_close (void);
|
||||
|
||||
void glibtop_close_r (glibtop *server);
|
||||
|
||||
void glibtop_close_s (glibtop *server);
|
||||
|
@@ -57,8 +57,10 @@ G_BEGIN_DECLS
|
||||
#define GLIBTOP_CMND_FSUSAGE 21
|
||||
#define GLIBTOP_CMND_NETLOAD 22
|
||||
#define GLIBTOP_CMND_PPP 23
|
||||
#define GLIBTOP_CMND_NETLIST 24
|
||||
#define GLIBTOP_CMND_PROC_OPEN_FILES 25
|
||||
|
||||
#define GLIBTOP_MAX_CMND 24
|
||||
#define GLIBTOP_MAX_CMND 26
|
||||
|
||||
#define _GLIBTOP_PARAM_SIZE 16
|
||||
|
||||
|
@@ -1,91 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_COMPAT10_H__
|
||||
#define __GLIBTOP_COMPAT10_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/* glibtop_cpu */
|
||||
|
||||
#define GLIBTOP_XCPU_TOTAL GLIBTOP_CPU_XCPU_TOTAL
|
||||
#define GLIBTOP_XCPU_USER GLIBTOP_CPU_XCPU_USER
|
||||
#define GLIBTOP_XCPU_NICE GLIBTOP_CPU_XCPU_NICE
|
||||
#define GLIBTOP_XCPU_SYS GLIBTOP_CPU_XCPU_SYS
|
||||
#define GLIBTOP_XCPU_IDLE GLIBTOP_CPU_XCPU_IDLE
|
||||
#define GLIBTOP_XCPU_FLAGS GLIBTOP_CPU_XCPU_FLAGS
|
||||
|
||||
/* glibtop_proclist */
|
||||
|
||||
#define GLIBTOP_PROCLIST_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_PROCLIST_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_PROCLIST_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_PROCLIST GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_proclist;
|
||||
|
||||
/* glibtop_mountlist */
|
||||
|
||||
#define GLIBTOP_MOUNTLIST_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_MOUNTLIST_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_MOUNTLIST_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_MOUNTLIST GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_mountlist;
|
||||
|
||||
/* glibtop_proc_args */
|
||||
|
||||
#define GLIBTOP_PROC_ARGS_SIZE 0
|
||||
|
||||
#define GLIBTOP_MAX_PROC_ARGS 1
|
||||
|
||||
typedef struct _glibtop_array glibtop_proc_args;
|
||||
|
||||
/* glibtop_proc_map */
|
||||
|
||||
#define GLIBTOP_PROC_MAP_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_PROC_MAP_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_PROC_MAP_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_PROC_MAP GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_proc_map;
|
||||
|
||||
/* glibtop_interface_names */
|
||||
|
||||
#define GLIBTOP_INTERFACE_NAMES_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_INTERFACE_NAMES_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_INTERFACE_NAMES_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_INTERFACE_NAMES GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_interface_names;
|
||||
|
||||
#endif
|
@@ -41,33 +41,49 @@ G_BEGIN_DECLS
|
||||
#define GLIBTOP_XCPU_NICE 8
|
||||
#define GLIBTOP_XCPU_SYS 9
|
||||
#define GLIBTOP_XCPU_IDLE 10
|
||||
#define GLIBTOP_XCPU_FLAGS 11
|
||||
#define GLIBTOP_XCPU_FLAGS 11
|
||||
|
||||
#define GLIBTOP_MAX_CPU 12
|
||||
#define GLIBTOP_CPU_IOWAIT 12
|
||||
#define GLIBTOP_CPU_IRQ 13
|
||||
#define GLIBTOP_CPU_SOFTIRQ 14
|
||||
#define GLIBTOP_XCPU_IOWAIT 15
|
||||
#define GLIBTOP_XCPU_IRQ 16
|
||||
#define GLIBTOP_XCPU_SOFTIRQ 17
|
||||
|
||||
/* Nobody should really be using more than 4 processors. */
|
||||
#define GLIBTOP_NCPU 4
|
||||
#define GLIBTOP_MAX_CPU 18
|
||||
|
||||
/* Nobody should really be using more than 4 processors.
|
||||
Yes we are :)
|
||||
Nobody should really be using more than 32 processors.
|
||||
*/
|
||||
#define GLIBTOP_NCPU 32
|
||||
|
||||
typedef struct _glibtop_cpu glibtop_cpu;
|
||||
|
||||
struct _glibtop_cpu
|
||||
{
|
||||
guint64 flags,
|
||||
total, /* GLIBTOP_CPU_TOTAL */
|
||||
user, /* GLIBTOP_CPU_USER */
|
||||
nice, /* GLIBTOP_CPU_NICE */
|
||||
sys, /* GLIBTOP_CPU_SYS */
|
||||
idle, /* GLIBTOP_CPU_IDLE */
|
||||
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
||||
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
|
||||
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
|
||||
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
|
||||
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
|
||||
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IDLE */
|
||||
xcpu_flags; /* GLIBTOP_XCPU_IDLE */
|
||||
guint64 flags;
|
||||
guint64 total; /* GLIBTOP_CPU_TOTAL */
|
||||
guint64 user; /* GLIBTOP_CPU_USER */
|
||||
guint64 nice; /* GLIBTOP_CPU_NICE */
|
||||
guint64 sys; /* GLIBTOP_CPU_SYS */
|
||||
guint64 idle; /* GLIBTOP_CPU_IDLE */
|
||||
guint64 iowait; /* GLIBTOP_CPU_IOWAIT */
|
||||
guint64 irq; /* GLIBTOP_CPU_IRQ */
|
||||
guint64 softirq; /* GLIBTOP_CPU_SOFTIRQ */
|
||||
guint64 frequency; /* GLIBTOP_CPU_FREQUENCY */
|
||||
guint64 xcpu_total [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_TOTAL */
|
||||
guint64 xcpu_user [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_USER */
|
||||
guint64 xcpu_nice [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_NICE */
|
||||
guint64 xcpu_sys [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_SYS */
|
||||
guint64 xcpu_idle [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IDLE */
|
||||
guint64 xcpu_iowait [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IOWAIT */
|
||||
guint64 xcpu_irq [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IRQ */
|
||||
guint64 xcpu_softirq [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_SOFTIRQ */
|
||||
guint64 xcpu_flags; /* GLIBTOP_XCPU_IDLE */
|
||||
};
|
||||
|
||||
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
|
||||
void glibtop_get_cpu(glibtop_cpu *buf);
|
||||
|
||||
#if GLIBTOP_SUID_CPU
|
||||
#define glibtop_get_cpu_r glibtop_get_cpu_p
|
||||
@@ -85,16 +101,6 @@ void glibtop_init_cpu_s (glibtop *server);
|
||||
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
|
||||
#endif
|
||||
|
||||
#ifdef GLIBTOP_NAMES
|
||||
|
||||
/* You need to link with -lgtop_names to get this stuff here. */
|
||||
|
||||
extern const char *glibtop_names_cpu [];
|
||||
extern const unsigned glibtop_types_cpu [];
|
||||
extern const char *glibtop_labels_cpu [];
|
||||
extern const char *glibtop_descriptions_cpu [];
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -21,6 +21,11 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* This is private API
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_ERROR_H__
|
||||
#define __GLIBTOP_ERROR_H__
|
||||
|
||||
@@ -28,42 +33,20 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
void glibtop_error_vr (glibtop *server, char *format, va_list args);
|
||||
void glibtop_warn_vr (glibtop *server, char *format, va_list args);
|
||||
void glibtop_error_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) G_GNUC_INTERNAL;
|
||||
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) G_GNUC_INTERNAL;
|
||||
|
||||
void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args);
|
||||
void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args);
|
||||
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_INTERNAL G_GNUC_PRINTF(2, 3);
|
||||
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_INTERNAL G_GNUC_PRINTF(2, 3);
|
||||
|
||||
void G_GNUC_UNUSED glibtop_error_r (glibtop *server, char *format, ...);
|
||||
void G_GNUC_UNUSED glibtop_warn_r (glibtop *server, char *format, ...);
|
||||
void G_GNUC_UNUSED glibtop_error_io_r (glibtop *server, char *format, ...);
|
||||
void G_GNUC_UNUSED glibtop_warn_io_r (glibtop *server, char *format, ...);
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
#define glibtop_error(p1, args...) glibtop_error_r(glibtop_global_server , p1 , ## args)
|
||||
#define glibtop_warn(p1, args...) glibtop_warn_r(glibtop_global_server , p1 , ## args)
|
||||
|
||||
#define glibtop_error_io(p1, args...) glibtop_error_io_r(glibtop_global_server , p1 , ## args)
|
||||
#define glibtop_warn_io(p1, args...) glibtop_warn_io_r(glibtop_global_server , p1 , ## args)
|
||||
|
||||
#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
#define glibtop_error(p1, ...) glibtop_error_r(glibtop_global_server , p1 , __VA_ARGS__)
|
||||
#define glibtop_warn(p1, ...) glibtop_warn_r(glibtop_global_server , p1 , __VA_ARGS__)
|
||||
|
||||
#define glibtop_error_io(p1, ...) glibtop_error_io_r(glibtop_global_server , p1 , __VA_ARGS__)
|
||||
#define glibtop_warn_io(p1, ...) glibtop_warn_io_r(glibtop_global_server , p1 , __VA_ARGS__)
|
||||
|
||||
#else /* no __GNUC__, no C99*/
|
||||
|
||||
void glibtop_error (char *format, ...);
|
||||
void glibtop_warn (char *format, ...);
|
||||
void glibtop_error_io (char *format, ...);
|
||||
void glibtop_warn_io (char *format, ...);
|
||||
|
||||
#endif /* no __GNUC__ */
|
||||
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_INTERNAL G_GNUC_PRINTF(1, 2);
|
||||
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_INTERNAL G_GNUC_PRINTF(1, 2);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -1,95 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_ERRORS_H__
|
||||
#define __GLIBTOP_ERRORS_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
#include <glib/gerror.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_ERROR glibtop_error_quark ()
|
||||
|
||||
GQuark glibtop_error_quark (void) G_GNUC_CONST;
|
||||
|
||||
typedef enum {
|
||||
GLIBTOP_ERROR_NO_ERROR = 0,
|
||||
GLIBTOP_ERROR_UNKNOWN,
|
||||
GLIBTOP_ERROR_INVALID_ARGUMENT,
|
||||
GLIBTOP_ERROR_NO_SUCH_PARAMETER,
|
||||
GLIBTOP_ERROR_READONLY_VALUE,
|
||||
GLIBTOP_ERROR_SIZE_MISMATCH,
|
||||
|
||||
GLIBTOP_ERROR_SERVER_COMM_FAILURE,
|
||||
|
||||
GLIBTOP_ERROR_NO_SUCH_PROCESS,
|
||||
|
||||
GLIBTOP_ERROR_NO_KERNEL_SUPPORT,
|
||||
GLIBTOP_ERROR_INCOMPATIBLE_KERNEL,
|
||||
|
||||
GLIBTOP_ERROR_NO_SUCH_BACKEND,
|
||||
GLIBTOP_ERROR_NOT_IMPLEMENTED,
|
||||
GLIBTOP_ERROR_NO_BACKEND_OPENED,
|
||||
|
||||
GLIBTOP_ERROR_DEMARSHAL_ERROR
|
||||
} glibtop_error;
|
||||
|
||||
void
|
||||
glibtop_error_vl (glibtop_client *client, glibtop_error code,
|
||||
const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_error_io_vl (glibtop_client *client, glibtop_error code,
|
||||
int io_errno, const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_warn_vl (glibtop_client *client, glibtop_error code,
|
||||
const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_warn_io_vl (glibtop_client *client, glibtop_error code,
|
||||
int io_errno, const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_error_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
void
|
||||
glibtop_warn_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
void
|
||||
glibtop_error_io_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
void
|
||||
glibtop_warn_io_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
@@ -43,33 +43,23 @@ typedef struct _glibtop_fsusage glibtop_fsusage;
|
||||
|
||||
struct _glibtop_fsusage
|
||||
{
|
||||
guint64 flags,
|
||||
blocks, /* Total number of blocks. */
|
||||
bfree, /* Free blocks available to superuser. */
|
||||
bavail, /* Free blocks available to non-superuser. */
|
||||
files, /* Total file nodes. */
|
||||
ffree; /* Free file nodes. */
|
||||
guint64 flags;
|
||||
guint64 blocks; /* Total number of blocks. */
|
||||
guint64 bfree; /* Free blocks available to superuser. */
|
||||
guint64 bavail; /* Free blocks available to non-superuser. */
|
||||
guint64 files; /* Total file nodes. */
|
||||
guint64 ffree; /* Free file nodes. */
|
||||
guint32 block_size; /* Size of a block in bytes. */
|
||||
guint64 read, write; /* Total blocks read and written */
|
||||
};
|
||||
|
||||
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
|
||||
void glibtop_get_fsusage(glibtop_fsusage *buf, const char *mount_dir);
|
||||
|
||||
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
|
||||
|
||||
void glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
|
||||
void glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
|
||||
|
||||
#ifdef GLIBTOP_NAMES
|
||||
|
||||
/* You need to link with -lgtop_names to get this stuff here. */
|
||||
|
||||
extern const char *glibtop_names_fsusage [];
|
||||
extern const unsigned glibtop_types_fsusage [];
|
||||
extern const char *glibtop_labels_fsusage [];
|
||||
extern const char *glibtop_descriptions_fsusage [];
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -1,50 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_GLIB_ARRAYS_H__
|
||||
#define __GLIBTOP_GLIB_ARRAYS_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/array.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
GPtrArray *
|
||||
glibtop_get_proc_args_as_array_l (glibtop_client *client, pid_t pid);
|
||||
|
||||
GArray *
|
||||
glibtop_get_proclist_as_array_l (glibtop_client *client, gint64 which, gint64 arg);
|
||||
|
||||
GPtrArray *
|
||||
glibtop_get_proc_map_as_array_l (glibtop_client *client, pid_t pid);
|
||||
|
||||
GPtrArray *
|
||||
glibtop_get_mountlist_as_array_l (glibtop_client *client, int all_fs);
|
||||
|
||||
G_END_DECLS
|
||||
#endif
|
@@ -1,102 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_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
|
@@ -1,85 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 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
|
@@ -1,97 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 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
|
@@ -36,11 +36,6 @@ 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 */
|
||||
|
@@ -26,10 +26,6 @@
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#ifdef _IN_LIBGTOP
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef _IN_LIBGTOP
|
||||
|
||||
#endif /* _IN_LIBGTOP */
|
||||
|
@@ -42,7 +42,6 @@ static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup a
|
||||
/* gnuserv should not be compiled using SOCKS */
|
||||
#define DO_NOT_SOCKSIFY
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
#undef read
|
||||
#undef write
|
||||
#undef open
|
||||
|
11
include/glibtop/init_hooks.h
Normal file
11
include/glibtop/init_hooks.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef H_LIBGTOP_INIT_HOOKS_1122955666
|
||||
#define H_LIBGTOP_INIT_HOOKS_1122955666
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
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[];
|
||||
|
||||
#endif /* H_LIBGTOP_INIT_HOOKS_1122955666 */
|
@@ -1,203 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_INTERFACES_H__
|
||||
#define __GLIBTOP_INTERFACES_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/compat_10.h>
|
||||
#include <glibtop/array.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_INTERFACE_IF_FLAGS 0
|
||||
#define GLIBTOP_INTERFACE_TRANSPORT 1
|
||||
#define GLIBTOP_INTERFACE_TYPE 2
|
||||
#define GLIBTOP_INTERFACE_NUMBER 3
|
||||
#define GLIBTOP_INTERFACE_INSTANCE 4
|
||||
#define GLIBTOP_INTERFACE_NUM_LOGICAL 5
|
||||
#define GLIBTOP_INTERFACE_NAME 6
|
||||
|
||||
#define GLIBTOP_MAX_INTERFACE 7
|
||||
|
||||
#define GLIBTOP_IFADDR_TRANSPORT 0
|
||||
#define GLIBTOP_IFADDR_ADDR_LEN 1
|
||||
#define GLIBTOP_IFADDR_ADDRESS 2
|
||||
#define GLIBTOP_IFADDR_SUBNET 3
|
||||
#define GLIBTOP_IFADDR_SCOPE 4
|
||||
|
||||
#define GLIBTOP_MAX_IFADDR 5
|
||||
|
||||
typedef struct _glibtop_interface glibtop_interface;
|
||||
typedef struct _glibtop_ifaddr glibtop_ifaddr;
|
||||
|
||||
typedef enum _glibtop_interface_type glibtop_interface_type;
|
||||
typedef enum _glibtop_transport glibtop_transport;
|
||||
typedef enum _glibtop_protocol glibtop_protocol;
|
||||
|
||||
typedef enum _glibtop_ipv6_scope glibtop_ipv6_scope;
|
||||
|
||||
typedef enum _glibtop_strategy glibtop_strategy;
|
||||
typedef enum _glibtop_interface_flags glibtop_interface_flags;
|
||||
|
||||
enum _glibtop_protocol {
|
||||
GLIBTOP_PROTOCOL_OTHERS = 0,
|
||||
GLIBTOP_PROTOCOL_ICMP = 1 << 0,
|
||||
GLIBTOP_PROTOCOL_TCP = 1 << 1,
|
||||
GLIBTOP_PROTOCOL_UDP = 1 << 2,
|
||||
GLIBTOP_PROTOCOL_IGMP = 1 << 3,
|
||||
GLIBTOP_PROTOCOL_RAW = 1 << 4,
|
||||
GLIBTOP_PROTOCOL_ICMP6 = 1 << 5,
|
||||
GLIBTOP_PROTOCOL_TCP6 = 1 << 6,
|
||||
GLIBTOP_PROTOCOL_UDP6 = 1 << 7,
|
||||
GLIBTOP_PROTOCOL_IGMP6 = 1 << 8,
|
||||
GLIBTOP_PROTOCOL_RAW6 = 1 << 9
|
||||
};
|
||||
|
||||
enum _glibtop_transport {
|
||||
GLIBTOP_TRANSPORT_DEFAULT = 0,
|
||||
GLIBTOP_TRANSPORT_IPV4 = 1 << 0,
|
||||
GLIBTOP_TRANSPORT_IPV6 = 1 << 1,
|
||||
GLIBTOP_TRANSPORT_IPX = 1 << 2,
|
||||
GLIBTOP_TRANSPORT_X25 = 1 << 3,
|
||||
GLIBTOP_TRANSPORT_DECNET = 1 << 4,
|
||||
GLIBTOP_TRANSPORT_APPLETALK = 1 << 5,
|
||||
GLIBTOP_TRANSPORT_NETBEUI = 1 << 6
|
||||
};
|
||||
|
||||
#define GLIBTOP_TRANSPORT_ALL GLIBTOP_UNLIMITED
|
||||
#define GLIBTOP_PROTOCOL_ALL GLIBTOP_UNLIMITED
|
||||
|
||||
enum _glibtop_interface_type {
|
||||
GLIBTOP_INTERFACE_ALL = 0,
|
||||
GLIBTOP_INTERFACE_OTHER,
|
||||
/* Network interfaces */
|
||||
GLIBTOP_INTERFACE_ETHERNET = 101,
|
||||
GLIBTOP_INTERFACE_FDDI,
|
||||
GLIBTOP_INTERFACE_FRAME_RELAY,
|
||||
GLIBTOP_INTERFACE_TOKEN_RING,
|
||||
GLIBTOP_INTERFACE_ARCNET,
|
||||
GLIBTOP_INTERFACE_ATM,
|
||||
/* Dummy interfaces */
|
||||
GLIBTOP_INTERFACE_LOOPBACK = 501,
|
||||
GLIBTOP_INTERFACE_DUMMY,
|
||||
/* Dialup interfaces */
|
||||
GLIBTOP_INTERFACE_PARA = 801,
|
||||
GLIBTOP_INTERFACE_SLIP,
|
||||
GLIBTOP_INTERFACE_PPP,
|
||||
GLIBTOP_INTERFACE_ISDN
|
||||
};
|
||||
|
||||
enum _glibtop_ipv6_scope {
|
||||
GLIBTOP_IPV6_SCOPE_GLOBAL = 0,
|
||||
GLIBTOP_IPV6_SCOPE_LOOPBACK = 1 << 1,
|
||||
GLIBTOP_IPV6_SCOPE_LINKLOCAL = 1 << 2,
|
||||
GLIBTOP_IPV6_SCOPE_SITELOCAL = 1 << 3,
|
||||
GLIBTOP_IPV6_SCOPE_COMPATv4 = 1 << 4,
|
||||
GLIBTOP_IPV6_SCOPE_UNKNOWN = 1 << 5
|
||||
};
|
||||
|
||||
enum _glibtop_strategy {
|
||||
GLIBTOP_INTERFACES_ALL = 0,
|
||||
GLIBTOP_INTERFACES_BEST_MATCHING,
|
||||
GLIBTOP_INTERFACES_ONLY_THIS_ONE,
|
||||
GLIBTOP_INTERFACES_INCLUDE_LOGICAL = 1 << 7
|
||||
};
|
||||
|
||||
#define GLIBTOP_STRATEGY_FLAGS_MASK (1 << 7)
|
||||
|
||||
enum _glibtop_interface_flags {
|
||||
GLIBTOP_IF_FLAGS_UP = 1,
|
||||
GLIBTOP_IF_FLAGS_BROADCAST,
|
||||
GLIBTOP_IF_FLAGS_DEBUG,
|
||||
GLIBTOP_IF_FLAGS_LOOPBACK,
|
||||
GLIBTOP_IF_FLAGS_POINTOPOINT,
|
||||
GLIBTOP_IF_FLAGS_RUNNING,
|
||||
GLIBTOP_IF_FLAGS_NOARP,
|
||||
GLIBTOP_IF_FLAGS_PROMISC,
|
||||
GLIBTOP_IF_FLAGS_ALLMULTI,
|
||||
GLIBTOP_IF_FLAGS_OACTIVE,
|
||||
GLIBTOP_IF_FLAGS_SIMPLEX,
|
||||
GLIBTOP_IF_FLAGS_LINK0,
|
||||
GLIBTOP_IF_FLAGS_LINK1,
|
||||
GLIBTOP_IF_FLAGS_LINK2,
|
||||
GLIBTOP_IF_FLAGS_ALTPHYS,
|
||||
GLIBTOP_IF_FLAGS_MULTICAST
|
||||
};
|
||||
|
||||
struct _glibtop_ifaddr
|
||||
{
|
||||
guint64 flags,
|
||||
transport; /* GLIBTOP_IFADDR_TRANSPORT */
|
||||
u_int8_t addr_len, /* GLIBTOP_IFADDR_ADDR_LEN */
|
||||
address [GLIBTOP_IFADDR_LEN]; /* GLIBTOP_IFADDR_ADDRESS */
|
||||
guint64 subnet, /* GLIBTOP_IFADDR_SUBNET */
|
||||
scope; /* GLIBTOP_IFADDR_SCOPE */
|
||||
};
|
||||
|
||||
struct _glibtop_interface
|
||||
{
|
||||
guint64 flags,
|
||||
if_flags, /* GLIBTOP_INTERFACE_IF_FLAGS */
|
||||
transport, /* GLIBTOP_INTERFACE_TRANSPORT */
|
||||
type, /* GLIBTOP_INTERFACE_TYPE */
|
||||
number, /* GLIBTOP_INTERFACE_NUMBER */
|
||||
instance, /* GLIBTOP_INTERFACE_INSTANCE */
|
||||
num_logical; /* GLIBTOP_INTERFACE_NUM_LOGICAL */
|
||||
char name [GLIBTOP_INTERFACE_LEN];
|
||||
};
|
||||
|
||||
#if GLIBTOP_SUID_INTERFACE_NAMES
|
||||
#define glibtop_get_interface_names_r glibtop_get_interface_names_p
|
||||
#else
|
||||
#define glibtop_get_interface_names_r glibtop_get_interface_names_s
|
||||
#endif
|
||||
|
||||
glibtop_interface *glibtop_get_interface_names_l (glibtop_client *client, glibtop_array *array, guint64 interface, guint64 number, guint64 instance, guint64 strategy);
|
||||
|
||||
#if GLIBTOP_SUID_INTERFACE_NAMES
|
||||
int glibtop_init_interface_names_p (glibtop_server *server, glibtop_closure *closure);
|
||||
glibtop_interface *glibtop_get_interface_names_p (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, guint64 interface, guint64 number, guint64 instance, guint64 strategy);
|
||||
#else
|
||||
int glibtop_init_interface_names_s (glibtop_server *server, glibtop_closure *closure);
|
||||
glibtop_interface *glibtop_get_interface_names_s (glibtop_server *server, glibtop_closure *closure, glibtop_array *array, guint64 interface, guint64 number, guint64 instance, guint64 strategy);
|
||||
#endif
|
||||
|
||||
#ifdef GLIBTOP_NAMES
|
||||
|
||||
/* You need to link with -lgtop_names to get this stuff here. */
|
||||
|
||||
extern const char *glibtop_names_interface_names [];
|
||||
extern const unsigned glibtop_types_interface_names [];
|
||||
extern const char *glibtop_labels_interface_names [];
|
||||
extern const char *glibtop_descriptions_interface_names [];
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
@@ -1,56 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_LIMITS_H__
|
||||
#define __GLIBTOP_LIMITS_H__
|
||||
|
||||
#include <glibtop/global.h>
|
||||
|
||||
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
|
@@ -42,12 +42,12 @@ struct _glibtop_loadavg
|
||||
{
|
||||
guint64 flags;
|
||||
double loadavg [3]; /* GLIBTOP_LOADAVG_LOADAVG */
|
||||
guint64 nr_running, /* GLIBTOP_LOADAVG_NR_RUNNING */
|
||||
nr_tasks, /* GLIBTOP_LOADAVG_NR_TASKS */
|
||||
last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
|
||||
guint64 nr_running; /* GLIBTOP_LOADAVG_NR_RUNNING */
|
||||
guint64 nr_tasks; /* GLIBTOP_LOADAVG_NR_TASKS */
|
||||
guint64 last_pid; /* GLIBTOP_LOADAVG_LAST_PID */
|
||||
};
|
||||
|
||||
#define glibtop_get_loadavg(loadavg) glibtop_get_loadavg_l(glibtop_global_server, loadavg)
|
||||
void glibtop_get_loadavg(glibtop_loadavg *buf);
|
||||
|
||||
#if GLIBTOP_SUID_LOADAVG
|
||||
#define glibtop_get_loadavg_r glibtop_get_loadavg_p
|
||||
@@ -65,16 +65,6 @@ void glibtop_init_loadavg_s (glibtop *server);
|
||||
void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
|
||||
#endif
|
||||
|
||||
#ifdef GLIBTOP_NAMES
|
||||
|
||||
/* You need to link with -lgtop_names to get this stuff here. */
|
||||
|
||||
extern const char *glibtop_names_loadavg [];
|
||||
extern const unsigned glibtop_types_loadavg [];
|
||||
extern const char *glibtop_labels_loadavg [];
|
||||
extern const char *glibtop_descriptions_loadavg [];
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -44,18 +44,18 @@ typedef struct _glibtop_mem glibtop_mem;
|
||||
|
||||
struct _glibtop_mem
|
||||
{
|
||||
guint64 flags,
|
||||
total, /* GLIBTOP_MEM_TOTAL */
|
||||
used, /* GLIBTOP_MEM_USED */
|
||||
free, /* GLIBTOP_MEM_FREE */
|
||||
shared, /* GLIBTOP_MEM_SHARED */
|
||||
buffer, /* GLIBTOP_MEM_BUFFER */
|
||||
cached, /* GLIBTOP_MEM_CACHED */
|
||||
user, /* GLIBTOP_MEM_USER */
|
||||
locked; /* GLIBTOP_MEM_LOCKED */
|
||||
guint64 flags;
|
||||
guint64 total; /* GLIBTOP_MEM_TOTAL */
|
||||
guint64 used; /* GLIBTOP_MEM_USED */
|
||||
guint64 free; /* GLIBTOP_MEM_FREE */
|
||||
guint64 shared; /* GLIBTOP_MEM_SHARED */
|
||||
guint64 buffer; /* GLIBTOP_MEM_BUFFER */
|
||||
guint64 cached; /* GLIBTOP_MEM_CACHED */
|
||||
guint64 user; /* GLIBTOP_MEM_USER */
|
||||
guint64 locked; /* GLIBTOP_MEM_LOCKED */
|
||||
};
|
||||
|
||||
#define glibtop_get_mem(mem) glibtop_get_mem_l(glibtop_global_server, mem)
|
||||
void glibtop_get_mem(glibtop_mem *buf);
|
||||
|
||||
#if GLIBTOP_SUID_MEM
|
||||
#define glibtop_get_mem_r glibtop_get_mem_p
|
||||
@@ -73,16 +73,6 @@ void glibtop_init_mem_s (glibtop *server);
|
||||
void glibtop_get_mem_s (glibtop *server, glibtop_mem *buf);
|
||||
#endif
|
||||
|
||||
#ifdef GLIBTOP_NAMES
|
||||
|
||||
/* You need to link with -lgtop_names to get this stuff here. */
|
||||
|
||||
extern const char *glibtop_names_mem [];
|
||||
extern const unsigned glibtop_types_mem [];
|
||||
extern const char *glibtop_labels_mem [];
|
||||
extern const char *glibtop_descriptions_mem [];
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -49,13 +49,14 @@ struct _glibtop_mountentry
|
||||
|
||||
struct _glibtop_mountlist
|
||||
{
|
||||
guint64 flags,
|
||||
number, /* GLIBTOP_MOUNTLIST_NUMBER */
|
||||
total, /* GLIBTOP_MOUNTLIST_TOTAL */
|
||||
size; /* GLIBTOP_MOUNTLIST_SIZE */
|
||||
guint64 flags;
|
||||
guint64 number; /* GLIBTOP_MOUNTLIST_NUMBER */
|
||||
guint64 total; /* GLIBTOP_MOUNTLIST_TOTAL */
|
||||
guint64 size; /* GLIBTOP_MOUNTLIST_SIZE */
|
||||
};
|
||||
|
||||
#define glibtop_get_mountlist(mountlist,all_fs) glibtop_get_mountlist_l(glibtop_global_server, mountlist, all_fs)
|
||||
glibtop_mountentry *
|
||||
glibtop_get_mountlist(glibtop_mountlist *buf, int all_fs);
|
||||
|
||||
#define glibtop_get_mountlist_r glibtop_get_mountlist_s
|
||||
|
||||
@@ -65,16 +66,6 @@ glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf, int all_fs);
|
||||
glibtop_mountentry *
|
||||
glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs);
|
||||
|
||||
#ifdef GLIBTOP_NAMES
|
||||
|
||||
/* You need to link with -lgtop_names to get this stuff here. */
|
||||
|
||||
extern const char *glibtop_names_mountlist [];
|
||||
extern const unsigned glibtop_types_mountlist [];
|
||||
extern const char *glibtop_labels_mountlist [];
|
||||
extern const char *glibtop_descriptions_mountlist [];
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user