Compare commits
452 Commits
solaris_ma
...
LIBGTOP_1_
Author | SHA1 | Date | |
---|---|---|---|
|
473ecd6b3a | ||
|
e5b75b86fc | ||
|
d826c3e48c | ||
|
f10223b8eb | ||
|
7e28d2d5dc | ||
|
d8aa36d637 | ||
|
9deecf345e | ||
|
dd17bc8f92 | ||
|
f11195b104 | ||
|
74f688c5d1 | ||
|
65b08749cf | ||
|
f7b69ebfae | ||
|
371371b633 | ||
|
d423559605 | ||
|
f3d309441a | ||
|
fabb12370f | ||
|
5af2aab0bf | ||
|
dd8c31ebda | ||
|
4d402ecc14 | ||
|
b660c7a0f7 | ||
|
20c306fc6d | ||
|
2a86a5de49 | ||
|
7ba17b2bee | ||
|
31067e703d | ||
|
12e32ffc24 | ||
|
b4122165eb | ||
|
c17f8f2421 | ||
|
e2e5c3a1cc | ||
|
8d532c6298 | ||
|
50f0929ae8 | ||
|
62c59f6087 | ||
|
f0aab5a724 | ||
|
27bf526b85 | ||
|
bb15be7198 | ||
|
fe86288e76 | ||
|
fc4f288ce1 | ||
|
7e20f2f5f2 | ||
|
720cb52cf3 | ||
|
d74c329404 | ||
|
b8fec13607 | ||
|
8b8e1de19a | ||
|
38d6f5ad0c | ||
|
4e42a2aa17 | ||
|
8491b51264 | ||
|
c164df664d | ||
|
fa592c3a94 | ||
|
cb96ce0ad2 | ||
|
938a444edf | ||
|
995b506920 | ||
|
ba466fe572 | ||
|
c2e40852b6 | ||
|
a1c574c502 | ||
|
9b8fd192d0 | ||
|
c37460ad3d | ||
|
d1e708b2cb | ||
|
8745316574 | ||
|
ec5b8790ec | ||
|
d9105dfe8a | ||
|
386f66d7e2 | ||
|
fa5d2af7ea | ||
|
e0d9f28674 | ||
|
6fe80f02ce | ||
|
cdfee65492 | ||
|
44016ac371 | ||
|
58fa4a5955 | ||
|
cd9c5b7967 | ||
|
141c863f54 | ||
|
24743243a8 | ||
|
c2848e73af | ||
|
57d102425f | ||
|
68a40b5cba | ||
|
75ed7287d1 | ||
|
8797d18587 | ||
|
a567f1a8d1 | ||
|
945ec9b0b1 | ||
|
adc575dcdf | ||
|
e593861d7f | ||
|
36c0941dda | ||
|
f1a6e1ead8 | ||
|
d7f088bef0 | ||
|
f489ea871d | ||
|
7ae08dcf4f | ||
|
de90df6a63 | ||
|
addb3101f2 | ||
|
e162a06a1a | ||
|
b9abc7c3ef | ||
|
c76bf0bfab | ||
|
e7b42a66b1 | ||
|
bbb539ef56 | ||
|
dbb5f9b636 | ||
|
1979cb8104 | ||
|
91e94f9c0d | ||
|
42cbc7cf0c | ||
|
595553ae0b | ||
|
e03b665dd1 | ||
|
d0441219cb | ||
|
ac0cce9d6f | ||
|
1ad3a69d8f | ||
|
d86a386ad8 | ||
|
d66768ac55 | ||
|
567ceac52f | ||
|
47a0ef64d8 | ||
|
5f649a7613 | ||
|
d4b712db86 | ||
|
339e1f4557 | ||
|
da42214e86 | ||
|
c5ebf9c12e | ||
|
6b201a78e0 | ||
|
d2d8d38db4 | ||
|
0dee417e1d | ||
|
a0056665ae | ||
|
9b245d8113 | ||
|
d098b19d4d | ||
|
3aaa326bab | ||
|
1a25c3ade9 | ||
|
881c2a2086 | ||
|
a33f4df47e | ||
|
4748c6c4d7 | ||
|
18af9297ea | ||
|
c138d87c30 | ||
|
709c5378f8 | ||
|
8e9a0fbe99 | ||
|
117af5f59b | ||
|
4dccb636e2 | ||
|
c40788c5b2 | ||
|
ca27a66593 | ||
|
713a076df3 | ||
|
abaa37c51f | ||
|
4a2fb0a871 | ||
|
5ddf25c66a | ||
|
ff9f90c7e6 | ||
|
d48d48cafb | ||
|
2bb9bc624d | ||
|
069eb707f0 | ||
|
c1cae4e9ba | ||
|
f5efccc8d6 | ||
|
f6e4fefd66 | ||
|
66bab0ec49 | ||
|
2b501953ce | ||
|
150d9c9961 | ||
|
e5b62ecc0b | ||
|
b621d3cf1c | ||
|
9abff2143d | ||
|
5d224583a1 | ||
|
fdc5890b09 | ||
|
f850409d45 | ||
|
d58748ac66 | ||
|
4a01752467 | ||
|
53f9d03e30 | ||
|
776b6965fb | ||
|
aeeef43f45 | ||
|
b60b7fd201 | ||
|
f918792bb6 | ||
|
abb3ba2c6a | ||
|
566e05bb33 | ||
|
6380440c00 | ||
|
f8e6fb5674 | ||
|
ac83dcc3b3 | ||
|
b746f488b0 | ||
|
e5a7a5b0e5 | ||
|
f8aae8f544 | ||
|
3f8ad111b2 | ||
|
81176f8181 | ||
|
cdc8e43a79 | ||
|
ae69444b3b | ||
|
28257e906b | ||
|
7a9bb6e43d | ||
|
507f171b63 | ||
|
1dadfb6d15 | ||
|
2dc529b19f | ||
|
a5dd7e9063 | ||
|
eae892c9b1 | ||
|
71e81ccad3 | ||
|
eeaa766456 | ||
|
17627bab9f | ||
|
7327906fde | ||
|
3c3dfcd77d | ||
|
0adc3bd9ab | ||
|
0c3e5cd755 | ||
|
34714be205 | ||
|
77cf90cfb0 | ||
|
359f5511d7 | ||
|
9043e29b18 | ||
|
d59b8e5220 | ||
|
ebbeb1a058 | ||
|
afeb4d50a5 | ||
|
7fb4f43469 | ||
|
ca0cdbae5a | ||
|
879b173ae4 | ||
|
58b341ceec | ||
|
98981183d8 | ||
|
2747d6bd2a | ||
|
e76df47af0 | ||
|
04fbf58c18 | ||
|
10dcb079f7 | ||
|
8da7856780 | ||
|
78a6bcd553 | ||
|
66dd76be8f | ||
|
2174194bbd | ||
|
d58d11fa29 | ||
|
20bc40ac18 | ||
|
7881e4212f | ||
|
aaca4e7cd6 | ||
|
3250583253 | ||
|
be4c952542 | ||
|
5656ad7f6c | ||
|
ed3ab3d31d | ||
|
7c0f91b7f5 | ||
|
8619b3a79b | ||
|
f71e60619d | ||
|
3274a72cda | ||
|
c285171500 | ||
|
16156b8e27 | ||
|
56f34dd385 | ||
|
4d910a33fc | ||
|
e0ec7f5c67 | ||
|
886896137c | ||
|
e0a91cb479 | ||
|
bc51f8c734 | ||
|
a396e42fa8 | ||
|
009c491b9b | ||
|
9667d88e60 | ||
|
de68843eda | ||
|
cb52909ded | ||
|
52c9bb06c7 | ||
|
2957ec5b57 | ||
|
f384aae3a4 | ||
|
3a3899fda1 | ||
|
9cba48fbc9 | ||
|
86fbcede24 | ||
|
6e7ba4a9ca | ||
|
8f02d15fb9 | ||
|
cecae08c13 | ||
|
9152479981 | ||
|
2814206ffa | ||
|
a5c839da3a | ||
|
e3c3db72e2 | ||
|
1318d89456 | ||
|
68f97794bd | ||
|
9bd351abae | ||
|
60a6d0876e | ||
|
6b11b4b581 | ||
|
58cfb44e52 | ||
|
df3fb1c6fa | ||
|
71bda8b99d | ||
|
331e128116 | ||
|
69de36e70f | ||
|
b9cbea40e7 | ||
|
7654d547d7 | ||
|
995e9ffd47 | ||
|
11e6109a4a | ||
|
9e79025aef | ||
|
c1ea6cd689 | ||
|
4322ef4b37 | ||
|
e56d9e3fb0 | ||
|
833170d18c | ||
|
9ef8c5739b | ||
|
b8cdd9e090 | ||
|
cad4a8da0d | ||
|
432adade05 | ||
|
e9baa3543e | ||
|
d5c8af57f3 | ||
|
deeadb6648 | ||
|
f8f0ee6882 | ||
|
76be244662 | ||
|
d97a151695 | ||
|
c9dfc76155 | ||
|
506023c898 | ||
|
0e9245ba28 | ||
|
091811a4d6 | ||
|
18f4bccb37 | ||
|
37af4964cc | ||
|
f248d99d7a | ||
|
ca80d88a74 | ||
|
56765d966f | ||
|
d169afcafa | ||
|
1f4b738639 | ||
|
981668a56b | ||
|
b55257d0d3 | ||
|
ae6f746cf2 | ||
|
68e7b7a1d4 | ||
|
7b7071cf6d | ||
|
b1e908e6b6 | ||
|
f91050a7c7 | ||
|
e3f9aa526b | ||
|
7db0c756d6 | ||
|
c1bd844673 | ||
|
914354adb2 | ||
|
2ac4fb92c2 | ||
|
0c1dd954eb | ||
|
116767b8b8 | ||
|
3eb5394474 | ||
|
953f59195f | ||
|
309f3998d7 | ||
|
887c4013a0 | ||
|
f232ddcdcb | ||
|
bd0424ee7d | ||
|
62824e1537 | ||
|
36e7d3133b | ||
|
20c69951ab | ||
|
d9d8cdf043 | ||
|
29fba02b4a | ||
|
1954718e3f | ||
|
6712cae260 | ||
|
6ddf213d5d | ||
|
b700a17efa | ||
|
bedec591a2 | ||
|
2c4568119c | ||
|
efd8e2f343 | ||
|
f29793c868 | ||
|
e8bbb15f7e | ||
|
fdb2e5eb7b | ||
|
da58e7edb4 | ||
|
e81b8ba479 | ||
|
cfbe553724 | ||
|
17634e05d4 | ||
|
7d216d364e | ||
|
9e16f6e88c | ||
|
f23e8b3d1c | ||
|
04d988357f | ||
|
14ed950dad | ||
|
f107c34f82 | ||
|
9b5bfd33ef | ||
|
8fc6c79b6d | ||
|
2d838b9f09 | ||
|
c1649507e9 | ||
|
a246a6390f | ||
|
6a9317238a | ||
|
0a45542477 | ||
|
03be66c857 | ||
|
777c371be9 | ||
|
d8bb202fbd | ||
|
f0f9167682 | ||
|
6fbde2ea22 | ||
|
2378f459de | ||
|
1b4ae67f51 | ||
|
ec67c56cc7 | ||
|
393c1dba75 | ||
|
5b76314ef4 | ||
|
0ca2053a27 | ||
|
c2c209d19a | ||
|
de5137ff28 | ||
|
ffb4b0fade | ||
|
bfd03680cc | ||
|
82280b673e | ||
|
27dbd28c5c | ||
|
4d55985151 | ||
|
2635e545bf | ||
|
e8a3a40691 | ||
|
3a7d7778a0 | ||
|
437c7585cc | ||
|
507766bff6 | ||
|
74d11991ab | ||
|
217a1e92c6 | ||
|
83bc7b831d | ||
|
1071b2ee69 | ||
|
3753ac5ee6 | ||
|
6120c5e4a8 | ||
|
b252a80b7e | ||
|
d67182f411 | ||
|
fec8f23ad4 | ||
|
ab7f1cc3be | ||
|
3f65468299 | ||
|
333d0c5709 | ||
|
8c47939ad2 | ||
|
664d24f258 | ||
|
f8adb23062 | ||
|
a2a4b1d170 | ||
|
aa6f26f9fb | ||
|
fd2ddf8b50 | ||
|
0408c86065 | ||
|
e1555fc335 | ||
|
75141bdb65 | ||
|
3951c8863f | ||
|
bdc1579a9c | ||
|
8e1c6601af | ||
|
1c634bd736 | ||
|
2868191440 | ||
|
a567adcce5 | ||
|
5db1ee8fc4 | ||
|
a6729d9454 | ||
|
57f7039795 | ||
|
5c3775c6ee | ||
|
1cec9b70a2 | ||
|
eca34c37d9 | ||
|
58acfc4042 | ||
|
feab865203 | ||
|
754f09cdad | ||
|
fac354623b | ||
|
5967e6c3e4 | ||
|
174f316a62 | ||
|
c9651a012e | ||
|
3130d7db33 | ||
|
30af079f99 | ||
|
3ccae8efee | ||
|
5b946cb261 | ||
|
885045ca55 | ||
|
01d728ac6b | ||
|
f9e670f464 | ||
|
868e1677e3 | ||
|
84407de2aa | ||
|
7011b04cb2 | ||
|
ede4594dd9 | ||
|
3a7f02352a | ||
|
e2cb4ed031 | ||
|
24a1fe55bb | ||
|
66dddd9799 | ||
|
b3b2411cb7 | ||
|
eb71d82ecc | ||
|
298fc043ff | ||
|
63f678210a | ||
|
7a38246284 | ||
|
5390903a22 | ||
|
4b9e977fdc | ||
|
6a9a681559 | ||
|
a6e919767c | ||
|
290e9ac767 | ||
|
cd8ac36e9b | ||
|
3068969b51 | ||
|
e947e72169 | ||
|
86a53dbfc9 | ||
|
aa5c5c4553 | ||
|
1f93237ee3 | ||
|
3d248e9ad2 | ||
|
ec9aedea0b | ||
|
33021311b2 | ||
|
2a3d9e080a | ||
|
b528d0b1db | ||
|
a429e9c3f9 | ||
|
b90d2c1c90 | ||
|
27dc7ef79a | ||
|
76441b1d5f | ||
|
d2e3577784 | ||
|
4a0344182f | ||
|
ddc496cdaa | ||
|
746981611b | ||
|
c1beefce3a | ||
|
1667cc8a8d | ||
|
0aea46a643 | ||
|
820ab2210e | ||
|
f40e8a57b4 | ||
|
005357e821 | ||
|
5fcfc95280 | ||
|
dfc9e912b5 | ||
|
a6385288aa | ||
|
2f6457b3f7 | ||
|
ba2f0f753b | ||
|
38554dbcbe | ||
|
fe98fde338 | ||
|
c3ea69f26a | ||
|
367e1f047c | ||
|
7db1ed695c |
17
.cvsignore
17
.cvsignore
@@ -1,5 +1,7 @@
|
|||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
|
call-vector.h
|
||||||
|
call-vector.h
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
config.cache
|
config.cache
|
||||||
config.h
|
config.h
|
||||||
@@ -13,7 +15,8 @@ gtopConf.sh
|
|||||||
i386-bsdi
|
i386-bsdi
|
||||||
i686-pc-linux-gnu
|
i686-pc-linux-gnu
|
||||||
intl
|
intl
|
||||||
libgtop-0.01.tar.gz
|
libgtop-1.*.*.tar.gz
|
||||||
|
libgtop-1.*.*
|
||||||
libgtop-mirror.sh.swp
|
libgtop-mirror.sh.swp
|
||||||
libgtopConf.sh
|
libgtopConf.sh
|
||||||
libtool
|
libtool
|
||||||
@@ -21,6 +24,7 @@ ltconfig
|
|||||||
ltmain.sh
|
ltmain.sh
|
||||||
macros
|
macros
|
||||||
stamp-h
|
stamp-h
|
||||||
|
stamp-h.in
|
||||||
sun4
|
sun4
|
||||||
sun4sol2
|
sun4sol2
|
||||||
support
|
support
|
||||||
@@ -30,5 +34,12 @@ i686-pc-linux-gnu-linux
|
|||||||
libgtop-config
|
libgtop-config
|
||||||
ABOUT-NLS
|
ABOUT-NLS
|
||||||
libgtop.spec
|
libgtop.spec
|
||||||
libgtop-0.99.*.tar.gz
|
install-sh
|
||||||
libgtop-0.99.*
|
mkinstalldirs
|
||||||
|
missing
|
||||||
|
INSTALL
|
||||||
|
COPYING
|
||||||
|
glibtop-config.h
|
||||||
|
stamp-gc-h
|
||||||
|
build-debstamp
|
||||||
|
install-debstamp
|
||||||
|
2
AUTHORS
2
AUTHORS
@@ -1,2 +1,2 @@
|
|||||||
Martin Baulig (martin@home-of-linux.org)
|
Martin Baulig (martin@home-of-linux.org)
|
||||||
Josh Sled <jsled@scam.XCF.Berkeley.EDU>
|
Drazen Kacar (dave@srce.hr)
|
||||||
|
731
ChangeLog
731
ChangeLog
@@ -1,3 +1,734 @@
|
|||||||
|
2000-01-14 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Released LibGTop 1.1.4 "Earthquake".
|
||||||
|
|
||||||
|
1999-01-13 Yuri Syrota <rasta@renome.rovno.ua>
|
||||||
|
|
||||||
|
* configure.in: Added Ukrainian (uk) to ALL_LINGUAS
|
||||||
|
|
||||||
|
2000-01-13 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/compat_10.h: Add compatibility #defines for
|
||||||
|
`GLIBTOP_XCPU_TOTAL', `GLIBTOP_XCPU_USER', `GLIBTOP_XCPU_NICE',
|
||||||
|
`GLIBTOP_XCPU_SYS', `GLIBTOP_XCPU_IDLE' and `GLIBTOP_XCPU_FLAGS'
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.4, binary age 0,
|
||||||
|
interface age 0 and increased LIBGTOP_SERVER_VERSION to 52.
|
||||||
|
|
||||||
|
2000-01-13 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* lib/sysdeps-init-freebsd.c: New file.
|
||||||
|
* lib/sysdeps-init-kernel.c: New file.
|
||||||
|
* lib/sysdeps-init-linux.c: New file.
|
||||||
|
* lib/sysdeps-init-solaris.c: New file.
|
||||||
|
* lib/sysdeps-init-stub-suid.c: New file.
|
||||||
|
* lib/sysdeps-init-stub.c: New file.
|
||||||
|
|
||||||
|
* lib/open.c (glibtop_open_l): Call glibtop_init_backend () and
|
||||||
|
_glibtop_open_sysdeps () here.
|
||||||
|
|
||||||
|
* lib/init.c (glibtop_init_s): Call `_glibtop_open_sysdeps'.
|
||||||
|
|
||||||
|
* include/glibtop/open.h (_glibtop_open_sysdeps): Declare this
|
||||||
|
when we are _IN_LIBGTOP.
|
||||||
|
|
||||||
|
* configure.in (sysdeps_name): Define and AC_SUBST this.
|
||||||
|
(sysdeps_init_file): Define and AC_SUBST this to
|
||||||
|
`sysdeps-init-${sysdeps_name}.c'.
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4 (GNOME_LIBGTOP_SYSDEPS): Define and AC_SUBST
|
||||||
|
`libgtop_sysdeps_name'.
|
||||||
|
|
||||||
|
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/errors.h (GLIBTOP_ERROR_NO_BACKEND_OPENED):
|
||||||
|
New error constant.
|
||||||
|
|
||||||
|
* lib/lib.pl (glibtop_get_<feature>_l): Don't dump core when there
|
||||||
|
is no backend opened, but return GLIBTOP_ERROR_NO_BACKEND_OPENED.
|
||||||
|
|
||||||
|
* include/glibtop/backend.h (glibtop_backend): Added `_priv_module'
|
||||||
|
pointer (type glibtop_backend_module). Made the `info' field const
|
||||||
|
since this now points to gmodule loaded memory
|
||||||
|
(glibtop_backend_entry): Made the `info' field const since it points
|
||||||
|
to gmodule loaded memory.
|
||||||
|
|
||||||
|
* lib/close.c (glibtop_close_r): Close all currently opened backends.
|
||||||
|
|
||||||
|
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/backend.h (glibtop_backend_entry): New type.
|
||||||
|
(glibtop_backend_module): New private type.
|
||||||
|
|
||||||
|
* lib/backend.c (glibtop_register_backend): This now takes a
|
||||||
|
`glibtop_backend_entry' argument, not a `glibtop_backend_info' one.
|
||||||
|
(glibtop_backend_by_id): Return a `glibtop_backend_entry' type,
|
||||||
|
not a `glibtop_backend_info' one.
|
||||||
|
(glibtop_backend_by_name): Likewise.
|
||||||
|
|
||||||
|
* lib/init-backends.c: If we have libxml, read all `.backend' files
|
||||||
|
in $(LIBGTOP_BACKEND_DIR), XML parse them and register them via
|
||||||
|
`glibtop_backend_register'. This builds a list of all currently
|
||||||
|
supported backends without actually loading them into memory.
|
||||||
|
|
||||||
|
* lib/open-backend.c (glibtop_open_backend_l): GModule load the
|
||||||
|
backend if it's not already in memory.
|
||||||
|
|
||||||
|
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* lib/init.c (glibtop_init_s): Comment out `_glibtop_init_hook_s'.
|
||||||
|
|
||||||
|
* configure.in: We now require libxml.
|
||||||
|
(LIBGTOP_LIBS): Remove all backend libraries.
|
||||||
|
(LIBGTOP_EXTRA_LIBS): Add $(LIBGTOP_XML_LIB) here.
|
||||||
|
|
||||||
|
* configure.in: Don't check for -lXau any longer.
|
||||||
|
|
||||||
|
* configure.in (LIBGTOP_BACKEND_DIR): Define this to be
|
||||||
|
`$(datadir)/libgtop/backends' and AC_SUBST it.
|
||||||
|
|
||||||
|
* libgtopConf.sh.in (LIBGTOP_BACKEND_DIR): Added.
|
||||||
|
|
||||||
|
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* xml.m4: New file to check for libxml.
|
||||||
|
|
||||||
|
* acconfig.h (HAVE_LIBXML): Define this if we have libxml.
|
||||||
|
|
||||||
|
* configure.in: Call `LIBGTOP_XML_HOOK' from `xml.m4' and
|
||||||
|
add libxml libraries to `LIBGTOP_EXTRA_LIBS' when found.
|
||||||
|
|
||||||
|
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* lib/sysdeps.c (_glibtop_init_hook_s): This has been moved
|
||||||
|
into the sysdeps backend.
|
||||||
|
|
||||||
|
* configure.in (LIBGTOP_LIBS): Added `-lgtop_backend_common'.
|
||||||
|
* lib/init-backends.c (glibtop_init_backends): Initialize
|
||||||
|
`glibtop_backend_common' backend.
|
||||||
|
|
||||||
|
* backends/common/: New directory.
|
||||||
|
|
||||||
|
2000-01-10 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* src/daemon/: Removed everything in this directory. This has
|
||||||
|
been obsoleted by the new server code in backends/server.
|
||||||
|
|
||||||
|
2000-01-09 Martin Baulig <martin@bergen.home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/global.h: Unconditionally #include <sys/types.h>.
|
||||||
|
|
||||||
|
2000-01-02 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/errors.h
|
||||||
|
(GLIBTOP_ERROR_DEMARSHAL_ERROR): New error constant.
|
||||||
|
|
||||||
|
* src/Makefile.am: Disable compilation of the `daemon' directory.
|
||||||
|
|
||||||
|
* include/glibtop/command.h: Removed.
|
||||||
|
* include/glibtop/version.h: Removed.
|
||||||
|
|
||||||
|
2000-01-02 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/call-vector.pl: All functions in the
|
||||||
|
`glibtop_call_vector' now take an additional `glibtop_backend *'
|
||||||
|
argument.
|
||||||
|
|
||||||
|
2000-01-01 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* backends/: New directory.
|
||||||
|
* backends/server/: New directory.
|
||||||
|
* backends/sysdeps/: New directory.
|
||||||
|
|
||||||
|
* include/glibtop/backend.h: New file.
|
||||||
|
|
||||||
|
* include/glibtop/call-vector.h.in: New file. Template file
|
||||||
|
for `call-vector.h'.
|
||||||
|
* include/glibtop/call-vector.pl: New file. Creates 'call-vector.h'
|
||||||
|
from `call-vector.h.in'.
|
||||||
|
|
||||||
|
* include/glibtop/errors.h
|
||||||
|
(GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant.
|
||||||
|
(GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant.
|
||||||
|
|
||||||
|
* include/glibtop/limits.h
|
||||||
|
(GLIBTOP_BACKEND_NAME_LEN): New constant.
|
||||||
|
|
||||||
|
* glibtop-server-private.h (glibtop_server_private):
|
||||||
|
Added `GSList *backend_list' and removed `input', `output',
|
||||||
|
`socket' and `pid'.
|
||||||
|
|
||||||
|
* lib/command.c: Removed. Moved to `backends/server/'.
|
||||||
|
* lib/read.c: Removed. Moved to `backends/server/'.
|
||||||
|
* lib/read_data.c: Removed. Moved to `backends/server/'.
|
||||||
|
* lib/write.c: Removed. Moved to `backends/server/'.
|
||||||
|
|
||||||
|
* include/glibtop/read.h: Removed.
|
||||||
|
* include/glibtop/read_data.h: Removed.
|
||||||
|
* include/glibtop/write.h: Removed.
|
||||||
|
|
||||||
|
1999-12-26 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4 (LIBGTOP_CHECK_SYSDEPS_DIR): New macro;
|
||||||
|
moved check for the sysdeps directory here.
|
||||||
|
(--with-sysdeps-dir): New hacker mode command line option to
|
||||||
|
manually override the sysdeps dir. Use of this option is highly
|
||||||
|
deprecated; I only added it to be able to do `stub_suid' hackings
|
||||||
|
on my GNU/Linux machine.
|
||||||
|
|
||||||
|
1999-12-23 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Removed all remote communication support from LibGTop.
|
||||||
|
|
||||||
|
* include/glibtop/gnuserv.h: Removed.
|
||||||
|
|
||||||
|
* sysdeps/common/gnuslib.c: Removed.
|
||||||
|
|
||||||
|
* src/daemon/Makefile.am: Don't build the `libgtop_daemon'
|
||||||
|
binary any longer.
|
||||||
|
|
||||||
|
* src/daemon/server_config.pl: Removed.
|
||||||
|
* src/daemon/server_config.h.in: Removed.
|
||||||
|
* src/daemon/server_config.h: Removed.
|
||||||
|
|
||||||
|
1999-12-22 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* lib/errors.c (glibtop_get_errno_l): New global function
|
||||||
|
to return `server->glibtop_errno'.
|
||||||
|
(glibtop_clear_errno_l): New global function to return
|
||||||
|
`server->glibtop_errno' and set it back to 0.
|
||||||
|
|
||||||
|
* include/glibtop/errors.h
|
||||||
|
(GLIBTOP_ERROR_SERVER_COMM_FAILURE): New error constant.
|
||||||
|
(GLIBTOP_ERROR_NO_SUCH_PROCESS): New error constant.
|
||||||
|
(GLIBTOP_ERROR_NO_KERNEL_SUPPORT): New error constant.
|
||||||
|
(GLIBTOP_ERROR_INCOMPATIBLE_KERNEL): New error constant.
|
||||||
|
|
||||||
|
* lib/lib.pl: For functions with a `retval' return type, set
|
||||||
|
`server->glibtop_errno' to the error code on error or to zero
|
||||||
|
on success.
|
||||||
|
|
||||||
|
* glibtop.h (glibtop): Added `glibtop_errno' field.
|
||||||
|
|
||||||
|
1999-12-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/glib-arrays.h: New file.
|
||||||
|
|
||||||
|
* lib/glib-arrays.c: New file.
|
||||||
|
(glibtop_get_proclist_as_array_l): New function.
|
||||||
|
(glibtop_get_proc_args_as_array_l): New function.
|
||||||
|
(glibtop_get_proc_map_as_array_l): New function.
|
||||||
|
(glibtop_get_mountlist_as_array_l): New function.
|
||||||
|
|
||||||
|
1999-12-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop-server-private.h: New file. This is a private header
|
||||||
|
file which defines `struct _glibtop_server_private'.
|
||||||
|
|
||||||
|
* glibtop.h (glibtop): Added `glibtop_server_private *_priv' field
|
||||||
|
and moved some private fields there.
|
||||||
|
|
||||||
|
1999-12-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/procargs.h (glibtop_proc_args): Removed.
|
||||||
|
(glibtop_get_proc_args_*): This now takes a `glibtop_array' parameter
|
||||||
|
instead of a `glibtop_proc_args one and returns a `char **'.
|
||||||
|
|
||||||
|
1999-12-13 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (LIBGTOP_LIBS): Put `-lgtop' after `-lgtop_common'.
|
||||||
|
|
||||||
|
1999-12-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/errors.h: New file. We define `GLIBTOP_ERROR_*'
|
||||||
|
error constants here.
|
||||||
|
|
||||||
|
* lib/errors.c: New file.
|
||||||
|
(glibtop_error_strings): Array of error messages.
|
||||||
|
(glibtop_get_error_string_l): Get error message.
|
||||||
|
|
||||||
|
* include/glibtop/parameter.h: Added `GLIBTOP_PARAM_REMOTE_USER' and
|
||||||
|
`GLIBTOP_PARAM_PATH_RSH'.
|
||||||
|
|
||||||
|
* lib/parameter.c (glibtop_get_parameter_l): Changed return value
|
||||||
|
from `size_t' to `ssize_t' and let it return an error constant.
|
||||||
|
(glibtop_get_parameter_size_l): New function.
|
||||||
|
(glibtop_set_parameter_l): Changed return value from `void' to `int'
|
||||||
|
and let it return an error constant on error.
|
||||||
|
|
||||||
|
* structures.def (glibtop_sysdeps): Added.
|
||||||
|
|
||||||
|
1999-12-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
All functions which return an array now take a `glibtop_array *array'
|
||||||
|
parameter instead of a `glibtop_<feature> *buf' one.
|
||||||
|
|
||||||
|
For compatibility, we typedef the corresponding `glibtop_<feature>'s
|
||||||
|
to `glibtop_array' in <glibtop/compat_10.h>.
|
||||||
|
|
||||||
|
This has the advantage that scripting languages like Guile with an
|
||||||
|
array implementation which stores the length of an array in the
|
||||||
|
array don't need the `glibtop_array' parameter at all any longer.
|
||||||
|
|
||||||
|
We'll also add convenient functions which return GPtrArray's here.
|
||||||
|
|
||||||
|
* include/glibtop/proclist.h (glibtop_proclist): Removed.
|
||||||
|
(glibtop_get_proclist_*): This now takes a `glibtop_array' parameter
|
||||||
|
instead of a `glibtop_proclist' one.
|
||||||
|
|
||||||
|
* include/glibtop/procmap.h (glibtop_proc_map): Removed.
|
||||||
|
(glibtop_get_proc_map_*): This now takes a `glibtop_array' parameter
|
||||||
|
instead of a `glibtop_proc_map' one.
|
||||||
|
|
||||||
|
* include/glibtop/mountlist.h (glibtop_mountlist): Removed.
|
||||||
|
(glibtop_get_mountlist_*): This now takes a `glibtop_array' parameter
|
||||||
|
instead of a `glibtop_mountlist' one.
|
||||||
|
|
||||||
|
* include/glibtop/interfaces.h (glibtop_interface_names): Removed.
|
||||||
|
(glibtop_get_interface_names_*): This now takes a `glibtop_array'
|
||||||
|
parameter instead of a `glibtop_interface_name' one.
|
||||||
|
|
||||||
|
* include/glibtop/compat_10.h: New file. Contains some typedefs and
|
||||||
|
#defines to keep compatibility until the big restructurement is
|
||||||
|
completely done.
|
||||||
|
|
||||||
|
1999-12-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/array.h: New file.
|
||||||
|
|
||||||
|
1999-12-11 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
This is a larger source-incompatible commit, but it'll make it
|
||||||
|
easier to write automatically generated code (for instance for
|
||||||
|
scripting languages).
|
||||||
|
|
||||||
|
Renamed all constants for the flags field to match the field names
|
||||||
|
from the features.def and structures.def where this was not already
|
||||||
|
the case.
|
||||||
|
|
||||||
|
* include/glibtop/cpu.h: s/GLIBTOP_XCPU_/GLIBTOP_CPU_XCPU_/g.
|
||||||
|
* include/glibtop/shm_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SHM_LIMITS_/g.
|
||||||
|
* include/glibtop/sem_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SEM_LIMITS_/g.
|
||||||
|
* include/glibtop/msg_limits.h: s/GLIBTOP_IPC_/GLIBTOP_MSG_LIMITS_/g.
|
||||||
|
|
||||||
|
1999-12-11 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* features.def: Use `string' instead of `str' as type name.
|
||||||
|
|
||||||
|
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Moved all Guile code to the libgtop-bindings module.
|
||||||
|
|
||||||
|
* sysdeps/guile/*: Removed.
|
||||||
|
* sysdeps/guile/names/*: Removed.
|
||||||
|
|
||||||
|
* libgtopConf.sh.in: Removed all guile variables.
|
||||||
|
|
||||||
|
* configure.in: Don't check for guile any longer.
|
||||||
|
|
||||||
|
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* lib/structures.pl: New script to create `structures.h' which will
|
||||||
|
be used in language bindings code.
|
||||||
|
|
||||||
|
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* features.def: Use `pointer(<type>)' as return value for functions
|
||||||
|
returning an array of scalar values (such as `unsigned' etc.).
|
||||||
|
|
||||||
|
* features.def: Use `array(<type>)' as return value for functions
|
||||||
|
returning an array of structures.
|
||||||
|
|
||||||
|
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* includes/glibtop/interfaces.h (glibtop_get_interface_names):
|
||||||
|
Return array of `glibtop_interface' structures.
|
||||||
|
(glibtop_interface): New structure.
|
||||||
|
|
||||||
|
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/limits.h (GLIBTOP_INTERFACE_LEN): New #define.
|
||||||
|
(GLIBTOP_UNLIMITED): #define this to be `(~(u_int64_t)0)'.
|
||||||
|
|
||||||
|
* glibtop.h (glibtop): Added `refcount' field.
|
||||||
|
* lib/init.c (glibtop_server_ref, glibtop_server_unref): New
|
||||||
|
functions to deal with refcounts.
|
||||||
|
|
||||||
|
* structures.def: New file. This is used by the language bindings
|
||||||
|
code to get the definitions of some of LibGTop's structures.
|
||||||
|
|
||||||
|
1999-11-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/netload.h (glibtop_get_netload): Added
|
||||||
|
`transport' and `protocol' argument to specify transport method
|
||||||
|
and protocol.
|
||||||
|
|
||||||
|
* include/glibtop/netinfo.h (glibtop_get_netinfo): Added
|
||||||
|
`transport' argument to specify the transport method.
|
||||||
|
|
||||||
|
1999-11-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/netinfo.h (glibtop_netinfo): Added `transport'
|
||||||
|
field for the transport method.
|
||||||
|
|
||||||
|
1999-11-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Split netload into netload and netinfo.
|
||||||
|
|
||||||
|
* include/glibtop/netinfo.h: New file.
|
||||||
|
|
||||||
|
* include/glibtop/netload.h (glibtop_netload): Moved `if_flags',
|
||||||
|
`mtu', `subnet' and `address' into the new `glibtop_netinfo'.
|
||||||
|
|
||||||
|
* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_NETINFO): Added.
|
||||||
|
(glibtop_sysdeps): Added `netinfo.
|
||||||
|
* include/glibtop/union.h (glibtop_union): Added `netinfo.
|
||||||
|
* include/glibtop/command.h (GLIBTOP_CMND_NETINFO): Added.
|
||||||
|
|
||||||
|
1999-11-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/interfaces.h (glibtop_get_interface_names):
|
||||||
|
Added `instance' argument.
|
||||||
|
|
||||||
|
1999-11-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* lib/lib.pl: We now have a new, more extensible client/server
|
||||||
|
communication model. Include `$(top_srcdir)/scripts/c_types.pl' here.
|
||||||
|
|
||||||
|
1999-11-21 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Added new feature to get a list of network interface names.
|
||||||
|
|
||||||
|
* features.def: Added `interface_names' feature.
|
||||||
|
|
||||||
|
* include/glibtop/interfaces.h: New file.
|
||||||
|
|
||||||
|
* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_INTERFACE_NAMES): Added.
|
||||||
|
(glibtop_sysdeps): Added `interface_names'.
|
||||||
|
* include/glibtop/union.h (glibtop_union): Added `interface_names'.
|
||||||
|
* include/glibtop/command.h (GLIBTOP_CMND_INTERFACE_NAMES): Added.
|
||||||
|
|
||||||
|
1999-11-21 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/sysdeps.h (glibtop_init_func_t): Use `int'
|
||||||
|
as return type, not `void'.
|
||||||
|
|
||||||
|
* include/glibtop/proclist.h (GLIBTOP_KERN_PROC_PPID): On a
|
||||||
|
suggestion from Sebastian Fischmeister added a way to return
|
||||||
|
all children of a given process.
|
||||||
|
|
||||||
|
1999-11-02 Jesus Bravo Alvarez <jba@pobox.com>
|
||||||
|
|
||||||
|
* configure.in: Added Galician (gl) to ALL_LINGUAS
|
||||||
|
|
||||||
|
1999-10-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* features.def: Use `retval' for the default retval.
|
||||||
|
|
||||||
|
* include/glibtop/command.h (glibtop_command_h): Added
|
||||||
|
`int *retval_ptr' parameter to return the retval from the
|
||||||
|
sysdeps functions.
|
||||||
|
|
||||||
|
* include/glibtop/*.h (glibtop_get_*, glibtop_init*): Changed
|
||||||
|
the return value of all `glibtop_get_<feature>_* ()' and all
|
||||||
|
`glibtop_init_<feature>_* ()' functions from void to int.
|
||||||
|
|
||||||
|
* features.def: Reflect changes of the return values.
|
||||||
|
* sysdeps/*/*.c: Reflect changes of the return values.
|
||||||
|
|
||||||
|
1999-10-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* acconfig.h (LIBGTOP_USE_GLIB_MALLOC): Added.
|
||||||
|
* configure.in (--enable-glib-malloc): New configure parameter
|
||||||
|
to use glib's malloc functions.
|
||||||
|
|
||||||
|
* sysdeps/common/ChangeLog: New file.
|
||||||
|
|
||||||
|
1999-10-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
The LibGTop examples have been moved into their own top-level
|
||||||
|
module libgtop-examples.
|
||||||
|
|
||||||
|
* examples/*: Removed.
|
||||||
|
* configure.in: Removed all checks for the examples.
|
||||||
|
* libgtop-sysdeps.m4: Removed --with-libgtop-examples parameter.
|
||||||
|
* Makefile.am: Removed examples from the subdir list.
|
||||||
|
|
||||||
|
1999-10-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Check for <osreldate.h> on *BSD* systems.
|
||||||
|
|
||||||
|
1999-10-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.3, binary age 0,
|
||||||
|
interface age 0 and increased LIBGTOP_SERVER_VERSION to 51.
|
||||||
|
|
||||||
|
This implies that we can now break as much compatibility as
|
||||||
|
we want.
|
||||||
|
|
||||||
|
1999-10-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Released LibGTop 1.1.2 "Hardangervidda".
|
||||||
|
|
||||||
|
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* RELNOTES-1.1.x: New file. We also track all changes since
|
||||||
|
1.0.x here.
|
||||||
|
|
||||||
|
* NEWS: We start maintaining a NEWS file now :)
|
||||||
|
|
||||||
|
* NEWS.old: Removed obsolete file.
|
||||||
|
|
||||||
|
* TODO: Nuked it. We may need this file later ...
|
||||||
|
|
||||||
|
1999-10-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (DL_LIB): Check for dlopen() and AC_SUBST this.
|
||||||
|
|
||||||
|
1999-10-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in: Fixed typedef syntax for glibtop-config.h.
|
||||||
|
Thanks to Drazen Kacar for pointing this out.
|
||||||
|
|
||||||
|
1999-10-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.2, binary age 2,
|
||||||
|
interface age 2.
|
||||||
|
|
||||||
|
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (libgtop_top_builddir): AC_SUBST this.
|
||||||
|
|
||||||
|
1999-09-27 Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br>
|
||||||
|
|
||||||
|
* configure.in: Added "pt_BR" to ALL_LINGUAS.
|
||||||
|
|
||||||
|
1999-09-22 Kjartan Maraas <kmaraas@online.no>
|
||||||
|
|
||||||
|
* configure.in: Added "da" to ALL_LINGUAS.
|
||||||
|
|
||||||
|
1999-09-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtopConf.sh.in: Added MODULE_VERSION on Miguel's
|
||||||
|
request (set it to "libgtop-@LIBGTOP_VERSION@").
|
||||||
|
|
||||||
|
1999-09-18 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||||
|
|
||||||
|
* configure.in, po/pl.po: copied pl.po from stable CVS tree
|
||||||
|
|
||||||
|
1999-09-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in: Make it work if we have GNOME and the user
|
||||||
|
gave use --without-gnome (fixes bug #1735).
|
||||||
|
|
||||||
|
1999-07-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/error.h: Use G_GNUC_UNUSED.
|
||||||
|
|
||||||
|
* configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake
|
||||||
|
conditionals.
|
||||||
|
|
||||||
|
1999-07-27 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (LT_VERSION_INFO): Add `-release ${LT_RELEASE}'.
|
||||||
|
This way you can have both 1.0.x and 1.1.x libraries under the
|
||||||
|
same ${prefix}.
|
||||||
|
|
||||||
|
1999-07-27 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.1 binary age 1,
|
||||||
|
interface age 1.
|
||||||
|
|
||||||
|
1999-07-11 Tomas Ogren <stric@ing.umu.se>
|
||||||
|
|
||||||
|
* configure.in: Added sv to ALL_LINGUAS
|
||||||
|
|
||||||
|
1999-07-11 Tomas Ogren <stric@ing.umu.se>
|
||||||
|
|
||||||
|
* sysdeps/names/procmem.c: Fixed a tyop
|
||||||
|
|
||||||
|
1999-06-22 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in: Some versions of Solaris require -lelf for -lkvm;
|
||||||
|
added appropriate check for this situation.
|
||||||
|
|
||||||
|
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
|
||||||
|
|
||||||
|
* include/glibtop/sysdeps.h: Remove the `GLIBTOP_SYSDEPS_FEATURES'
|
||||||
|
and `GLIBTOP_SYSDEPS_POINTER_SIZE' constants and let numbering
|
||||||
|
start at zero for `GLIBTOP_SYSDEPS_CPU'.
|
||||||
|
|
||||||
|
1999-05-28 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop.h (GLIBTOP_MOUNTENTRY_LEN): Move this
|
||||||
|
* include/glibtop/limits.h: here.
|
||||||
|
|
||||||
|
1999-05-26 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in (INCLUDES): Define `LIBGTOP_VERSION_CODE' here so we
|
||||||
|
can use version conditionals in the sysdeps code.
|
||||||
|
|
||||||
|
1999-05-25 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Make the I4B check work for NetBSD.
|
||||||
|
|
||||||
|
1999-05-15 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Remove the `--enable-hacker-mode' requirement
|
||||||
|
for the BSDI, Solaris and Digital Unix ports.
|
||||||
|
|
||||||
|
1999-05-13 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4 (GLIBTOP_SOLARIS_RELEASE): Define this on Solaris;
|
||||||
|
we use version codes like 270 for SunOS 5.7 and 251 for SunOS 2.5.1.
|
||||||
|
|
||||||
|
1999-05-12 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop-config.h: This is a new generated file which will be
|
||||||
|
included from <glibtop.h>. We define things like `u_int64_t' and
|
||||||
|
LIBGTOP_*_VERSION here so we can compile LibGTop applications with
|
||||||
|
`libgtop-config --cflags`.
|
||||||
|
|
||||||
|
* configure.in: Create glibtop-config.h.
|
||||||
|
(GLIBTOP_*_INCS): Added `-I $(pkglibdir)/include'.
|
||||||
|
|
||||||
|
* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs'
|
||||||
|
parameter so you can now use LibGTop even in no-autoconf apps.
|
||||||
|
|
||||||
|
* Makefile.am: Install `glibtop-config.h' in `$(pkglibdir)/include'.
|
||||||
|
|
||||||
|
1999-05-09 Drazen Kacar <dave@srce.hr>
|
||||||
|
|
||||||
|
* configure.in, acconfig.h: Added checks for <procfs.h>
|
||||||
|
and <sys/procfs.h>
|
||||||
|
|
||||||
|
1999-05-09 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* doc: One should ship the documentation of a package together with
|
||||||
|
the tarball, so I added this back.
|
||||||
|
|
||||||
|
1999-05-08 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/limits.h (GLIBTOP_MAX_GROUPS): Define this here.
|
||||||
|
* include/glibtop/procuid.h (GLIBTOP_MAX_GROUPS): Moved to limits.h.
|
||||||
|
|
||||||
|
* features.def: We can use constants from <glibtop/limits.h> here.
|
||||||
|
|
||||||
|
1999-05-08 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Use the setgid sys server for Solaris.
|
||||||
|
|
||||||
|
1999-05-06 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/sysdeps.h (glibtop_sysdeps): Added `pointer_size'
|
||||||
|
which is the number of bits of a `void *'.
|
||||||
|
|
||||||
|
1999-05-03 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Set version number to 1.1.0. Also made a `LIBGTOP_STABLE_1_0'
|
||||||
|
branch in CVS while development will go on here in the HEAD.
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.1.0 binary age 0,
|
||||||
|
interface age 0. Set LIBGTOP_SERVER_VERSION to 50.
|
||||||
|
|
||||||
|
1999-04-18 Tuomas J. Lukka <lukka@iki.fi>
|
||||||
|
|
||||||
|
* Add missing comma in sysdeps/names/proctime.c
|
||||||
|
|
||||||
|
1999-04-18 Tuomas J. Lukka <lukka@iki.fi>
|
||||||
|
|
||||||
|
* Add missing comma in sysdeps/names/cpu.c
|
||||||
|
|
||||||
|
1999-04-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Thanks to Drazen Kacar for pointing out that not all processors must
|
||||||
|
be running all the time under Solaris, so we need to have some flag
|
||||||
|
to find out which processors are running.
|
||||||
|
|
||||||
|
* (glibtop_cpu): Added `xcpu_flags' bitmask of running processors.
|
||||||
|
* (glibtop_proc_time): Added `xcpu_flags'.
|
||||||
|
|
||||||
|
1999-04-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* include/glibtop/limits.h: New file.
|
||||||
|
(GLIBTOP_NCPU): Define this here and increase it to 64.
|
||||||
|
|
||||||
|
1999-03-30 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Added some new features.
|
||||||
|
|
||||||
|
* (glibtop_uptime): Added `boot_time', boot time in seconds
|
||||||
|
since the epoch.
|
||||||
|
|
||||||
|
* (glibtop_proc_state): Changed `state' from char to unsigned.
|
||||||
|
`uid' and `gid' are effective uid and gid; added comment.
|
||||||
|
Added `ruid' and `rgid' for guaranteed-to-be-correct real uid/gid.
|
||||||
|
For SMP systems: added `has_cpu', `processor' and `last_processor'.
|
||||||
|
|
||||||
|
* (glibtop_proc_uid): Added suid, sgid, fsuid, fsgid, ngroups, groups.
|
||||||
|
|
||||||
|
* (glibtop_proc_segment): Added start_data, end_data, start_brk,
|
||||||
|
end_brk, start_mmap, arg_start, arg_end, env_start, env_end.
|
||||||
|
|
||||||
|
* include/glibtop/procstate.h: Define some constants for the `state'
|
||||||
|
field of glibtop_proc_state.
|
||||||
|
|
||||||
|
* include/glibtop/prockernel.h: Define some constants for the
|
||||||
|
`k_flags' field of glibtop_proc_kernel.
|
||||||
|
|
||||||
|
1999-03-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* configure.in: Check for getloadavg () and swapctl () for
|
||||||
|
Solaris.
|
||||||
|
|
||||||
|
1999-03-23 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop.h (glibtop): Added `wanted'. Applications can set the
|
||||||
|
features they are interested in here. This way we don't waste CPU
|
||||||
|
getting expensive data that aren't really needed.
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: This breaks backward compatibility and also
|
||||||
|
added new functions; set binary age and interface age to 0.
|
||||||
|
|
||||||
|
1999-03-21 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Added a new sysctl () interface to the Linux Kernel.
|
||||||
|
|
||||||
|
* kernel/sysctl: Imported.
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: If `--enable-hacker-mode' is given, check
|
||||||
|
for my new sysctl () interface.
|
||||||
|
|
||||||
|
1999-03-20 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Removed all traces of my old table () Linux kernel hack.
|
||||||
|
|
||||||
|
* kernel: Removed.
|
||||||
|
* sysdeps/kernel: Removed.
|
||||||
|
* libgtop-sysdeps.m4: Don't check for table (); it does not
|
||||||
|
exist any longer.
|
||||||
|
|
||||||
|
1999-03-19 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
This is *untested* - please read "sysdeps/freebsd/ChangeLog" !
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Use the `freebsd' sysdeps directory for
|
||||||
|
BSDI as well if the `--enable-hacker-mode' parameter was given.
|
||||||
|
|
||||||
|
1999-03-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* LIBGTOP-VERSION: Set version number to 1.0.2 binary age 1,
|
||||||
|
intergace age 1.
|
||||||
|
|
||||||
|
1999-03-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
Imported first version of my Solaris port.
|
||||||
|
|
||||||
|
* configure.in: Check for `kstat_open' in `-lkstat'.
|
||||||
|
|
||||||
|
* libgtop-sysdeps.m4: Recognize the `solaris' sysdeps directory
|
||||||
|
when the `--enable-hacker-mode' parameter was given.
|
||||||
|
|
||||||
1999-03-01 Martin Baulig <martin@home-of-linux.org>
|
1999-03-01 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
Released LibGTop 1.0.1.
|
Released LibGTop 1.0.1.
|
||||||
|
@@ -7,14 +7,14 @@
|
|||||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
||||||
#
|
#
|
||||||
LIBGTOP_MAJOR_VERSION=1
|
LIBGTOP_MAJOR_VERSION=1
|
||||||
LIBGTOP_MINOR_VERSION=0
|
LIBGTOP_MINOR_VERSION=1
|
||||||
LIBGTOP_MICRO_VERSION=1
|
LIBGTOP_MICRO_VERSION=4
|
||||||
|
|
||||||
LIBGTOP_INTERFACE_AGE=0
|
LIBGTOP_INTERFACE_AGE=0
|
||||||
LIBGTOP_BINARY_AGE=0
|
LIBGTOP_BINARY_AGE=0
|
||||||
|
|
||||||
# Increase each time you change the client/server protocol.
|
# Increase each time you change the client/server protocol.
|
||||||
LIBGTOP_SERVER_VERSION=5
|
LIBGTOP_SERVER_VERSION=52
|
||||||
|
|
||||||
# Don't change this
|
# Don't change this
|
||||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||||
|
2
MAINTAINERS
Normal file
2
MAINTAINERS
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Email: martin@home-of-linux.org
|
||||||
|
Email: dave@srce.hr
|
45
Makefile.am
45
Makefile.am
@@ -1,25 +1,33 @@
|
|||||||
## Process this file with automake to produce Makefile.in.
|
## Process this file with automake to produce Makefile.in.
|
||||||
|
|
||||||
if EXAMPLES
|
|
||||||
examples_SUBDIRS = examples
|
|
||||||
else
|
|
||||||
examples_SUBDIRS =
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_GNOME_SUPPORT
|
if BUILD_GNOME_SUPPORT
|
||||||
support = support
|
support = support
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUBDIRS = po intl $(support) macros misc include sysdeps lib src \
|
SUBDIRS = po intl $(support) macros misc include sysdeps backends lib \
|
||||||
$(examples_SUBDIRS)
|
src doc scripts
|
||||||
|
|
||||||
include_HEADERS = glibtop.h
|
include_HEADERS = glibtop.h
|
||||||
|
configincludedir = $(pkglibdir)/include
|
||||||
|
|
||||||
|
noinst_HEADERS = glibtop-server-private.h
|
||||||
|
|
||||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
|
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
|
||||||
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
|
LIBGTOP-VERSION features.def structures.def libgtop-config.in \
|
||||||
RELNOTES-1.0 libgtop-sysdeps.m4 README NEWS.old libgtop-mirror.sh
|
RELNOTES-0.25 RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \
|
||||||
|
libgtop-mirror.sh
|
||||||
|
|
||||||
dist-hook:
|
configinclude_DATA = \
|
||||||
|
glibtop-config.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = stamp-gc-h #note: not glibtop-config.h
|
||||||
|
glibtop-config.h: stamp-gc-h
|
||||||
|
@:
|
||||||
|
stamp-gc-h: config.status
|
||||||
|
CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=glibtop-config.h ./config.status
|
||||||
|
echo timestamp > stamp-gc-h
|
||||||
|
|
||||||
|
dist-hook: libgtop.spec
|
||||||
cp libgtop.spec $(distdir)
|
cp libgtop.spec $(distdir)
|
||||||
|
|
||||||
release:
|
release:
|
||||||
@@ -29,7 +37,10 @@ release:
|
|||||||
## `install-exec', not `install-data'.
|
## `install-exec', not `install-data'.
|
||||||
confexecdir = $(libdir)
|
confexecdir = $(libdir)
|
||||||
confexec_DATA = $(top_builddir)/libgtopConf.sh \
|
confexec_DATA = $(top_builddir)/libgtopConf.sh \
|
||||||
$(top_builddir)/libgtop-features.def
|
$(top_builddir)/libgtop-features.def \
|
||||||
|
$(top_builddir)/libgtop-structures.def
|
||||||
|
|
||||||
|
CLEANFILES=libgtopConf.sh
|
||||||
|
|
||||||
bin_SCRIPTS = $(top_builddir)/libgtop-config
|
bin_SCRIPTS = $(top_builddir)/libgtop-config
|
||||||
|
|
||||||
@@ -50,15 +61,12 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
|
|||||||
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
||||||
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#g' \
|
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#g' \
|
||||||
-e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
|
-e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
|
||||||
|
-e 's#\@LIBGTOP_BACKEND_DIR\@#$(LIBGTOP_BACKEND_DIR)#g' \
|
||||||
-e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
|
-e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||||
-e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
|
-e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
|
||||||
-e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \
|
-e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \
|
||||||
-e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \
|
-e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \
|
||||||
-e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \
|
-e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \
|
||||||
-e 's#\@LIBGTOP_GUILE_LIBS\@#$(LIBGTOP_GUILE_LIBS)#g' \
|
|
||||||
-e 's#\@LIBGTOP_GUILE_INCS\@#$(LIBGTOP_GUILE_INCS)#g' \
|
|
||||||
-e 's#\@LIBGTOP_GUILE_NAMES_LIBS\@#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
|
|
||||||
-e 's#\@LIBGTOP_GUILE_NAMES_INCS\@#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
|
|
||||||
-e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \
|
-e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \
|
||||||
-e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \
|
-e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \
|
||||||
-e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \
|
-e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \
|
||||||
@@ -70,8 +78,6 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
|
|||||||
-e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \
|
-e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \
|
||||||
-e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \
|
-e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \
|
||||||
-e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \
|
-e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \
|
||||||
-e 's#\@libgtop_guile_found\@#$(libgtop_guile_found)#g' \
|
|
||||||
-e 's#\@libgtop_want_examples\@#$(libgtop_want_examples)#g' \
|
|
||||||
< $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
|
< $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
|
||||||
&& mv libgtopConf.tmp libgtopConf.sh
|
&& mv libgtopConf.tmp libgtopConf.sh
|
||||||
|
|
||||||
@@ -84,3 +90,6 @@ libgtop-config: libgtop-config.in Makefile
|
|||||||
libgtop-features.def: features.def
|
libgtop-features.def: features.def
|
||||||
@LN_S@ $< $@
|
@LN_S@ $< $@
|
||||||
|
|
||||||
|
libgtop-structures.def: structures.def
|
||||||
|
@LN_S@ $< $@
|
||||||
|
|
||||||
|
16
NEWS
16
NEWS
@@ -0,0 +1,16 @@
|
|||||||
|
January 14, 1999:
|
||||||
|
================
|
||||||
|
|
||||||
|
* Released LibGTop 1.1.4 "Earthquake"
|
||||||
|
|
||||||
|
This is the first developer's snapshot release after a
|
||||||
|
longer development period with a lot of interface changes.
|
||||||
|
|
||||||
|
October 19, 1999:
|
||||||
|
================
|
||||||
|
|
||||||
|
* Released LibGTop 1.1.2 "Hardangervidda"
|
||||||
|
|
||||||
|
This is a stable release from the development branch
|
||||||
|
of LibGTop for Solaris users of October GNOME.
|
||||||
|
|
||||||
|
244
NEWS.old
244
NEWS.old
@@ -1,244 +0,0 @@
|
|||||||
$Id$
|
|
||||||
|
|
||||||
Jun/01/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* We have some new ``suffix rules'':
|
|
||||||
|
|
||||||
'__l' is a function defined in the client part;
|
|
||||||
'__s' is a function defined in the sysdeps part and
|
|
||||||
'__p' is a function that needs special priviledges.
|
|
||||||
'__r' is mapped either on '__p' or on '__s'.
|
|
||||||
the function without suffix is mapped on '__l'.
|
|
||||||
|
|
||||||
* We now decide at runtime whether or not using the server
|
|
||||||
is required for a particular function. All user programs
|
|
||||||
now call the '__l' function defined in '-lgtop' (in the lib
|
|
||||||
subdir). These functions either use 'glibtop_call__l' to
|
|
||||||
call the server or call the '__r' function.
|
|
||||||
|
|
||||||
* A function in the sysdeps directory now has the '__s' suffix
|
|
||||||
if it do not need any priviledges (and thus can be called directly
|
|
||||||
from client code) and the '__p' suffix otherwise (when it has to
|
|
||||||
be called from the server).
|
|
||||||
|
|
||||||
* If you call one of these functions:
|
|
||||||
|
|
||||||
-> use the '__p' suffix to be sure to get the SUID-safe one
|
|
||||||
(used in the server).
|
|
||||||
-> use the '__s' suffix to be sure to get a function that
|
|
||||||
doesn't need any priviledges.
|
|
||||||
-> use the '__r' suffix otherwise (it is mapped either on the
|
|
||||||
'__p' or on the '__s' one).
|
|
||||||
|
|
||||||
Only use the '__p' and '__s' functions in a 'GLIBTOP_SUID_<feature>'
|
|
||||||
conditional, otherwise you'll get undefined symbols !
|
|
||||||
|
|
||||||
* The server is now started from 'glibtop_init__r', but only when
|
|
||||||
it's really needed; for instance on DEC OSF/1 you only need it
|
|
||||||
for the proc* features - if you program only fetches the CPU usage,
|
|
||||||
now server will be started.
|
|
||||||
|
|
||||||
* Sorry, at the moment everything is a little bit unstable, I'm doing
|
|
||||||
heavy changes. I've just some great ideas which still need some work:
|
|
||||||
|
|
||||||
-> I want to have a SUID server that only implements those features
|
|
||||||
that need to be SUID; everything else uses the sysdeps code directly.
|
|
||||||
|
|
||||||
-> If a program only uses stuff that do not need the server, the
|
|
||||||
server will not be started at all.
|
|
||||||
|
|
||||||
-> I'm working on some kind of proxy server that can be used on a remote
|
|
||||||
host; in feature one can then use the MDI stuff from ghex in gtop to
|
|
||||||
have notebook pages displaying processes from different hosts.
|
|
||||||
|
|
||||||
* Well it is as much unstable that it only works under Linux at the moment.
|
|
||||||
|
|
||||||
1998-06-01 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* sysdeps/common/sysdeps.c: now using '__r' functions,
|
|
||||||
they are #defined either as the '__p' or the '__s' ones.
|
|
||||||
|
|
||||||
* sysdeps/linux/*.c: changed call of 'glibtop_init__r',
|
|
||||||
it now takes two additional arguments.
|
|
||||||
|
|
||||||
* examples/{first.c, second.c}: now using 'glibtop_init'
|
|
||||||
instead of 'glibtop_init__r'.
|
|
||||||
|
|
||||||
* include/glibtop/sysdeps.h: added 'dummy' member so
|
|
||||||
'GLIBTOP_SYSDEPS_<feature>' now start with 1.
|
|
||||||
|
|
||||||
* include/glibtop/*.h: we now #define 'glibtop_get_<feature>'
|
|
||||||
as 'glibtop_get_<feature>__l' and 'glibtop_get_<feature>__r'
|
|
||||||
either as the '__p' or the '__s' function.
|
|
||||||
|
|
||||||
* lib/*.c: removed #if's - we now decide at runtime
|
|
||||||
whether to use the server or to call the appropriate
|
|
||||||
function for the sysdeps directory.
|
|
||||||
|
|
||||||
1998-05-28 Martin Baulig <baulig@merkur.uni-trier.de>
|
|
||||||
|
|
||||||
* src/server/main.c: we now use the '__p' functions,
|
|
||||||
but only if the appropriate 'GLIBTOP_SUID_<feature>'
|
|
||||||
has a non-zero value.
|
|
||||||
|
|
||||||
* configure.in (@machine_incs@): always use
|
|
||||||
`-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no
|
|
||||||
longer conditional.
|
|
||||||
|
|
||||||
* examples/Makefile.am: removed the '_linux' examples.
|
|
||||||
|
|
||||||
* sysdeps/linux/*.c: renamed all functions implementing
|
|
||||||
features to '__s'.
|
|
||||||
|
|
||||||
* lib/*.c: renamed all functions implementing features
|
|
||||||
to '__l'; we only emit code for those functions if the
|
|
||||||
corresponding 'GLIBTOP_SUID_<feature>' has a positive value.
|
|
||||||
|
|
||||||
* include/glibtop/*.h: added some new function suffixes:
|
|
||||||
'__l' is a function defined in the client part;
|
|
||||||
'__s' is a function defined in the sysdeps part and
|
|
||||||
'__p' is a function that needs special priviledges.
|
|
||||||
'__r' is mapped either on '__l' or on '__s'.
|
|
||||||
|
|
||||||
* sysdeps/linux/glibtop_server.h: New file -
|
|
||||||
defines system dependent constants 'GLIBTOP_SUID_<feature>'
|
|
||||||
being either 'GLIBTOP_SYSDEPS_<feature>'+1 depending upon
|
|
||||||
whether or not this feature requires using the server.
|
|
||||||
|
|
||||||
* lib/sysdeps.c: removed that file; it is no longer
|
|
||||||
needed.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
May/21/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* doc/gnome-hackers.sgml: This is a short intro on how to use libgtop
|
|
||||||
in the GNOME project. It covers especially the use of its 'configure'
|
|
||||||
script and the automatically generated 'gtopConf.sh'.
|
|
||||||
|
|
||||||
May/20/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* 'gtopConf.sh' now defines 'GTOP_LIBS' and 'GTOP_INCS' in a manner
|
|
||||||
that they contain everything that is needed to link some program with
|
|
||||||
libgtop. It will use '-lgtop' only if the server is really needed and
|
|
||||||
'-lgtop_sysdeps' otherwise;
|
|
||||||
|
|
||||||
* 'gtopConf.sh' additionally defines 'GTOP_GUILE_LIBS' and 'GTOP_GUILE_INCS'
|
|
||||||
containing everything that is needed to link some program both with
|
|
||||||
libgtop and its guile interface. They are identically to 'GTOP_LIBS'
|
|
||||||
and 'GTOP_INCS' if building the guile interface is disabled or guile
|
|
||||||
cannot be found on the system.
|
|
||||||
|
|
||||||
* 'configure' takes additional arguments '--enable-libgtop-server' and
|
|
||||||
'--disable-libgtop-server' to use the server even when it's not needed
|
|
||||||
or to disable it's use where it's needed.
|
|
||||||
|
|
||||||
* 'configure' takes an argument '--without-libgtop-guile' to disable
|
|
||||||
guile support.
|
|
||||||
|
|
||||||
* 'configure takes an argument '--without-libgtop-names' to remove
|
|
||||||
'-lgtop_names' (and '-lgtop_guile_names' when we have guile) from
|
|
||||||
'GTOP_LIBS'; in this case these libraries are not even built.
|
|
||||||
|
|
||||||
May/19/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* Libgtop is now in the GNOME CVS Repository.
|
|
||||||
|
|
||||||
May/17/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* we have now 'const char *glibtop_types_* []' consisting
|
|
||||||
of the C types of the corresponding files of '_glibtop_*'.
|
|
||||||
|
|
||||||
* added guile function '(glibtop-types-*)' and '(glibtop-descriptions-*)'.
|
|
||||||
|
|
||||||
May/10/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* Port to DEC OSF1 3.0 has been made:
|
|
||||||
|
|
||||||
cpu (total, user, nice, sys, idle)
|
|
||||||
mem (total, used, free)
|
|
||||||
|
|
||||||
loadavg (loadavg)
|
|
||||||
uptime (uptime)
|
|
||||||
|
|
||||||
msg_limits (map, max, mnb, mni, tql)
|
|
||||||
sem_limits (mni, msl, opm, vmx, aem)
|
|
||||||
shm_limits (max, min, mni, seg)
|
|
||||||
|
|
||||||
The following need the server to be SUID root:
|
|
||||||
|
|
||||||
proclist (total, number, size)
|
|
||||||
procdata (cmd, state, uid, pid, ppid, pgrp, tty, k_flags,
|
|
||||||
session, tpgid, sigignore, sigcatch, signal, nice,
|
|
||||||
priority, resident, rss, vsize, utime, stime,
|
|
||||||
cutime, cstime, trs, drs)
|
|
||||||
|
|
||||||
May/07/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* 'flags' member of sysdeps/linux/procdata.c is now
|
|
||||||
'unsigned long flags [2]'.
|
|
||||||
|
|
||||||
* When we give glibtop_get_procdata () a pid of zero, only
|
|
||||||
the flags are returned.
|
|
||||||
|
|
||||||
* We now use static constants instead of #defines for sysdeps flags.
|
|
||||||
|
|
||||||
May/03/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* VPATH-Build now working; sometimes it's necessary to copy
|
|
||||||
$(top_srcdir)/po/cat-id-tbl.c to $(top_builddir)/po.
|
|
||||||
|
|
||||||
* The library has been tested on the following systems:
|
|
||||||
|
|
||||||
- i686-pc-linux-gnu
|
|
||||||
- sparc-sun-sunos4.1.1
|
|
||||||
- alpha-dec-osf1 (that's DEC OSF1 3.0 and 3.2)
|
|
||||||
|
|
||||||
* Compilation has been tested on the following systems (I have no root
|
|
||||||
access there and cannot test the library because of this):
|
|
||||||
|
|
||||||
- sparc-sun-solaris2
|
|
||||||
- i386-bsdi
|
|
||||||
|
|
||||||
* Does no longer require Gnome.
|
|
||||||
|
|
||||||
* Guile-Parts are compiled only if guile can be found.
|
|
||||||
|
|
||||||
* Some of the executables are statically linked to copy them more easily
|
|
||||||
between machines.
|
|
||||||
|
|
||||||
May/02/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* Global changes to the interfaces, all functions except glibtop_open()
|
|
||||||
and glibtop_close() that took a server argument have now a '__r' suffix;
|
|
||||||
the original name is now a macro that uses glibtop_global_server.
|
|
||||||
|
|
||||||
Apr/10/1998
|
|
||||||
===========
|
|
||||||
Added new directory sysdeps/guile/names. It is the guile interface
|
|
||||||
to the gtop_names library found in sysdeps/names. Changed
|
|
||||||
GLIBTOP_DESCRIPTIONS to GLIBTOP_NAMES and added GLIBTOP_GUILE_NAMES
|
|
||||||
to the header files.
|
|
||||||
|
|
||||||
Apr/09/1998
|
|
||||||
===========
|
|
||||||
Added new directories guile and names to sysdeps. In names are
|
|
||||||
some string constants about the data stored in the structures.
|
|
||||||
guile is a guile interface for the library. It is used in
|
|
||||||
examples/third (which has been completely rewritten).
|
|
||||||
The header files define things from names when GLIBTOP_DESCRIPTIONS
|
|
||||||
if defined and/or from guile when HAVE_GUILE is defined.
|
|
||||||
|
|
||||||
Apr/08/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
Added guile wrapper for the library (see examples/third).
|
|
36
README
36
README
@@ -1,8 +1,32 @@
|
|||||||
$Id$
|
This is the *development* branch of LibGTop. It is indended
|
||||||
|
for people who want to help with the development of LibGTop and
|
||||||
|
not for end-users.
|
||||||
|
|
||||||
LATEST NEWS:
|
Please use the LIBGTOP_STABLE_1_0 branch (which is LibGTop 1.0.x)
|
||||||
===========
|
unless you're really a developer.
|
||||||
|
|
||||||
Please look also in the file 'NEWS' for latest news.
|
If you're using LibGTop from CVS simply do a
|
||||||
|
|
||||||
Martin
|
cvs update -r LIBGTOP_STABLE_1_0
|
||||||
|
|
||||||
|
to get the latest version from the stable branch.
|
||||||
|
|
||||||
|
However, I'll periodically make snapshot releases from the development
|
||||||
|
branch for Solaris users of LibGTop.
|
||||||
|
|
||||||
|
They can be found at
|
||||||
|
|
||||||
|
ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
|
||||||
|
|
||||||
|
in near future.
|
||||||
|
|
||||||
|
Using released tarballs from the development branch is a lot better than
|
||||||
|
compiling directly from CVS since things in CVS may not always work as
|
||||||
|
expected.
|
||||||
|
|
||||||
|
Note that releases from the developer branch are neither binary
|
||||||
|
nor fully source compatible; you'll normally have to recompile
|
||||||
|
everything that use them.
|
||||||
|
|
||||||
|
October 1999
|
||||||
|
Martin Baulig
|
||||||
|
50
RELNOTES-1.1.x
Normal file
50
RELNOTES-1.1.x
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
RELEASE NOTES FOR LIBGTOP 1.1.2
|
||||||
|
===============================
|
||||||
|
|
||||||
|
This is a snapshot release for Solaris users of October GNOME. It contains
|
||||||
|
a first version of the Solaris port of LibGTop which works at least on
|
||||||
|
Solaris 7.
|
||||||
|
|
||||||
|
Please use LibGTop 1.0.x if you're not on a Solaris system
|
||||||
|
(look at the README file for details).
|
||||||
|
|
||||||
|
IMPORTANT CHANGES SINCE 1.0:
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* All `glibtop_get_<feature>_* ()' and all `glibtop_init_<feature>_* ()'
|
||||||
|
functions now have an `int' return value and return 0 on success and -1
|
||||||
|
on failure.
|
||||||
|
|
||||||
|
* glibtop_cpu: Added `xcpu_flags'
|
||||||
|
|
||||||
|
* glibtop_proc_state: Changed `state' from char to unsigned and added
|
||||||
|
GLIBTOP_PROCESS_RUNNING, GLIBTOP_PROCESS_INTERRUPTIBLE,
|
||||||
|
GLIBTOP_PROCESS_UNINTERRUPTIBLE, GLIBTOP_PROCESS_ZOMBIE,
|
||||||
|
GLIBTOP_PROCESS_STOPPED, GLIBTOP_PROCESS_SWAPPING constants for it.
|
||||||
|
|
||||||
|
* `GLIBTOP_MOUNTENTRY_LEN' and `GLIBTOP_MAX_GROUPS' are now defined in
|
||||||
|
<glibtop/limits.h>
|
||||||
|
|
||||||
|
* Removed the `GLIBTOP_SYSDEPS_FEATURES' and `GLIBTOP_SYSDEPS_POINTER_SIZE'
|
||||||
|
constants from <glibtop/sysdeps.h> and let numbering start at zero for
|
||||||
|
`GLIBTOP_SYSDEPS_CPU'.
|
||||||
|
|
||||||
|
OTHER CHANGES SINCE 1.0:
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
* Use G_GNUC_UNUSED in <glibtop/error.h> to avoid compiler warnings.
|
||||||
|
|
||||||
|
* The `libgtop-config' script now accepts `--cflags', `--libs' and
|
||||||
|
`--extra-libs' parameter.
|
||||||
|
|
||||||
|
* The libraries are now called -lgtop-1.1 etc. so you can use 1.0.x and
|
||||||
|
1.1.x in parallel.
|
||||||
|
|
||||||
|
CHANGES SINCE 1.0 MAINLY INTERESTING FOR DEVELOPERS:
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
* We create a `glibtop-config.h' now which gets included from <glibtop.h>
|
||||||
|
when we're _IN_LIBGTOP. It contains things such as `u_int64_t' etc.
|
||||||
|
|
||||||
|
October 1999
|
||||||
|
Martin Baulig
|
46
TODO
46
TODO
@@ -1,46 +0,0 @@
|
|||||||
This is LibGTop 0.99.2,
|
|
||||||
|
|
||||||
a feature-freezed version of LibGTop for GNOME 1.0.
|
|
||||||
|
|
||||||
You need to use the latest version of LibGTop from CVS for Gnome, it will
|
|
||||||
no longer work with older releases.
|
|
||||||
|
|
||||||
Martin
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
|
|
||||||
NOTE: LibGTop is already feature-freezed for GNOME 1.0, so only bug fixes
|
|
||||||
are ok, no API changes !
|
|
||||||
|
|
||||||
Sysdeps directory 'linux':
|
|
||||||
==========================
|
|
||||||
|
|
||||||
* Add implementation for `ppp' with modems.
|
|
||||||
|
|
||||||
Sysdeps directory 'freebsd':
|
|
||||||
============================
|
|
||||||
|
|
||||||
* FreeBSD 3.0: It works fine on this system, so please make sure not
|
|
||||||
to break it here.
|
|
||||||
|
|
||||||
* FreeBSD 2.2: Make sure it still works here.
|
|
||||||
|
|
||||||
* NetBSD/OpenBSD: Support was added on Dec 6, but we need to check
|
|
||||||
whether all data are valid.
|
|
||||||
|
|
||||||
Sysdeps directories 'kernel', 'osf1' and 'sun4':
|
|
||||||
================================================
|
|
||||||
|
|
||||||
* You need to use the `--enable-hacker-mode' parameter to configure
|
|
||||||
to build this directories.
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Everything except sysdeps directories:
|
|
||||||
======================================
|
|
||||||
|
|
||||||
* Ready for Gnome 1.0. [ALREADY FEATURE FREEZED]
|
|
||||||
|
|
||||||
January 5, 1999
|
|
||||||
|
|
||||||
Martin
|
|
||||||
|
22
acconfig.h
22
acconfig.h
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
|
||||||
/* Define if gethostname () must be declared. */
|
/* Define if gethostname () must be declared. */
|
||||||
#undef NEED_DECLARATION_GETHOSTNAME
|
#undef NEED_DECLARATION_GETHOSTNAME
|
||||||
@@ -122,7 +124,6 @@
|
|||||||
#undef HAVE_LIBZ
|
#undef HAVE_LIBZ
|
||||||
#undef HAVE_LIBPNG
|
#undef HAVE_LIBPNG
|
||||||
#undef HAVE_GMP2_INCLUDE_DIR
|
#undef HAVE_GMP2_INCLUDE_DIR
|
||||||
#undef HAVE_GUILE
|
|
||||||
|
|
||||||
#undef ssize_t
|
#undef ssize_t
|
||||||
#undef u_int64_t
|
#undef u_int64_t
|
||||||
@@ -131,14 +132,12 @@
|
|||||||
#undef HAVE_GLIBTOP_MACHINE_H
|
#undef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
|
||||||
#undef GLIBTOP_NAMES
|
#undef GLIBTOP_NAMES
|
||||||
#undef GLIBTOP_GUILE
|
|
||||||
#undef GLIBTOP_GUILE_NAMES
|
|
||||||
#undef GLIBTOP_EXAMPLES
|
#undef GLIBTOP_EXAMPLES
|
||||||
#undef GLIBTOP_INODEDB
|
#undef GLIBTOP_INODEDB
|
||||||
|
|
||||||
#undef NEED_LIBGTOP
|
#undef NEED_LIBGTOP
|
||||||
|
|
||||||
#undef HAVE_LINUX_TABLE
|
#undef HAVE_LINUX_SYSCTL
|
||||||
#undef HAVE_LIBGTOP_SMP
|
#undef HAVE_LIBGTOP_SMP
|
||||||
|
|
||||||
#undef HAVE_XAUTH
|
#undef HAVE_XAUTH
|
||||||
@@ -151,11 +150,26 @@
|
|||||||
#undef LIBGTOP_ENABLE_DEBUG
|
#undef LIBGTOP_ENABLE_DEBUG
|
||||||
#undef LIBGTOP_FATAL_WARNINGS
|
#undef LIBGTOP_FATAL_WARNINGS
|
||||||
|
|
||||||
|
/* Define to use glib's malloc. */
|
||||||
|
#undef LIBGTOP_USE_GLIB_MALLOC
|
||||||
|
|
||||||
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
|
/* Same as LINUX_VERSION_CODE either from <linux/version.h> or from
|
||||||
* the running kernel (if we don't have configured kernel sources).
|
* the running kernel (if we don't have configured kernel sources).
|
||||||
*/
|
*/
|
||||||
#undef GLIBTOP_LINUX_VERSION_CODE
|
#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. */
|
/* Define if you want to use LibGTop without GNOME. */
|
||||||
#undef 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
|
||||||
|
|
||||||
|
/* Define if you have the libxml library */
|
||||||
|
#undef HAVE_LIBXML
|
||||||
|
|
||||||
|
23
autogen.sh
23
autogen.sh
@@ -15,3 +15,26 @@ PKG_NAME="Gnome Top Library"
|
|||||||
}
|
}
|
||||||
|
|
||||||
. $srcdir/macros/autogen.sh
|
. $srcdir/macros/autogen.sh
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo " *** IMPORTANT *** "
|
||||||
|
echo ""
|
||||||
|
echo "This is a development version of LibGTop. You should be using a stable"
|
||||||
|
echo "version, which is available at ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/"
|
||||||
|
echo "The version you just configured is meant for developers of LibGTop only:"
|
||||||
|
echo ""
|
||||||
|
echo " * You should not base ANY software on this version of LibGTop."
|
||||||
|
echo ""
|
||||||
|
echo " *** You should be using LibGTop 1.0.x instead. ***"
|
||||||
|
echo ""
|
||||||
|
echo "If you are using this source tree from CVS, please run:"
|
||||||
|
echo " cvs update -r LIBGTOP_STABLE_1_0"
|
||||||
|
echo "now."
|
||||||
|
echo ""
|
||||||
|
echo "If you're a Solaris user, you should try out the LibGTop 1.1.2 release."
|
||||||
|
echo "You can get it from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/"
|
||||||
|
echo ""
|
||||||
|
echo "If you are using this source tree from CVS, you can use:"
|
||||||
|
echo " cvs update -r LIBGTOP_1_1_2_PATCHES"
|
||||||
|
echo "to get a bug fixed release of 1.1.2."
|
||||||
|
echo ""
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
Makefile.in
|
|
||||||
Makefile
|
|
||||||
libgtop_daemon
|
|
||||||
server.conf
|
|
||||||
.libs
|
|
||||||
.deps
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
*.lo
|
1
backends/Makefile.am
Normal file
1
backends/Makefile.am
Normal file
@@ -0,0 +1 @@
|
|||||||
|
SUBDIRS = server sysdeps common
|
7
backends/common/.cvsignore
Normal file
7
backends/common/.cvsignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
*.lo
|
||||||
|
*.la
|
||||||
|
marshal.c
|
17
backends/common/ChangeLog
Normal file
17
backends/common/ChangeLog
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
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'.
|
||||||
|
|
35
backends/common/Makefile.am
Normal file
35
backends/common/Makefile.am
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
INCLUDES = @INCLUDES@
|
||||||
|
|
||||||
|
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||||
|
|
||||||
|
backend_DATA = \
|
||||||
|
libgtop-common.backend
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
glibtop-backend-private.h
|
||||||
|
|
||||||
|
backend_LTLIBRARIES = \
|
||||||
|
libgtop_backend_common.la
|
||||||
|
|
||||||
|
libgtop_backend_common_la_SOURCES = \
|
||||||
|
backend-common.c \
|
||||||
|
marshal.c
|
||||||
|
|
||||||
|
libgtop_backend_common_la_LDFLAGS = \
|
||||||
|
$(LT_VERSION_INFO) -export-dynamic
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
marshal.c
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
marshal.pl \
|
||||||
|
libgtop-common.backend
|
||||||
|
|
||||||
|
CLEANFILES = $(BUILT_SOURCES)
|
||||||
|
|
||||||
|
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||||
|
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||||
|
mv tmp-t marshal.c
|
||||||
|
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -22,41 +24,39 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/error.h>
|
#include <glibtop/global.h>
|
||||||
#include <glibtop/version.h>
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
void
|
#include <glibtop/open.h>
|
||||||
glibtop_send_version (glibtop *server, int fd)
|
#include <glibtop/backend.h>
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
_open_common (glibtop *, glibtop_backend *, u_int64_t, const char **);
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_common (glibtop *, glibtop_backend *);
|
||||||
|
|
||||||
|
extern glibtop_call_vector glibtop_backend_common_call_vector;
|
||||||
|
|
||||||
|
glibtop_backend_info LibGTopBackendInfo = {
|
||||||
|
"glibtop-backend-common", _open_common, _close_common,
|
||||||
|
&glibtop_backend_common_call_vector
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
_open_common (glibtop *server, glibtop_backend *backend,
|
||||||
|
u_int64_t features, const char **backend_args)
|
||||||
{
|
{
|
||||||
char buffer [BUFSIZ];
|
backend->_priv = glibtop_calloc_r
|
||||||
size_t size;
|
(server, 1, sizeof (glibtop_backend_private));
|
||||||
|
|
||||||
sprintf (buffer, LIBGTOP_VERSION_STRING,
|
return 0;
|
||||||
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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_common (glibtop *server, glibtop_backend *backend)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -21,20 +23,12 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_KERNEL_KERNEL_H__
|
#ifndef __GLIBTOP_BACKEND_PRIVATE_H__
|
||||||
#define __GLIBTOP_KERNEL_KERNEL_H__
|
#define __GLIBTOP_BACKEND_PRIVATE_H__
|
||||||
|
|
||||||
#include <linux/unistd.h>
|
struct _glibtop_backend_private
|
||||||
#include <linux/table.h>
|
{
|
||||||
|
u_int64_t flags;
|
||||||
#include <sys/param.h>
|
};
|
||||||
|
|
||||||
#include <syscall.h>
|
|
||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
extern int table (int, union table *, const void *);
|
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
#endif
|
#endif
|
12
backends/common/libgtop-common.backend
Normal file
12
backends/common/libgtop-common.backend
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||||
|
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||||
|
|
||||||
|
<libgtop:Backend>
|
||||||
|
<libgtop:Name>glibtop-backend-common</libgtop:Name>
|
||||||
|
<libgtop:Location>
|
||||||
|
<libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName>
|
||||||
|
<libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName>
|
||||||
|
</libgtop:Location>
|
||||||
|
</libgtop:Backend>
|
||||||
|
|
||||||
|
</libgtop:Backends>
|
179
backends/common/marshal.pl
Normal file
179
backends/common/marshal.pl
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
require 'c_types.pl';
|
||||||
|
|
||||||
|
$[ = 1; # set array base to 1
|
||||||
|
$, = ' '; # set output field separator
|
||||||
|
$\ = "\n"; # set output record separator
|
||||||
|
|
||||||
|
$always_use_temp_storage = 1;
|
||||||
|
|
||||||
|
sub toupper {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/a-z/A-Z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tolower {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/A-Z/a-z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
print '/* marshal.c */';
|
||||||
|
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||||
|
print '';
|
||||||
|
|
||||||
|
print '#include <glibtop.h>';
|
||||||
|
print '#include <glibtop/open.h>';
|
||||||
|
print '#include <glibtop/xmalloc.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/sysdeps.h>';
|
||||||
|
print '#include <glibtop/union.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/backend.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop-backend-private.h>';
|
||||||
|
print '';
|
||||||
|
|
||||||
|
$feature_count = 0;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
chop; # strip record separator
|
||||||
|
|
||||||
|
if (/^[^#]/) {
|
||||||
|
&output($_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub output {
|
||||||
|
local($line) = @_;
|
||||||
|
@line_fields = split(/\|/, $line, 9999);
|
||||||
|
$retval = $line_fields[1];
|
||||||
|
$feature = $line_fields[2];
|
||||||
|
$param_def = $line_fields[4];
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
$space = $feature;
|
||||||
|
$space =~ s/./ /g;
|
||||||
|
|
||||||
|
$features{++$feature_count} = $orig;
|
||||||
|
|
||||||
|
return unless $orig =~ /^@/;
|
||||||
|
|
||||||
|
if ($retval eq 'retval') {
|
||||||
|
$retval_param = '&retval';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$retval = 'int';
|
||||||
|
}
|
||||||
|
elsif ($retval !~ /^void$/) {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$call_prefix = 'retval = ';
|
||||||
|
$call_prefix_space = ' ';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = '';
|
||||||
|
$prefix_space = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||||
|
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||||
|
}
|
||||||
|
|
||||||
|
$need_temp_storage = $always_use_temp_storage;
|
||||||
|
$first_param_name = '';
|
||||||
|
|
||||||
|
$call_param = '';
|
||||||
|
$param_decl = '';
|
||||||
|
$need_temp_len = 0;
|
||||||
|
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||||
|
for ($param = 1; $param <= $nr_params; $param++) {
|
||||||
|
$list = $params[$param];
|
||||||
|
$type = $params[$param];
|
||||||
|
$type =~ s/\(.*//;
|
||||||
|
$list =~ s/^.*\(//;
|
||||||
|
$list =~ s/\)$//;
|
||||||
|
$count = (@fields = split(/,/, $list, 9999));
|
||||||
|
for ($field = 1; $field <= $count; $field++) {
|
||||||
|
my $c_type = $typeinfo->{$type}->[1];
|
||||||
|
|
||||||
|
if ($first_param_name eq '') {
|
||||||
|
$first_param_name = $fields[$field];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$need_temp_storage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($param_decl eq '') {
|
||||||
|
$param_decl = ",\n " . $space . ' ';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$param_decl = $param_decl . ', ';
|
||||||
|
}
|
||||||
|
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||||
|
$call_param = $call_param . ', ' . $fields[$field];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
||||||
|
} else {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
||||||
|
}
|
||||||
|
|
||||||
|
$func_decl = 'static '.$retval."\n";
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
} else {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
||||||
|
|
||||||
|
print $total_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$call_vector_code = '';
|
||||||
|
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||||
|
$feature = $features{$nr};
|
||||||
|
|
||||||
|
if ($feature =~ /^@/) {
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
|
||||||
|
$call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature);
|
||||||
|
} else {
|
||||||
|
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print 'glibtop_call_vector glibtop_backend_common_call_vector = {';
|
||||||
|
print $call_vector_code;
|
||||||
|
print '};';
|
||||||
|
print '';
|
||||||
|
|
10
backends/server/.cvsignore
Normal file
10
backends/server/.cvsignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
*.lo
|
||||||
|
*.la
|
||||||
|
marshal.c
|
||||||
|
demarshal.c
|
||||||
|
libgtop_server
|
||||||
|
command.h
|
45
backends/server/ChangeLog
Normal file
45
backends/server/ChangeLog
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
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'.
|
||||||
|
|
77
backends/server/Makefile.am
Normal file
77
backends/server/Makefile.am
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
INCLUDES = @INCLUDES@ -D_BSD \
|
||||||
|
-DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
|
||||||
|
-DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
|
||||||
|
-DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
|
||||||
|
|
||||||
|
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||||
|
|
||||||
|
backend_DATA = \
|
||||||
|
libgtop-server.backend
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
glibtop-backend-private.h
|
||||||
|
|
||||||
|
backend_LTLIBRARIES = \
|
||||||
|
libgtop_backend_server.la
|
||||||
|
|
||||||
|
bin_PROGRAMS = \
|
||||||
|
@server_programs@
|
||||||
|
|
||||||
|
EXTRA_PROGRAMS = \
|
||||||
|
libgtop_server
|
||||||
|
|
||||||
|
libgtop_backend_server_la_SOURCES = \
|
||||||
|
backend-server.c \
|
||||||
|
marshal.c \
|
||||||
|
command.c \
|
||||||
|
read.c \
|
||||||
|
read_data.c \
|
||||||
|
write.c
|
||||||
|
|
||||||
|
libgtop_backend_server_la_LDFLAGS = \
|
||||||
|
$(LT_VERSION_INFO) -export-dynamic
|
||||||
|
|
||||||
|
libgtop_server_SOURCES = \
|
||||||
|
server.c \
|
||||||
|
server.h \
|
||||||
|
demarshal.c \
|
||||||
|
version.c \
|
||||||
|
io.c
|
||||||
|
|
||||||
|
libgtop_server_LDADD = \
|
||||||
|
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
|
||||||
|
$(top_builddir)/sysdeps/common/libgtop_suid_common.la \
|
||||||
|
@LIBSUPPORT@
|
||||||
|
|
||||||
|
if ENABLE_STATIC
|
||||||
|
libgtop_server_LDFLAGS = -static
|
||||||
|
endif
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
marshal.c \
|
||||||
|
demarshal.c \
|
||||||
|
command.h
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
marshal.pl \
|
||||||
|
demarshal.pl \
|
||||||
|
command.pl \
|
||||||
|
command.h.in \
|
||||||
|
libgtop-server.backend
|
||||||
|
|
||||||
|
CLEANFILES = $(BUILT_SOURCES)
|
||||||
|
|
||||||
|
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||||
|
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||||
|
mv tmp-t marshal.c
|
||||||
|
|
||||||
|
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||||
|
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||||
|
mv tmp-t demarshal.c
|
||||||
|
|
||||||
|
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||||
|
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
|
||||||
|
mv tmp-t command.h
|
||||||
|
|
101
backends/server/backend-server.c
Normal file
101
backends/server/backend-server.c
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/backend.h>
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
_open_server (glibtop *, glibtop_backend *, u_int64_t, const char **);
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_server (glibtop *, glibtop_backend *);
|
||||||
|
|
||||||
|
extern glibtop_call_vector glibtop_backend_server_call_vector;
|
||||||
|
|
||||||
|
glibtop_backend_info LibGTopBackendInfo = {
|
||||||
|
"glibtop-backend-server", _open_server, _close_server,
|
||||||
|
&glibtop_backend_server_call_vector
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
_open_server (glibtop *server, glibtop_backend *backend,
|
||||||
|
u_int64_t features, const char **backend_args)
|
||||||
|
{
|
||||||
|
backend->_priv = glibtop_calloc_r
|
||||||
|
(server, 1, sizeof (glibtop_backend_private));
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "open_server - %p, %p, %p\n", server, backend,
|
||||||
|
backend->_priv);
|
||||||
|
|
||||||
|
fprintf (stderr, "Opening pipe to server (%s).\n",
|
||||||
|
LIBGTOP_SERVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (pipe (backend->_priv->input) ||
|
||||||
|
pipe (backend->_priv->output)) {
|
||||||
|
glibtop_warn_io_r (server, "cannot make a pipe");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
backend->_priv->pid = fork ();
|
||||||
|
|
||||||
|
if (backend->_priv->pid < 0) {
|
||||||
|
glibtop_warn_io_r (server, "fork failed");
|
||||||
|
return -1;
|
||||||
|
} else if (backend->_priv->pid == 0) {
|
||||||
|
close (0); close (1);
|
||||||
|
close (backend->_priv->input [0]);
|
||||||
|
close (backend->_priv->output [1]);
|
||||||
|
dup2 (backend->_priv->input [1], 1);
|
||||||
|
dup2 (backend->_priv->output [0], 0);
|
||||||
|
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
|
||||||
|
glibtop_error_io_r (server, "execl (%s)",
|
||||||
|
LIBGTOP_SERVER);
|
||||||
|
_exit (2);
|
||||||
|
}
|
||||||
|
|
||||||
|
close (backend->_priv->input [1]);
|
||||||
|
close (backend->_priv->output [0]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_server (glibtop *server, glibtop_backend *backend)
|
||||||
|
{
|
||||||
|
kill (backend->_priv->pid, SIGKILL);
|
||||||
|
close (backend->_priv->input [0]);
|
||||||
|
close (backend->_priv->output [1]);
|
||||||
|
|
||||||
|
backend->_priv->pid = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
108
backends/server/command.c
Normal file
108
backends/server/command.c
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
#include <glibtop/backend.h>
|
||||||
|
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
#include "command.h"
|
||||||
|
|
||||||
|
void *
|
||||||
|
glibtop_call_i (glibtop *server, glibtop_backend *backend, unsigned command,
|
||||||
|
size_t send_size, const void *send_buf,
|
||||||
|
size_t data_size, const void *data_buf,
|
||||||
|
size_t recv_size, void *recv_ptr,
|
||||||
|
int *retval_ptr)
|
||||||
|
{
|
||||||
|
glibtop_command cmnd;
|
||||||
|
glibtop_response resp;
|
||||||
|
#if 0
|
||||||
|
int retval;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
glibtop_init_r (&server, 0, 0);
|
||||||
|
|
||||||
|
memset (&cmnd, 0, sizeof (glibtop_command));
|
||||||
|
memset (&resp, 0, sizeof (glibtop_response));
|
||||||
|
|
||||||
|
cmnd.command = command;
|
||||||
|
|
||||||
|
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
|
||||||
|
* send it together with command, so we only need one system call instead
|
||||||
|
* of two. */
|
||||||
|
|
||||||
|
if (send_size <= _GLIBTOP_PARAM_SIZE) {
|
||||||
|
memcpy (cmnd.parameter, send_buf, send_size);
|
||||||
|
cmnd.param_size = send_size;
|
||||||
|
} else {
|
||||||
|
cmnd.send_size = send_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmnd.data_size = data_size;
|
||||||
|
|
||||||
|
glibtop_write_i (server, backend, sizeof (glibtop_command), &cmnd);
|
||||||
|
|
||||||
|
if (data_size) {
|
||||||
|
#ifdef SLAVE_DEBUG
|
||||||
|
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
|
||||||
|
#endif
|
||||||
|
glibtop_write_i (server, backend, data_size, data_buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
glibtop_read_i (server, backend, sizeof (glibtop_response), &resp);
|
||||||
|
|
||||||
|
#ifdef SLAVE_DEBUG
|
||||||
|
fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
|
||||||
|
resp.retval, resp.glibtop_errno,
|
||||||
|
(long) resp.recv_size, (long) resp.data_size,
|
||||||
|
recv_ptr, (long) recv_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (retval_ptr)
|
||||||
|
*retval_ptr = resp.glibtop_errno;
|
||||||
|
|
||||||
|
if (resp.recv_size != recv_size) {
|
||||||
|
glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
|
||||||
|
(long) recv_size, (long) resp.recv_size);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (recv_ptr)
|
||||||
|
glibtop_read_i (server, backend, recv_size, recv_ptr);
|
||||||
|
|
||||||
|
if (resp.data_size) {
|
||||||
|
void *ptr = glibtop_malloc_r (server, resp.data_size);
|
||||||
|
|
||||||
|
glibtop_read_i (server, backend, resp.data_size, ptr);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
59
backends/server/command.h.in
Normal file
59
backends/server/command.h.in
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
@@AUTOGEN_COMMENT@@
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_COMMAND_H__
|
||||||
|
#define __GLIBTOP_COMMAND_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
@@GLIBTOP_COMMAND_CONSTANTS@@
|
||||||
|
|
||||||
|
#define _GLIBTOP_PARAM_SIZE 16
|
||||||
|
|
||||||
|
typedef struct _glibtop_command glibtop_command;
|
||||||
|
typedef struct _glibtop_response glibtop_response;
|
||||||
|
|
||||||
|
struct _glibtop_command
|
||||||
|
{
|
||||||
|
u_int64_t command;
|
||||||
|
u_int64_t param_size, send_size, data_size;
|
||||||
|
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_response
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
int glibtop_errno;
|
||||||
|
u_int64_t recv_size, data_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
76
backends/server/command.pl
Normal file
76
backends/server/command.pl
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
require 'c_types.pl';
|
||||||
|
|
||||||
|
die "Usage: $0 features.def command.h.in" unless $#ARGV == 1;
|
||||||
|
|
||||||
|
$[ = 1; # set array base to 1
|
||||||
|
$, = ' '; # set output field separator
|
||||||
|
$\ = "\n"; # set output record separator
|
||||||
|
|
||||||
|
sub toupper {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/a-z/A-Z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tolower {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/A-Z/a-z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
$constants_decl_code = '';
|
||||||
|
|
||||||
|
open FEATURESDEF, $ARGV[1] or
|
||||||
|
die "open ($ARGV[1]): $!";
|
||||||
|
|
||||||
|
while (<FEATURESDEF>) {
|
||||||
|
chop; # strip record separator
|
||||||
|
|
||||||
|
if (/^[^\#]/) {
|
||||||
|
&parse_features_def ($_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
close FEATURESDEF;
|
||||||
|
|
||||||
|
sub parse_features_def {
|
||||||
|
local($line) = @_;
|
||||||
|
@line_fields = split(/\|/, $line, 9999);
|
||||||
|
$retval = $line_fields[1];
|
||||||
|
$element_def = $line_fields[3];
|
||||||
|
$feature = $line_fields[2];
|
||||||
|
$param_def = $line_fields[4];
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
$space = $feature;
|
||||||
|
$space =~ s/./ /g;
|
||||||
|
|
||||||
|
$constants_decl_code .= sprintf
|
||||||
|
(qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature),
|
||||||
|
++$feature_count);
|
||||||
|
|
||||||
|
$features{$feature_count} = $feature;
|
||||||
|
}
|
||||||
|
|
||||||
|
chop $constants_decl_code;
|
||||||
|
|
||||||
|
$auto_gen_comment = sprintf
|
||||||
|
(qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]);
|
||||||
|
|
||||||
|
open COMMAND, $ARGV[2] or
|
||||||
|
die "open ($ARGV[2]): $!";
|
||||||
|
|
||||||
|
while (<COMMAND>) {
|
||||||
|
chop;
|
||||||
|
|
||||||
|
s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/;
|
||||||
|
|
||||||
|
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
|
||||||
|
} continue {
|
||||||
|
print $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
close COMMAND;
|
382
backends/server/demarshal.pl
Normal file
382
backends/server/demarshal.pl
Normal file
@@ -0,0 +1,382 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
require 'c_types.pl';
|
||||||
|
|
||||||
|
$[ = 1; # set array base to 1
|
||||||
|
$, = ' '; # set output field separator
|
||||||
|
$\ = "\n"; # set output record separator
|
||||||
|
|
||||||
|
$always_use_temp_storage = 0;
|
||||||
|
|
||||||
|
sub toupper {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/a-z/A-Z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tolower {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/A-Z/a-z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
print '/* demarshal.c */';
|
||||||
|
print "/* This is a generated file. Please modify `demarshal.pl' */";
|
||||||
|
print '';
|
||||||
|
|
||||||
|
print '#include <glibtop.h>';
|
||||||
|
print '#include <glibtop/open.h>';
|
||||||
|
print '#include <glibtop/xmalloc.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/sysdeps.h>';
|
||||||
|
print '#include <glibtop/union.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/backend.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop-backend-private.h>';
|
||||||
|
print '#include "server.h"';
|
||||||
|
print '';
|
||||||
|
|
||||||
|
$feature_count = 0;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
chop; # strip record separator
|
||||||
|
|
||||||
|
if (/^[^\#]/) {
|
||||||
|
&output($_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub output {
|
||||||
|
local($line) = @_;
|
||||||
|
@line_fields = split(/\|/, $line, 9999);
|
||||||
|
$retval = $line_fields[1];
|
||||||
|
$element_def = $line_fields[3];
|
||||||
|
$feature = $line_fields[2];
|
||||||
|
$param_def = $line_fields[4];
|
||||||
|
|
||||||
|
return if $feature =~ /^@/;
|
||||||
|
$name = 'glibtop_'.$feature;
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
$space = $feature;
|
||||||
|
$space =~ s/./ /g;
|
||||||
|
|
||||||
|
$features{++$feature_count} = $feature;
|
||||||
|
|
||||||
|
$orig_retval = $retval;
|
||||||
|
|
||||||
|
if ($retval eq 'retval') {
|
||||||
|
$retval_param = '&retval';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$retval = 'int';
|
||||||
|
} elsif ($retval !~ /^void$/) {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$call_prefix = 'retval = ';
|
||||||
|
$call_prefix_space = ' ';
|
||||||
|
} else {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = '';
|
||||||
|
$prefix_space = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||||
|
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||||
|
}
|
||||||
|
|
||||||
|
$need_temp_storage = $always_use_temp_storage;
|
||||||
|
$first_param_name = '';
|
||||||
|
$size_code = "\t/* send size */\n";
|
||||||
|
$size_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
||||||
|
|
||||||
|
$local_var_decl_code = '';
|
||||||
|
$local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n";
|
||||||
|
$local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n";
|
||||||
|
$local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n";
|
||||||
|
$local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n";
|
||||||
|
$local_var_decl_code .= sprintf
|
||||||
|
(qq[\tglibtop_%s %s;\n], $feature, $feature);
|
||||||
|
if ($retval !~ /^void$/) {
|
||||||
|
$local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
||||||
|
$retval, $retval);
|
||||||
|
}
|
||||||
|
|
||||||
|
$init_local_var_code = "\t/* variable initialization */\n";
|
||||||
|
$init_local_var_code .= sprintf
|
||||||
|
(qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature);
|
||||||
|
$init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
||||||
|
$init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||||
|
"(char *) send_ptr;\n";
|
||||||
|
|
||||||
|
$demarshal_code = '';
|
||||||
|
|
||||||
|
$call_param = '';
|
||||||
|
$param_decl = '';
|
||||||
|
$need_temp_len = 0;
|
||||||
|
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||||
|
for ($param = 1; $param <= $nr_params; $param++) {
|
||||||
|
$list = $params[$param];
|
||||||
|
$type = $params[$param];
|
||||||
|
$type =~ s/\(.*//;
|
||||||
|
$list =~ s/^.*\(//;
|
||||||
|
$list =~ s/\)$//;
|
||||||
|
$count = (@fields = split(/,/, $list, 9999));
|
||||||
|
for ($field = 1; $field <= $count; $field++) {
|
||||||
|
my $c_type = $typeinfo->{$type}->[1];
|
||||||
|
|
||||||
|
if ($first_param_name eq '') {
|
||||||
|
$first_param_name = $fields[$field];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$need_temp_storage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($param_decl eq '') {
|
||||||
|
$param_decl = ",\n " . $space . ' ';
|
||||||
|
} else {
|
||||||
|
$param_decl = $param_decl . ', ';
|
||||||
|
}
|
||||||
|
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||||
|
$call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field];
|
||||||
|
|
||||||
|
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$size_code .= sprintf ("sizeof (size_t)");
|
||||||
|
} else {
|
||||||
|
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
||||||
|
}
|
||||||
|
$size_code .= ";\n";
|
||||||
|
|
||||||
|
$local_var_decl_code .= sprintf
|
||||||
|
(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]);
|
||||||
|
$init_local_var_code .= sprintf
|
||||||
|
(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n],
|
||||||
|
$fields[$field], $c_type);
|
||||||
|
|
||||||
|
$demarshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||||
|
"(char *) send_ptr + _LIBGTOP_SEND_offset;\n";
|
||||||
|
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n");
|
||||||
|
$demarshal_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]);
|
||||||
|
$demarshal_code .= sprintf
|
||||||
|
(qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]);
|
||||||
|
$demarshal_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined $demarshal_funcs->{$type}) {
|
||||||
|
$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
||||||
|
} else {
|
||||||
|
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n",
|
||||||
|
$fields[$field], "sizeof ($c_type)");
|
||||||
|
}
|
||||||
|
|
||||||
|
$demarshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$demarshal_code .= sprintf ("sizeof (size_t)");
|
||||||
|
} else {
|
||||||
|
$demarshal_code .= sprintf ("sizeof (%s)", $c_type);
|
||||||
|
}
|
||||||
|
$demarshal_code .= ";\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!($demarshal_code eq '')) {
|
||||||
|
$demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n],
|
||||||
|
$demarshal_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$call_code = sprintf
|
||||||
|
("\tretval = glibtop_get_%s_p (server%s);\n",
|
||||||
|
$feature, $call_param);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$call_code = sprintf
|
||||||
|
("\tretval = glibtop_get_%s_p (server, &array%s);\n",
|
||||||
|
$feature, $call_param);
|
||||||
|
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$call_code = sprintf
|
||||||
|
("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n",
|
||||||
|
$feature, $feature, $call_param);
|
||||||
|
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
|
||||||
|
} else {
|
||||||
|
$call_code = sprintf
|
||||||
|
("\tretval = glibtop_get_%s_p (server, &%s%s);\n",
|
||||||
|
$feature, $feature, $call_param);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($orig_retval eq 'retval') {
|
||||||
|
$call_code .= sprintf
|
||||||
|
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]);
|
||||||
|
} else {
|
||||||
|
$call_code .= sprintf
|
||||||
|
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$size_code .= sprintf
|
||||||
|
(qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]);
|
||||||
|
|
||||||
|
$size_code .= "\t/* recv size */\n";
|
||||||
|
$size_code .= "\t_LIBGTOP_RECV_len = 0;\n";
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
|
||||||
|
$size_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
|
||||||
|
} else {
|
||||||
|
$size_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
|
||||||
|
}
|
||||||
|
$size_code .= "\n";
|
||||||
|
|
||||||
|
$size_code .= "\t/* recv buffer */\n";
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n";
|
||||||
|
} else {
|
||||||
|
$size_code .= "\t_LIBGTOP_RECV_buf = glibtop_malloc_r (server, _LIBGTOP_RECV_len);\n";
|
||||||
|
}
|
||||||
|
$size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n";
|
||||||
|
|
||||||
|
$recv_buf_code = '';
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$recv_buf_code = "\t/* write recv buffer */\n";
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$recv_buf_code = "\t/* write recv buffer */\n";
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
|
||||||
|
$feature, $feature);
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
|
||||||
|
} else {
|
||||||
|
$recv_buf_code = "\t/* write recv buffer */\n";
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
|
||||||
|
$feature, $feature);
|
||||||
|
$recv_buf_code .= sprintf
|
||||||
|
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
$recv_buf_code .= "\n";
|
||||||
|
$recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n";
|
||||||
|
$recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n";
|
||||||
|
|
||||||
|
if ($orig_retval eq 'pointer(string)') {
|
||||||
|
$need_temp_storage = 1;
|
||||||
|
$local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n";
|
||||||
|
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n";
|
||||||
|
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n";
|
||||||
|
$local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n";
|
||||||
|
$local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
|
||||||
|
|
||||||
|
$recv_buf_code .= "\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n";
|
||||||
|
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n";
|
||||||
|
$recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
||||||
|
$recv_buf_code .= "\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_ARRAY_base = glibtop_malloc_r (server, _LIBGTOP_TEMP_len);";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n";
|
||||||
|
$recv_buf_code .= "\n";
|
||||||
|
$recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
|
||||||
|
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
|
||||||
|
$recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
|
||||||
|
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
||||||
|
$recv_buf_code .= "\t}\n\n";
|
||||||
|
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n";
|
||||||
|
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
|
||||||
|
$recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n";
|
||||||
|
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
||||||
|
$recv_buf_code .= "\t}\n\n";
|
||||||
|
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
|
||||||
|
$recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n";
|
||||||
|
$recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n";
|
||||||
|
$recv_buf_code .= "\t}\n";
|
||||||
|
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$recv_buf_code .= "\n";
|
||||||
|
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
|
||||||
|
$recv_buf_code .= "\t\t*recv_data_ptr = retval;\n";
|
||||||
|
$recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n";
|
||||||
|
$recv_buf_code .= "\t}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($need_temp_storage) {
|
||||||
|
$local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n";
|
||||||
|
$local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n";
|
||||||
|
$local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n";
|
||||||
|
$local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n";
|
||||||
|
|
||||||
|
$init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
||||||
|
$init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n";
|
||||||
|
$init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ".
|
||||||
|
"(char *) data_ptr;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$func_decl_code = sprintf
|
||||||
|
(qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature);
|
||||||
|
|
||||||
|
if (!($call_code eq '')) {
|
||||||
|
$call_code .= "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$func_body_code = sprintf
|
||||||
|
(qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code);
|
||||||
|
|
||||||
|
$total_code = sprintf
|
||||||
|
(qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n],
|
||||||
|
$func_decl_code, $local_var_decl_code, $init_local_var_code,
|
||||||
|
$func_body_code);
|
||||||
|
|
||||||
|
print $total_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$func_decl_code = sprintf
|
||||||
|
(qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]);
|
||||||
|
|
||||||
|
$switch_body_code = '';
|
||||||
|
|
||||||
|
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||||
|
$feature = $features{$nr};
|
||||||
|
|
||||||
|
$switch_body_code .= sprintf
|
||||||
|
(qq[\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n],
|
||||||
|
&toupper ($feature), $feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
$switch_code = sprintf
|
||||||
|
(qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code);
|
||||||
|
|
||||||
|
$total_code = sprintf
|
||||||
|
(qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code);
|
||||||
|
|
||||||
|
print $total_code;
|
||||||
|
|
||||||
|
1;
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -21,52 +23,33 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <glibtop/read.h>
|
#ifndef __GLIBTOP_BACKEND_PRIVATE_H__
|
||||||
|
#define __GLIBTOP_BACKEND_PRIVATE_H__
|
||||||
|
|
||||||
/* Reads some data from server. */
|
struct _glibtop_backend_private
|
||||||
|
|
||||||
static void
|
|
||||||
do_read (int s, void *ptr, size_t total_size)
|
|
||||||
{
|
{
|
||||||
int nread;
|
u_int64_t flags;
|
||||||
size_t already_read = 0, remaining = total_size;
|
int input [2]; /* Pipe client <- server */
|
||||||
|
int output [2]; /* Pipe client -> server */
|
||||||
while (already_read < total_size) {
|
pid_t pid; /* PID of the server */
|
||||||
nread = recv (s, ptr, remaining, 0);
|
};
|
||||||
|
|
||||||
if (nread == 0) {
|
void *
|
||||||
close (s);
|
glibtop_call_i (glibtop *server, glibtop_backend *backend, unsigned command,
|
||||||
continue;
|
size_t send_size, const void *send_ptr,
|
||||||
}
|
size_t data_size, const void *data_ptr,
|
||||||
|
size_t recv_size, void *recv_ptr,
|
||||||
if (nread <= 0) {
|
int *retval_ptr);
|
||||||
glibtop_error_io ("recv");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
already_read += nread;
|
|
||||||
remaining -= nread;
|
|
||||||
(char *) ptr += nread;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_read_l (glibtop *server, size_t size, void *buf)
|
glibtop_read_i (glibtop *server, glibtop_backend *backend,
|
||||||
{
|
size_t size, void *buf);
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
glibtop_init_r (&server, 0, 0);
|
void *
|
||||||
|
glibtop_read_data_i (glibtop *server, glibtop_backend *backend);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_write_i (glibtop *server, glibtop_backend *backend,
|
||||||
|
size_t size, const void *buf);
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf (stderr, "LIBRARY: really reading %d bytes.\n", size);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (server->socket) {
|
|
||||||
do_read (server->socket, buf, size);
|
|
||||||
} else {
|
|
||||||
ret = read (server->input [0], buf, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
glibtop_error_io_r (server, _("read %d bytes"), size);
|
|
||||||
}
|
|
114
backends/server/io.c
Normal file
114
backends/server/io.c
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "server.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
||||||
|
const void *data_ptr)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Really writing %d bytes.\n",
|
||||||
|
sizeof (glibtop_response));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (s == 0) {
|
||||||
|
if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0)
|
||||||
|
glibtop_warn_io ("write");
|
||||||
|
} else {
|
||||||
|
if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0)
|
||||||
|
glibtop_warn_io ("send");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resp->recv_size) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Writing %ld bytes of data.\n",
|
||||||
|
(long) resp->recv_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (s == 0) {
|
||||||
|
if (write (1, recv_ptr, resp->recv_size) < 0)
|
||||||
|
glibtop_warn_io ("write");
|
||||||
|
} else {
|
||||||
|
if (send (s, recv_ptr, resp->recv_size, 0) < 0)
|
||||||
|
glibtop_warn_io ("send");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resp->data_size) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Writing %ld bytes of extra data.\n",
|
||||||
|
(long) resp->data_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (s == 0) {
|
||||||
|
if (write (1, data_ptr, resp->data_size) < 0)
|
||||||
|
glibtop_warn_io ("write");
|
||||||
|
} else {
|
||||||
|
if (send (s, data_ptr, resp->data_size, 0) < 0)
|
||||||
|
glibtop_warn_io ("send");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
do_read (int s, void *ptr, size_t total_size)
|
||||||
|
{
|
||||||
|
int nread;
|
||||||
|
char *tmp_ptr;
|
||||||
|
size_t already_read = 0, remaining = total_size;
|
||||||
|
|
||||||
|
while (already_read < total_size) {
|
||||||
|
if (s)
|
||||||
|
nread = recv (s, ptr, remaining, 0);
|
||||||
|
else
|
||||||
|
nread = read (0, ptr, remaining);
|
||||||
|
|
||||||
|
if ((already_read == 0) && (nread == 0)) {
|
||||||
|
glibtop_warn ("pid %d received eof.", getpid ());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread <= 0) {
|
||||||
|
glibtop_warn_io ("recv");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
already_read += nread;
|
||||||
|
remaining -= nread;
|
||||||
|
/* (char *) ptr += nread; */
|
||||||
|
tmp_ptr = ptr;
|
||||||
|
tmp_ptr += nread;
|
||||||
|
ptr = tmp_ptr;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "READ (%d): %d - %d - %d\n",
|
||||||
|
nread, already_read, remaining, total_size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return already_read;
|
||||||
|
}
|
12
backends/server/libgtop-server.backend
Normal file
12
backends/server/libgtop-server.backend
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||||
|
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||||
|
|
||||||
|
<libgtop:Backend>
|
||||||
|
<libgtop:Name>glibtop-backend-server</libgtop:Name>
|
||||||
|
<libgtop:Location>
|
||||||
|
<libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName>
|
||||||
|
<libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName>
|
||||||
|
</libgtop:Location>
|
||||||
|
</libgtop:Backend>
|
||||||
|
|
||||||
|
</libgtop:Backends>
|
309
backends/server/marshal.pl
Normal file
309
backends/server/marshal.pl
Normal file
@@ -0,0 +1,309 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
require 'c_types.pl';
|
||||||
|
|
||||||
|
$[ = 1; # set array base to 1
|
||||||
|
$, = ' '; # set output field separator
|
||||||
|
$\ = "\n"; # set output record separator
|
||||||
|
|
||||||
|
$always_use_temp_storage = 1;
|
||||||
|
|
||||||
|
sub toupper {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/a-z/A-Z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tolower {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/A-Z/a-z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
print '/* marshal.c */';
|
||||||
|
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||||
|
print '';
|
||||||
|
|
||||||
|
print '#include <glibtop.h>';
|
||||||
|
print '#include <glibtop/open.h>';
|
||||||
|
print '#include <glibtop/xmalloc.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/sysdeps.h>';
|
||||||
|
print '#include <glibtop/union.h>';
|
||||||
|
print '';
|
||||||
|
print '#include "command.h"';
|
||||||
|
print '#include <glibtop/backend.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop-backend-private.h>';
|
||||||
|
print '';
|
||||||
|
|
||||||
|
$feature_count = 0;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
chop; # strip record separator
|
||||||
|
|
||||||
|
if (/^[^#]/) {
|
||||||
|
&output($_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub output {
|
||||||
|
local($line) = @_;
|
||||||
|
@line_fields = split(/\|/, $line, 9999);
|
||||||
|
$retval = $line_fields[1];
|
||||||
|
$feature = $line_fields[2];
|
||||||
|
$param_def = $line_fields[4];
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
$space = $feature;
|
||||||
|
$space =~ s/./ /g;
|
||||||
|
|
||||||
|
$features{++$feature_count} = $orig;
|
||||||
|
return if $orig =~ /^@/;
|
||||||
|
|
||||||
|
$orig_retval = $retval;
|
||||||
|
if ($retval eq 'retval') {
|
||||||
|
$retval_param = '&retval';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$retval = 'int';
|
||||||
|
}
|
||||||
|
elsif ($retval !~ /^void$/) {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$call_prefix = 'retval = ';
|
||||||
|
$call_prefix_space = ' ';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = '';
|
||||||
|
$prefix_space = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||||
|
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||||
|
}
|
||||||
|
|
||||||
|
$need_temp_storage = $always_use_temp_storage;
|
||||||
|
$local_var_init_code = "\t/* variable initialization */\n";
|
||||||
|
$local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
||||||
|
$local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
||||||
|
$local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
||||||
|
$local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||||
|
"(char *) _LIBGTOP_SEND_buf;\n";
|
||||||
|
$marshal_code = "\t/* marshal start */\n";
|
||||||
|
$marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
|
||||||
|
$first_param_name = '';
|
||||||
|
$size_code = '';
|
||||||
|
|
||||||
|
$call_param = '';
|
||||||
|
$param_decl = '';
|
||||||
|
$need_temp_len = 0;
|
||||||
|
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||||
|
for ($param = 1; $param <= $nr_params; $param++) {
|
||||||
|
$list = $params[$param];
|
||||||
|
$type = $params[$param];
|
||||||
|
$type =~ s/\(.*//;
|
||||||
|
$list =~ s/^.*\(//;
|
||||||
|
$list =~ s/\)$//;
|
||||||
|
$count = (@fields = split(/,/, $list, 9999));
|
||||||
|
for ($field = 1; $field <= $count; $field++) {
|
||||||
|
my $c_type = $typeinfo->{$type}->[1];
|
||||||
|
|
||||||
|
if ($first_param_name eq '') {
|
||||||
|
$first_param_name = $fields[$field];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$need_temp_storage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($param_decl eq '') {
|
||||||
|
$param_decl = ",\n " . $space . ' ';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$param_decl = $param_decl . ', ';
|
||||||
|
}
|
||||||
|
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||||
|
$call_param = $call_param . ', ' . $fields[$field];
|
||||||
|
|
||||||
|
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$size_code .= sprintf ("sizeof (size_t)");
|
||||||
|
} else {
|
||||||
|
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
||||||
|
}
|
||||||
|
$size_code .= ";\n";
|
||||||
|
|
||||||
|
if (defined $sizeof_funcs->{$type}) {
|
||||||
|
$size_code .= "\t_LIBGTOP_DATA_len += ";
|
||||||
|
$size_code .= $sizeof_funcs->{$type}->($fields[$field]);
|
||||||
|
$size_code .= ";\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||||
|
"(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
|
||||||
|
|
||||||
|
if (defined $marshal_funcs->{$type}) {
|
||||||
|
$marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
||||||
|
} else {
|
||||||
|
$marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
|
||||||
|
'&'.$fields[$field], "sizeof ($c_type)");
|
||||||
|
}
|
||||||
|
|
||||||
|
$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$marshal_code .= sprintf ("sizeof (size_t)");
|
||||||
|
} else {
|
||||||
|
$marshal_code .= sprintf ("sizeof (%s)", $c_type);
|
||||||
|
}
|
||||||
|
$marshal_code .= ";\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$local_var_code = "";
|
||||||
|
$local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
|
||||||
|
$local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
|
||||||
|
if ($need_temp_len) {
|
||||||
|
$local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
|
||||||
|
}
|
||||||
|
$local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
|
||||||
|
$local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
|
||||||
|
if ($retval !~ /^void$/) {
|
||||||
|
$local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
||||||
|
$retval, $retval);
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code = '';
|
||||||
|
|
||||||
|
$send_buf_code = "\t/* send buffer */\n";
|
||||||
|
$send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
|
||||||
|
if ($need_temp_storage) {
|
||||||
|
$send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)";
|
||||||
|
} else {
|
||||||
|
$send_buf_code .= '(void *) &'.$first_param_name;
|
||||||
|
}
|
||||||
|
$send_buf_code .= ";\n\n";
|
||||||
|
|
||||||
|
$send_buf_code .= "\t/* data buffer */\n";
|
||||||
|
$send_buf_code .= "\t_LIBGTOP_DATA_buf = ";
|
||||||
|
if ($need_temp_storage) {
|
||||||
|
$send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)";
|
||||||
|
} else {
|
||||||
|
$send_buf_code .= 'NULL';
|
||||||
|
}
|
||||||
|
$send_buf_code .= ";\n";
|
||||||
|
$send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n";
|
||||||
|
|
||||||
|
$call_code = '';
|
||||||
|
$call_code .= sprintf ("\t%sglibtop_call_i (server, backend, GLIBTOP_CMND_%s,\n",
|
||||||
|
$call_prefix, &toupper($feature));
|
||||||
|
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
|
||||||
|
"_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf");
|
||||||
|
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
|
||||||
|
"_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf");
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n",
|
||||||
|
$call_prefix_space);
|
||||||
|
} else {
|
||||||
|
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n",
|
||||||
|
$call_prefix_space, $feature);
|
||||||
|
}
|
||||||
|
$call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param);
|
||||||
|
|
||||||
|
if ($need_temp_storage) {
|
||||||
|
$send_buf_free_code = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n";
|
||||||
|
$send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n";
|
||||||
|
} else {
|
||||||
|
$send_buf_free_code = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!($size_code eq '')) {
|
||||||
|
$size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($orig_retval eq 'pointer(string)') {
|
||||||
|
$call_code .= "\n";
|
||||||
|
$local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n";
|
||||||
|
$local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
|
||||||
|
$local_var_code .= "\tint i;\n";
|
||||||
|
$call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n";
|
||||||
|
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n";
|
||||||
|
$call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n";
|
||||||
|
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n";
|
||||||
|
$call_code .= "\tfor (i = 0; i < array->number; i++)\n";
|
||||||
|
$call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
|
||||||
|
$call_code .= "\tptrlist [array->number] = NULL;\n\n";
|
||||||
|
$call_code .= "\tglibtop_free_r (server, retval);\n";
|
||||||
|
$call_code .= "\tretval = ptrlist;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
|
||||||
|
$size_code, $send_buf_code, $marshal_code,
|
||||||
|
$call_code, $send_buf_free_code);
|
||||||
|
|
||||||
|
$return_code = '';
|
||||||
|
if ($retval !~ /^void$/) {
|
||||||
|
$return_code .= "\treturn retval;\n";
|
||||||
|
} else {
|
||||||
|
$return_code .= "\treturn;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code .= $return_code;
|
||||||
|
|
||||||
|
$func_decl = 'static '.$retval."\n";
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
} else {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
|
||||||
|
$local_var_code, $local_var_init_code,
|
||||||
|
$total_code);
|
||||||
|
|
||||||
|
|
||||||
|
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
|
||||||
|
&toupper($feature), $total_code,
|
||||||
|
&toupper($feature));
|
||||||
|
|
||||||
|
print $total_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$call_vector_code = '';
|
||||||
|
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||||
|
$feature = $features{$nr};
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
|
||||||
|
if ($orig =~ /^@/) {
|
||||||
|
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||||
|
} else {
|
||||||
|
$call_vector_code .= sprintf
|
||||||
|
(qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
|
||||||
|
&toupper($feature), $feature);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
|
||||||
|
print $call_vector_code;
|
||||||
|
print '};';
|
||||||
|
print '';
|
||||||
|
|
53
backends/server/read.c
Normal file
53
backends/server/read.c
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
#include <glibtop/backend.h>
|
||||||
|
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_read_i (glibtop *server, glibtop_backend *backend,
|
||||||
|
size_t size, void *buf)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
glibtop_init_r (&server, 0, 0);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
|
||||||
|
size, backend->_priv->input [0]);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ret = read (backend->_priv->input [0], buf, size);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
|
glibtop_error_io_r (server, "read %d bytes", size);
|
||||||
|
}
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -21,49 +23,42 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
#include <glibtop/xmalloc.h>
|
#include <glibtop/xmalloc.h>
|
||||||
#include <glibtop/read_data.h>
|
#include <glibtop/backend.h>
|
||||||
|
|
||||||
/* Reads some data from server. */
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
void *
|
void *
|
||||||
glibtop_read_data_l (glibtop *server)
|
glibtop_read_data_i (glibtop *server, glibtop_backend *backend)
|
||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
glibtop_init_r (&server, 0, 0);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
|
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (server->socket) {
|
ret = read (backend->_priv->input [0], (void *)&size,
|
||||||
ret = recv (server->socket, (void *)&size, sizeof (size_t), 0);
|
sizeof (size_t));
|
||||||
} else {
|
|
||||||
ret = read (server->input [0], (void *)&size, sizeof (size_t));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
glibtop_error_io_r (server, _("read data size"));
|
glibtop_error_io_r (server, "read data size");
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
|
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!size) return NULL;
|
if (!size) return NULL;
|
||||||
|
|
||||||
ptr = glibtop_malloc_r (server, size);
|
ptr = glibtop_malloc_r (server, size);
|
||||||
|
|
||||||
if (server->socket) {
|
ret = read (backend->_priv->input [0], ptr, size);
|
||||||
ret = recv (server->socket, ptr, size, 0);
|
|
||||||
} else {
|
|
||||||
ret = read (server->input [0], ptr, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
glibtop_error_io_r (server, _("read data %d bytes"));
|
glibtop_error_io_r (server, "read data %d bytes");
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
190
backends/server/server.c
Normal file
190
backends/server/server.c
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "server.h"
|
||||||
|
|
||||||
|
static glibtop _glibtop_global_server;
|
||||||
|
glibtop *glibtop_global_server = &_glibtop_global_server;
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
|
const unsigned long glibtop_server_features =
|
||||||
|
GLIBTOP_SUID_CPU +
|
||||||
|
GLIBTOP_SUID_MEM +
|
||||||
|
GLIBTOP_SUID_SWAP +
|
||||||
|
GLIBTOP_SUID_UPTIME +
|
||||||
|
GLIBTOP_SUID_LOADAVG +
|
||||||
|
GLIBTOP_SUID_SHM_LIMITS +
|
||||||
|
GLIBTOP_SUID_MSG_LIMITS +
|
||||||
|
GLIBTOP_SUID_SEM_LIMITS +
|
||||||
|
GLIBTOP_SUID_PROCLIST +
|
||||||
|
GLIBTOP_SUID_PROC_STATE +
|
||||||
|
GLIBTOP_SUID_PROC_UID +
|
||||||
|
GLIBTOP_SUID_PROC_MEM +
|
||||||
|
GLIBTOP_SUID_PROC_TIME +
|
||||||
|
GLIBTOP_SUID_PROC_SIGNAL +
|
||||||
|
GLIBTOP_SUID_PROC_KERNEL +
|
||||||
|
GLIBTOP_SUID_PROC_SEGMENT +
|
||||||
|
GLIBTOP_SUID_PROC_ARGS +
|
||||||
|
GLIBTOP_SUID_PROC_MAP +
|
||||||
|
GLIBTOP_SUID_NETINFO +
|
||||||
|
GLIBTOP_SUID_NETLOAD +
|
||||||
|
GLIBTOP_SUID_INTERFACE_NAMES +
|
||||||
|
GLIBTOP_SUID_PPP;
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
struct utsname uts;
|
||||||
|
int uid, euid, gid, egid;
|
||||||
|
glibtop *server;
|
||||||
|
|
||||||
|
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
|
||||||
|
|
||||||
|
uid = getuid (); euid = geteuid ();
|
||||||
|
gid = getgid (); egid = getegid ();
|
||||||
|
|
||||||
|
if (uname (&uts) < 0) _exit (1);
|
||||||
|
|
||||||
|
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
|
||||||
|
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
|
||||||
|
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
|
||||||
|
fprintf (stderr, "Can only run on %s %s %s\n",
|
||||||
|
LIBGTOP_COMPILE_SYSTEM,
|
||||||
|
LIBGTOP_COMPILE_RELEASE,
|
||||||
|
LIBGTOP_COMPILE_MACHINE);
|
||||||
|
_exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
server = glibtop_global_server;
|
||||||
|
|
||||||
|
if (!server->_priv)
|
||||||
|
server->_priv = glibtop_calloc_r
|
||||||
|
(server, 1, sizeof (glibtop_server_private));
|
||||||
|
|
||||||
|
glibtop_init_p (server, 0, 0);
|
||||||
|
|
||||||
|
if (setreuid (euid, uid)) _exit (1);
|
||||||
|
|
||||||
|
if (setregid (egid, gid)) _exit (1);
|
||||||
|
|
||||||
|
/* !!! END OF SUID ROOT PART !!! */
|
||||||
|
|
||||||
|
handle_slave_connection (0, 0);
|
||||||
|
|
||||||
|
_exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
handle_slave_connection (int input, int output)
|
||||||
|
{
|
||||||
|
glibtop_command _cmnd, *cmnd = &_cmnd;
|
||||||
|
glibtop *server = glibtop_global_server;
|
||||||
|
|
||||||
|
// glibtop_send_version_i (glibtop_global_server, output);
|
||||||
|
|
||||||
|
while (do_read (input, cmnd, sizeof (glibtop_command))) {
|
||||||
|
size_t recv_size = 0, send_size = 0, recv_data_size = 0;
|
||||||
|
void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL;
|
||||||
|
char parameter [BUFSIZ];
|
||||||
|
int retval, func_retval;
|
||||||
|
glibtop_response resp;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Slave %d received command "
|
||||||
|
"%ld from client.\n", getpid (), (long) cmnd->command);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (cmnd->send_size >= BUFSIZ)
|
||||||
|
glibtop_error ("Client sent %d bytes, but buffer is %d",
|
||||||
|
cmnd->send_size, BUFSIZ);
|
||||||
|
else if (cmnd->param_size >= BUFSIZ)
|
||||||
|
glibtop_error ("Client sent %d bytes, but buffer is %d",
|
||||||
|
cmnd->param_size, BUFSIZ);
|
||||||
|
|
||||||
|
memset (parameter, 0, sizeof (parameter));
|
||||||
|
|
||||||
|
if (cmnd->send_size) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Client has %d bytes of data.\n",
|
||||||
|
cmnd->send_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
send_size = cmnd->send_size;
|
||||||
|
do_read (input, parameter, send_size);
|
||||||
|
} else if (cmnd->param_size) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Client has %d bytes of parameter data.\n",
|
||||||
|
cmnd->param_size);
|
||||||
|
#endif
|
||||||
|
send_size = cmnd->param_size;
|
||||||
|
memcpy (parameter, cmnd->parameter, send_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmnd->data_size) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n",
|
||||||
|
cmnd->data_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
data_ptr = glibtop_malloc_r (server, cmnd->data_size);
|
||||||
|
do_read (input, data_ptr, cmnd->data_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = glibtop_demarshal_func_i (server, NULL,
|
||||||
|
cmnd->command,
|
||||||
|
parameter, send_size,
|
||||||
|
data_ptr, cmnd->data_size,
|
||||||
|
&recv_ptr, &recv_size,
|
||||||
|
&recv_data_ptr, &recv_data_size,
|
||||||
|
&func_retval);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Retval %d / %d - %p - %d\n",
|
||||||
|
retval, func_retval, recv_ptr, recv_size);
|
||||||
|
|
||||||
|
if (recv_data_size) {
|
||||||
|
fprintf (stderr, "Returning %d bytes of data from %p.\n",
|
||||||
|
recv_data_size, recv_data_ptr);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
memset (&resp, 0, sizeof (glibtop_response));
|
||||||
|
|
||||||
|
resp.retval = retval;
|
||||||
|
resp.glibtop_errno = func_retval;
|
||||||
|
resp.recv_size = recv_size;
|
||||||
|
resp.data_size = recv_data_size;
|
||||||
|
|
||||||
|
do_output (output, &resp, recv_ptr, recv_data_ptr);
|
||||||
|
}
|
||||||
|
}
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -31,8 +33,6 @@
|
|||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/union.h>
|
#include <glibtop/union.h>
|
||||||
#include <glibtop/xmalloc.h>
|
#include <glibtop/xmalloc.h>
|
||||||
#include <glibtop/version.h>
|
|
||||||
#include <glibtop/command.h>
|
|
||||||
#include <glibtop/parameter.h>
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@@ -40,6 +40,11 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include <glibtop/backend.h>
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
#include "command.h"
|
||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
/* Some don't have LOG_PERROR */
|
/* Some don't have LOG_PERROR */
|
||||||
@@ -47,6 +52,8 @@ BEGIN_LIBGTOP_DECLS
|
|||||||
#define LOG_PERROR 0
|
#define LOG_PERROR 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
|
||||||
|
|
||||||
#if defined(HAVE_GETDTABLESIZE)
|
#if defined(HAVE_GETDTABLESIZE)
|
||||||
#define GET_MAX_FDS() getdtablesize()
|
#define GET_MAX_FDS() getdtablesize()
|
||||||
#else
|
#else
|
||||||
@@ -55,23 +62,21 @@ BEGIN_LIBGTOP_DECLS
|
|||||||
#define GET_MAX_FDS() 256
|
#define GET_MAX_FDS() 256
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _offset_union(p) ((char *) &resp->u.p - (char *) resp)
|
void
|
||||||
#define _offset_data(p) _offset_union (data.p)
|
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
||||||
|
const void *data_ptr);
|
||||||
|
|
||||||
#define MSG_BUFSZ sizeof (struct _glibtop_ipc_message)
|
int
|
||||||
#define MSG_MSGSZ (MSG_BUFSZ - sizeof (long))
|
do_read (int s, void *ptr, size_t total_size);
|
||||||
|
|
||||||
void handle_parent_connection (int s);
|
void
|
||||||
void handle_slave_connection (int input, int output);
|
handle_slave_connection (int input, int output);
|
||||||
void handle_slave_command (glibtop_command *cmnd, glibtop_response *resp,
|
|
||||||
const void *parameter);
|
|
||||||
|
|
||||||
void do_output (int s, glibtop_response *resp, off_t offset,
|
int
|
||||||
size_t data_size, const void *data);
|
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);
|
||||||
int do_read (int s, void *ptr, size_t total_size);
|
|
||||||
|
|
||||||
void syslog_message (int priority, char *format, ...);
|
void
|
||||||
void syslog_io_message (int priority, char *format, ...);
|
glibtop_send_version_i (glibtop *server, int fd);
|
||||||
|
|
||||||
extern int enable_debug;
|
extern int enable_debug;
|
||||||
extern int verbose_output;
|
extern int verbose_output;
|
62
backends/server/version.c
Normal file
62
backends/server/version.c
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "server.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_send_version_i (glibtop *server, int fd)
|
||||||
|
{
|
||||||
|
char buffer [BUFSIZ];
|
||||||
|
size_t size;
|
||||||
|
|
||||||
|
sprintf (buffer, LIBGTOP_VERSION_STRING,
|
||||||
|
LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
|
||||||
|
sizeof (glibtop_command),
|
||||||
|
sizeof (glibtop_response),
|
||||||
|
sizeof (glibtop_union),
|
||||||
|
sizeof (glibtop_sysdeps));
|
||||||
|
|
||||||
|
size = strlen (buffer) + 1;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "SERVER ID: |%s|\n", buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (fd == 0) {
|
||||||
|
if (write (1, (const void *) &size, sizeof (size)) < 0)
|
||||||
|
glibtop_warn_io_r (server, "write");
|
||||||
|
} else {
|
||||||
|
if (send (fd, (const void *) &size, sizeof (size), 0) < 0)
|
||||||
|
glibtop_warn_io_r (server, "send");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fd == 0) {
|
||||||
|
if (write (1, (const void *) buffer, size) < 0)
|
||||||
|
glibtop_warn_io_r (server, "write");
|
||||||
|
} else {
|
||||||
|
if (send (fd, (const void *) buffer, size, 0) < 0)
|
||||||
|
glibtop_warn_io_r (server, "send");
|
||||||
|
}
|
||||||
|
}
|
48
backends/server/write.c
Normal file
48
backends/server/write.c
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/error.h>
|
||||||
|
#include <glibtop/backend.h>
|
||||||
|
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_write_i (glibtop *server, glibtop_backend *backend,
|
||||||
|
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 (backend->_priv->output [1], buf, size);
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
|
glibtop_error_io_r (server, "write %d bytes", size);
|
||||||
|
}
|
7
backends/sysdeps/.cvsignore
Normal file
7
backends/sysdeps/.cvsignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
*.lo
|
||||||
|
*.la
|
||||||
|
marshal.c
|
28
backends/sysdeps/ChangeLog
Normal file
28
backends/sysdeps/ChangeLog
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
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.
|
||||||
|
|
35
backends/sysdeps/Makefile.am
Normal file
35
backends/sysdeps/Makefile.am
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
INCLUDES = @INCLUDES@
|
||||||
|
|
||||||
|
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||||
|
|
||||||
|
backend_DATA = \
|
||||||
|
libgtop-sysdeps.backend
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
glibtop-backend-private.h
|
||||||
|
|
||||||
|
backend_LTLIBRARIES = \
|
||||||
|
libgtop_backend_sysdeps.la
|
||||||
|
|
||||||
|
libgtop_backend_sysdeps_la_SOURCES = \
|
||||||
|
backend-sysdeps.c \
|
||||||
|
marshal.c
|
||||||
|
|
||||||
|
libgtop_backend_sysdeps_la_LDFLAGS = \
|
||||||
|
$(LT_VERSION_INFO) -export-dynamic
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
marshal.c
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
marshal.pl \
|
||||||
|
libgtop-sysdeps.backend
|
||||||
|
|
||||||
|
CLEANFILES = $(BUILT_SOURCES)
|
||||||
|
|
||||||
|
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||||
|
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||||
|
mv tmp-t marshal.c
|
||||||
|
|
77
backends/sysdeps/backend-sysdeps.c
Normal file
77
backends/sysdeps/backend-sysdeps.c
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/backend.h>
|
||||||
|
#include <glibtop-backend-private.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
_open_sysdeps (glibtop *, glibtop_backend *, u_int64_t, const char **);
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_sysdeps (glibtop *, glibtop_backend *);
|
||||||
|
|
||||||
|
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
|
||||||
|
|
||||||
|
glibtop_backend_info LibGTopBackendInfo = {
|
||||||
|
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
|
||||||
|
&glibtop_backend_sysdeps_call_vector
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
_open_sysdeps (glibtop *server, glibtop_backend *backend,
|
||||||
|
u_int64_t features, const char **backend_args)
|
||||||
|
{
|
||||||
|
glibtop_init_func_t *init_fkt;
|
||||||
|
|
||||||
|
backend->_priv = glibtop_calloc_r
|
||||||
|
(server, 1, sizeof (glibtop_backend_private));
|
||||||
|
|
||||||
|
/* Do the initialization, but only if not already initialized. */
|
||||||
|
|
||||||
|
if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
|
||||||
|
glibtop_open_s (server, "glibtop", features, 0);
|
||||||
|
|
||||||
|
for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
|
||||||
|
(*init_fkt) (server);
|
||||||
|
|
||||||
|
server->sysdeps.pointer_size = sizeof (void*)*8;
|
||||||
|
|
||||||
|
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_close_sysdeps (glibtop *server, glibtop_backend *backend)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -21,19 +23,12 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_READ_DATA_H__
|
#ifndef __GLIBTOP_BACKEND_PRIVATE_H__
|
||||||
#define __GLIBTOP_READ_DATA_H__
|
#define __GLIBTOP_BACKEND_PRIVATE_H__
|
||||||
|
|
||||||
#include <glibtop.h>
|
struct _glibtop_backend_private
|
||||||
#include <glibtop/error.h>
|
{
|
||||||
|
u_int64_t flags;
|
||||||
BEGIN_LIBGTOP_DECLS
|
};
|
||||||
|
|
||||||
#define glibtop_read_data() glibtop_read_data_r(glibtop_global_server)
|
|
||||||
|
|
||||||
void *glibtop_read_data_l (glibtop *server);
|
|
||||||
void *glibtop_read_data_s (glibtop *server);
|
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
#endif
|
#endif
|
12
backends/sysdeps/libgtop-sysdeps.backend
Normal file
12
backends/sysdeps/libgtop-sysdeps.backend
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||||
|
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||||
|
|
||||||
|
<libgtop:Backend>
|
||||||
|
<libgtop:Name>glibtop-backend-sysdeps</libgtop:Name>
|
||||||
|
<libgtop:Location>
|
||||||
|
<libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName>
|
||||||
|
<libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName>
|
||||||
|
</libgtop:Location>
|
||||||
|
</libgtop:Backend>
|
||||||
|
|
||||||
|
</libgtop:Backends>
|
199
backends/sysdeps/marshal.pl
Normal file
199
backends/sysdeps/marshal.pl
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
require 'c_types.pl';
|
||||||
|
|
||||||
|
$[ = 1; # set array base to 1
|
||||||
|
$, = ' '; # set output field separator
|
||||||
|
$\ = "\n"; # set output record separator
|
||||||
|
|
||||||
|
$always_use_temp_storage = 1;
|
||||||
|
|
||||||
|
sub toupper {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/a-z/A-Z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tolower {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/A-Z/a-z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
print '/* marshal.c */';
|
||||||
|
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||||
|
print '';
|
||||||
|
|
||||||
|
print '#include <glibtop.h>';
|
||||||
|
print '#include <glibtop/open.h>';
|
||||||
|
print '#include <glibtop/xmalloc.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/sysdeps.h>';
|
||||||
|
print '#include <glibtop/union.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop/backend.h>';
|
||||||
|
print '';
|
||||||
|
print '#include <glibtop-backend-private.h>';
|
||||||
|
print '';
|
||||||
|
|
||||||
|
$feature_count = 0;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
chop; # strip record separator
|
||||||
|
|
||||||
|
if (/^[^#]/) {
|
||||||
|
&output($_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub output {
|
||||||
|
local($line) = @_;
|
||||||
|
@line_fields = split(/\|/, $line, 9999);
|
||||||
|
$retval = $line_fields[1];
|
||||||
|
$feature = $line_fields[2];
|
||||||
|
$param_def = $line_fields[4];
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
$space = $feature;
|
||||||
|
$space =~ s/./ /g;
|
||||||
|
|
||||||
|
$features{++$feature_count} = $orig;
|
||||||
|
|
||||||
|
return if $orig =~ /^@/;
|
||||||
|
|
||||||
|
if ($retval eq 'retval') {
|
||||||
|
$retval_param = '&retval';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$retval = 'int';
|
||||||
|
}
|
||||||
|
elsif ($retval !~ /^void$/) {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$prefix = 'retval = ';
|
||||||
|
$prefix_space = ' ';
|
||||||
|
$call_prefix = 'retval = ';
|
||||||
|
$call_prefix_space = ' ';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
$call_prefix = '';
|
||||||
|
$call_prefix_space = '';
|
||||||
|
$prefix = '';
|
||||||
|
$prefix_space = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||||
|
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||||
|
}
|
||||||
|
|
||||||
|
$need_temp_storage = $always_use_temp_storage;
|
||||||
|
$first_param_name = '';
|
||||||
|
|
||||||
|
$call_param = '';
|
||||||
|
$param_decl = '';
|
||||||
|
$need_temp_len = 0;
|
||||||
|
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||||
|
for ($param = 1; $param <= $nr_params; $param++) {
|
||||||
|
$list = $params[$param];
|
||||||
|
$type = $params[$param];
|
||||||
|
$type =~ s/\(.*//;
|
||||||
|
$list =~ s/^.*\(//;
|
||||||
|
$list =~ s/\)$//;
|
||||||
|
$count = (@fields = split(/,/, $list, 9999));
|
||||||
|
for ($field = 1; $field <= $count; $field++) {
|
||||||
|
my $c_type = $typeinfo->{$type}->[1];
|
||||||
|
|
||||||
|
if ($first_param_name eq '') {
|
||||||
|
$first_param_name = $fields[$field];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($typeinfo->{$type}->[2]) {
|
||||||
|
$need_temp_storage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($param_decl eq '') {
|
||||||
|
$param_decl = ",\n " . $space . ' ';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$param_decl = $param_decl . ', ';
|
||||||
|
}
|
||||||
|
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||||
|
$call_param = $call_param . ', ' . $fields[$field];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
||||||
|
} else {
|
||||||
|
$total_code = sprintf
|
||||||
|
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
||||||
|
}
|
||||||
|
|
||||||
|
$func_decl = 'static '.$retval."\n";
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
|
||||||
|
$feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
} else {
|
||||||
|
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n",
|
||||||
|
$feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
||||||
|
|
||||||
|
$total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n",
|
||||||
|
&toupper($feature), $total_code,
|
||||||
|
&toupper($feature));
|
||||||
|
|
||||||
|
print $total_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$init_hook_code = '';
|
||||||
|
$call_vector_code = '';
|
||||||
|
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||||
|
$feature = $features{$nr};
|
||||||
|
|
||||||
|
if ($feature =~ /^@/) {
|
||||||
|
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||||
|
} else {
|
||||||
|
$call_vector_code .= sprintf
|
||||||
|
(qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n],
|
||||||
|
&toupper($feature), $feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!($feature =~ /^@/)) {
|
||||||
|
$init_hook_code .= sprintf
|
||||||
|
(qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n],
|
||||||
|
&toupper($feature), $feature);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$init_hook_code .= sprintf (qq[\tNULL\n]);
|
||||||
|
|
||||||
|
chop $init_hook_code;
|
||||||
|
chop $call_vector_code;
|
||||||
|
|
||||||
|
print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {';
|
||||||
|
print $call_vector_code;
|
||||||
|
print '};';
|
||||||
|
print '';
|
||||||
|
|
||||||
|
print 'glibtop_init_func_t _glibtop_init_hook_s [] = {';
|
||||||
|
print $init_hook_code;
|
||||||
|
print '};';
|
||||||
|
print '';
|
||||||
|
|
344
configure.in
344
configure.in
@@ -1,5 +1,5 @@
|
|||||||
dnl
|
dnl
|
||||||
dnl Configure script for the Gnome library
|
dnl Configure script for LibGTop
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_INIT(copyright.txt)
|
AC_INIT(copyright.txt)
|
||||||
@@ -13,6 +13,12 @@ AC_MSG_ERROR([
|
|||||||
*** The "dc" utility was not found on your system.
|
*** The "dc" utility was not found on your system.
|
||||||
***
|
***
|
||||||
*** When using RedHat Linux, you need to install the "bc" package.
|
*** When using RedHat Linux, you need to install the "bc" package.
|
||||||
|
***
|
||||||
|
*** It is now part of the "bc" package, so you should look at
|
||||||
|
*** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself.
|
||||||
|
***
|
||||||
|
*** Other systems and distributions may also have it in their "bc" package,
|
||||||
|
*** so if there's no "dc" one, please look for "bc".
|
||||||
***])
|
***])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
|||||||
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
|
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
|
||||||
LT_REVISION=$LIBGTOP_INTERFACE_AGE
|
LT_REVISION=$LIBGTOP_INTERFACE_AGE
|
||||||
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
|
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
|
||||||
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
|
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} -release ${LT_RELEASE}'
|
||||||
AC_SUBST(LT_VERSION_INFO)
|
AC_SUBST(LT_VERSION_INFO)
|
||||||
AC_SUBST(LT_RELEASE)
|
AC_SUBST(LT_RELEASE)
|
||||||
AC_SUBST(LT_CURRENT)
|
AC_SUBST(LT_CURRENT)
|
||||||
@@ -47,6 +53,10 @@ AC_PROG_CC
|
|||||||
AC_STDC_HEADERS
|
AC_STDC_HEADERS
|
||||||
AC_ARG_PROGRAM
|
AC_ARG_PROGRAM
|
||||||
|
|
||||||
|
dnl We need this at some places.
|
||||||
|
libgtop_top_builddir=`pwd`
|
||||||
|
AC_SUBST(libgtop_top_builddir)
|
||||||
|
|
||||||
dnl We don't use `AC_PROG_AWK' since it checks for mawk first which
|
dnl We don't use `AC_PROG_AWK' since it checks for mawk first which
|
||||||
dnl does not work for libgtop.
|
dnl does not work for libgtop.
|
||||||
AC_CHECK_PROGS(AWK, gawk awk, )
|
AC_CHECK_PROGS(AWK, gawk awk, )
|
||||||
@@ -91,27 +101,35 @@ if test "x$gnome_found" != xyes; then
|
|||||||
fi
|
fi
|
||||||
GNOME_SUPPORT_CHECKS
|
GNOME_SUPPORT_CHECKS
|
||||||
else
|
else
|
||||||
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
if test "x$want_gnome" != xno ; then
|
||||||
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
||||||
|
else
|
||||||
|
GNOME_SUPPORT_CHECKS
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
||||||
|
|
||||||
GNOME_LIBGTOP_SYSDEPS
|
GNOME_LIBGTOP_SYSDEPS
|
||||||
GNOME_LIBGTOP_TYPES
|
GNOME_LIBGTOP_TYPES
|
||||||
|
|
||||||
AC_ARG_WITH(libgtop-guile,
|
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||||
[ --with-libgtop-guile Build the libgtop guile interface (default=no)],
|
sysdeps_name="$libgtop_sysdeps_name"
|
||||||
[build_guile="$withval"], [build_guile=yes])
|
AC_SUBST(sysdeps_dir)
|
||||||
|
AC_SUBST(sysdeps_name)
|
||||||
|
|
||||||
if test x$build_guile != xno ; then
|
AC_MSG_CHECKING(for sysdeps_init_file)
|
||||||
GNOME_CHECK_GUILE
|
sysdeps_init_file='sysdeps-init-'"$libgtop_sysdeps_name"'.c'
|
||||||
fi
|
AC_SUBST(sysdeps_init_file)
|
||||||
|
AC_MSG_RESULT($sysdeps_init_file)
|
||||||
|
|
||||||
|
LIBGTOP_XML_CHECK
|
||||||
|
|
||||||
AC_ARG_WITH(libgtop-inodedb,
|
AC_ARG_WITH(libgtop-inodedb,
|
||||||
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
||||||
[build_inodedb="$withval"], [build_inodedb=no])
|
[build_inodedb="$withval"], [build_inodedb=no])
|
||||||
|
|
||||||
LIBGTOP_EXTRA_LIBS=
|
LIBGTOP_EXTRA_LIBS=
|
||||||
|
|
||||||
if test x$build_inodedb = xyes ; then
|
if test x$build_inodedb = xyes ; then
|
||||||
AC_CHECK_LIB(gdbm, gdbm_open, LIBGTOP_EXTRA_LIBS='-lgdbm', build_inodedb=no)
|
AC_CHECK_LIB(gdbm, gdbm_open, LIBGTOP_EXTRA_LIBS='-lgdbm', build_inodedb=no)
|
||||||
fi
|
fi
|
||||||
@@ -124,42 +142,13 @@ fi
|
|||||||
|
|
||||||
AC_DEFINE(GLIBTOP_NAMES)
|
AC_DEFINE(GLIBTOP_NAMES)
|
||||||
|
|
||||||
if test x$ac_cv_guile_found = xyes ; then
|
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
|
||||||
AC_DEFINE(GLIBTOP_GUILE)
|
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
|
||||||
AC_DEFINE(GLIBTOP_GUILE_NAMES)
|
|
||||||
libgtop_guile_found=yes
|
|
||||||
guile_examples='third'
|
|
||||||
guile_static_examples='third_static'
|
|
||||||
guile_subdirs='guile'
|
|
||||||
else
|
|
||||||
libgtop_guile_found=no
|
|
||||||
guile_examples=
|
|
||||||
guile_static_examples=
|
|
||||||
guile_subdirs=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x$libgtop_smp = xyes ; then
|
|
||||||
smp_examples='smp'
|
|
||||||
smp_static_examples='smp_static'
|
|
||||||
else
|
|
||||||
smp_examples=
|
|
||||||
smp_static_examples=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$enable_static" != xno; then
|
|
||||||
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static $guile_static_examples $smp_static_examples"
|
|
||||||
else
|
|
||||||
static_targets=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(static_targets)
|
|
||||||
AC_SUBST(smp_examples)
|
|
||||||
AC_SUBST(guile_examples)
|
|
||||||
AC_SUBST(guile_subdirs)
|
|
||||||
|
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
|
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop),
|
||||||
|
[gmodule])
|
||||||
|
|
||||||
dnl You need to uncomment the following line if you want to use
|
dnl You need to uncomment the following line if you want to use
|
||||||
dnl libGTop without Gnome.
|
dnl libGTop without Gnome.
|
||||||
@@ -181,7 +170,45 @@ AC_CHECK_TYPE(ssize_t, int)
|
|||||||
AC_CHECK_HEADERS(memory.h)
|
AC_CHECK_HEADERS(memory.h)
|
||||||
AC_CHECK_HEADERS(string.h strings.h, break)
|
AC_CHECK_HEADERS(string.h strings.h, break)
|
||||||
AC_REPLACE_FUNCS(strerror)
|
AC_REPLACE_FUNCS(strerror)
|
||||||
AC_CHECK_LIB(kvm, kvm_open)
|
|
||||||
|
dnl dlopen() and dlsym()
|
||||||
|
DL_LIB=
|
||||||
|
AC_CHECK_FUNCS(dlopen,,[
|
||||||
|
AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", [
|
||||||
|
AC_CHECK_LIB(dld, shl_load, DL_LIB="-ldld", [
|
||||||
|
AC_CHECK_FUNCS(dlopen, DL_LIB="", DL_LIB="")
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
oLIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $DL_LIB"
|
||||||
|
AC_CHECK_FUNCS(dlerror,,)
|
||||||
|
LIBS="$oLIBS"
|
||||||
|
AC_SUBST(DL_LIB)
|
||||||
|
|
||||||
|
dnl 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 For DEC OSF1
|
dnl For DEC OSF1
|
||||||
AC_CHECK_LIB(mach, vm_statistics)
|
AC_CHECK_LIB(mach, vm_statistics)
|
||||||
@@ -220,7 +247,7 @@ AC_FUNC_STRFTIME
|
|||||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||||
|
|
||||||
dnl ## all 'es_??' are only needed for format numbers different of 'es'
|
dnl ## all 'es_??' are only needed for format numbers different of 'es'
|
||||||
ALL_LINGUAS="de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fr ko no ja"
|
ALL_LINGUAS="da de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr gl ja ko nl no pl pt_BR sv uk"
|
||||||
AM_GNOME_GETTEXT
|
AM_GNOME_GETTEXT
|
||||||
|
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
@@ -240,26 +267,29 @@ for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
|
|||||||
$1="$T"
|
$1="$T"
|
||||||
])dnl
|
])dnl
|
||||||
|
|
||||||
dnl Autodetect Xauth
|
|
||||||
dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
|
|
||||||
saved_CPPFLAGS="$CPPFLAGS"
|
|
||||||
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
|
||||||
test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h, ,with_xauth=no) }
|
|
||||||
test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) }
|
|
||||||
test -z "$with_xauth" && with_xauth=yes
|
|
||||||
if test "$with_xauth" = "yes"; then
|
|
||||||
AC_DEFINE(HAVE_XAUTH)
|
|
||||||
XE_SPACE(libs_xauth, $X_LIBS -lXau)
|
|
||||||
fi
|
|
||||||
CPPFLAGS="$saved_CPPFLAGS"
|
|
||||||
AC_SUBST(libs_xauth)
|
|
||||||
|
|
||||||
dnl For diskusage stuff
|
dnl For diskusage stuff
|
||||||
GNOME_FILEUTILS_CHECKS
|
GNOME_FILEUTILS_CHECKS
|
||||||
|
|
||||||
dnl Debugging
|
dnl Debugging
|
||||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]], libgtop_enable_debug=yes, libgtop_enable_debug=no)
|
||||||
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
||||||
|
AC_ARG_ENABLE(glib-malloc, [ --enable-glib-malloc use glib's malloc [default=auto]], libgtop_enable_glib_malloc=yes,)
|
||||||
|
|
||||||
|
if test "x$libgtop_enable_glib_malloc" != xyes ; then
|
||||||
|
if test "x$libgtop_enable_debug" = xyes ; then
|
||||||
|
libgtop_enable_glib_malloc=yes
|
||||||
|
else
|
||||||
|
libgtop_enable_glib_malloc=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$libgtop_enable_glib_malloc" = xyes ; then
|
||||||
|
AC_DEFINE(LIBGTOP_USE_GLIB_MALLOC)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$libgtop_enable_debug" = xyes ; then
|
||||||
|
AC_DEFINE(LIBGTOP_ENABLE_DEBUG)
|
||||||
|
fi
|
||||||
|
|
||||||
if test "x$gnome_found" = xyes ; then
|
if test "x$gnome_found" = xyes ; then
|
||||||
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
||||||
@@ -281,7 +311,7 @@ AC_SUBST(SUPPORTINCS)
|
|||||||
|
|
||||||
dnl These definitions are expanded in make.
|
dnl These definitions are expanded in make.
|
||||||
LIBGTOP_LIBS='-L$(libdir)'
|
LIBGTOP_LIBS='-L$(libdir)'
|
||||||
LIBGTOP_INCS='-I$(includedir)'
|
LIBGTOP_INCS='-I$(includedir) -I$(pkglibdir)/include'
|
||||||
|
|
||||||
if test x$libgtop_use_machine_h = xyes ; then
|
if test x$libgtop_use_machine_h = xyes ; then
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||||
@@ -301,73 +331,37 @@ fi
|
|||||||
|
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
|
LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
|
||||||
|
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
|
|
||||||
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
|
|
||||||
LIBGTOP_BINDIR='$(bindir)'
|
LIBGTOP_BINDIR='$(bindir)'
|
||||||
LIBGTOP_SERVER='$(bindir)/libgtop_server'
|
LIBGTOP_SERVER='$(bindir)/libgtop_server'
|
||||||
|
|
||||||
sysdeps_dir="$libgtop_sysdeps_dir"
|
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS $LIBGTOP_XML_LIB"
|
||||||
AC_SUBST(sysdeps_dir)
|
|
||||||
|
|
||||||
if test x$ac_cv_guile_found = xyes ; then
|
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop_sysdeps -lgtop_common -lgtop"
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile"
|
|
||||||
libgtop_guile_found=yes
|
|
||||||
else
|
|
||||||
libgtop_guile_found=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(libgtop_guile_found)
|
|
||||||
|
|
||||||
if test -z "$LIBGTOP_EXTRA_LIBS" ; then
|
|
||||||
LIBGTOP_EXTRA_LIBS="$libs_xauth"
|
|
||||||
else
|
|
||||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
|
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
|
|
||||||
|
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
|
||||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names"
|
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS"
|
|
||||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS"
|
|
||||||
|
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
|
|
||||||
LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE"
|
|
||||||
|
|
||||||
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
||||||
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES"
|
|
||||||
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES"
|
|
||||||
|
|
||||||
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
||||||
|
|
||||||
AC_SUBST(machine_incs)
|
AC_SUBST(machine_incs)
|
||||||
|
|
||||||
if test x$libgtop_guile_found = xyes ; then
|
LIBGTOP_BACKEND_DIR="\$(datadir)/libgtop/backends"
|
||||||
guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
|
|
||||||
else
|
|
||||||
guile_def=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
|
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_builddir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\" -DLIBGTOP_BACKEND_DIR=\"'"$LIBGTOP_BACKEND_DIR"'\"'
|
||||||
|
|
||||||
AC_SUBST(INCLUDES)
|
AC_SUBST(INCLUDES)
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
||||||
|
AC_SUBST(LIBGTOP_BACKEND_DIR)
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_LIBS)
|
AC_SUBST(LIBGTOP_LIBS)
|
||||||
AC_SUBST(LIBGTOP_INCS)
|
AC_SUBST(LIBGTOP_INCS)
|
||||||
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
||||||
AC_SUBST(LIBGTOP_NAMES_INCS)
|
AC_SUBST(LIBGTOP_NAMES_INCS)
|
||||||
AC_SUBST(LIBGTOP_GUILE_LIBS)
|
|
||||||
AC_SUBST(LIBGTOP_GUILE_INCS)
|
|
||||||
AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS)
|
|
||||||
AC_SUBST(LIBGTOP_GUILE_NAMES_INCS)
|
|
||||||
AC_SUBST(LIBGTOP_BINDIR)
|
AC_SUBST(LIBGTOP_BINDIR)
|
||||||
AC_SUBST(LIBGTOP_SERVER)
|
AC_SUBST(LIBGTOP_SERVER)
|
||||||
|
|
||||||
@@ -381,6 +375,139 @@ fi
|
|||||||
AC_SUBST(sysdeps_suid_lib)
|
AC_SUBST(sysdeps_suid_lib)
|
||||||
AC_SUBST(server_programs)
|
AC_SUBST(server_programs)
|
||||||
|
|
||||||
|
|
||||||
|
dnl The following one is copied from glib/configure.in
|
||||||
|
|
||||||
|
AC_OUTPUT_COMMANDS([
|
||||||
|
|
||||||
|
## Generate `glibconfig.h' in two cases
|
||||||
|
## 1. `config.status' is run either explicitly, or via configure.
|
||||||
|
## Esp. not when it is run in `Makefile' to generate makefiles and
|
||||||
|
## config.h
|
||||||
|
## 2. CONFIG_OTHER is set explicitly
|
||||||
|
##
|
||||||
|
## Case 1 is difficult. We know that `automake' sets one of
|
||||||
|
## CONFIG_FILES or CONFIG_HEADERS to empty. This heuristic works
|
||||||
|
## only when AM_CONFIG_HEADER is set, however.
|
||||||
|
|
||||||
|
if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
|
||||||
|
# Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
|
||||||
|
CONFIG_OTHER=${CONFIG_OTHER:-glibtop-config.h}
|
||||||
|
fi
|
||||||
|
case "$CONFIG_OTHER" in
|
||||||
|
*glibtop-config.h*)
|
||||||
|
echo creating glibtop-config.h
|
||||||
|
outfile=glibtop-config.h-tmp
|
||||||
|
cat > $outfile <<\_______EOF
|
||||||
|
/* glibtop-config.h
|
||||||
|
*
|
||||||
|
* This is a generated file. Please modify `configure.in'
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GLIBTOP_CONFIG_H
|
||||||
|
#define GLIBTOP_CONFIG_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
did_typedefs=no
|
||||||
|
|
||||||
|
if test x$glibtop_uint64_t != xyes ; then
|
||||||
|
did_typedefs=yes
|
||||||
|
cat >> $outfile <<\_______EOF
|
||||||
|
|
||||||
|
#ifndef u_int64_t
|
||||||
|
typedef unsigned long long int u_int64_t;
|
||||||
|
#endif
|
||||||
|
_______EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$glibtop_int64_t != xyes ; then
|
||||||
|
did_typedefs=yes
|
||||||
|
cat >> $outfile <<\_______EOF
|
||||||
|
|
||||||
|
#ifndef int64_t
|
||||||
|
typedef signed long long int int64_t;
|
||||||
|
#endif
|
||||||
|
_______EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$did_typedefs = xyes ; then
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: If your application checks for "u_int64_t" or "int64_t" in its own
|
||||||
|
* config.h, you must not include it after any of the LibGTop headers.
|
||||||
|
*/
|
||||||
|
_______EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/* Define if we need the LibGTop server. */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
if test x$glibtop_need_libgtop = xyes ; then
|
||||||
|
echo '#define NEED_LIBGTOP 1' >> $outfile
|
||||||
|
else
|
||||||
|
echo '#undef NEED_LIBGTOP' >> $outfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/* Define if LibGTop has support for multiple processors. */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
if test x$glibtop_have_smp = xyes ; then
|
||||||
|
echo '#define HAVE_LIBGTOP_SMP 1' >> $outfile
|
||||||
|
else
|
||||||
|
echo '#undef HAVE_LIBGTOP_SMP' >> $outfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>$outfile <<_______EOF
|
||||||
|
|
||||||
|
/* LibGTop major, minor and micro version. */
|
||||||
|
#define LIBGTOP_MAJOR_VERSION $libgtop_major_version
|
||||||
|
#define LIBGTOP_MINOR_VERSION $libgtop_minor_version
|
||||||
|
#define LIBGTOP_MICRO_VERSION $libgtop_micro_version
|
||||||
|
|
||||||
|
/* LibGTop version and numerical version code ("1.234.567" -> 1234567). */
|
||||||
|
#define LIBGTOP_VERSION "$libgtop_version"
|
||||||
|
#define LIBGTOP_VERSION_CODE $libgtop_version_code
|
||||||
|
|
||||||
|
/* LibGTop server version, increased each time the protocol changes. */
|
||||||
|
#define LIBGTOP_SERVER_VERSION $libgtop_server_version
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* GLIBCONFIG_H */
|
||||||
|
_______EOF
|
||||||
|
|
||||||
|
if cmp -s $outfile glibtop-config.h; then
|
||||||
|
echo glibtop-config.h is unchanged
|
||||||
|
rm -f $outfile
|
||||||
|
else
|
||||||
|
mv $outfile glibtop-config.h
|
||||||
|
fi ;;
|
||||||
|
esac
|
||||||
|
],[
|
||||||
|
glibtop_uint64_t=$ac_cv_type_u_int64_t
|
||||||
|
glibtop_int64_t=$ac_cv_type_int64_t
|
||||||
|
libgtop_major_version=$LIBGTOP_MAJOR_VERSION
|
||||||
|
libgtop_minor_version=$LIBGTOP_MINOR_VERSION
|
||||||
|
libgtop_micro_version=$LIBGTOP_MICRO_VERSION
|
||||||
|
libgtop_version_code=$LIBGTOP_VERSION_CODE
|
||||||
|
libgtop_server_version=$LIBGTOP_SERVER_VERSION
|
||||||
|
libgtop_version=$LIBGTOP_VERSION
|
||||||
|
glibtop_need_libgtop=$libgtop_need_server
|
||||||
|
glibtop_have_smp=$libgtop_smp
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
Makefile
|
Makefile
|
||||||
libgtop.spec
|
libgtop.spec
|
||||||
@@ -392,8 +519,6 @@ include/glibtop/Makefile
|
|||||||
sysdeps/Makefile
|
sysdeps/Makefile
|
||||||
sysdeps/common/Makefile
|
sysdeps/common/Makefile
|
||||||
sysdeps/names/Makefile
|
sysdeps/names/Makefile
|
||||||
sysdeps/guile/Makefile
|
|
||||||
sysdeps/guile/names/Makefile
|
|
||||||
sysdeps/stub/Makefile
|
sysdeps/stub/Makefile
|
||||||
sysdeps/stub_suid/Makefile
|
sysdeps/stub_suid/Makefile
|
||||||
sysdeps/sun4/Makefile
|
sysdeps/sun4/Makefile
|
||||||
@@ -401,10 +526,15 @@ sysdeps/osf1/Makefile
|
|||||||
sysdeps/linux/Makefile
|
sysdeps/linux/Makefile
|
||||||
sysdeps/kernel/Makefile
|
sysdeps/kernel/Makefile
|
||||||
sysdeps/freebsd/Makefile
|
sysdeps/freebsd/Makefile
|
||||||
|
sysdeps/solaris/Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/daemon/Makefile
|
|
||||||
src/inodedb/Makefile
|
src/inodedb/Makefile
|
||||||
|
scripts/Makefile
|
||||||
|
backends/Makefile
|
||||||
|
backends/server/Makefile
|
||||||
|
backends/sysdeps/Makefile
|
||||||
|
backends/common/Makefile
|
||||||
lib/Makefile
|
lib/Makefile
|
||||||
examples/Makefile
|
doc/Makefile
|
||||||
support/Makefile
|
support/Makefile
|
||||||
macros/Makefile])
|
macros/Makefile])
|
||||||
|
9
debian/.cvsignore
vendored
Normal file
9
debian/.cvsignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
control
|
||||||
|
rules
|
||||||
|
build
|
||||||
|
tmp
|
||||||
|
*.postinst
|
||||||
|
*.debhelper
|
||||||
|
*.files
|
||||||
|
files
|
||||||
|
substvars
|
10
debian/README.Debian
vendored
Normal file
10
debian/README.Debian
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
LibGTop CVS snapshots for Debian
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
This is a snapshot of LibGTop from the main CVS archive, built into a
|
||||||
|
Debian package. This package is not guaranteed to work, as it was
|
||||||
|
built automatically. You're on your own, mister or missus!
|
||||||
|
|
||||||
|
|
||||||
|
Martin Baulig <martin@home-of-linux.org>, Fri, 14 Jan 2000 20:20:13 +0100
|
||||||
|
|
120
debian/changelog
vendored
Normal file
120
debian/changelog
vendored
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
libgtop (1.1.4-1) unstable; urgency=low
|
||||||
|
* New upstream source
|
||||||
|
* Non-maintainer upload; this is an unstable developer's snapshot from
|
||||||
|
the GNOME CVS tree.
|
||||||
|
|
||||||
|
-- Martin Baulig <martin@home-of-linux.org> Fri, 14 Jan 2000 15:32:48 +0100
|
||||||
|
|
||||||
|
libgtop (1.0.6-1) unstable; urgency=low
|
||||||
|
* New upstream source
|
||||||
|
|
||||||
|
-- Ian Lynagh (wibble) <igloo@debian.org> Wed, 20 Oct 1999 16:16:27 +0100
|
||||||
|
|
||||||
|
libgtop (1.0.4.5pre1-1) frozen unstable; urgency=low
|
||||||
|
* New upstream source (1.0.5 pre release)
|
||||||
|
* Maintainer e-mail address changed to igloo@debian.org
|
||||||
|
|
||||||
|
-- Ian Lynagh (wibble) <igloo@debian.org> Thu, 30 Sep 1999 22:37:33 +0100
|
||||||
|
|
||||||
|
libgtop (1.0.4-1) frozen unstable; urgency=low
|
||||||
|
* New upstream source
|
||||||
|
* Removed nasty sed stuff from the rules in favour of make install prefix=...
|
||||||
|
* Added .la files to libgtop-dev
|
||||||
|
* Added info to the copyright file
|
||||||
|
* Wrote simple man page for libgtop-config.
|
||||||
|
* Recompiled with later debhelper so docs go to /usr/share/doc as per FHS
|
||||||
|
* changed infodir to /usr/share/info
|
||||||
|
|
||||||
|
-- Ian Lynagh (wibble) <igloo@debian.org> Mon, 20 Sep 1999 00:06:16 +0100
|
||||||
|
|
||||||
|
libgtop (1.0.1-2) frozen unstable; urgency=low
|
||||||
|
|
||||||
|
* Didn't actually use wildcards in libgtop-dev.files because tar complained
|
||||||
|
* Set section names properly
|
||||||
|
|
||||||
|
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 7 Mar 1999 00:53:50 +0000
|
||||||
|
|
||||||
|
libgtop (1.0.1-1) frozen unstable; urgency=low
|
||||||
|
|
||||||
|
* SONAME changed back to 1. Fun fun fun.
|
||||||
|
* Added RELNOTES-1.0 to debian/libgtop1.docs and debian/rules
|
||||||
|
* Changed libgtop1.README.Debian to at least make sense
|
||||||
|
* Used wildcards in libgtop-dev.files
|
||||||
|
|
||||||
|
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 7 Mar 1999 00:53:50 +0000
|
||||||
|
|
||||||
|
libgtop (1.0.1-0.1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Non-maintainer upload for GNOME 1.0
|
||||||
|
|
||||||
|
-- Jules Bean <jules@debian.org> Thu, 4 Mar 1999 22:34:12 +0000
|
||||||
|
|
||||||
|
libgtop (0.99.2-0.2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Oops, forgot some files.
|
||||||
|
|
||||||
|
-- Jim Pick <jim@jimpick.com> Sun, 24 Jan 1999 02:12:24 -0800
|
||||||
|
|
||||||
|
libgtop (0.99.2-0.1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Non-maintainer upload.
|
||||||
|
* New upstream source.
|
||||||
|
* SONAME is now 0 again. Hmmm.
|
||||||
|
|
||||||
|
-- Jim Pick <jim@jimpick.com> Sat, 23 Jan 1999 20:21:38 -0800
|
||||||
|
|
||||||
|
libgtop (0.26.2-4) frozen unstable; urgency=low
|
||||||
|
|
||||||
|
* Upstream changelog installed as changelog
|
||||||
|
* debian/shlibs.local removed in favour of the LD_LIBRARY_PATH line
|
||||||
|
|
||||||
|
-- Ian Lynagh <ian@lynagh.demon.co.uk> Thu, 26 Nov 1998 17:20:24 +0000
|
||||||
|
|
||||||
|
libgtop (0.26.2-3.1) frozen unstable; urgency=low
|
||||||
|
|
||||||
|
* Non-maintainer upload.
|
||||||
|
* Upload to frozen, corrects Bug #29110, Bug #29111, which were
|
||||||
|
already fixed.
|
||||||
|
* Noticed that guile option is no longer being used, so I removed
|
||||||
|
the dependency.
|
||||||
|
* Added changelog (to fix lintian error).
|
||||||
|
* Changed control file to use macro substitutions. This is a much
|
||||||
|
less error-prone way of building dependencies than doing them by
|
||||||
|
hand.
|
||||||
|
* Added -V option to dh_makeshlibs to put version number on shlibs
|
||||||
|
file.
|
||||||
|
* Added shlibs.local file with null entry for "libgtop 1" (and
|
||||||
|
others) so libgtop1 doesn't declare a relationship on itself.
|
||||||
|
|
||||||
|
-- Jim Pick <jim@jimpick.com> Wed, 25 Nov 1998 12:03:12 -0800
|
||||||
|
|
||||||
|
libgtop (0.26.2-3) frozen unstable; urgency=low
|
||||||
|
|
||||||
|
* libgtop0 changed to libgtop1
|
||||||
|
* Added an #ifndef strstr around the prototype of strstr in
|
||||||
|
sysdeps/common/mountlist.c as this is a macro under glibc 2.1.
|
||||||
|
|
||||||
|
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 8 Nov 1998 12:06:09 +0000
|
||||||
|
|
||||||
|
libgtop (0.26.2-2) frozen unstable; urgency=low
|
||||||
|
|
||||||
|
* Fixes minor bugs in debian/rules
|
||||||
|
|
||||||
|
-- Ian Lynagh <ian@lynagh.demon.co.uk> Fri, 16 Oct 1998 05:30:16 +0200
|
||||||
|
|
||||||
|
libgtop (0.26.2-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream version
|
||||||
|
* Non-maintainer release
|
||||||
|
|
||||||
|
-- Martin Schulze <joey@finlandia.infodrom.north.de> Fri, 16 Oct 1998 05:30:16 +0200
|
||||||
|
|
||||||
|
libgtop (0.26.0-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Initial Release.
|
||||||
|
|
||||||
|
-- Jim Pick <jim@jimpick.com> Thu, 24 Sep 1998 18:42:48 -0700
|
||||||
|
|
||||||
|
Local variables:
|
||||||
|
mode: debian-changelog
|
||||||
|
End:
|
33
debian/control.in
vendored
Normal file
33
debian/control.in
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
Source: libgtop@SUFFIX@
|
||||||
|
Maintainer: Martin Baulig <martin@home-of-linux.org>
|
||||||
|
Section: libs
|
||||||
|
Priority: optional
|
||||||
|
Standards-Version: 3.0.0
|
||||||
|
|
||||||
|
Package: libgtop2@SUFFIX@
|
||||||
|
Architecture: any
|
||||||
|
Section: libs
|
||||||
|
Depends: ${shlibs:Depends}
|
||||||
|
Description: Portable system access library (part of Gnome)
|
||||||
|
Gnome is the "GNU Network Object Model Environment"
|
||||||
|
.
|
||||||
|
It is a project to build a complete, user-friendly desktop based
|
||||||
|
entirely on free software.
|
||||||
|
.
|
||||||
|
This package contains the gtop libraries which read information about
|
||||||
|
processes and the running systems.
|
||||||
|
|
||||||
|
Package: libgtop-dev@SUFFIX@
|
||||||
|
Architecture: any
|
||||||
|
Section: devel
|
||||||
|
Depends: libgtop2@SUFFIX@ (= ${Source-Version})
|
||||||
|
Description: Dev libraries for the portable system access library (part of Gnome)
|
||||||
|
Gnome is the "GNU Network Object Model Environment"
|
||||||
|
.
|
||||||
|
It is a project to build a complete, user-friendly desktop based
|
||||||
|
entirely on free software.
|
||||||
|
.
|
||||||
|
This package contains the include files and static library for the
|
||||||
|
gtop libraries which read information about processes and the running
|
||||||
|
systems.
|
||||||
|
|
109
debian/debconfigure
vendored
Executable file
109
debian/debconfigure
vendored
Executable file
@@ -0,0 +1,109 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# debconfigure
|
||||||
|
#
|
||||||
|
# A script to generate a debian/rules file, with options.
|
||||||
|
#
|
||||||
|
# By Jim Pick <jim@jimpick.com>, GPL'd of course.
|
||||||
|
# Adjusted for LibGTop by Martin Baulig <martin@home-of-linux.org>
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ ! -r rules.in ]; then
|
||||||
|
echo "Please run the debconfigure script in the debian directory" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
debtype='official'
|
||||||
|
prefix='/usr'
|
||||||
|
gnomeprefix='/usr'
|
||||||
|
localstatedir='/var/lib'
|
||||||
|
pkgsuffix=''
|
||||||
|
|
||||||
|
for dc_option
|
||||||
|
do
|
||||||
|
case "$dc_option" in
|
||||||
|
-*=*) dc_optarg=`echo "$dc_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||||
|
*) dc_optarg= ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$dc_option" in
|
||||||
|
|
||||||
|
--clean)
|
||||||
|
rm -f control rules *~ core *files *menu *substvars *.postinst *.debhelper
|
||||||
|
exit ;;
|
||||||
|
|
||||||
|
--prefix=*)
|
||||||
|
prefix="$dc_optarg" ;;
|
||||||
|
|
||||||
|
--localstatedir=*)
|
||||||
|
prefix="$dc_optarg" ;;
|
||||||
|
|
||||||
|
--pkgsuffix=*)
|
||||||
|
pkgsuffix="$dc_optarg" ;;
|
||||||
|
|
||||||
|
--gnome-prefix=*)
|
||||||
|
gnomeprefix="$dc_optarg" ;;
|
||||||
|
|
||||||
|
--debtype=*)
|
||||||
|
debtype="$dc_optarg" ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
cat <<EOF 1>&2
|
||||||
|
Usage: debconfigure [options]
|
||||||
|
Options: [defaults in brackets after descriptions]
|
||||||
|
--help print this message
|
||||||
|
--clean remove generated files
|
||||||
|
--prefix=PREFIX install files under under PREFIX dir [/usr]
|
||||||
|
--gnome-prefix=PREFIX look for GNOME under PREFIX dir [/usr]
|
||||||
|
--localstatedir=DIR directory for things like game scores [/var/lib]
|
||||||
|
--pkgsuffix=SUFFIX append SUFFIX onto package names []
|
||||||
|
--debtype=DEBTYPE enable macros with the name of DEBTYPE [official]
|
||||||
|
EOF
|
||||||
|
exit ;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Strip leading slash
|
||||||
|
prefix=`expr $prefix : '/\(.*\)'`
|
||||||
|
gnomeprefix=`expr $gnomeprefix : '/\(.*\)'`
|
||||||
|
localstatedir=`expr $localstatedir : '/\(.*\)'`
|
||||||
|
|
||||||
|
for infile in `ls control.in rules.in`
|
||||||
|
do
|
||||||
|
tofile=`expr $infile : '\(.*\)\.in'`
|
||||||
|
cat $infile | \
|
||||||
|
sed "s,@SUFFIX@,$pkgsuffix,g" | \
|
||||||
|
sed "s,@PREFIX@,$prefix,g" | \
|
||||||
|
sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \
|
||||||
|
sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \
|
||||||
|
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
|
||||||
|
done
|
||||||
|
chmod +x rules
|
||||||
|
|
||||||
|
for filesfile in `ls *.files.in`
|
||||||
|
do
|
||||||
|
tofile=`expr $filesfile : '\(.*\)\.files\.in'`
|
||||||
|
tofile=`echo $tofile$pkgsuffix.files`
|
||||||
|
cat $filesfile | \
|
||||||
|
sed "s,@SUFFIX@,$pkgsuffix,g" | \
|
||||||
|
sed "s,@PREFIX@,$prefix,g" | \
|
||||||
|
sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \
|
||||||
|
sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \
|
||||||
|
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
|
||||||
|
done
|
||||||
|
|
||||||
|
for postinst in libgtop2$pkgsuffix
|
||||||
|
do
|
||||||
|
|
||||||
|
cat > $postinst.postinst <<EOF
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
ldconfig
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
EOF
|
||||||
|
|
||||||
|
done
|
||||||
|
|
34
debian/libgtop-config.1
vendored
Normal file
34
debian/libgtop-config.1
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
.TH GTOP l "15 September 1999"
|
||||||
|
.SH NAME
|
||||||
|
\fBlibgtop-config\fP \- libgtop libraries and component information retrieval.
|
||||||
|
.SH SYNTAX
|
||||||
|
.B libgtop-config
|
||||||
|
.RI [ --version ]
|
||||||
|
.RI [ --config ]
|
||||||
|
.RI [ --features-def-file ]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.B libgtop-config
|
||||||
|
is used to retrieve information from installed libraries in the system.
|
||||||
|
|
||||||
|
This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page.
|
||||||
|
.LP
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
.B \-\-version
|
||||||
|
.PD
|
||||||
|
Prints the version of libgtop that you're using.
|
||||||
|
.TP
|
||||||
|
.B \-\-config
|
||||||
|
.PD
|
||||||
|
Prints the location of libgtopConf.sh.
|
||||||
|
.TP
|
||||||
|
.B \-\-version
|
||||||
|
.PD
|
||||||
|
Prints the location of libgtop-features.def.
|
||||||
|
.SH BUGS
|
||||||
|
None known
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
Martin Baulig (martin@home-of-linux.org)
|
||||||
|
.TP
|
||||||
|
Josh Sled (jsled@scam.XCF.Berkeley.EDU)
|
25
debian/libgtop-dev.files.in
vendored
Normal file
25
debian/libgtop-dev.files.in
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
@PREFIX@/lib/libgtop.a
|
||||||
|
@PREFIX@/lib/libgtop_common.a
|
||||||
|
@PREFIX@/lib/libgtop_names.a
|
||||||
|
@PREFIX@/lib/libgtop_suid_common.a
|
||||||
|
@PREFIX@/lib/libgtop_sysdeps.a
|
||||||
|
@PREFIX@/lib/libgtop.la
|
||||||
|
@PREFIX@/lib/libgtop_common.la
|
||||||
|
@PREFIX@/lib/libgtop_names.la
|
||||||
|
@PREFIX@/lib/libgtop_suid_common.la
|
||||||
|
@PREFIX@/lib/libgtop_sysdeps.la
|
||||||
|
@PREFIX@/lib/libgtopConf.sh
|
||||||
|
@PREFIX@/lib/libgtop.so
|
||||||
|
@PREFIX@/lib/libgtop_common.so
|
||||||
|
@PREFIX@/lib/libgtop_names.so
|
||||||
|
@PREFIX@/lib/libgtop_suid_common.so
|
||||||
|
@PREFIX@/lib/libgtop_sysdeps.so
|
||||||
|
@PREFIX@/lib/libgtop-features.def
|
||||||
|
@PREFIX@/lib/libgtop-structures.def
|
||||||
|
@PREFIX@/lib/libgtop/include/*.h
|
||||||
|
@PREFIX@/include/glibtop/*.h
|
||||||
|
@PREFIX@/include/glibtop.h
|
||||||
|
@PREFIX@/include/glibtop_server.h
|
||||||
|
@PREFIX@/include/glibtop_machine.h
|
||||||
|
@PREFIX@/info/libgtop.info
|
||||||
|
@PREFIX@/bin/libgtop-config
|
5
debian/libgtop2.README.Debian
vendored
Normal file
5
debian/libgtop2.README.Debian
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
The Debian package of libgtop, a GNOME library.
|
||||||
|
|
||||||
|
--
|
||||||
|
Ian Lynagh <ian@lynagh.demon.co.uk>
|
12
debian/libgtop2.copyright
vendored
Normal file
12
debian/libgtop2.copyright
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
libgtop is released under the GPL.
|
||||||
|
On Debian GNU/Linux systems, the complete text of the GNU General
|
||||||
|
Public License can be found in /usr/share/common-licenses/GPL
|
||||||
|
|
||||||
|
Original authors: Martin Baulig <martin@home-of-linux.org>
|
||||||
|
Drazen Kacar <dave@srce.hr>
|
||||||
|
|
||||||
|
Originally Debianised by Jim Pick <jim@jimpick.com>
|
||||||
|
Then re-Debianised in October 1998 by Martin Schulze
|
||||||
|
<joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh
|
||||||
|
<ian@lynagh.demon.co.uk> in November 1998.
|
7
debian/libgtop2.docs
vendored
Normal file
7
debian/libgtop2.docs
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
RELNOTES-0.25
|
||||||
|
RELNOTES-1.0
|
||||||
|
RELNOTES-1.1.x
|
||||||
|
NEWS
|
||||||
|
AUTHORS
|
||||||
|
TODO
|
||||||
|
debian/changelog
|
2
debian/libgtop2.files.in
vendored
Normal file
2
debian/libgtop2.files.in
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
@PREFIX@/lib/libgtop*-1.1.so.*.*
|
||||||
|
@PREFIX@/lib/libgtop*-1.1.so.*
|
115
debian/rules.in
vendored
Executable file
115
debian/rules.in
vendored
Executable file
@@ -0,0 +1,115 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
|
||||||
|
# This version is for a hypothetical package that builds an
|
||||||
|
# architecture-dependant package, as well as an architecture-independent
|
||||||
|
# package.
|
||||||
|
|
||||||
|
# Uncomment this to turn on verbose mode.
|
||||||
|
#export DH_VERBOSE=1
|
||||||
|
|
||||||
|
i=$(shell pwd)/debian/tmp
|
||||||
|
b=$(shell pwd)/debian/build
|
||||||
|
|
||||||
|
configure: configure.in
|
||||||
|
@echo "--- Making configure script and configuring"
|
||||||
|
chmod +x autogen.sh
|
||||||
|
./autogen.sh --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
|
||||||
|
--localstatedir=/@LOCALSTATEDIR@
|
||||||
|
|
||||||
|
Makefile: configure
|
||||||
|
@echo "--- Configuring"
|
||||||
|
./configure --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
|
||||||
|
--localstatedir=/@LOCALSTATEDIR@
|
||||||
|
|
||||||
|
build: configure Makefile build-debstamp
|
||||||
|
build-debstamp:
|
||||||
|
@echo "--- Compiling"
|
||||||
|
dh_testdir
|
||||||
|
$(MAKE) all
|
||||||
|
touch build-debstamp
|
||||||
|
|
||||||
|
clean: Makefile
|
||||||
|
@echo "--- Cleaning"
|
||||||
|
dh_testdir
|
||||||
|
dh_clean
|
||||||
|
-rm -rf static shared
|
||||||
|
-rm -f build-debstamp install-debstamp
|
||||||
|
-make -k distclean
|
||||||
|
-rm -f `find . -name "*~"`
|
||||||
|
-rm -f `find . -name "*\.la"`
|
||||||
|
-rm -rf `find . -name "\.deps"`
|
||||||
|
-rm -rf `find . -name "\.libs"`
|
||||||
|
-rm -rf `find . -name "*\.rej"`
|
||||||
|
-rm -rf debian/tmp `find debian/* -type d ! -name CVS` debian/files* core
|
||||||
|
-rm -f debian/*substvars
|
||||||
|
|
||||||
|
install: build install-debstamp
|
||||||
|
install-debstamp:
|
||||||
|
@echo "--- Installing"
|
||||||
|
dh_testdir
|
||||||
|
dh_testroot
|
||||||
|
rm -rf $(b)
|
||||||
|
$(MAKE) install prefix=$(i)/@PREFIX@ exec_prefix=$(i)/@PREFIX@ \
|
||||||
|
localstatedir=$(i)/@LOCALSTATEDIR@
|
||||||
|
touch install-debstamp
|
||||||
|
|
||||||
|
install-save: install
|
||||||
|
rm -rf $(i).saved
|
||||||
|
cp -a $(i) $(i).saved
|
||||||
|
|
||||||
|
install-saved:
|
||||||
|
rm -rf $(i)
|
||||||
|
cp -a $(i).saved $(i)
|
||||||
|
rm -rf $(b)
|
||||||
|
touch install-debstamp
|
||||||
|
|
||||||
|
binary-indep: build install
|
||||||
|
|
||||||
|
binary-arch: build install \
|
||||||
|
libgtop2@SUFFIX@ \
|
||||||
|
libgtop-dev@SUFFIX@
|
||||||
|
|
||||||
|
#
|
||||||
|
# libgtop2@SUFFIX@
|
||||||
|
#
|
||||||
|
|
||||||
|
libgtop2@SUFFIX@: install
|
||||||
|
@echo "--- Building: $@"
|
||||||
|
dh_installdocs -p$@ -P$(b)/$@ README NEWS AUTHORS
|
||||||
|
dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog
|
||||||
|
dh_movefiles -p$@ -P$(b)/$@
|
||||||
|
dh_strip -p$@ -P$(b)/$@
|
||||||
|
dh_compress -p$@ -P$(b)/$@
|
||||||
|
dh_fixperms -p$@ -P$(b)/$@
|
||||||
|
dh_installdeb -p$@ -P$(b)/$@
|
||||||
|
dh_shlibdeps -p$@ -P$(b)/$@
|
||||||
|
dh_gencontrol -p$@ -P$(b)/$@
|
||||||
|
dh_makeshlibs -p$@ -P$(b)/$@ -V
|
||||||
|
dh_md5sums -p$@ -P$(b)/$@
|
||||||
|
dh_builddeb -p$@ -P$(b)/$@
|
||||||
|
|
||||||
|
#
|
||||||
|
# libgtop-dev
|
||||||
|
#
|
||||||
|
|
||||||
|
libgtop-dev@SUFFIX@: install
|
||||||
|
@echo "--- Building: $@"
|
||||||
|
mkdir -p $(b)/$@/usr/doc
|
||||||
|
cd $(b)/$@/usr/doc; ln -s libgtop2@SUFFIX@ $@
|
||||||
|
dh_movefiles -p$@ -P$(b)/$@
|
||||||
|
dh_strip -p$@ -P$(b)/$@
|
||||||
|
dh_compress -p$@ -P$(b)/$@
|
||||||
|
dh_fixperms -p$@ -P$(b)/$@
|
||||||
|
dh_installdeb -p$@ -P$(b)/$@
|
||||||
|
dh_shlibdeps -p$@ -P$(b)/$@
|
||||||
|
dh_gencontrol -p$@ -P$(b)/$@
|
||||||
|
dh_makeshlibs -p$@ -P$(b)/$@ -V
|
||||||
|
dh_undocumented -p$@ -P$(b)/$@ \
|
||||||
|
libgtop-config.1
|
||||||
|
dh_md5sums -p$@ -P$(b)/$@
|
||||||
|
dh_builddeb -p$@ -P$(b)/$@
|
||||||
|
|
||||||
|
binary: binary-indep binary-arch
|
||||||
|
.PHONY: binary clean binary-indep binary-arch build install install-save install-saved
|
||||||
|
|
||||||
|
|
10
doc/.cvsignore
Normal file
10
doc/.cvsignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
texinfo.tex
|
||||||
|
*.info
|
||||||
|
Makefile.in
|
||||||
|
Makefile
|
||||||
|
*.log *.toc *.dvi *.aux *.cp *.fn *.vr *.tp *.ky *.pg
|
||||||
|
*.ps
|
||||||
|
auto-macros.texi
|
||||||
|
version.texi
|
||||||
|
stamp-vti
|
||||||
|
*.html *.pdf
|
53
doc/ChangeLog
Normal file
53
doc/ChangeLog
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* about.texi: Added a note about LibGTop and GNOME.
|
||||||
|
|
||||||
|
* reference.texi (glibtop_proc_state): Fix description of the `state'
|
||||||
|
field for LibGTop 1.0.x.
|
||||||
|
|
||||||
|
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* Makefile.am: Reverted Timur's commit.
|
||||||
|
(MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. This still
|
||||||
|
creates libgtop.info in srcdir, but that's an automake problem.
|
||||||
|
|
||||||
|
Tue Jun 15 15:59:50 1999 Timur Bakeyev <mc@bat.ru>
|
||||||
|
|
||||||
|
* Makefile.am: Force `auto-macros.texi' to be created in $(srcdir),
|
||||||
|
as, otherwise, makeinfo is unable to find it, if srcdir != builddir.
|
||||||
|
That's a buggy solution, as spoils srcdir, but, as libgtop.info also
|
||||||
|
created in srcdir - this is acceptable. Both SHOULD be fixed!
|
||||||
|
|
||||||
|
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
|
||||||
|
|
||||||
|
* internals.texi: New file documenting LibGTop internals.
|
||||||
|
* reference.texi: Started to document all library functions and
|
||||||
|
finished the sysdeps and common references.
|
||||||
|
|
||||||
|
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* main.texi: This is now the main file which will @include all
|
||||||
|
chapter files so we can use `texinfo-multiple-files-update'.
|
||||||
|
|
||||||
|
* reference.texi: Added all missing sections with a "not yet written"
|
||||||
|
notice.
|
||||||
|
|
||||||
|
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* white-paper.texi: Initial version of the LibGTop White Paper.
|
||||||
|
|
||||||
|
* Makefile.am: Create `auto-macros.texi' from `auto-macros.texi.in'
|
||||||
|
which will contain some `@set' commands for the LibGTop version etc.
|
||||||
|
|
||||||
|
* auto-macros.texi.in: New file. This is a template for
|
||||||
|
`auto-macros.texi' which will be automatically generated.
|
||||||
|
|
||||||
|
1999-05-09 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* about.texi: Split the `libgtop.texi' into one file pro chapter,
|
||||||
|
this is the "About LibGTop".
|
||||||
|
|
||||||
|
* reference.texi: The "LibGTop Reference Manual".
|
||||||
|
|
||||||
|
* libgtop.texi: Initial version of the new LibGTop Manual.
|
||||||
|
|
45
doc/Makefile.am
Normal file
45
doc/Makefile.am
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
info_TEXINFOS = libgtop.texi
|
||||||
|
|
||||||
|
libgtop_TEXINFOS = libgtop.texi about.texi reference.texi \
|
||||||
|
auto-macros.texi version.texi main.texi \
|
||||||
|
white-paper.texi internals.texi
|
||||||
|
|
||||||
|
MAKEINFO += -I @libgtop_top_builddir@/doc
|
||||||
|
|
||||||
|
EXTRA_DIST = auto-macros.texi.in
|
||||||
|
|
||||||
|
auto-macros.texi: auto-macros.texi.in Makefile
|
||||||
|
## Use sed and then mv to avoid problems if the user interrupts.
|
||||||
|
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
||||||
|
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)#g' \
|
||||||
|
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
||||||
|
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_GUILE_LIBS\%#$(LIBGTOP_GUILE_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_GUILE_INCS\%#$(LIBGTOP_GUILE_INCS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_GUILE_NAMES_LIBS\%#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_GUILE_NAMES_INCS\%#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_BINDIR\%#$(LIBGTOP_BINDIR)#g' \
|
||||||
|
-e 's#\%LIBGTOP_SERVER\%#$(LIBGTOP_SERVER)#g' \
|
||||||
|
-e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \
|
||||||
|
-e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \
|
||||||
|
-e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \
|
||||||
|
-e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \
|
||||||
|
-e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \
|
||||||
|
-e 's#\%libgtop_guile_found\%#$(libgtop_guile_found)#g' \
|
||||||
|
-e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \
|
||||||
|
< $(srcdir)/auto-macros.texi.in > auto-macros.tmp
|
||||||
|
echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp
|
||||||
|
if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \
|
||||||
|
echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \
|
||||||
|
else \
|
||||||
|
echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \
|
||||||
|
fi
|
||||||
|
mv auto-macros.tmp auto-macros.texi
|
121
doc/about.texi
Normal file
121
doc/about.texi
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
@node About, White Paper, Top, Top
|
||||||
|
@chapter About LibGTop
|
||||||
|
|
||||||
|
LibGTop is a library to get system specific data such as CPU and Memory Usage
|
||||||
|
and information about running Processes.
|
||||||
|
|
||||||
|
On Systems like Solaris or Digital Unix where you need special privileges to
|
||||||
|
get those data, it uses a setuid/setgid server to do so.
|
||||||
|
|
||||||
|
Even if LibGTop is a part of the GNOME desktop environment (@uref{http://www.gnome.org}),
|
||||||
|
the main interface of LibGTop is totally independent from any particular desktop environment,
|
||||||
|
so you can also use it as a standalone library in any piece of GPLed software.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Availability:: Where to get LibGTop
|
||||||
|
* Supported Platforms:: Supported Platforms
|
||||||
|
* Mailing List:: Helping with LibGTop development
|
||||||
|
* Thanks:: People who contributed to LibGTop
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Availability, Supported Platforms, About, About
|
||||||
|
@section Availability
|
||||||
|
|
||||||
|
The master source of LibGTop is the GNOME CVS tree
|
||||||
|
(see @uref{http://www.gnome.org} for details), but you can also get the
|
||||||
|
latest release tarballs from
|
||||||
|
|
||||||
|
@display
|
||||||
|
@uref{ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/}
|
||||||
|
@end display
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
or any of its mirror sites.
|
||||||
|
|
||||||
|
The latest stable version of LibGTop is 1.0.1 which is also the one that comes
|
||||||
|
together with GNOME 1.0. In CVS, there is a @code{LIBGTOP_STABLE_1_0} branch
|
||||||
|
which is rooted at the @code{LIBGTOP_1_0_1} tag while actual development occurs
|
||||||
|
in the @code{HEAD} which currently has version 1.1.0.
|
||||||
|
|
||||||
|
@node Supported Platforms, Mailing List, Availability, About
|
||||||
|
@section Supported Platforms
|
||||||
|
|
||||||
|
The stable branch currently supports the following platforms:
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item All versions of Linux
|
||||||
|
|
||||||
|
LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but
|
||||||
|
it should also work without problems on SparcLinux.
|
||||||
|
|
||||||
|
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
|
||||||
|
|
||||||
|
@item FreeBSD, NetBSD and OpenBSD
|
||||||
|
|
||||||
|
LibGTop was tested under FreeBSD 2.2.6 and 3.0, NetBSD 1.3.2 and OpenBSD 2.4.
|
||||||
|
Support for NetBSD 1.4 was added in LibGTop 1.0.2.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
The platforms listed above are known to be stable and working. However, if
|
||||||
|
you're using the latest development version, you can use it on the following
|
||||||
|
platforms as well:
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item BSD/OS
|
||||||
|
|
||||||
|
There is a port for BSD/OS (aka BSDI) 2.x and 3.x from Timur Bakeyev which
|
||||||
|
should also work with 4.x. This isn't tested very well, but it should be
|
||||||
|
working.
|
||||||
|
|
||||||
|
@item Digital Unix
|
||||||
|
|
||||||
|
There is some basic support for Digital Unix (formerly DEC OSF/1) V3.2C, but
|
||||||
|
this may still be a bit unstable. I'm currently working on this port as time
|
||||||
|
permits so it should be fully supported soon.
|
||||||
|
|
||||||
|
@item Solaris
|
||||||
|
|
||||||
|
The Solaris port currently works on Solaris 7 and maybe also on other releases.
|
||||||
|
Thanks a lot to Drazen Kacar and everyone who helped working on this port. They
|
||||||
|
have really done excellent work here and I'm pretty sure that this port will be
|
||||||
|
fully functional on most Solaris versions in near future.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@node Mailing List, Thanks, Supported Platforms, About
|
||||||
|
@section Mailing List
|
||||||
|
|
||||||
|
There is a @email{libgtop-devel-list@@egroups.com} mailing list for people who
|
||||||
|
want to help with the development of LibGTop.
|
||||||
|
|
||||||
|
It is meant as a low-traffic, but high content-list where we can discuss
|
||||||
|
technical details such as adding new sysdeps ports etc.
|
||||||
|
|
||||||
|
Especially, I'd like to see people with a deeper knowledge of operating systems
|
||||||
|
internals joining my list so we can discuss technical details of the sysdeps
|
||||||
|
code.
|
||||||
|
|
||||||
|
It is *not* for users that want to know how to compile LibGTop etc.
|
||||||
|
|
||||||
|
You can subscribe to this mailing list and view the mailing list archives
|
||||||
|
on the LibGTop Page at @uref{http://www.home-of-linux.org/gnome/libgtop}.
|
||||||
|
|
||||||
|
@node Thanks, , Mailing List, About
|
||||||
|
@section Thanks
|
||||||
|
|
||||||
|
At the place I'd like to thank the following people who contributed to
|
||||||
|
LibGTop (listed in chronological order):
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item Sebastian Wilhelmi who had the initial idea of LibGTop and helped
|
||||||
|
me a lot in the early beginning.
|
||||||
|
@item Josh Sled for the initial FreeBSD port.
|
||||||
|
@item Jeremy Lea for his BSD patches.
|
||||||
|
@item Timur Bakeyev for the BSDI port.
|
||||||
|
@item Drazen Kacar and the other people on the LibGTop development mailing
|
||||||
|
list for the Solaris port.
|
||||||
|
@item All people sending me patches, having good ideas, ...
|
||||||
|
@item Everyone I have forgotten in this list ...
|
||||||
|
@end itemize
|
||||||
|
|
12
doc/auto-macros.texi.in
Normal file
12
doc/auto-macros.texi.in
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@c LibGTop major, minor and micro version.
|
||||||
|
@set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION%
|
||||||
|
@set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION%
|
||||||
|
@set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION%
|
||||||
|
|
||||||
|
@c LibGTop version and numerical version code ("1.234.567" -> 1234567).
|
||||||
|
@set LIBGTOP_VERSION "%LIBGTOP_VERSION%"
|
||||||
|
@set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE%
|
||||||
|
|
||||||
|
@c LibGTop server version, increased each time the protocol changes.
|
||||||
|
@set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION%
|
||||||
|
|
107
doc/internals.texi
Normal file
107
doc/internals.texi
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
@node LibGTop Internals, , Reference Manual, Top
|
||||||
|
@chapter LibGTop Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* General Internals:: General Internals
|
||||||
|
* Sysdeps Internals:: Sysdeps Internals
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals
|
||||||
|
@section General Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop:: The server structure
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop, , General Internals, General Internals
|
||||||
|
@subsection The server structure - @code{glibtop}
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
typedef struct _glibtop glibtop;
|
||||||
|
|
||||||
|
struct _glibtop
|
||||||
|
@{
|
||||||
|
unsigned flags;
|
||||||
|
unsigned method;
|
||||||
|
unsigned error_method;
|
||||||
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
glibtop_machine machine;
|
||||||
|
#endif
|
||||||
|
int input [2];
|
||||||
|
int output [2];
|
||||||
|
int socket;
|
||||||
|
int ncpu;
|
||||||
|
unsigned long os_version_code;
|
||||||
|
const char *name;
|
||||||
|
const char *server_command;
|
||||||
|
const char *server_host;
|
||||||
|
const char *server_user;
|
||||||
|
const char *server_rsh;
|
||||||
|
unsigned long features;
|
||||||
|
unsigned long server_port;
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
glibtop_sysdeps required;
|
||||||
|
glibtop_sysdeps wanted;
|
||||||
|
pid_t pid;
|
||||||
|
@};
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@node Sysdeps Internals, , General Internals, LibGTop Internals
|
||||||
|
@section Sysdeps Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop_open_s:: Non-privileged initializations
|
||||||
|
* glibtop_close_s:: Non-privileged cleanups
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals
|
||||||
|
@subsection glibtop_open_s
|
||||||
|
|
||||||
|
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
||||||
|
initialize a server. It should do all initializations that do not need any
|
||||||
|
privileges.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_open_s (glibtop *server, const char *program_name,
|
||||||
|
const unsigned long features,
|
||||||
|
const unsigned flags);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item server
|
||||||
|
Pointer to the @code{glibtop} server structure.
|
||||||
|
@item program_name
|
||||||
|
Name of the calling program; the implementation will usually
|
||||||
|
set @samp{server->name} to this so it'll be used as the program
|
||||||
|
name in error messages.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Typically, this function will set @code{server->name}, @code{server->ncpu} and
|
||||||
|
@code{server->os_version_code} and initialize any of the @code{server->machine}
|
||||||
|
fields which do not need any privileges.
|
||||||
|
|
||||||
|
It is normally implemented in @file{open.c} in the sysdeps directory.
|
||||||
|
|
||||||
|
@node glibtop_close_s, , glibtop_open_s, Sysdeps Internals
|
||||||
|
@subsection glibtop_close_s
|
||||||
|
|
||||||
|
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
||||||
|
clean-up a server when it's no longer used.
|
||||||
|
|
||||||
|
It must free all resources that were allocated in @code{glibtop_open_s}.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_close_s (glibtop *server);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
It is normally implemented in @file{close.c} in the sysdeps directory, but may
|
||||||
|
be empty.
|
||||||
|
|
89
doc/libgtop.texi
Normal file
89
doc/libgtop.texi
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
\input texinfo @c -*-texinfo-*-
|
||||||
|
@c %**start of header
|
||||||
|
@setfilename libgtop.info
|
||||||
|
@settitle LibGTop Reference Manual
|
||||||
|
@setchapternewpage odd
|
||||||
|
@c %**end of header
|
||||||
|
|
||||||
|
@include auto-macros.texi
|
||||||
|
@include version.texi
|
||||||
|
|
||||||
|
@ifinfo
|
||||||
|
This is the LibGTop Reference Manual version @value{VERSION}
|
||||||
|
(last modified @value{UPDATED}).
|
||||||
|
|
||||||
|
Copyright 1999 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Permission is granted to make and distribute verbatim
|
||||||
|
copies of this manual provided the copyright notice and
|
||||||
|
this permission notice are preserved on all copies.
|
||||||
|
|
||||||
|
@ignore
|
||||||
|
Permission is granted to process this file through TeX
|
||||||
|
and print the results, provided the printed document
|
||||||
|
carries a copying permission notice identical to this
|
||||||
|
one except for the removal of this paragraph (this
|
||||||
|
paragraph not being relevant to the printed manual).
|
||||||
|
|
||||||
|
@end ignore
|
||||||
|
Permission is granted to copy and distribute modified
|
||||||
|
versions of this manual under the conditions for
|
||||||
|
verbatim copying, provided also that the sections
|
||||||
|
entitled ``Copying'' and ``GNU General Public License''
|
||||||
|
are included exactly as in the original, and provided
|
||||||
|
that the entire resulting derived work is distributed
|
||||||
|
under the terms of a permission notice identical to this
|
||||||
|
one.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute
|
||||||
|
translations of this manual into another language,
|
||||||
|
under the above conditions for modified versions,
|
||||||
|
except that this permission notice may be stated in a
|
||||||
|
translation approved by the Free Software Foundation.
|
||||||
|
|
||||||
|
@format
|
||||||
|
@dircategory Libraries:
|
||||||
|
@direntry
|
||||||
|
* libgtop: (libgtop). Library to get system specific data
|
||||||
|
such as cpu and memory usage, active
|
||||||
|
processes
|
||||||
|
@end direntry
|
||||||
|
@end format
|
||||||
|
|
||||||
|
@end ifinfo
|
||||||
|
|
||||||
|
@titlepage
|
||||||
|
@title LibGTop Reference Manual
|
||||||
|
@subtitle Version @value{VERSION} - @value{UPDATED}
|
||||||
|
@author Martin Baulig
|
||||||
|
|
||||||
|
@page
|
||||||
|
@vskip 0pt plus 1filll
|
||||||
|
Copyright @copyright{} 1999 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Permission is granted to make and distribute verbatim
|
||||||
|
copies of this manual provided the copyright notice and
|
||||||
|
this permission notice are preserved on all copies.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute modified
|
||||||
|
versions of this manual under the conditions for
|
||||||
|
verbatim copying, provided also that the sections
|
||||||
|
entitled ``Copying'' and ``GNU General Public License''
|
||||||
|
are included exactly as in the original, and provided
|
||||||
|
that the entire resulting derived work is distributed
|
||||||
|
under the terms of a permission notice identical to this
|
||||||
|
one.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute
|
||||||
|
translations of this manual into another language,
|
||||||
|
under the above conditions for modified versions,
|
||||||
|
except that this permission notice may be stated in a
|
||||||
|
translation approved by the Free Software Foundation.
|
||||||
|
@end titlepage
|
||||||
|
|
||||||
|
@contents
|
||||||
|
|
||||||
|
@include main.texi
|
||||||
|
|
||||||
|
@bye
|
||||||
|
|
85
doc/main.texi
Normal file
85
doc/main.texi
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
@node Top, About, (dir), (dir)
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* About:: About LibGTop
|
||||||
|
* White Paper:: LibGTop White Paper
|
||||||
|
* Reference Manual:: LibGTop Reference Manual
|
||||||
|
* LibGTop Internals:: LibGTop Internals
|
||||||
|
|
||||||
|
--- The Detailed Node Listing ---
|
||||||
|
|
||||||
|
About LibGTop
|
||||||
|
|
||||||
|
* Availability:: Where to get LibGTop
|
||||||
|
* Supported Platforms:: Supported Platforms
|
||||||
|
* Mailing List:: Helping with LibGTop development
|
||||||
|
* Thanks:: People who contributed to LibGTop
|
||||||
|
|
||||||
|
LibGTop White Paper
|
||||||
|
|
||||||
|
* Introduction:: Introduction
|
||||||
|
* Overview:: Overview
|
||||||
|
* Servers and Daemons:: Servers and Daemons
|
||||||
|
|
||||||
|
Overview
|
||||||
|
|
||||||
|
* Interface Design:: Things that need to be considered
|
||||||
|
* Server Implementation:: The LibGTop "server"
|
||||||
|
|
||||||
|
LibGTop Reference Manual
|
||||||
|
|
||||||
|
* System Dependent:: System Dependent Functions.
|
||||||
|
* Common Functions:: Common Functions.
|
||||||
|
* Library Functions:: Library Functions.
|
||||||
|
|
||||||
|
System Dependent Functions
|
||||||
|
|
||||||
|
* glibtop_cpu:: CPU Usage.
|
||||||
|
* glibtop_mem:: Memory Usage.
|
||||||
|
* glibtop_swap:: Swap Usage.
|
||||||
|
* glibtop_uptime:: System Uptime.
|
||||||
|
* glibtop_loadavg:: Load Average.
|
||||||
|
* glibtop_proclist:: Process List.
|
||||||
|
* glibtop_proc_state:: Process State.
|
||||||
|
* glibtop_proc_uid:: Process UID and TTY Information.
|
||||||
|
* glibtop_proc_mem:: Process Memory Information.
|
||||||
|
* glibtop_proc_time:: Process Time Information.
|
||||||
|
* glibtop_proc_signal:: Process Signal Information.
|
||||||
|
* glibtop_proc_kernel:: Process Kernel Data Information.
|
||||||
|
* glibtop_proc_segment:: Process Segment Information.
|
||||||
|
* glibtop_proc_args:: Process Arguments.
|
||||||
|
* glibtop_proc_map:: Process Memory Maps.
|
||||||
|
* glibtop_netload:: Network Load.
|
||||||
|
* glibtop_ppp:: PPP Usage.
|
||||||
|
|
||||||
|
Common Functions
|
||||||
|
|
||||||
|
* glibtop_mountlist:: Mount List.
|
||||||
|
* glibtop_fsusage:: File System Usage.
|
||||||
|
|
||||||
|
Library Functions
|
||||||
|
|
||||||
|
* glibtop_init:: Server Initialization.
|
||||||
|
* glibtop_sysdeps:: Server Sysdeps.
|
||||||
|
* Library Parameters:: Library Parameters.
|
||||||
|
|
||||||
|
LibGTop Internals
|
||||||
|
|
||||||
|
* General Internals:: General Internals
|
||||||
|
* Sysdeps Internals:: Sysdeps Internals
|
||||||
|
|
||||||
|
General Internals
|
||||||
|
|
||||||
|
* glibtop:: The server structure
|
||||||
|
|
||||||
|
Sysdeps Internals
|
||||||
|
|
||||||
|
* glibtop_open_s:: Non-privileged initializations
|
||||||
|
* glibtop_close_s:: Non-privileged cleanups
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@include about.texi
|
||||||
|
@include white-paper.texi
|
||||||
|
@include reference.texi
|
||||||
|
@include internals.texi
|
||||||
|
|
1807
doc/reference.texi
Normal file
1807
doc/reference.texi
Normal file
File diff suppressed because it is too large
Load Diff
136
doc/white-paper.texi
Normal file
136
doc/white-paper.texi
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
@node White Paper, Reference Manual, About, Top
|
||||||
|
@chapter LibGTop White Paper
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Introduction:: Introduction
|
||||||
|
* Overview:: Overview
|
||||||
|
* Servers and Daemons:: Servers and Daemons
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Introduction, Overview, White Paper, White Paper
|
||||||
|
@section Introduction
|
||||||
|
|
||||||
|
Many modern UNIX systems like Solaris, BSD or Digitial Unix only allow
|
||||||
|
priviledged processes to read information like CPU and Memory Usage or
|
||||||
|
information about running processes.
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
BSD, for instance, doesn't have any other way to get those data than reading
|
||||||
|
directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to
|
||||||
|
be able to read this.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Other systems, like Digital Unix, allow all users to get things like CPU and
|
||||||
|
Memory statistics, but only root may read information about any process other
|
||||||
|
than the current one (you may not even get information about your own processes
|
||||||
|
if you're not root).
|
||||||
|
|
||||||
|
@item
|
||||||
|
Linux has a very nice @file{/proc} filesystem, but reading and parsing
|
||||||
|
@file{/proc} is very slow and inefficient.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Solaris is a bit better, but you still need to be in the @code{sys} group or
|
||||||
|
even root to get some data.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Because of this system utilities like @code{ps}, @code{uptime} or @code{top}
|
||||||
|
often are setgid kmem or setuid root. Usually, they're also very specific to
|
||||||
|
the system they're written for and not easily portable to other systems without
|
||||||
|
a lot of work.
|
||||||
|
|
||||||
|
This, of cause, becomes a problem for graphical tools like @code{gtop} - making
|
||||||
|
a GTK+ program setgid or even setuid would be a security hole as big as you can
|
||||||
|
drive the entire X11 source code through. For the GNOME project, we also needed
|
||||||
|
some kind of library which provides all the required information in a portable
|
||||||
|
since there's more than just one single program that wants to use them - for
|
||||||
|
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
|
||||||
|
@code{netload} panel applets.
|
||||||
|
|
||||||
|
@node Overview, Servers and Daemons, Introduction, White Paper
|
||||||
|
@section Overview
|
||||||
|
|
||||||
|
This section should give you a short overview on how LibGTop was developed, which
|
||||||
|
things needed to be considered and how it works.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Interface Design:: Things that need to be considered
|
||||||
|
* Server Implementation:: The LibGTop "server"
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Interface Design, Server Implementation, Overview, Overview
|
||||||
|
@subsection Interface Design
|
||||||
|
|
||||||
|
At the very beginning, it was necessary to collect all the data the library part
|
||||||
|
should provide and put them into some C structures. This was not that easiy as it
|
||||||
|
might sound since LibGTop should be portable to any modern UNIX system with a common
|
||||||
|
library part on all those systems, but the data that should be returned vary from
|
||||||
|
system to system. For instance some systems support shared memory, but some others
|
||||||
|
may not.
|
||||||
|
|
||||||
|
The header files where we define these C structures (which are system-independent) are
|
||||||
|
shared between client and server. This way we can call the system dependent code
|
||||||
|
directly where we do not need any special privileges to do so.
|
||||||
|
|
||||||
|
All of those structures contain a @code{flags} member which is interpreted as a bit
|
||||||
|
mask and tells the caller of the library functions which of the fields in the returned
|
||||||
|
structure are valid and which are not.
|
||||||
|
|
||||||
|
@node Server Implementation, , Interface Design, Overview
|
||||||
|
@subsection Server Implementation
|
||||||
|
|
||||||
|
The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system
|
||||||
|
dependent code which needs special privileges. It is only build if it's required
|
||||||
|
on the current system (for instance, the Linux kernel provides all the required
|
||||||
|
data via its @file{/proc} filesystem so we do not need the server at all) and it
|
||||||
|
only contains the @dfn{features} which need privileges.
|
||||||
|
|
||||||
|
Whenever we do not need any privileges to get all the data for some of the requested
|
||||||
|
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
||||||
|
rather than using the server.
|
||||||
|
|
||||||
|
@node Servers and Daemons, , Overview, White Paper
|
||||||
|
@section Servers and Daemons
|
||||||
|
|
||||||
|
LibGTop gives you the possibility to use different LibGTop "servers" and
|
||||||
|
"daemons" in your application.
|
||||||
|
|
||||||
|
Normally you do not need to worry about this things since LibGTop auto-
|
||||||
|
matically opens a pipe to its server it it's required, but this can also
|
||||||
|
be customized to fit your needs.
|
||||||
|
|
||||||
|
For instance if you have a small applet which is only interested in disk
|
||||||
|
usage there's no need to fork a separate server process since you don't
|
||||||
|
need any privileges to get them on any of the supported systems. This can
|
||||||
|
be archieved with a special call to @code{glibtop_init_r} on startup.
|
||||||
|
|
||||||
|
There's also an option to tell @code{glibtop_init_r} that you're only
|
||||||
|
interested in several features - for instance cpu and memory usage. In
|
||||||
|
this case LibGTop will only fork a server process if it's required to get
|
||||||
|
cpu and memory.
|
||||||
|
|
||||||
|
You can also tell @code{glibtop_init_r} to start the server only on demand,
|
||||||
|
this might become useful in command-line based programs. For graphical
|
||||||
|
applications it's normally best to start the server directly during their
|
||||||
|
initialization. The same applies for any time critical applications (since
|
||||||
|
@code{fork} is an expensive operation on some systems this may lead to
|
||||||
|
incorrect statistics).
|
||||||
|
|
||||||
|
LibGTop also allows you to talk to a remote machine using the
|
||||||
|
@dfn{LibGTop daemon}. This daemon is based on @code{gnuserv} from
|
||||||
|
GNU Emacs and should be run as an unprivileged user. It has support
|
||||||
|
for either @code{xauth} or host based authorization.
|
||||||
|
|
||||||
|
This daemon itself behaves like a LibGTop client application, i.e. it
|
||||||
|
forks a server process if this is required.
|
||||||
|
|
||||||
|
The main use for this daemon is when you want to monitor a machine which
|
||||||
|
is either very slow or has very low disk space. In this case you don't need
|
||||||
|
to install the whole client application (for instance GTop) on the remote
|
||||||
|
machine but only a very small (maybe also statically linked) executable and
|
||||||
|
run the graphical application on a more powerful machine.
|
||||||
|
|
||||||
|
It can also be used to monitor a remote machine over a very slow link such
|
||||||
|
as a dialup connection since the conversation between LibGTop client and
|
||||||
|
daemon uses much less bandwith than an ordinary X11 connection.
|
@@ -1,14 +0,0 @@
|
|||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
first
|
|
||||||
first_linux
|
|
||||||
first_static
|
|
||||||
second
|
|
||||||
third
|
|
||||||
third_linux
|
|
||||||
third_static
|
|
||||||
second_static
|
|
||||||
second_linux
|
|
||||||
smp sysdeps netload procmap mountlist
|
|
@@ -1,62 +0,0 @@
|
|||||||
1998-11-22 Martin Baulig <baulig@taurus.uni-trier.de>
|
|
||||||
|
|
||||||
* netload.c: Call inet_ntoa () to get address and subnet
|
|
||||||
in quatted dot notation (like 136.199.14.201) and not just
|
|
||||||
as a number (like 0xc90ec788).
|
|
||||||
|
|
||||||
1998-11-02 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* sysdeps.c: New example.
|
|
||||||
|
|
||||||
1998-10-26 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* netload.c: New file. Gets network load for the interface
|
|
||||||
given as command line argument.
|
|
||||||
|
|
||||||
1998-10-26 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* first.c (glibtop_get_proc_args): Get command line arguments.
|
|
||||||
* second.c: Likewise.
|
|
||||||
|
|
||||||
1998-10-25 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* first.c (glibtop_get_ppp): Get PPP/ISDN statistics.
|
|
||||||
|
|
||||||
1998-09-28 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am: Install everything in $(libexecdir)/libgtop.
|
|
||||||
|
|
||||||
1998-09-09 Martin Baulig <baulig@Stud.Informatik.uni-trier.de>
|
|
||||||
|
|
||||||
* smp.c: New file. Nice tool to show CPU statistics on SMP systems.
|
|
||||||
|
|
||||||
1998-08-25 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* first.c, second.c, procmap.c: Fixed some compiler warnings.
|
|
||||||
|
|
||||||
1998-08-18 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* procmap.c: We now display filenames when compiled
|
|
||||||
`--with-libgtop-inodedb'.
|
|
||||||
|
|
||||||
1998-08-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* second.c: Works a little bit more like `ps' - you can
|
|
||||||
give an optional command line argument to get information
|
|
||||||
about a single process.
|
|
||||||
|
|
||||||
1998-07-22 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* mountlist.c: New file.
|
|
||||||
|
|
||||||
1998-06-12 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* test.scm: New file.
|
|
||||||
|
|
||||||
1998-06-07 Martin Baulig <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
* Makefile.am (CFLAGS): Disable optimize.
|
|
||||||
|
|
||||||
* first.c (PROFILE_COUNT): Number of times each function
|
|
||||||
should be called. Defaults to 1; to profile the code, you
|
|
||||||
can increase this when compiling.
|
|
@@ -1,110 +0,0 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
INCLUDES = @INCLUDES@
|
|
||||||
|
|
||||||
DEFS = @DEFS@
|
|
||||||
|
|
||||||
# We install it in `libexec' since this will make it more easy
|
|
||||||
# to put the examples into an extra RPM package.
|
|
||||||
|
|
||||||
libgtopdir = $(libexecdir)/libgtop
|
|
||||||
|
|
||||||
libgtop_PROGRAMS = first second\
|
|
||||||
mountlist procmap netload sysdeps\
|
|
||||||
@static_targets@ @guile_examples@ @smp_examples@
|
|
||||||
|
|
||||||
EXTRA_PROGRAMS = first_static second_static \
|
|
||||||
mountlist_static procmap_static \
|
|
||||||
third third_static smp smp_static \
|
|
||||||
netload_static sysdeps_static
|
|
||||||
|
|
||||||
first_SOURCES = first.c
|
|
||||||
first_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
first_static_SOURCES = $(first_SOURCES)
|
|
||||||
first_static_LDADD = $(first_LDADD)
|
|
||||||
first_static_LDFLAGS = -static
|
|
||||||
|
|
||||||
second_SOURCES = second.c
|
|
||||||
second_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
second_static_SOURCES = $(second_SOURCES)
|
|
||||||
second_static_LDADD = $(second_LDADD)
|
|
||||||
second_static_LDFLAGS = -static
|
|
||||||
|
|
||||||
procmap_SOURCES = procmap.c
|
|
||||||
procmap_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
procmap_static_SOURCES = $(procmap_SOURCES)
|
|
||||||
procmap_static_LDADD = $(procmap_LDADD)
|
|
||||||
procmap_static_LDFLAGS = -static
|
|
||||||
|
|
||||||
netload_SOURCES = netload.c
|
|
||||||
netload_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
netload_static_SOURCES = $(netload_SOURCES)
|
|
||||||
netload_static_LDADD = $(netload_LDADD)
|
|
||||||
netload_static_LDFLAGS = -static
|
|
||||||
|
|
||||||
sysdeps_SOURCES = sysdeps.c
|
|
||||||
sysdeps_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
|
|
||||||
sysdeps_static_LDADD = $(sysdeps_LDADD)
|
|
||||||
sysdeps_static_LDFLAGS = -static
|
|
||||||
|
|
||||||
third_guile_names_LIBS = $(top_builddir)/sysdeps/guile/names/libgtop_guile_names.la
|
|
||||||
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names.la
|
|
||||||
|
|
||||||
third_SOURCES = third.c
|
|
||||||
third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile.la \
|
|
||||||
$(third_guile_names_LIBS) $(third_names_LIBS) \
|
|
||||||
$(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
third_static_SOURCES = $(third_SOURCES)
|
|
||||||
third_static_LDADD = $(third_LDADD)
|
|
||||||
third_static_LDFLAGS = -static
|
|
||||||
|
|
||||||
mountlist_SOURCES = mountlist.c
|
|
||||||
mountlist_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
|
||||||
mountlist_static_LDADD = $(mountlist_LDADD)
|
|
||||||
mountlist_static_LDFLAGS= -static
|
|
||||||
|
|
||||||
|
|
||||||
smp_SOURCES = smp.c
|
|
||||||
smp_LDADD = $(top_builddir)/lib/libgtop.la \
|
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@LIBSUPPORT@ @INTLLIBS@
|
|
||||||
|
|
||||||
smp_static_SOURCES = $(smp_SOURCES)
|
|
||||||
smp_static_LDADD = $(smp_LDADD)
|
|
||||||
smp_static_LDFLAGS = -static
|
|
||||||
|
|
575
examples/first.c
575
examples/first.c
@@ -1,575 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
|
||||||
|
|
||||||
#include <glibtop/union.h>
|
|
||||||
#include <glibtop/sysdeps.h>
|
|
||||||
|
|
||||||
#include <sys/resource.h>
|
|
||||||
|
|
||||||
#ifndef PROFILE_COUNT
|
|
||||||
#define PROFILE_COUNT 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop_union data;
|
|
||||||
glibtop_sysdeps sysdeps;
|
|
||||||
unsigned c, method, count, port, i, *ptr;
|
|
||||||
char buffer [BUFSIZ];
|
|
||||||
pid_t pid, ppid;
|
|
||||||
char *args;
|
|
||||||
|
|
||||||
count = PROFILE_COUNT;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
|
||||||
|
|
||||||
printf ("Method = %d\n", method);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
printf ("Command = '%s'\n", buffer);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
|
||||||
|
|
||||||
printf ("Host = '%s' - %u\n\n", buffer, port);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_cpu (&data.cpu);
|
|
||||||
|
|
||||||
printf ("CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.cpu.flags,
|
|
||||||
(unsigned long) data.cpu.total,
|
|
||||||
(unsigned long) data.cpu.user,
|
|
||||||
(unsigned long) data.cpu.nice,
|
|
||||||
(unsigned long) data.cpu.sys,
|
|
||||||
(unsigned long) data.cpu.idle,
|
|
||||||
(unsigned long) data.cpu.frequency);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_mem (&data.mem);
|
|
||||||
|
|
||||||
printf ("Memory (0x%08lx): "
|
|
||||||
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.mem.flags,
|
|
||||||
(unsigned long) data.mem.total,
|
|
||||||
(unsigned long) data.mem.used,
|
|
||||||
(unsigned long) data.mem.free,
|
|
||||||
(unsigned long) data.mem.shared,
|
|
||||||
(unsigned long) data.mem.buffer,
|
|
||||||
(unsigned long) data.mem.cached,
|
|
||||||
(unsigned long) data.mem.user,
|
|
||||||
(unsigned long) data.mem.locked);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_swap (&data.swap);
|
|
||||||
|
|
||||||
printf ("Swap (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.swap.flags,
|
|
||||||
(unsigned long) data.swap.total,
|
|
||||||
(unsigned long) data.swap.used,
|
|
||||||
(unsigned long) data.swap.free,
|
|
||||||
(unsigned long) data.swap.pagein,
|
|
||||||
(unsigned long) data.swap.pageout);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_uptime (&data.uptime);
|
|
||||||
|
|
||||||
printf ("Uptime (0x%08lx): %f, %f\n",
|
|
||||||
(unsigned long) data.uptime.flags,
|
|
||||||
data.uptime.uptime, data.uptime.idletime);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_loadavg (&data.loadavg);
|
|
||||||
|
|
||||||
printf ("Loadavg (0x%08lx): %f, %f, %f - %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.loadavg.flags,
|
|
||||||
(double) data.loadavg.loadavg [0],
|
|
||||||
(double) data.loadavg.loadavg [1],
|
|
||||||
(double) data.loadavg.loadavg [2],
|
|
||||||
(unsigned long) data.loadavg.nr_running,
|
|
||||||
(unsigned long) data.loadavg.nr_tasks,
|
|
||||||
(unsigned long) data.loadavg.last_pid);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_shm_limits (&data.shm_limits);
|
|
||||||
|
|
||||||
printf ("Shm Limits (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.shm_limits.flags,
|
|
||||||
(unsigned long) data.shm_limits.shmmax,
|
|
||||||
(unsigned long) data.shm_limits.shmmin,
|
|
||||||
(unsigned long) data.shm_limits.shmmni,
|
|
||||||
(unsigned long) data.shm_limits.shmseg,
|
|
||||||
(unsigned long) data.shm_limits.shmall);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_msg_limits (&data.msg_limits);
|
|
||||||
|
|
||||||
printf ("Msg Limits (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.msg_limits.flags,
|
|
||||||
(unsigned long) data.msg_limits.msgpool,
|
|
||||||
(unsigned long) data.msg_limits.msgmap,
|
|
||||||
(unsigned long) data.msg_limits.msgmax,
|
|
||||||
(unsigned long) data.msg_limits.msgmnb,
|
|
||||||
(unsigned long) data.msg_limits.msgmni,
|
|
||||||
(unsigned long) data.msg_limits.msgssz,
|
|
||||||
(unsigned long) data.msg_limits.msgtql);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_sem_limits (&data.sem_limits);
|
|
||||||
|
|
||||||
printf ("Sem Limits (0x%08lx): "
|
|
||||||
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.sem_limits.flags,
|
|
||||||
(unsigned long) data.sem_limits.semmap,
|
|
||||||
(unsigned long) data.sem_limits.semmni,
|
|
||||||
(unsigned long) data.sem_limits.semmns,
|
|
||||||
(unsigned long) data.sem_limits.semmnu,
|
|
||||||
(unsigned long) data.sem_limits.semmsl,
|
|
||||||
(unsigned long) data.sem_limits.semopm,
|
|
||||||
(unsigned long) data.sem_limits.semume,
|
|
||||||
(unsigned long) data.sem_limits.semusz,
|
|
||||||
(unsigned long) data.sem_limits.semvmx,
|
|
||||||
(unsigned long) data.sem_limits.semaem);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_ppp (&data.ppp, 0);
|
|
||||||
|
|
||||||
printf ("PPP (0x%08lx): %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.ppp.flags,
|
|
||||||
(unsigned long) data.ppp.state,
|
|
||||||
(unsigned long) data.ppp.bytes_in,
|
|
||||||
(unsigned long) data.ppp.bytes_out);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
glibtop_get_sysdeps (&sysdeps);
|
|
||||||
|
|
||||||
printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
|
|
||||||
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, "
|
|
||||||
"%lu, %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) sysdeps.flags,
|
|
||||||
(unsigned long) sysdeps.cpu,
|
|
||||||
(unsigned long) sysdeps.mem,
|
|
||||||
(unsigned long) sysdeps.swap,
|
|
||||||
(unsigned long) sysdeps.uptime,
|
|
||||||
(unsigned long) sysdeps.loadavg,
|
|
||||||
(unsigned long) sysdeps.shm_limits,
|
|
||||||
(unsigned long) sysdeps.msg_limits,
|
|
||||||
(unsigned long) sysdeps.sem_limits,
|
|
||||||
(unsigned long) sysdeps.proclist,
|
|
||||||
(unsigned long) sysdeps.proc_state,
|
|
||||||
(unsigned long) sysdeps.proc_uid,
|
|
||||||
(unsigned long) sysdeps.proc_mem,
|
|
||||||
(unsigned long) sysdeps.proc_time,
|
|
||||||
(unsigned long) sysdeps.proc_signal,
|
|
||||||
(unsigned long) sysdeps.proc_kernel,
|
|
||||||
(unsigned long) sysdeps.proc_segment,
|
|
||||||
(unsigned long) sysdeps.proc_args,
|
|
||||||
(unsigned long) sysdeps.proc_map,
|
|
||||||
(unsigned long) sysdeps.mountlist,
|
|
||||||
(unsigned long) sysdeps.fsusage,
|
|
||||||
(unsigned long) sysdeps.netload,
|
|
||||||
(unsigned long) sysdeps.ppp);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
|
||||||
|
|
||||||
printf ("Proclist (0x%08lx): %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) data.proclist.flags,
|
|
||||||
(unsigned long) data.proclist.number,
|
|
||||||
(unsigned long) data.proclist.size,
|
|
||||||
(unsigned long) data.proclist.total);
|
|
||||||
|
|
||||||
if (ptr) {
|
|
||||||
printf ("\nProcess: ");
|
|
||||||
for (i = 0; i < data.proclist.number; i++)
|
|
||||||
printf ("%s%u", i ? ", " : "", ptr [i]);
|
|
||||||
printf ("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
glibtop_free (ptr);
|
|
||||||
|
|
||||||
pid = getpid ();
|
|
||||||
ppid = getppid ();
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_state (&data.proc_state, pid);
|
|
||||||
|
|
||||||
printf ("Proc_State PID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
|
|
||||||
(int) pid, (unsigned long) data.proc_state.flags,
|
|
||||||
data.proc_state.cmd, data.proc_state.state,
|
|
||||||
(unsigned long) data.proc_state.uid,
|
|
||||||
(unsigned long) data.proc_state.gid);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_uid (&data.proc_uid, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Uid PID %5d (0x%08lx): "
|
|
||||||
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_uid.flags,
|
|
||||||
data.proc_uid.uid, data.proc_uid.euid,
|
|
||||||
data.proc_uid.gid, data.proc_uid.egid,
|
|
||||||
data.proc_uid.pid, data.proc_uid.ppid,
|
|
||||||
data.proc_uid.pgrp, data.proc_uid.session,
|
|
||||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
|
||||||
data.proc_uid.priority, data.proc_uid.nice);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_mem (&data.proc_mem, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Mem PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_mem.flags,
|
|
||||||
(unsigned long) data.proc_mem.size,
|
|
||||||
(unsigned long) data.proc_mem.vsize,
|
|
||||||
(unsigned long) data.proc_mem.resident,
|
|
||||||
(unsigned long) data.proc_mem.share,
|
|
||||||
(unsigned long) data.proc_mem.rss,
|
|
||||||
(unsigned long) data.proc_mem.rss_rlim);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_segment (&data.proc_segment, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Segment PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_segment.flags,
|
|
||||||
(unsigned long) data.proc_segment.text_rss,
|
|
||||||
(unsigned long) data.proc_segment.shlib_rss,
|
|
||||||
(unsigned long) data.proc_segment.data_rss,
|
|
||||||
(unsigned long) data.proc_segment.stack_rss,
|
|
||||||
(unsigned long) data.proc_segment.dirty_size,
|
|
||||||
(unsigned long) data.proc_segment.start_code,
|
|
||||||
(unsigned long) data.proc_segment.end_code,
|
|
||||||
(unsigned long) data.proc_segment.start_stack);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_time (&data.proc_time, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Time PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_time.flags,
|
|
||||||
(unsigned long) data.proc_time.start_time,
|
|
||||||
(unsigned long) data.proc_time.rtime,
|
|
||||||
(unsigned long) data.proc_time.utime,
|
|
||||||
(unsigned long) data.proc_time.stime,
|
|
||||||
(unsigned long) data.proc_time.cutime,
|
|
||||||
(unsigned long) data.proc_time.cstime,
|
|
||||||
(unsigned long) data.proc_time.timeout,
|
|
||||||
(unsigned long) data.proc_time.it_real_value,
|
|
||||||
(unsigned long) data.proc_time.frequency);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_signal (&data.proc_signal, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_signal.flags,
|
|
||||||
(unsigned long) data.proc_signal.signal,
|
|
||||||
(unsigned long) data.proc_signal.blocked,
|
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_kernel.flags,
|
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
|
||||||
(unsigned long) data.proc_kernel.maj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmin_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmaj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_esp,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_eip,
|
|
||||||
(unsigned long) data.proc_kernel.nwchan,
|
|
||||||
data.proc_kernel.wchan);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
args = glibtop_get_proc_args (&data.proc_args, pid, 0);
|
|
||||||
|
|
||||||
for (i = 0; i < data.proc_args.size; i++) {
|
|
||||||
if (args [i]) continue;
|
|
||||||
args [i] = '|';
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_args.flags,
|
|
||||||
(unsigned long) data.proc_args.size,
|
|
||||||
args);
|
|
||||||
|
|
||||||
glibtop_free (args);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_state (&data.proc_state, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_State PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
|
|
||||||
(int) ppid, (unsigned long) data.proc_state.flags,
|
|
||||||
data.proc_state.cmd, data.proc_state.state,
|
|
||||||
(unsigned long) data.proc_state.uid,
|
|
||||||
(unsigned long) data.proc_state.gid);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_uid (&data.proc_uid, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_Uid PPID %5d (0x%08lx): "
|
|
||||||
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid,
|
|
||||||
(unsigned long) data.proc_uid.flags,
|
|
||||||
data.proc_uid.uid, data.proc_uid.euid,
|
|
||||||
data.proc_uid.gid, data.proc_uid.egid,
|
|
||||||
data.proc_uid.pid, data.proc_uid.ppid,
|
|
||||||
data.proc_uid.pgrp, data.proc_uid.session,
|
|
||||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
|
||||||
data.proc_uid.priority, data.proc_uid.nice);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_mem (&data.proc_mem, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_Mem PPID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
|
||||||
(unsigned long) data.proc_mem.flags,
|
|
||||||
(unsigned long) data.proc_mem.size,
|
|
||||||
(unsigned long) data.proc_mem.vsize,
|
|
||||||
(unsigned long) data.proc_mem.resident,
|
|
||||||
(unsigned long) data.proc_mem.share,
|
|
||||||
(unsigned long) data.proc_mem.rss,
|
|
||||||
(unsigned long) data.proc_mem.rss_rlim);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_segment (&data.proc_segment, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_Segment PPID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
|
||||||
(unsigned long) data.proc_segment.flags,
|
|
||||||
(unsigned long) data.proc_segment.text_rss,
|
|
||||||
(unsigned long) data.proc_segment.shlib_rss,
|
|
||||||
(unsigned long) data.proc_segment.data_rss,
|
|
||||||
(unsigned long) data.proc_segment.stack_rss,
|
|
||||||
(unsigned long) data.proc_segment.dirty_size,
|
|
||||||
(unsigned long) data.proc_segment.start_code,
|
|
||||||
(unsigned long) data.proc_segment.end_code,
|
|
||||||
(unsigned long) data.proc_segment.start_stack);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_time (&data.proc_time, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_Time PPID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
|
||||||
(unsigned long) data.proc_time.flags,
|
|
||||||
(unsigned long) data.proc_time.start_time,
|
|
||||||
(unsigned long) data.proc_time.rtime,
|
|
||||||
(unsigned long) data.proc_time.utime,
|
|
||||||
(unsigned long) data.proc_time.stime,
|
|
||||||
(unsigned long) data.proc_time.cutime,
|
|
||||||
(unsigned long) data.proc_time.cstime,
|
|
||||||
(unsigned long) data.proc_time.timeout,
|
|
||||||
(unsigned long) data.proc_time.it_real_value,
|
|
||||||
(unsigned long) data.proc_time.frequency);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_signal (&data.proc_signal, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_Signal PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
|
|
||||||
(int) ppid, (unsigned long) data.proc_signal.flags,
|
|
||||||
(unsigned long) data.proc_signal.signal,
|
|
||||||
(unsigned long) data.proc_signal.blocked,
|
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
|
||||||
|
|
||||||
printf ("Proc_Kernel PPID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) ppid,
|
|
||||||
(unsigned long) data.proc_kernel.flags,
|
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
|
||||||
(unsigned long) data.proc_kernel.maj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmin_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmaj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_esp,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_eip,
|
|
||||||
(unsigned long) data.proc_kernel.nwchan,
|
|
||||||
data.proc_kernel.wchan);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
args = glibtop_get_proc_args (&data.proc_args, ppid, 0);
|
|
||||||
|
|
||||||
for (i = 0; i < data.proc_args.size; i++) {
|
|
||||||
if (args [i]) continue;
|
|
||||||
args [i] = '|';
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) ppid,
|
|
||||||
(unsigned long) data.proc_args.flags,
|
|
||||||
(unsigned long) data.proc_args.size,
|
|
||||||
args);
|
|
||||||
|
|
||||||
glibtop_free (args);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_state (&data.proc_state, 1);
|
|
||||||
|
|
||||||
printf ("Proc_State INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1,
|
|
||||||
(unsigned long) data.proc_state.flags,
|
|
||||||
data.proc_state.cmd, data.proc_state.state,
|
|
||||||
(unsigned long) data.proc_state.uid,
|
|
||||||
(unsigned long) data.proc_state.gid);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_uid (&data.proc_uid, 1);
|
|
||||||
|
|
||||||
printf ("Proc_Uid INIT %5d (0x%08lx): "
|
|
||||||
"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1,
|
|
||||||
(unsigned long) data.proc_uid.flags,
|
|
||||||
data.proc_uid.uid, data.proc_uid.euid,
|
|
||||||
data.proc_uid.gid, data.proc_uid.egid,
|
|
||||||
data.proc_uid.pid, data.proc_uid.ppid,
|
|
||||||
data.proc_uid.pgrp, data.proc_uid.session,
|
|
||||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
|
||||||
data.proc_uid.priority, data.proc_uid.nice);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_mem (&data.proc_mem, 1);
|
|
||||||
|
|
||||||
printf ("Proc_Mem INIT %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu\n", 1,
|
|
||||||
(unsigned long) data.proc_mem.flags,
|
|
||||||
(unsigned long) data.proc_mem.size,
|
|
||||||
(unsigned long) data.proc_mem.vsize,
|
|
||||||
(unsigned long) data.proc_mem.resident,
|
|
||||||
(unsigned long) data.proc_mem.share,
|
|
||||||
(unsigned long) data.proc_mem.rss,
|
|
||||||
(unsigned long) data.proc_mem.rss_rlim);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_segment (&data.proc_segment, 1);
|
|
||||||
|
|
||||||
printf ("Proc_Segment INIT %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
|
|
||||||
(unsigned long) data.proc_segment.flags,
|
|
||||||
(unsigned long) data.proc_segment.text_rss,
|
|
||||||
(unsigned long) data.proc_segment.shlib_rss,
|
|
||||||
(unsigned long) data.proc_segment.data_rss,
|
|
||||||
(unsigned long) data.proc_segment.stack_rss,
|
|
||||||
(unsigned long) data.proc_segment.dirty_size,
|
|
||||||
(unsigned long) data.proc_segment.start_code,
|
|
||||||
(unsigned long) data.proc_segment.end_code,
|
|
||||||
(unsigned long) data.proc_segment.start_stack);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_time (&data.proc_time, 1);
|
|
||||||
|
|
||||||
printf ("Proc_Time INIT %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
|
|
||||||
(unsigned long) data.proc_time.flags,
|
|
||||||
(unsigned long) data.proc_time.start_time,
|
|
||||||
(unsigned long) data.proc_time.rtime,
|
|
||||||
(unsigned long) data.proc_time.utime,
|
|
||||||
(unsigned long) data.proc_time.stime,
|
|
||||||
(unsigned long) data.proc_time.cutime,
|
|
||||||
(unsigned long) data.proc_time.cstime,
|
|
||||||
(unsigned long) data.proc_time.timeout,
|
|
||||||
(unsigned long) data.proc_time.it_real_value,
|
|
||||||
(unsigned long) data.proc_time.frequency);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_signal (&data.proc_signal, 1);
|
|
||||||
|
|
||||||
printf ("Proc_Signal INIT %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu\n", 1,
|
|
||||||
(unsigned long) data.proc_signal.flags,
|
|
||||||
(unsigned long) data.proc_signal.signal,
|
|
||||||
(unsigned long) data.proc_signal.blocked,
|
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
|
||||||
|
|
||||||
printf ("Proc_Kernel INIT %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", 1,
|
|
||||||
(unsigned long) data.proc_kernel.flags,
|
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
|
||||||
(unsigned long) data.proc_kernel.maj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmin_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmaj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_esp,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_eip,
|
|
||||||
(unsigned long) data.proc_kernel.nwchan,
|
|
||||||
data.proc_kernel.wchan);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
args = glibtop_get_proc_args (&data.proc_args, 1, 0);
|
|
||||||
|
|
||||||
for (i = 0; i < data.proc_args.size; i++) {
|
|
||||||
if (args [i]) continue;
|
|
||||||
args [i] = '|';
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", 1,
|
|
||||||
(unsigned long) data.proc_args.flags,
|
|
||||||
(unsigned long) data.proc_args.size,
|
|
||||||
args);
|
|
||||||
|
|
||||||
glibtop_free (args);
|
|
||||||
|
|
||||||
glibtop_close ();
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
@@ -1,113 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
|
||||||
|
|
||||||
#include <glibtop/mountlist.h>
|
|
||||||
#include <glibtop/fsusage.h>
|
|
||||||
|
|
||||||
#ifndef PROFILE_COUNT
|
|
||||||
#define PROFILE_COUNT 1000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop_fsusage fsusage;
|
|
||||||
glibtop_mountlist mount_list;
|
|
||||||
glibtop_mountentry *mount_entries;
|
|
||||||
unsigned c, index, method, count, port;
|
|
||||||
char buffer [BUFSIZ];
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
|
||||||
|
|
||||||
printf ("Method = %d\n", method);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
printf ("Command = '%s'\n", buffer);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
|
||||||
|
|
||||||
printf ("Host = '%s' - %u\n\n", buffer, port);
|
|
||||||
|
|
||||||
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++) {
|
|
||||||
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
|
||||||
|
|
||||||
glibtop_free (mount_entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
|
||||||
|
|
||||||
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
|
||||||
|
|
||||||
if (mount_entries == NULL)
|
|
||||||
_exit (1);
|
|
||||||
|
|
||||||
for (index = 0; index < mount_list.number; index++)
|
|
||||||
printf ("Mount_Entry: %-30s %-10s %-20s\n",
|
|
||||||
mount_entries [index].mountdir,
|
|
||||||
mount_entries [index].type,
|
|
||||||
mount_entries [index].devname);
|
|
||||||
|
|
||||||
printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n",
|
|
||||||
"", "Blocks", "Free", "Avail", "Files", "Free");
|
|
||||||
|
|
||||||
for (index = 0; index < mount_list.number; index++) {
|
|
||||||
glibtop_get_fsusage (&fsusage,
|
|
||||||
mount_entries [index].mountdir);
|
|
||||||
|
|
||||||
printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n",
|
|
||||||
mount_entries [index].mountdir,
|
|
||||||
fsusage.blocks, fsusage.bfree,
|
|
||||||
fsusage.bavail, fsusage.files,
|
|
||||||
fsusage.ffree);
|
|
||||||
}
|
|
||||||
|
|
||||||
glibtop_free (mount_entries);
|
|
||||||
|
|
||||||
printf ("\nsbrk (0) = %p\n\n", sbrk (0));
|
|
||||||
|
|
||||||
glibtop_close ();
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
@@ -1,125 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
|
||||||
|
|
||||||
#include <glibtop/netload.h>
|
|
||||||
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#ifndef PROFILE_COUNT
|
|
||||||
#define PROFILE_COUNT 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop_netload netload;
|
|
||||||
unsigned method, count, port, i;
|
|
||||||
struct in_addr addr, subnet;
|
|
||||||
char *address_string, *subnet_string;
|
|
||||||
char buffer [BUFSIZ];
|
|
||||||
|
|
||||||
count = PROFILE_COUNT;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
|
||||||
|
|
||||||
printf ("Method = %d\n", method);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
printf ("Command = '%s'\n", buffer);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
|
||||||
|
|
||||||
printf ("Host = '%s' - %u\n\n", buffer, port);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
|
||||||
|
|
||||||
if (argc != 2)
|
|
||||||
glibtop_error ("Usage: %s interface", argv [0]);
|
|
||||||
|
|
||||||
glibtop_get_netload (&netload, argv [1]);
|
|
||||||
|
|
||||||
addr.s_addr = netload.address;
|
|
||||||
subnet.s_addr = netload.subnet;
|
|
||||||
|
|
||||||
address_string = glibtop_strdup (inet_ntoa (addr));
|
|
||||||
subnet_string = glibtop_strdup (inet_ntoa (subnet));
|
|
||||||
|
|
||||||
printf ("Network Load (0x%08lx):\n\n"
|
|
||||||
"\tInterface Flags:\t0x%08lx\n"
|
|
||||||
"\tAddress:\t\t0x%08lx - %s\n"
|
|
||||||
"\tSubnet:\t\t\t0x%08lx - %s\n\n"
|
|
||||||
"\tMTU:\t\t\t%ld\n"
|
|
||||||
"\tCollisions:\t\t%ld\n\n"
|
|
||||||
"\tPackets In:\t\t%ld\n"
|
|
||||||
"\tPackets Out:\t\t%ld\n"
|
|
||||||
"\tPackets Total:\t\t%ld\n\n"
|
|
||||||
"\tBytes In:\t\t%ld\n"
|
|
||||||
"\tBytes Out:\t\t%ld\n"
|
|
||||||
"\tBytes Total:\t\t%ld\n\n"
|
|
||||||
"\tErrors In:\t\t%ld\n"
|
|
||||||
"\tErrors Out:\t\t%ld\n"
|
|
||||||
"\tErrors Total:\t\t%ld\n\n",
|
|
||||||
(unsigned long) netload.flags,
|
|
||||||
(unsigned long) netload.if_flags,
|
|
||||||
(unsigned long) netload.address, address_string,
|
|
||||||
(unsigned long) netload.subnet, subnet_string,
|
|
||||||
(unsigned long) netload.mtu,
|
|
||||||
(unsigned long) netload.collisions,
|
|
||||||
(unsigned long) netload.packets_in,
|
|
||||||
(unsigned long) netload.packets_out,
|
|
||||||
(unsigned long) netload.packets_total,
|
|
||||||
(unsigned long) netload.bytes_in,
|
|
||||||
(unsigned long) netload.bytes_out,
|
|
||||||
(unsigned long) netload.bytes_total,
|
|
||||||
(unsigned long) netload.errors_in,
|
|
||||||
(unsigned long) netload.errors_out,
|
|
||||||
(unsigned long) netload.errors_total);
|
|
||||||
|
|
||||||
glibtop_free (address_string);
|
|
||||||
glibtop_free (subnet_string);
|
|
||||||
|
|
||||||
glibtop_close ();
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
@@ -1,147 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
|
||||||
|
|
||||||
#include <glibtop/procmap.h>
|
|
||||||
|
|
||||||
#ifdef GLIBTOP_INODEDB
|
|
||||||
#include <glibtop/inodedb.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/resource.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
|
|
||||||
#ifndef PROFILE_COUNT
|
|
||||||
#define PROFILE_COUNT 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
#ifdef GLIBTOP_INODEDB
|
|
||||||
glibtop_inodedb *inodedb;
|
|
||||||
#endif
|
|
||||||
glibtop_proc_map procmap;
|
|
||||||
glibtop_map_entry *maps;
|
|
||||||
unsigned method, count, port, i;
|
|
||||||
char buffer [BUFSIZ];
|
|
||||||
pid_t pid;
|
|
||||||
|
|
||||||
count = PROFILE_COUNT;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
|
||||||
|
|
||||||
printf ("Method = %d\n", method);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
printf ("Command = '%s'\n", buffer);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
|
||||||
|
|
||||||
printf ("Host = '%s' - %u\n\n", buffer, port);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
|
||||||
|
|
||||||
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
|
||||||
glibtop_error ("Usage: %s pid", argv [0]);
|
|
||||||
|
|
||||||
#ifdef GLIBTOP_INODEDB
|
|
||||||
inodedb = glibtop_inodedb_open (0, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid);
|
|
||||||
|
|
||||||
maps = glibtop_get_proc_map (&procmap, pid);
|
|
||||||
|
|
||||||
for (i = 0; i < procmap.number; i++) {
|
|
||||||
const char *filename = NULL;
|
|
||||||
unsigned device, device_major, device_minor;
|
|
||||||
char perm [5];
|
|
||||||
|
|
||||||
if (maps [i].flags & (1 << GLIBTOP_MAP_ENTRY_FILENAME))
|
|
||||||
filename = maps [i].filename;
|
|
||||||
|
|
||||||
#ifdef GLIBTOP_INODEDB
|
|
||||||
if (inodedb && !filename)
|
|
||||||
filename = glibtop_inodedb_lookup
|
|
||||||
(inodedb, maps [i].device, maps [i].inode);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
perm [0] = (maps [i].perm & GLIBTOP_MAP_PERM_READ) ? 'r' : '-';
|
|
||||||
perm [1] = (maps [i].perm & GLIBTOP_MAP_PERM_WRITE) ? 'w' : '-';
|
|
||||||
perm [2] = (maps [i].perm & GLIBTOP_MAP_PERM_EXECUTE) ? 'x' : '-';
|
|
||||||
perm [3] = (maps [i].perm & GLIBTOP_MAP_PERM_SHARED) ? 's' : '-';
|
|
||||||
perm [4] = (maps [i].perm & GLIBTOP_MAP_PERM_PRIVATE) ? 'p' : '-';
|
|
||||||
|
|
||||||
device = (unsigned long) maps [i].device;
|
|
||||||
device_minor = (device & 255);
|
|
||||||
device_major = ((device >> 8) & 255);
|
|
||||||
|
|
||||||
if (filename)
|
|
||||||
fprintf (stderr, "%08lx-%08lx %08lx - "
|
|
||||||
"%02x:%02x %08lu - %4s - %s\n",
|
|
||||||
(unsigned long) maps [i].start,
|
|
||||||
(unsigned long) maps [i].end,
|
|
||||||
(unsigned long) maps [i].offset,
|
|
||||||
device_major, device_minor,
|
|
||||||
(unsigned long) maps [i].inode,
|
|
||||||
perm, filename);
|
|
||||||
else
|
|
||||||
fprintf (stderr, "%08lx-%08lx %08lx - "
|
|
||||||
"%02x:%02x %08lu - %4s\n",
|
|
||||||
(unsigned long) maps [i].start,
|
|
||||||
(unsigned long) maps [i].end,
|
|
||||||
(unsigned long) maps [i].offset,
|
|
||||||
device_major, device_minor,
|
|
||||||
(unsigned long) maps [i].inode,
|
|
||||||
perm);
|
|
||||||
|
|
||||||
if (filename && (filename != maps [i].filename))
|
|
||||||
glibtop_free (filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
glibtop_free (maps);
|
|
||||||
|
|
||||||
glibtop_close ();
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
@@ -1,301 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/union.h>
|
|
||||||
#include <glibtop/sysdeps.h>
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
output (pid_t pid)
|
|
||||||
{
|
|
||||||
glibtop_union data;
|
|
||||||
char *args;
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
#if HAVE_LIBGTOP_SMP
|
|
||||||
unsigned long total;
|
|
||||||
double p_total, p_utime, p_stime;
|
|
||||||
double b_total, b_utime, b_stime;
|
|
||||||
double s_total, s_utime, s_stime;
|
|
||||||
double my_utime, my_stime;
|
|
||||||
int ncpu;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
glibtop_get_proc_state (&data.proc_state, pid);
|
|
||||||
|
|
||||||
printf ("Proc_State PID %5d (0x%08lx): "
|
|
||||||
"'%s', %c, %lu, %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_state.flags,
|
|
||||||
data.proc_state.cmd, data.proc_state.state,
|
|
||||||
(unsigned long) data.proc_state.uid,
|
|
||||||
(unsigned long) data.proc_state.gid);
|
|
||||||
|
|
||||||
glibtop_get_proc_uid (&data.proc_uid, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Uid PID %5d (0x%08lx): "
|
|
||||||
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_uid.flags,
|
|
||||||
data.proc_uid.uid, data.proc_uid.euid,
|
|
||||||
data.proc_uid.gid, data.proc_uid.egid,
|
|
||||||
data.proc_uid.pid, data.proc_uid.ppid,
|
|
||||||
data.proc_uid.pgrp, data.proc_uid.session,
|
|
||||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
|
||||||
data.proc_uid.priority, data.proc_uid.nice);
|
|
||||||
|
|
||||||
glibtop_get_proc_mem (&data.proc_mem, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Mem PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_mem.flags,
|
|
||||||
(unsigned long) data.proc_mem.size,
|
|
||||||
(unsigned long) data.proc_mem.vsize,
|
|
||||||
(unsigned long) data.proc_mem.resident,
|
|
||||||
(unsigned long) data.proc_mem.share,
|
|
||||||
(unsigned long) data.proc_mem.rss,
|
|
||||||
(unsigned long) data.proc_mem.rss_rlim);
|
|
||||||
|
|
||||||
glibtop_get_proc_segment (&data.proc_segment, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Segment PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_segment.flags,
|
|
||||||
(unsigned long) data.proc_segment.text_rss,
|
|
||||||
(unsigned long) data.proc_segment.shlib_rss,
|
|
||||||
(unsigned long) data.proc_segment.data_rss,
|
|
||||||
(unsigned long) data.proc_segment.stack_rss,
|
|
||||||
(unsigned long) data.proc_segment.dirty_size,
|
|
||||||
(unsigned long) data.proc_segment.start_code,
|
|
||||||
(unsigned long) data.proc_segment.end_code,
|
|
||||||
(unsigned long) data.proc_segment.start_stack);
|
|
||||||
|
|
||||||
glibtop_get_proc_time (&data.proc_time, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Time PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_time.flags,
|
|
||||||
(unsigned long) data.proc_time.start_time,
|
|
||||||
(unsigned long) data.proc_time.rtime,
|
|
||||||
(unsigned long) data.proc_time.utime,
|
|
||||||
(unsigned long) data.proc_time.stime,
|
|
||||||
(unsigned long) data.proc_time.cutime,
|
|
||||||
(unsigned long) data.proc_time.cstime,
|
|
||||||
(unsigned long) data.proc_time.timeout,
|
|
||||||
(unsigned long) data.proc_time.it_real_value,
|
|
||||||
(unsigned long) data.proc_time.frequency);
|
|
||||||
|
|
||||||
glibtop_get_proc_signal (&data.proc_signal, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_signal.flags,
|
|
||||||
(unsigned long) data.proc_signal.signal,
|
|
||||||
(unsigned long) data.proc_signal.blocked,
|
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
|
||||||
|
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
|
||||||
|
|
||||||
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_kernel.flags,
|
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
|
||||||
(unsigned long) data.proc_kernel.maj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmin_flt,
|
|
||||||
(unsigned long) data.proc_kernel.cmaj_flt,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_esp,
|
|
||||||
(unsigned long) data.proc_kernel.kstk_eip,
|
|
||||||
(unsigned long) data.proc_kernel.nwchan,
|
|
||||||
data.proc_kernel.wchan);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
args = glibtop_get_proc_args (&data.proc_args, pid, 0);
|
|
||||||
|
|
||||||
for (i = 0; i < data.proc_args.size; i++) {
|
|
||||||
if (args [i]) continue;
|
|
||||||
args [i] = '|';
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_args.flags,
|
|
||||||
(unsigned long) data.proc_args.size,
|
|
||||||
args);
|
|
||||||
|
|
||||||
glibtop_free (args);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
#if HAVE_LIBGTOP_SMP
|
|
||||||
ncpu = glibtop_global_server->ncpu;
|
|
||||||
|
|
||||||
glibtop_get_proc_time (&data.proc_time, pid);
|
|
||||||
|
|
||||||
total = (unsigned long) data.proc_time.utime +
|
|
||||||
(unsigned long) data.proc_time.stime;
|
|
||||||
|
|
||||||
p_total = total ? (double) total : 1.0;
|
|
||||||
|
|
||||||
p_utime = (double) data.proc_time.utime * 100.0 / p_total;
|
|
||||||
p_stime = (double) data.proc_time.stime * 100.0 / p_total;
|
|
||||||
|
|
||||||
b_total = p_total / ncpu;
|
|
||||||
b_utime = (double) data.proc_time.utime / ncpu;
|
|
||||||
b_stime = (double) data.proc_time.stime / ncpu;
|
|
||||||
|
|
||||||
s_total = 0.0; s_utime = 0.0; s_stime = 0.0;
|
|
||||||
|
|
||||||
printf ("Proc_Time PID %5d (0x%08lx): %12lu %12lu %12lu\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_time.flags, total,
|
|
||||||
(unsigned long) data.proc_time.utime,
|
|
||||||
(unsigned long) data.proc_time.stime);
|
|
||||||
|
|
||||||
for (i = 0; i < ncpu; i++) {
|
|
||||||
unsigned long this_total;
|
|
||||||
|
|
||||||
this_total = (unsigned long) data.proc_time.xcpu_utime [i] +
|
|
||||||
(unsigned long) data.proc_time.xcpu_stime [i];
|
|
||||||
|
|
||||||
printf ("CPU %3d PID %5d (0x%08lx): %12lu %12lu %12lu\n", i,
|
|
||||||
(int) pid, (unsigned long) data.proc_time.flags, this_total,
|
|
||||||
(unsigned long) data.proc_time.xcpu_utime [i],
|
|
||||||
(unsigned long) data.proc_time.xcpu_stime [i]);
|
|
||||||
|
|
||||||
s_total += fabs (((double) this_total) - b_total);
|
|
||||||
s_utime += fabs (((double) data.proc_time.xcpu_utime [i]) - b_utime);
|
|
||||||
s_stime += fabs (((double) data.proc_time.xcpu_stime [i]) - b_stime);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
printf ("Proc_Time PID %5d (0x%08lx): %12.3f %12.3f %12.3f\n", (int) pid,
|
|
||||||
(unsigned long) data.proc_time.flags, 100.0, p_utime, p_stime);
|
|
||||||
|
|
||||||
for (i = 0; i < ncpu; i++) {
|
|
||||||
double this_p_total, this_p_utime, this_p_stime;
|
|
||||||
unsigned long this_total;
|
|
||||||
|
|
||||||
this_total = (unsigned long) data.proc_time.xcpu_utime [i] +
|
|
||||||
(unsigned long) data.proc_time.xcpu_stime [i];
|
|
||||||
|
|
||||||
this_p_total = (double) this_total * 100.0 / p_total;
|
|
||||||
|
|
||||||
this_p_utime = (double) data.proc_time.xcpu_utime [i] * 100.0 / p_total;
|
|
||||||
this_p_stime = (double) data.proc_time.xcpu_stime [i] * 100.0 / p_total;
|
|
||||||
|
|
||||||
printf ("CPU %3d PID %5d (0x%08lx): %12.3f %12.3f %12.3f\n", i,
|
|
||||||
(int) pid, (unsigned long) data.proc_time.flags,
|
|
||||||
this_p_total, this_p_utime, this_p_stime);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
my_utime = (unsigned long) data.proc_time.utime ?
|
|
||||||
(double) data.proc_time.utime : 1.0;
|
|
||||||
my_stime = (unsigned long) data.proc_time.stime ?
|
|
||||||
(double) data.proc_time.stime : 1.0;
|
|
||||||
|
|
||||||
printf ("SPIN: %31s %12.3f %12.3f %12.3f\n", "", s_total * 100.0 / p_total,
|
|
||||||
s_utime * 100.0 / my_utime, s_stime * 100.0 / my_stime);
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop_proclist proclist;
|
|
||||||
glibtop_sysdeps sysdeps;
|
|
||||||
unsigned *ptr, pid, i;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_init ();
|
|
||||||
|
|
||||||
glibtop_get_sysdeps (&sysdeps);
|
|
||||||
|
|
||||||
printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
|
|
||||||
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) sysdeps.flags,
|
|
||||||
(unsigned long) sysdeps.cpu,
|
|
||||||
(unsigned long) sysdeps.mem,
|
|
||||||
(unsigned long) sysdeps.swap,
|
|
||||||
(unsigned long) sysdeps.uptime,
|
|
||||||
(unsigned long) sysdeps.loadavg,
|
|
||||||
(unsigned long) sysdeps.shm_limits,
|
|
||||||
(unsigned long) sysdeps.msg_limits,
|
|
||||||
(unsigned long) sysdeps.sem_limits,
|
|
||||||
(unsigned long) sysdeps.proclist,
|
|
||||||
(unsigned long) sysdeps.proc_state,
|
|
||||||
(unsigned long) sysdeps.proc_uid,
|
|
||||||
(unsigned long) sysdeps.proc_mem,
|
|
||||||
(unsigned long) sysdeps.proc_time,
|
|
||||||
(unsigned long) sysdeps.proc_signal,
|
|
||||||
(unsigned long) sysdeps.proc_kernel,
|
|
||||||
(unsigned long) sysdeps.proc_segment);
|
|
||||||
|
|
||||||
if ((argc == 2) && (sscanf (argv [1], "%d", &pid) == 1)) {
|
|
||||||
output (pid);
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
ptr = glibtop_get_proclist (&proclist, 0, 0);
|
|
||||||
|
|
||||||
printf ("Proclist (0x%08lx): %lu, %lu, %lu\n",
|
|
||||||
(unsigned long) proclist.flags,
|
|
||||||
(unsigned long) proclist.number,
|
|
||||||
(unsigned long) proclist.size,
|
|
||||||
(unsigned long) proclist.total);
|
|
||||||
|
|
||||||
if (!ptr) exit (1);
|
|
||||||
|
|
||||||
for (i = 0; i < proclist.number; i++) {
|
|
||||||
|
|
||||||
pid = ptr [i];
|
|
||||||
|
|
||||||
output (pid);
|
|
||||||
}
|
|
||||||
|
|
||||||
glibtop_free (ptr);
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
126
examples/smp.c
126
examples/smp.c
@@ -1,126 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, September 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/cpu.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop_cpu cpu;
|
|
||||||
unsigned long frequency;
|
|
||||||
double total, user, nice, sys, idle;
|
|
||||||
double b_total, b_user, b_nice, b_sys, b_idle;
|
|
||||||
double s_total, s_user, s_nice, s_sys, s_idle;
|
|
||||||
char separator [BUFSIZ], buffer [BUFSIZ];
|
|
||||||
int ncpu, i;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_get_cpu (&cpu);
|
|
||||||
|
|
||||||
ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
|
|
||||||
|
|
||||||
frequency = (unsigned long) cpu.frequency;
|
|
||||||
|
|
||||||
total = ((unsigned long) cpu.total) ? ((double) cpu.total) : 1.0;
|
|
||||||
user = ((unsigned long) cpu.user) ? ((double) cpu.user) : 1.0;
|
|
||||||
nice = ((unsigned long) cpu.nice) ? ((double) cpu.nice) : 1.0;
|
|
||||||
sys = ((unsigned long) cpu.sys) ? ((double) cpu.sys) : 1.0;
|
|
||||||
idle = ((unsigned long) cpu.idle) ? ((double) cpu.idle) : 1.0;
|
|
||||||
|
|
||||||
s_total = s_user = s_nice = s_sys = s_idle = 0.0;
|
|
||||||
|
|
||||||
b_total = total / ncpu;
|
|
||||||
b_user = user / ncpu;
|
|
||||||
b_nice = nice / ncpu;
|
|
||||||
b_sys = sys / ncpu;
|
|
||||||
b_idle = idle / ncpu;
|
|
||||||
|
|
||||||
memset (separator, '-', 91);
|
|
||||||
separator [92] = '\0';
|
|
||||||
|
|
||||||
sprintf (buffer, _("Ticks (%d per second):"), frequency);
|
|
||||||
|
|
||||||
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
|
|
||||||
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
|
|
||||||
|
|
||||||
printf (_("CPU (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"),
|
|
||||||
(unsigned long) cpu.flags, total, user, nice, sys, idle);
|
|
||||||
|
|
||||||
for (i = 0; i < glibtop_global_server->ncpu; i++) {
|
|
||||||
printf (_("CPU %3d (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i,
|
|
||||||
(unsigned long) cpu.flags,
|
|
||||||
(unsigned long) cpu.xcpu_total [i],
|
|
||||||
(unsigned long) cpu.xcpu_user [i],
|
|
||||||
(unsigned long) cpu.xcpu_nice [i],
|
|
||||||
(unsigned long) cpu.xcpu_sys [i],
|
|
||||||
(unsigned long) cpu.xcpu_idle [i]);
|
|
||||||
|
|
||||||
s_total += fabs (((double) cpu.xcpu_total [i]) - b_total);
|
|
||||||
s_user += fabs (((double) cpu.xcpu_user [i]) - b_user);
|
|
||||||
s_nice += fabs (((double) cpu.xcpu_nice [i]) - b_nice);
|
|
||||||
s_sys += fabs (((double) cpu.xcpu_sys [i]) - b_sys);
|
|
||||||
s_idle += fabs (((double) cpu.xcpu_idle [i]) - b_idle);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("%s\n\n\n", separator);
|
|
||||||
|
|
||||||
printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"),
|
|
||||||
_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"),
|
|
||||||
_("Idle (%)"), separator);
|
|
||||||
|
|
||||||
printf (_("CPU (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"),
|
|
||||||
(unsigned long) cpu.flags, (double) total * 100.0 / total,
|
|
||||||
(double) user * 100.0 / total,
|
|
||||||
(double) nice * 100.0 / total,
|
|
||||||
(double) sys * 100.0 / total,
|
|
||||||
(double) idle * 100.0 / total);
|
|
||||||
|
|
||||||
for (i = 0; i < glibtop_global_server->ncpu; i++) {
|
|
||||||
double p_total, p_user, p_nice, p_sys, p_idle;
|
|
||||||
|
|
||||||
p_total = ((double) cpu.xcpu_total [i]) * 100.0 / total;
|
|
||||||
p_user = ((double) cpu.xcpu_user [i]) * 100.0 / user;
|
|
||||||
p_nice = ((double) cpu.xcpu_nice [i]) * 100.0 / nice;
|
|
||||||
p_sys = ((double) cpu.xcpu_sys [i]) * 100.0 / sys;
|
|
||||||
p_idle = ((double) cpu.xcpu_idle [i]) * 100.0 / idle;
|
|
||||||
|
|
||||||
printf (_("CPU %3d (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"),
|
|
||||||
i, (unsigned long) cpu.flags, p_total, p_user, p_nice,
|
|
||||||
p_sys, p_idle);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator,
|
|
||||||
_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user,
|
|
||||||
s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle);
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
@@ -1,148 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
|
||||||
|
|
||||||
#ifndef PROFILE_COUNT
|
|
||||||
#define PROFILE_COUNT 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop_sysdeps sysdeps;
|
|
||||||
unsigned method, count, port, i;
|
|
||||||
char buffer [BUFSIZ];
|
|
||||||
|
|
||||||
count = PROFILE_COUNT;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
|
|
||||||
|
|
||||||
printf ("Method = %d\n", method);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
printf ("Command = '%s'\n", buffer);
|
|
||||||
|
|
||||||
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
|
|
||||||
buffer [count] = 0;
|
|
||||||
|
|
||||||
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
|
|
||||||
|
|
||||||
printf ("Host = '%s' - %u\n\n", buffer, port);
|
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
|
||||||
|
|
||||||
glibtop_get_sysdeps (&sysdeps);
|
|
||||||
|
|
||||||
#define FEATURE_CHECK(f) ((sysdeps.features & (1 << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
|
|
||||||
|
|
||||||
printf ("Sysdeps (0x%08lx):\n\n"
|
|
||||||
"\tfeatures:\t\t0x%08lx\n\n"
|
|
||||||
"\tcpu:\t\t%d\t0x%08lx\n"
|
|
||||||
"\tmem:\t\t%d\t0x%08lx\n"
|
|
||||||
"\tswap:\t\t%d\t0x%08lx\n\n"
|
|
||||||
"\tuptime:\t\t%d\t0x%08lx\n"
|
|
||||||
"\tloadavg:\t%d\t0x%08lx\n\n"
|
|
||||||
"\tshm_limits:\t%d\t0x%08lx\n"
|
|
||||||
"\tmsg_limits:\t%d\t0x%08lx\n"
|
|
||||||
"\tsem_limits:\t%d\t0x%08lx\n\n"
|
|
||||||
"\tproclist:\t%d\t0x%08lx\n\n"
|
|
||||||
"\tproc_state:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_uid:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_mem:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_time:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_signal:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_kernel:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_segment:\t%d\t0x%08lx\n\n"
|
|
||||||
"\tproc_args:\t%d\t0x%08lx\n"
|
|
||||||
"\tproc_map:\t%d\t0x%08lx\n\n"
|
|
||||||
"\tmountlist:\t%d\t0x%08lx\n"
|
|
||||||
"\tfsusage:\t%d\t0x%08lx\n\n"
|
|
||||||
"\tnetload:\t%d\t0x%08lx\n"
|
|
||||||
"\tppp:\t\t%d\t0x%08lx\n\n",
|
|
||||||
(unsigned long) sysdeps.flags,
|
|
||||||
(unsigned long) sysdeps.features,
|
|
||||||
FEATURE_CHECK(CPU),
|
|
||||||
(unsigned long) sysdeps.cpu,
|
|
||||||
FEATURE_CHECK(MEM),
|
|
||||||
(unsigned long) sysdeps.mem,
|
|
||||||
FEATURE_CHECK(SWAP),
|
|
||||||
(unsigned long) sysdeps.swap,
|
|
||||||
FEATURE_CHECK(UPTIME),
|
|
||||||
(unsigned long) sysdeps.uptime,
|
|
||||||
FEATURE_CHECK(LOADAVG),
|
|
||||||
(unsigned long) sysdeps.loadavg,
|
|
||||||
FEATURE_CHECK(SHM_LIMITS),
|
|
||||||
(unsigned long) sysdeps.shm_limits,
|
|
||||||
FEATURE_CHECK(MSG_LIMITS),
|
|
||||||
(unsigned long) sysdeps.msg_limits,
|
|
||||||
FEATURE_CHECK(SEM_LIMITS),
|
|
||||||
(unsigned long) sysdeps.sem_limits,
|
|
||||||
FEATURE_CHECK(PROCLIST),
|
|
||||||
(unsigned long) sysdeps.proclist,
|
|
||||||
FEATURE_CHECK(PROC_STATE),
|
|
||||||
(unsigned long) sysdeps.proc_state,
|
|
||||||
FEATURE_CHECK(PROC_UID),
|
|
||||||
(unsigned long) sysdeps.proc_uid,
|
|
||||||
FEATURE_CHECK(PROC_MEM),
|
|
||||||
(unsigned long) sysdeps.proc_mem,
|
|
||||||
FEATURE_CHECK(PROC_TIME),
|
|
||||||
(unsigned long) sysdeps.proc_time,
|
|
||||||
FEATURE_CHECK(PROC_SIGNAL),
|
|
||||||
(unsigned long) sysdeps.proc_signal,
|
|
||||||
FEATURE_CHECK(PROC_KERNEL),
|
|
||||||
(unsigned long) sysdeps.proc_kernel,
|
|
||||||
FEATURE_CHECK(PROC_SEGMENT),
|
|
||||||
(unsigned long) sysdeps.proc_segment,
|
|
||||||
FEATURE_CHECK(PROC_ARGS),
|
|
||||||
(unsigned long) sysdeps.proc_args,
|
|
||||||
FEATURE_CHECK(PROC_MAP),
|
|
||||||
(unsigned long) sysdeps.proc_map,
|
|
||||||
FEATURE_CHECK(MOUNTLIST),
|
|
||||||
(unsigned long) sysdeps.mountlist,
|
|
||||||
FEATURE_CHECK(FSUSAGE),
|
|
||||||
(unsigned long) sysdeps.fsusage,
|
|
||||||
FEATURE_CHECK(NETLOAD),
|
|
||||||
(unsigned long) sysdeps.netload,
|
|
||||||
FEATURE_CHECK(PPP),
|
|
||||||
(unsigned long) sysdeps.ppp);
|
|
||||||
|
|
||||||
glibtop_close ();
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
@@ -1,80 +0,0 @@
|
|||||||
(display (glibtop-names-sysdeps)) (newline)
|
|
||||||
(display (glibtop-labels-sysdeps)) (newline)
|
|
||||||
(display (glibtop-descriptions-sysdeps)) (newline)
|
|
||||||
(display (glibtop-types-sysdeps)) (newline)
|
|
||||||
|
|
||||||
(newline)
|
|
||||||
|
|
||||||
(display (glibtop-names-cpu)) (newline)
|
|
||||||
(display (glibtop-names-mem)) (newline)
|
|
||||||
(display (glibtop-names-swap)) (newline)
|
|
||||||
(display (glibtop-names-uptime)) (newline)
|
|
||||||
(display (glibtop-names-loadavg)) (newline)
|
|
||||||
(display (glibtop-names-shm_limits)) (newline)
|
|
||||||
(display (glibtop-names-msg_limits)) (newline)
|
|
||||||
(display (glibtop-names-sem_limits)) (newline)
|
|
||||||
(display (glibtop-names-proclist)) (newline)
|
|
||||||
(display (glibtop-names-proc_state)) (newline)
|
|
||||||
(display (glibtop-names-proc_uid)) (newline)
|
|
||||||
(display (glibtop-names-proc_mem)) (newline)
|
|
||||||
(display (glibtop-names-proc_time)) (newline)
|
|
||||||
(display (glibtop-names-proc_signal)) (newline)
|
|
||||||
(display (glibtop-names-proc_kernel)) (newline)
|
|
||||||
(display (glibtop-names-proc_segment)) (newline)
|
|
||||||
|
|
||||||
(newline)
|
|
||||||
|
|
||||||
(display (glibtop-labels-cpu)) (newline)
|
|
||||||
(display (glibtop-labels-mem)) (newline)
|
|
||||||
(display (glibtop-labels-swap)) (newline)
|
|
||||||
(display (glibtop-labels-uptime)) (newline)
|
|
||||||
(display (glibtop-labels-loadavg)) (newline)
|
|
||||||
(display (glibtop-labels-shm_limits)) (newline)
|
|
||||||
(display (glibtop-labels-msg_limits)) (newline)
|
|
||||||
(display (glibtop-labels-sem_limits)) (newline)
|
|
||||||
(display (glibtop-labels-proclist)) (newline)
|
|
||||||
(display (glibtop-labels-proc_state)) (newline)
|
|
||||||
(display (glibtop-labels-proc_uid)) (newline)
|
|
||||||
(display (glibtop-labels-proc_mem)) (newline)
|
|
||||||
(display (glibtop-labels-proc_time)) (newline)
|
|
||||||
(display (glibtop-labels-proc_signal)) (newline)
|
|
||||||
(display (glibtop-labels-proc_kernel)) (newline)
|
|
||||||
(display (glibtop-labels-proc_segment)) (newline)
|
|
||||||
|
|
||||||
(newline)
|
|
||||||
|
|
||||||
(display (glibtop-descriptions-cpu)) (newline)
|
|
||||||
(display (glibtop-descriptions-mem)) (newline)
|
|
||||||
(display (glibtop-descriptions-swap)) (newline)
|
|
||||||
(display (glibtop-descriptions-uptime)) (newline)
|
|
||||||
(display (glibtop-descriptions-loadavg)) (newline)
|
|
||||||
(display (glibtop-descriptions-shm_limits)) (newline)
|
|
||||||
(display (glibtop-descriptions-msg_limits)) (newline)
|
|
||||||
(display (glibtop-descriptions-sem_limits)) (newline)
|
|
||||||
(display (glibtop-descriptions-proclist)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_state)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_uid)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_mem)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_time)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_signal)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_kernel)) (newline)
|
|
||||||
(display (glibtop-descriptions-proc_segment)) (newline)
|
|
||||||
|
|
||||||
(newline)
|
|
||||||
|
|
||||||
(display (glibtop-types-cpu)) (newline)
|
|
||||||
(display (glibtop-types-mem)) (newline)
|
|
||||||
(display (glibtop-types-swap)) (newline)
|
|
||||||
(display (glibtop-types-uptime)) (newline)
|
|
||||||
(display (glibtop-types-loadavg)) (newline)
|
|
||||||
(display (glibtop-types-shm_limits)) (newline)
|
|
||||||
(display (glibtop-types-msg_limits)) (newline)
|
|
||||||
(display (glibtop-types-sem_limits)) (newline)
|
|
||||||
(display (glibtop-types-proclist)) (newline)
|
|
||||||
(display (glibtop-types-proc_state)) (newline)
|
|
||||||
(display (glibtop-types-proc_uid)) (newline)
|
|
||||||
(display (glibtop-types-proc_mem)) (newline)
|
|
||||||
(display (glibtop-types-proc_time)) (newline)
|
|
||||||
(display (glibtop-types-proc_signal)) (newline)
|
|
||||||
(display (glibtop-types-proc_kernel)) (newline)
|
|
||||||
(display (glibtop-types-proc_segment)) (newline)
|
|
46
features.def
46
features.def
@@ -1,22 +1,24 @@
|
|||||||
void|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4])
|
retval|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[GLIBTOP_NCPU],xcpu_user[GLIBTOP_NCPU],xcpu_nice[GLIBTOP_NCPU],xcpu_sys[GLIBTOP_NCPU],xcpu_idle[GLIBTOP_NCPU],xcpu_flags)
|
||||||
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
retval|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
||||||
void|swap|ulong(total,used,free,pagein,pageout)
|
retval|swap|ulong(total,used,free,pagein,pageout)
|
||||||
void|uptime|double(uptime,idletime)
|
retval|uptime|double(uptime,idletime):ulong(boot_time)
|
||||||
void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
retval|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
||||||
void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
retval|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
||||||
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
retval|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
||||||
void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
retval|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
||||||
unsigned *|proclist|ulong(number,size,total)|long(which,arg)
|
pointer(unsigned)|proclist|array|long(which,arg)
|
||||||
void|proc_state|str(cmd):char(state):ulong(uid,gid)|pid_t(pid)
|
retval|proc_state|string(cmd):unsigned(state):ulong(uid,gid,ruid,rgid,has_cpu,processor,last_processor)|pid_t(pid)
|
||||||
void|proc_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid)
|
retval|proc_uid|long(uid,euid,gid,egid,suid,sgid,fsuid,fsgid,pid,ppid,pgrp,session,tty,tpgid,priority,nice,ngroups,groups[GLIBTOP_MAX_GROUPS])|pid_t(pid)
|
||||||
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
retval|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
||||||
void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[4],xcpu_stime[4])|pid_t(pid)
|
retval|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[GLIBTOP_NCPU],xcpu_stime[GLIBTOP_NCPU],xcpu_flags)|pid_t(pid)
|
||||||
void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
|
retval|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
|
||||||
void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):str(wchan)|pid_t(pid)
|
retval|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):string(wchan)|pid_t(pid)
|
||||||
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_stack)|pid_t(pid)
|
retval|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_data,end_data,start_brk,end_brk,start_stack,start_mmap,arg_start,arg_end,env_start,env_end)|pid_t(pid)
|
||||||
char *|proc_args|ulong(size)|pid_t(pid):unsigned(max_len)
|
pointer(string)|proc_args|array|pid_t(pid)
|
||||||
glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid)
|
array(glibtop_map_entry)|proc_map|array|pid_t(pid)
|
||||||
glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs)
|
array(glibtop_mountentry)|@mountlist|array|int(all_fs)
|
||||||
void|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string|mount_dir
|
retval|@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
|
array(glibtop_interface)|interface_names|array|ulong(interface,number,instance,strategy)
|
||||||
void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
retval|netinfo|ulong(if_flags,transport,mtu,subnet,address)|string(interface):unsigned(transport)
|
||||||
|
retval|netload|ulong(packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string(interface):unsigned(transport,protocol)
|
||||||
|
retval|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
||||||
|
43
glibtop-server-private.h
Normal file
43
glibtop-server-private.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_SERVER_PRIVATE_H__
|
||||||
|
#define __GLIBTOP_SERVER_PRIVATE_H__
|
||||||
|
|
||||||
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
#include <glibtop_machine.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
struct _glibtop_server_private
|
||||||
|
{
|
||||||
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
glibtop_machine machine; /* Machine dependent data */
|
||||||
|
#endif
|
||||||
|
GSList *backend_list;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
84
glibtop.h
84
glibtop.h
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -24,46 +26,48 @@
|
|||||||
#ifndef __GLIBTOP_H__
|
#ifndef __GLIBTOP_H__
|
||||||
#define __GLIBTOP_H__
|
#define __GLIBTOP_H__
|
||||||
|
|
||||||
|
#ifndef _IN_LIBGTOP
|
||||||
|
#include <glibtop-config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <glibtop/global.h>
|
#include <glibtop/global.h>
|
||||||
|
#include <glibtop/limits.h>
|
||||||
|
|
||||||
#include <glibtop_server.h>
|
#include <glibtop_server.h>
|
||||||
#include <glibtop/types.h>
|
#include <glibtop/types.h>
|
||||||
|
|
||||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
BEGIN_LIBGTOP_DECLS
|
||||||
#include <glibtop_machine.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLIBTOP_MOUNTENTRY_LEN
|
typedef struct _glibtop glibtop;
|
||||||
#define GLIBTOP_MOUNTENTRY_LEN 79
|
typedef struct _glibtop_server_private glibtop_server_private;
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct _glibtop glibtop;
|
|
||||||
|
|
||||||
#include <glibtop/sysdeps.h>
|
#include <glibtop/sysdeps.h>
|
||||||
|
#include <glibtop/errors.h>
|
||||||
|
|
||||||
|
#ifdef _IN_LIBGTOP
|
||||||
|
#include <glibtop-server-private.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
struct _glibtop
|
struct _glibtop
|
||||||
{
|
{
|
||||||
unsigned flags;
|
int refcount; /* Reference count */
|
||||||
unsigned method; /* Server Method */
|
unsigned flags;
|
||||||
unsigned error_method; /* Error Method */
|
unsigned method; /* Server Method */
|
||||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
unsigned error_method; /* Error Method */
|
||||||
glibtop_machine machine; /* Machine dependent data */
|
int ncpu; /* Number of CPUs, zero if single-processor */
|
||||||
#endif
|
unsigned long os_version_code; /* Version code of the operating system */
|
||||||
int input [2]; /* Pipe client <- server */
|
const char *name; /* Program name for error messages */
|
||||||
int output [2]; /* Pipe client -> server */
|
const char *server_command; /* Command used to invoke server */
|
||||||
int socket; /* Accepted connection of a socket */
|
const char *server_host; /* Host the server should run on */
|
||||||
int ncpu; /* Number of CPUs, zero if single-processor */
|
const char *server_user; /* Name of the user on the target host */
|
||||||
unsigned long os_version_code; /* Version code of the operating system */
|
const char *server_rsh; /* Command used to connect to the target host */
|
||||||
const char *name; /* Program name for error messages */
|
unsigned long features; /* Server is required for this features */
|
||||||
const char *server_command; /* Command used to invoke server */
|
unsigned long server_port; /* Port on which daemon is listening */
|
||||||
const char *server_host; /* Host the server should run on */
|
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
||||||
const char *server_user; /* Name of the user on the target host */
|
glibtop_sysdeps required; /* Required feature list */
|
||||||
const char *server_rsh; /* Command used to connect to the target host */
|
glibtop_sysdeps wanted; /* We only want this features */
|
||||||
unsigned long features; /* Server is required for this features */
|
glibtop_server_private *_priv; /* Private data */
|
||||||
unsigned long server_port; /* Port on which daemon is listening */
|
unsigned glibtop_errno;
|
||||||
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
|
||||||
glibtop_sysdeps required; /* Required feature list */
|
|
||||||
pid_t pid; /* PID of the server */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern glibtop *glibtop_global_server;
|
extern glibtop *glibtop_global_server;
|
||||||
@@ -84,24 +88,12 @@ glibtop_init_s (glibtop **server_ptr,
|
|||||||
unsigned long features,
|
unsigned long features,
|
||||||
unsigned flags);
|
unsigned flags);
|
||||||
|
|
||||||
#ifdef GLIBTOP_GUILE
|
void
|
||||||
|
glibtop_server_ref (glibtop *server);
|
||||||
|
|
||||||
/* You need to link with -lgtop_guile to get this stuff here. */
|
void
|
||||||
|
glibtop_server_unref (glibtop *server);
|
||||||
|
|
||||||
void glibtop_boot_guile (void);
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef GLIBTOP_GUILE_NAMES
|
|
||||||
|
|
||||||
/* You need to link with -lgtop_guile_names to get this stuff here. */
|
|
||||||
|
|
||||||
void glibtop_boot_guile_names (void);
|
|
||||||
|
|
||||||
#ifndef GLIBTOP_NAMES
|
|
||||||
#define GLIBTOP_NAMES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,2 +1,3 @@
|
|||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
|
call-vector.h
|
||||||
|
@@ -1,10 +1,23 @@
|
|||||||
glibtopdir = $(includedir)/glibtop
|
glibtopdir = $(includedir)/glibtop
|
||||||
|
|
||||||
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||||
sem_limits.h uptime.h command.h mem.h proclist.h \
|
sem_limits.h uptime.h mem.h proclist.h \
|
||||||
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
|
proctime.h shm_limits.h cpu.h msg_limits.h \
|
||||||
procmem.h procuid.h swap.h write.h error.h open.h \
|
procmem.h procuid.h swap.h error.h open.h \
|
||||||
procsegment.h read.h sysdeps.h xmalloc.h global.h \
|
procsegment.h sysdeps.h xmalloc.h global.h \
|
||||||
procsignal.h read_data.h union.h types.h gnuserv.h \
|
procsignal.h union.h types.h \
|
||||||
parameter.h mountlist.h fsusage.h procmap.h signal.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 \
|
||||||
|
netinfo.h interfaces.h limits.h array.h compat_10.h \
|
||||||
|
errors.h glib-arrays.h backend.h call-vector.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = call-vector.h
|
||||||
|
|
||||||
|
call-vector.h: call-vector.pl call-vector.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||||
|
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/call-vector.pl $(top_srcdir)/features.def $(srcdir)/call-vector.h.in > tmp-t
|
||||||
|
mv tmp-t call-vector.h
|
||||||
|
|
||||||
|
EXTRA_DIST = call-vector.pl call-vector.h.in
|
||||||
|
|
||||||
|
CLEANFILES = $(BUILT_SOURCES)
|
||||||
|
|
||||||
|
50
include/glibtop/array.h
Normal file
50
include/glibtop/array.h
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_ARRAY_H__
|
||||||
|
#define __GLIBTOP_ARRAY_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define GLIBTOP_ARRAY_NUMBER 0
|
||||||
|
#define GLIBTOP_ARRAY_SIZE 1
|
||||||
|
#define GLIBTOP_ARRAY_TOTAL 2
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_ARRAY 3
|
||||||
|
|
||||||
|
typedef struct _glibtop_array glibtop_array;
|
||||||
|
|
||||||
|
struct _glibtop_array
|
||||||
|
{
|
||||||
|
u_int64_t flags,
|
||||||
|
number, /* GLIBTOP_ARRAY_NUMBER */
|
||||||
|
size, /* GLIBTOP_ARRAY_SIZE */
|
||||||
|
total; /* GLIBTOP_ARRAY_TOTAL */
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
114
include/glibtop/backend.h
Normal file
114
include/glibtop/backend.h
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_BACKEND_H__
|
||||||
|
#define __GLIBTOP_BACKEND_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
typedef struct _glibtop_backend_info glibtop_backend_info;
|
||||||
|
typedef struct _glibtop_backend_entry glibtop_backend_entry;
|
||||||
|
typedef struct _glibtop_backend_module glibtop_backend_module;
|
||||||
|
typedef struct _glibtop_backend_private glibtop_backend_private;
|
||||||
|
|
||||||
|
typedef struct _glibtop_backend glibtop_backend;
|
||||||
|
|
||||||
|
#include <glibtop/call-vector.h>
|
||||||
|
|
||||||
|
typedef int (*glibtop_backend_open_func_t) (glibtop *, glibtop_backend *,
|
||||||
|
u_int64_t, const char **);
|
||||||
|
typedef int (*glibtop_backend_close_func_t) (glibtop *, glibtop_backend *);
|
||||||
|
|
||||||
|
struct _glibtop_backend_info
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
glibtop_backend_open_func_t open;
|
||||||
|
glibtop_backend_close_func_t close;
|
||||||
|
glibtop_call_vector *call_vector;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef _IN_LIBGTOP
|
||||||
|
|
||||||
|
#include <gmodule.h>
|
||||||
|
|
||||||
|
/* private structure */
|
||||||
|
struct _glibtop_backend_module
|
||||||
|
{
|
||||||
|
int refcount;
|
||||||
|
GModule *module;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _IN_LIBGTOP */
|
||||||
|
|
||||||
|
struct _glibtop_backend_entry
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
char *libtool_name;
|
||||||
|
char *shlib_name;
|
||||||
|
|
||||||
|
/* This is const since you must not attempt to
|
||||||
|
* write into gmodule loaded memory. */
|
||||||
|
const glibtop_backend_info *info;
|
||||||
|
|
||||||
|
/* private pointer */
|
||||||
|
glibtop_backend_module *_priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_backend
|
||||||
|
{
|
||||||
|
const glibtop_backend_info *info;
|
||||||
|
|
||||||
|
/* private pointers */
|
||||||
|
glibtop_backend_private *_priv;
|
||||||
|
glibtop_backend_module *_priv_module;
|
||||||
|
};
|
||||||
|
|
||||||
|
long
|
||||||
|
glibtop_register_backend (glibtop_backend_entry *entry);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_unregister_backend (long id);
|
||||||
|
|
||||||
|
glibtop_backend_entry *
|
||||||
|
glibtop_backend_by_id (long id);
|
||||||
|
|
||||||
|
glibtop_backend_entry *
|
||||||
|
glibtop_backend_by_name (const char *backend_name);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_init_backends (void);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_open_backend_l (glibtop *server, const char *backend_name,
|
||||||
|
u_int64_t features, const char **backend_args);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,3 +1,9 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
@@AUTOGEN_COMMENT@@
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of LibGTop 1.0.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
@@ -19,23 +25,20 @@
|
|||||||
Boston, MA 02111-1307, USA.
|
Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_VERSION_H__
|
#ifndef __GLIBTOP_CALL_VECTOR_H__
|
||||||
#define __GLIBTOP_VERSION_H__
|
#define __GLIBTOP_CALL_VECTOR_H__
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/union.h>
|
#include <glibtop/union.h>
|
||||||
#include <glibtop/sysdeps.h>
|
|
||||||
#include <glibtop/command.h>
|
|
||||||
|
|
||||||
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
|
|
||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
#if _IN_LIBGTOP
|
typedef struct _glibtop_call_vector glibtop_call_vector;
|
||||||
|
|
||||||
void glibtop_send_version (glibtop *server, int fd);
|
struct _glibtop_call_vector
|
||||||
|
{
|
||||||
#endif
|
@@GLIBTOP_CALL_VECTOR@@
|
||||||
|
};
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
116
include/glibtop/call-vector.pl
Normal file
116
include/glibtop/call-vector.pl
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
require 'c_types.pl';
|
||||||
|
|
||||||
|
die "Usage: $0 features.def call-vector.h.in" unless $#ARGV == 1;
|
||||||
|
|
||||||
|
$[ = 1; # set array base to 1
|
||||||
|
$, = ' '; # set output field separator
|
||||||
|
$\ = "\n"; # set output record separator
|
||||||
|
|
||||||
|
sub toupper {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/a-z/A-Z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tolower {
|
||||||
|
local($_) = @_;
|
||||||
|
tr/A-Z/a-z/;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
$func_decl_code = '';
|
||||||
|
|
||||||
|
open FEATURESDEF, $ARGV[1] or
|
||||||
|
die "open ($ARGV[1]): $!";
|
||||||
|
|
||||||
|
while (<FEATURESDEF>) {
|
||||||
|
chop; # strip record separator
|
||||||
|
|
||||||
|
if (/^[^\#]/) {
|
||||||
|
&parse_features_def ($_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
close FEATURESDEF;
|
||||||
|
|
||||||
|
sub parse_features_def {
|
||||||
|
local($line) = @_;
|
||||||
|
@line_fields = split(/\|/, $line, 9999);
|
||||||
|
$retval = $line_fields[1];
|
||||||
|
$element_def = $line_fields[3];
|
||||||
|
$feature = $line_fields[2];
|
||||||
|
$param_def = $line_fields[4];
|
||||||
|
|
||||||
|
$orig = $feature;
|
||||||
|
$feature =~ s/^@//;
|
||||||
|
$space = $feature;
|
||||||
|
$space =~ s/./ /g;
|
||||||
|
|
||||||
|
if ($retval eq 'retval') {
|
||||||
|
$retval_param = '&retval';
|
||||||
|
$retval = 'int';
|
||||||
|
}
|
||||||
|
elsif ($retval !~ /^void$/) {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$retval_param = 'NULL';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||||
|
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||||
|
}
|
||||||
|
|
||||||
|
$param_decl = '';
|
||||||
|
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||||
|
for ($param = 1; $param <= $nr_params; $param++) {
|
||||||
|
$list = $params[$param];
|
||||||
|
$type = $params[$param];
|
||||||
|
$type =~ s/\(.*//;
|
||||||
|
$list =~ s/^.*\(//;
|
||||||
|
$list =~ s/\)$//;
|
||||||
|
$count = (@fields = split(/,/, $list, 9999));
|
||||||
|
for ($field = 1; $field <= $count; $field++) {
|
||||||
|
my $c_type = $typeinfo->{$type}->[1];
|
||||||
|
|
||||||
|
$param_decl = $param_decl . ', ';
|
||||||
|
$param_decl = $param_decl . $c_type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($line_fields[3] eq '') {
|
||||||
|
$func_decl_code .= sprintf
|
||||||
|
(qq[\t%s (*%s) (glibtop *, glibtop_backend *%s);\n], $retval, $feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] eq 'array') {
|
||||||
|
$func_decl_code .= sprintf
|
||||||
|
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *%s);\n], $retval, $feature, $param_decl);
|
||||||
|
} elsif ($line_fields[3] =~ /^array/) {
|
||||||
|
$func_decl_code .= sprintf
|
||||||
|
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
} else {
|
||||||
|
$func_decl_code .= sprintf
|
||||||
|
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
chop $func_decl_code;
|
||||||
|
|
||||||
|
$auto_gen_comment = sprintf
|
||||||
|
(qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]);
|
||||||
|
|
||||||
|
open CALLVECTOR, $ARGV[2] or
|
||||||
|
die "open ($ARGV[2]): $!";
|
||||||
|
|
||||||
|
while (<CALLVECTOR>) {
|
||||||
|
chop;
|
||||||
|
|
||||||
|
s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/;
|
||||||
|
|
||||||
|
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
|
||||||
|
} continue {
|
||||||
|
print $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
close CALLVECTOR;
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
@@ -1,102 +0,0 @@
|
|||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
|
||||||
This file is part of LibGTop 1.0.
|
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
|
||||||
|
|
||||||
LibGTop is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with LibGTop; see the file COPYING. If not, write to the
|
|
||||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __GLIBTOP_COMMAND_H__
|
|
||||||
#define __GLIBTOP_COMMAND_H__
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/sysdeps.h>
|
|
||||||
#include <glibtop/union.h>
|
|
||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
#define GLIBTOP_CMND_QUIT 0
|
|
||||||
#define GLIBTOP_CMND_SYSDEPS 1
|
|
||||||
|
|
||||||
#define GLIBTOP_CMND_CPU 2
|
|
||||||
#define GLIBTOP_CMND_MEM 3
|
|
||||||
#define GLIBTOP_CMND_SWAP 4
|
|
||||||
#define GLIBTOP_CMND_UPTIME 5
|
|
||||||
#define GLIBTOP_CMND_LOADAVG 6
|
|
||||||
#define GLIBTOP_CMND_SHM_LIMITS 7
|
|
||||||
#define GLIBTOP_CMND_MSG_LIMITS 8
|
|
||||||
#define GLIBTOP_CMND_SEM_LIMITS 9
|
|
||||||
#define GLIBTOP_CMND_PROCLIST 10
|
|
||||||
|
|
||||||
#define GLIBTOP_CMND_PROC_STATE 11
|
|
||||||
#define GLIBTOP_CMND_PROC_UID 12
|
|
||||||
#define GLIBTOP_CMND_PROC_MEM 13
|
|
||||||
#define GLIBTOP_CMND_PROC_TIME 14
|
|
||||||
#define GLIBTOP_CMND_PROC_SIGNAL 15
|
|
||||||
#define GLIBTOP_CMND_PROC_KERNEL 16
|
|
||||||
#define GLIBTOP_CMND_PROC_SEGMENT 17
|
|
||||||
#define GLIBTOP_CMND_PROC_ARGS 18
|
|
||||||
#define GLIBTOP_CMND_PROC_MAP 19
|
|
||||||
|
|
||||||
#define GLIBTOP_CMND_MOUNTLIST 20
|
|
||||||
#define GLIBTOP_CMND_FSUSAGE 21
|
|
||||||
#define GLIBTOP_CMND_NETLOAD 22
|
|
||||||
#define GLIBTOP_CMND_PPP 23
|
|
||||||
|
|
||||||
#define GLIBTOP_MAX_CMND 24
|
|
||||||
|
|
||||||
#define _GLIBTOP_PARAM_SIZE 16
|
|
||||||
|
|
||||||
typedef struct _glibtop_command glibtop_command;
|
|
||||||
|
|
||||||
typedef struct _glibtop_response glibtop_response;
|
|
||||||
typedef union _glibtop_response_union glibtop_response_union;
|
|
||||||
|
|
||||||
struct _glibtop_command
|
|
||||||
{
|
|
||||||
u_int64_t command;
|
|
||||||
u_int64_t size, data_size;
|
|
||||||
char parameter [_GLIBTOP_PARAM_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
union _glibtop_response_union
|
|
||||||
{
|
|
||||||
glibtop_union data;
|
|
||||||
glibtop_sysdeps sysdeps;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _glibtop_response
|
|
||||||
{
|
|
||||||
int64_t offset;
|
|
||||||
u_int64_t size, data_size;
|
|
||||||
glibtop_response_union u;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define glibtop_call(p1, p2, p3, p4) glibtop_call_r(glibtop_global_server, p1, p2, p3, p4)
|
|
||||||
|
|
||||||
void *
|
|
||||||
glibtop_call_l (glibtop *server, unsigned command, size_t send_size,
|
|
||||||
const void *send_buf, size_t recv_size, void *recv_buf);
|
|
||||||
|
|
||||||
void *
|
|
||||||
glibtop_call_s (glibtop *server, unsigned command, size_t send_size,
|
|
||||||
const void *send_buf, size_t recv_size, void *recv_buf);
|
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
|
||||||
|
|
||||||
#endif
|
|
91
include/glibtop/compat_10.h
Normal file
91
include/glibtop/compat_10.h
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_COMPAT10_H__
|
||||||
|
#define __GLIBTOP_COMPAT10_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
/* glibtop_cpu */
|
||||||
|
|
||||||
|
#define GLIBTOP_XCPU_TOTAL GLIBTOP_CPU_XCPU_TOTAL
|
||||||
|
#define GLIBTOP_XCPU_USER GLIBTOP_CPU_XCPU_USER
|
||||||
|
#define GLIBTOP_XCPU_NICE GLIBTOP_CPU_XCPU_NICE
|
||||||
|
#define GLIBTOP_XCPU_SYS GLIBTOP_CPU_XCPU_SYS
|
||||||
|
#define GLIBTOP_XCPU_IDLE GLIBTOP_CPU_XCPU_IDLE
|
||||||
|
#define GLIBTOP_XCPU_FLAGS GLIBTOP_CPU_XCPU_FLAGS
|
||||||
|
|
||||||
|
/* glibtop_proclist */
|
||||||
|
|
||||||
|
#define GLIBTOP_PROCLIST_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||||
|
#define GLIBTOP_PROCLIST_SIZE GLIBTOP_ARRAY_SIZE
|
||||||
|
#define GLIBTOP_PROCLIST_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_PROCLIST GLIBTOP_MAX_ARRAY
|
||||||
|
|
||||||
|
typedef struct _glibtop_array glibtop_proclist;
|
||||||
|
|
||||||
|
/* glibtop_mountlist */
|
||||||
|
|
||||||
|
#define GLIBTOP_MOUNTLIST_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||||
|
#define GLIBTOP_MOUNTLIST_SIZE GLIBTOP_ARRAY_SIZE
|
||||||
|
#define GLIBTOP_MOUNTLIST_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_MOUNTLIST GLIBTOP_MAX_ARRAY
|
||||||
|
|
||||||
|
typedef struct _glibtop_array glibtop_mountlist;
|
||||||
|
|
||||||
|
/* glibtop_proc_args */
|
||||||
|
|
||||||
|
#define GLIBTOP_PROC_ARGS_SIZE 0
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_PROC_ARGS 1
|
||||||
|
|
||||||
|
typedef struct _glibtop_array glibtop_proc_args;
|
||||||
|
|
||||||
|
/* glibtop_proc_map */
|
||||||
|
|
||||||
|
#define GLIBTOP_PROC_MAP_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||||
|
#define GLIBTOP_PROC_MAP_SIZE GLIBTOP_ARRAY_SIZE
|
||||||
|
#define GLIBTOP_PROC_MAP_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_PROC_MAP GLIBTOP_MAX_ARRAY
|
||||||
|
|
||||||
|
typedef struct _glibtop_array glibtop_proc_map;
|
||||||
|
|
||||||
|
/* glibtop_interface_names */
|
||||||
|
|
||||||
|
#define GLIBTOP_INTERFACE_NAMES_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||||
|
#define GLIBTOP_INTERFACE_NAMES_SIZE GLIBTOP_ARRAY_SIZE
|
||||||
|
#define GLIBTOP_INTERFACE_NAMES_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_INTERFACE_NAMES GLIBTOP_MAX_ARRAY
|
||||||
|
|
||||||
|
typedef struct _glibtop_array glibtop_interface_names;
|
||||||
|
|
||||||
|
#endif
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -36,33 +38,32 @@ BEGIN_LIBGTOP_DECLS
|
|||||||
#define GLIBTOP_CPU_IDLE 4
|
#define GLIBTOP_CPU_IDLE 4
|
||||||
#define GLIBTOP_CPU_FREQUENCY 5
|
#define GLIBTOP_CPU_FREQUENCY 5
|
||||||
|
|
||||||
#define GLIBTOP_XCPU_TOTAL 6
|
#define GLIBTOP_CPU_XCPU_TOTAL 6
|
||||||
#define GLIBTOP_XCPU_USER 7
|
#define GLIBTOP_CPU_XCPU_USER 7
|
||||||
#define GLIBTOP_XCPU_NICE 8
|
#define GLIBTOP_CPU_XCPU_NICE 8
|
||||||
#define GLIBTOP_XCPU_SYS 9
|
#define GLIBTOP_CPU_XCPU_SYS 9
|
||||||
#define GLIBTOP_XCPU_IDLE 10
|
#define GLIBTOP_CPU_XCPU_IDLE 10
|
||||||
|
#define GLIBTOP_CPU_XCPU_FLAGS 11
|
||||||
|
|
||||||
#define GLIBTOP_MAX_CPU 11
|
#define GLIBTOP_MAX_CPU 12
|
||||||
|
|
||||||
/* Nobody should really be using more than 4 processors. */
|
|
||||||
#define GLIBTOP_NCPU 4
|
|
||||||
|
|
||||||
typedef struct _glibtop_cpu glibtop_cpu;
|
typedef struct _glibtop_cpu glibtop_cpu;
|
||||||
|
|
||||||
struct _glibtop_cpu
|
struct _glibtop_cpu
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
total, /* GLIBTOP_CPU_TOTAL */
|
total, /* GLIBTOP_CPU_TOTAL */
|
||||||
user, /* GLIBTOP_CPU_USER */
|
user, /* GLIBTOP_CPU_USER */
|
||||||
nice, /* GLIBTOP_CPU_NICE */
|
nice, /* GLIBTOP_CPU_NICE */
|
||||||
sys, /* GLIBTOP_CPU_SYS */
|
sys, /* GLIBTOP_CPU_SYS */
|
||||||
idle, /* GLIBTOP_CPU_IDLE */
|
idle, /* GLIBTOP_CPU_IDLE */
|
||||||
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
||||||
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
|
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_TOTAL */
|
||||||
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
|
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_USER */
|
||||||
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
|
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_NICE */
|
||||||
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
|
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_SYS */
|
||||||
xcpu_idle [GLIBTOP_NCPU]; /* GLIBTOP_XCPU_IDLE */
|
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_CPU_XCPU_IDLE */
|
||||||
|
xcpu_flags; /* GLIBTOP_CPU_XCPU_FLAGS */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
|
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
|
||||||
@@ -73,14 +74,14 @@ struct _glibtop_cpu
|
|||||||
#define glibtop_get_cpu_r glibtop_get_cpu_s
|
#define glibtop_get_cpu_r glibtop_get_cpu_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
|
int glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
|
||||||
|
|
||||||
#if GLIBTOP_SUID_CPU
|
#if GLIBTOP_SUID_CPU
|
||||||
void glibtop_init_cpu_p (glibtop *server);
|
int glibtop_init_cpu_p (glibtop *server);
|
||||||
void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
|
int glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
|
||||||
#else
|
#else
|
||||||
void glibtop_init_cpu_s (glibtop *server);
|
int glibtop_init_cpu_s (glibtop *server);
|
||||||
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
|
int glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -28,50 +30,59 @@
|
|||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#ifndef G_GNUC_UNUSED
|
||||||
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
||||||
|
#define G_GNUC_UNUSED \
|
||||||
|
__attribute__((unused))
|
||||||
|
#else /* !__GNUC__ */
|
||||||
|
#define G_GNUC_UNUSED
|
||||||
|
#endif /* !__GNUC__ */
|
||||||
|
#endif /* defined G_GNUC_UNUSED */
|
||||||
|
|
||||||
void glibtop_error_vr (glibtop *server, char *format, va_list args);
|
void glibtop_error_vr (glibtop *server, char *format, va_list args);
|
||||||
void glibtop_warn_vr (glibtop *server, char *format, va_list args);
|
void glibtop_warn_vr (glibtop *server, char *format, va_list args);
|
||||||
|
|
||||||
void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args);
|
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_warn_io_vr (glibtop *server, char *format, int, va_list args);
|
||||||
|
|
||||||
static void
|
static void G_GNUC_UNUSED
|
||||||
glibtop_error_r (glibtop *server, char *format, ...)
|
glibtop_error_r (glibtop *server, char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_error_vr (server, format, args);
|
glibtop_error_vr (server, format, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void G_GNUC_UNUSED
|
||||||
glibtop_warn_r (glibtop *server, char *format, ...)
|
glibtop_warn_r (glibtop *server, char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_warn_vr (server, format, args);
|
glibtop_warn_vr (server, format, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void G_GNUC_UNUSED
|
||||||
glibtop_error_io_r (glibtop *server, char *format, ...)
|
glibtop_error_io_r (glibtop *server, char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_error_io_vr (server, format, errno, args);
|
glibtop_error_io_vr (server, format, errno, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void G_GNUC_UNUSED
|
||||||
glibtop_warn_io_r (glibtop *server, char *format, ...)
|
glibtop_warn_io_r (glibtop *server, char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_warn_io_vr (server, format, errno, args);
|
glibtop_warn_io_vr (server, format, errno, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
@@ -87,37 +98,37 @@ glibtop_warn_io_r (glibtop *server, char *format, ...)
|
|||||||
static void
|
static void
|
||||||
glibtop_error (char *format, ...)
|
glibtop_error (char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_error_vr (glibtop_global_server, format, args);
|
glibtop_error_vr (glibtop_global_server, format, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
glibtop_warn (char *format, ...)
|
glibtop_warn (char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_warn_vr (glibtop_global_server, format, args);
|
glibtop_warn_vr (glibtop_global_server, format, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
glibtop_error_io (char *format, ...)
|
glibtop_error_io (char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
|
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
glibtop_warn_io (char *format, ...)
|
glibtop_warn_io (char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
|
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* no __GNUC__ */
|
#endif /* no __GNUC__ */
|
||||||
|
66
include/glibtop/errors.h
Normal file
66
include/glibtop/errors.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_ERRORS_H__
|
||||||
|
#define __GLIBTOP_ERRORS_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define GLIBTOP_ERROR_NO_ERROR 0
|
||||||
|
#define GLIBTOP_ERROR_UNKNOWN 1
|
||||||
|
#define GLIBTOP_ERROR_INVALID_ARGUMENT 2
|
||||||
|
#define GLIBTOP_ERROR_NO_SUCH_PARAMETER 3
|
||||||
|
#define GLIBTOP_ERROR_READONLY_VALUE 4
|
||||||
|
#define GLIBTOP_ERROR_SIZE_MISMATCH 5
|
||||||
|
|
||||||
|
#define GLIBTOP_ERROR_SERVER_COMM_FAILURE 6
|
||||||
|
|
||||||
|
#define GLIBTOP_ERROR_NO_SUCH_PROCESS 7
|
||||||
|
|
||||||
|
#define GLIBTOP_ERROR_NO_KERNEL_SUPPORT 8
|
||||||
|
#define GLIBTOP_ERROR_INCOMPATIBLE_KERNEL 9
|
||||||
|
|
||||||
|
#define GLIBTOP_ERROR_NO_SUCH_BACKEND 10
|
||||||
|
#define GLIBTOP_ERROR_NOT_IMPLEMENTED 11
|
||||||
|
#define GLIBTOP_ERROR_NO_BACKEND_OPENED 12
|
||||||
|
|
||||||
|
#define GLIBTOP_ERROR_DEMARSHAL_ERROR 13
|
||||||
|
|
||||||
|
#define GLIBTOP_MAX_ERROR 14
|
||||||
|
|
||||||
|
char *
|
||||||
|
glibtop_get_error_string_l (glibtop *server, unsigned error_number);
|
||||||
|
|
||||||
|
unsigned
|
||||||
|
glibtop_get_errno_l (glibtop *server);
|
||||||
|
|
||||||
|
unsigned
|
||||||
|
glibtop_clear_errno_l (glibtop *server);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#endif
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -41,20 +43,20 @@ typedef struct _glibtop_fsusage glibtop_fsusage;
|
|||||||
|
|
||||||
struct _glibtop_fsusage
|
struct _glibtop_fsusage
|
||||||
{
|
{
|
||||||
u_int64_t flags,
|
u_int64_t flags,
|
||||||
blocks, /* Total blocks. */
|
blocks, /* Total blocks. */
|
||||||
bfree, /* Free blocks available to superuser. */
|
bfree, /* Free blocks available to superuser. */
|
||||||
bavail, /* Free blocks available to non-superuser. */
|
bavail, /* Free blocks available to non-superuser. */
|
||||||
files, /* Total file nodes. */
|
files, /* Total file nodes. */
|
||||||
ffree; /* Free file nodes. */
|
ffree; /* Free file nodes. */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
|
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
|
||||||
|
|
||||||
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
|
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
|
||||||
|
|
||||||
void glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
|
int 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);
|
int glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir);
|
||||||
|
|
||||||
#ifdef GLIBTOP_NAMES
|
#ifdef GLIBTOP_NAMES
|
||||||
|
|
||||||
|
59
include/glibtop/glib-arrays.h
Normal file
59
include/glibtop/glib-arrays.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_GLIB_ARRAYS_H__
|
||||||
|
#define __GLIBTOP_GLIB_ARRAYS_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/array.h>
|
||||||
|
#include <glibtop/global.h>
|
||||||
|
#include <glibtop/xmalloc.h>
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
#define glibtop_get_proc_args_as_array(pid) glibtop_get_proc_args_as_array_l(glibtop_global_server, pid)
|
||||||
|
|
||||||
|
GPtrArray *
|
||||||
|
glibtop_get_proc_args_as_array_l (glibtop *server, pid_t pid);
|
||||||
|
|
||||||
|
#define glibtop_get_proclist_as_array(which,arg) glibtop_get_proclist_as_array_l(glibtop_global_server, which, arg)
|
||||||
|
|
||||||
|
GArray *
|
||||||
|
glibtop_get_proclist_as_array_l (glibtop *server, int64_t which, int64_t arg);
|
||||||
|
|
||||||
|
#define glibtop_get_proc_map_as_array(pid) glibtop_get_proc_map_as_array_l(glibtop_global_server, pid)
|
||||||
|
|
||||||
|
GPtrArray *
|
||||||
|
glibtop_get_proc_map_as_array_l (glibtop *server, pid_t pid);
|
||||||
|
|
||||||
|
#define glibtop_get_mountlist_as_array(all_fs) glibtop_get_mountlist_as_array_l(glibtop_global_server, all_fs)
|
||||||
|
|
||||||
|
GPtrArray *
|
||||||
|
glibtop_get_mountlist_as_array_l (glibtop *server, int all_fs);
|
||||||
|
|
||||||
|
END_LIBGTOP_DECLS
|
||||||
|
#endif
|
@@ -1,3 +1,5 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1998-99 Martin Baulig
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
@@ -109,10 +111,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
#ifdef _IN_LIBGTOP
|
#ifdef _IN_LIBGTOP
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@@ -1,161 +0,0 @@
|
|||||||
/* -*-C-*-
|
|
||||||
|
|
||||||
Header file for the GNU Emacs server and client C code.
|
|
||||||
|
|
||||||
This file is part of GNU Emacs.
|
|
||||||
|
|
||||||
Copying is permitted under those conditions described by the GNU
|
|
||||||
General Public License.
|
|
||||||
|
|
||||||
Copyright (C) 1989 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Author: Andy Norman (ange@hplb.hpl.hp.com), based on
|
|
||||||
'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU
|
|
||||||
Emacs distribution.
|
|
||||||
|
|
||||||
Please mail bugs and suggestions to the author at the above address.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* HISTORY
|
|
||||||
* 11-Nov-1990 bristor@simba
|
|
||||||
* Added EOT stuff.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file incorporates new features added by Bob Weiner <weiner@mot.com>,
|
|
||||||
* Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
|
|
||||||
* Please see the note at the end of the README file for details.
|
|
||||||
*
|
|
||||||
* (If gnuserv came bundled with your emacs, the README file is probably
|
|
||||||
* ../etc/gnuserv.README relative to the directory containing this file)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define NO_SHORTNAMES
|
|
||||||
|
|
||||||
#define PATCHLEVEL 2
|
|
||||||
|
|
||||||
#define NO_SHORTNAMES
|
|
||||||
/* gnuserv should not be compiled using SOCKS */
|
|
||||||
#define DO_NOT_SOCKSIFY
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/error.h>
|
|
||||||
#undef read
|
|
||||||
#undef write
|
|
||||||
#undef open
|
|
||||||
#undef close
|
|
||||||
#undef signal
|
|
||||||
|
|
||||||
/* Define the communication method between server and clients:
|
|
||||||
* You can have either or both kinds of sockets, but you can't mix
|
|
||||||
* sockets with sysv ipc
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define INTERNET_DOMAIN_SOCKETS
|
|
||||||
#define UNIX_DOMAIN_SOCKETS
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define additional authentication protocols to be used. These methods will
|
|
||||||
* be tried before falling back to the default gnuserv protocol (based on
|
|
||||||
* the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1
|
|
||||||
* is also supported.
|
|
||||||
*
|
|
||||||
* Comment out the next line(s) if you don't want to enable the
|
|
||||||
* appropriate authentication protocol.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined (HAVE_XAUTH)
|
|
||||||
#define AUTH_MAGIC_COOKIE
|
|
||||||
#endif /* HAVE_XAUTH */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* stuff related to supporting MIT-MAGIC-COOKIE-1
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define MCOOKIE_SCREEN "42980" /* screen # to use as the gnuserv cookie */
|
|
||||||
#endif
|
|
||||||
#define MCOOKIE_NAME "MAGIC-1" /* authentication protocol name */
|
|
||||||
#define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1" /* as needed by X */
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAUTH_NAME "GNU-SECURE" /* name of default auth protocol */
|
|
||||||
#define AUTH_TIMEOUT 15 /* # seconds to wait for auth data */
|
|
||||||
#define AUTH_NAMESZ 15 /* max allows auth protocol name size */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pick a default communication scheme, if none was specified.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS)
|
|
||||||
|
|
||||||
/* BSD systems use Unix Domain sockets by default */
|
|
||||||
|
|
||||||
#ifdef BSD
|
|
||||||
#define UNIX_DOMAIN_SOCKETS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* No communication method pre-defined */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If you are using SYSV_IPC, you might want to make the buffer size bigger
|
|
||||||
* since it limits the size of requests and responses. Don't make it bigger
|
|
||||||
* than your system's max message size though (usually a couple of k) or else
|
|
||||||
* msgsend will start failing. For sockets, using the system BUFSIZ is usually
|
|
||||||
* what you want.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
|
|
||||||
|
|
||||||
#ifdef INTERNET_DOMAIN_SOCKETS
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#define TABLE_SIZE 101 /* The number of entries in the hash table */
|
|
||||||
#define HASH(host) host /* Rather simplistic hash function */
|
|
||||||
#define DEFAULT_PORT 21490 /* default port number to use is
|
|
||||||
* DEFAULT_PORT + uid */
|
|
||||||
#endif /* INTERNET_DOMAIN_SOCKETS */
|
|
||||||
|
|
||||||
#ifdef UNIX_DOMAIN_SOCKETS
|
|
||||||
#include <sys/un.h>
|
|
||||||
#define HIDE_UNIX_SOCKET /* put the unix socket in a protected dir */
|
|
||||||
#endif /* UNIX_DOMAIN_SOCKETS */
|
|
||||||
|
|
||||||
#define HOSTNAMSZ 255 /* max size of a hostname */
|
|
||||||
#define REPLYSIZ 300 /* max size of reply from server to client */
|
|
||||||
#undef FALSE
|
|
||||||
#define FALSE 0
|
|
||||||
#undef TRUE
|
|
||||||
#define TRUE 1
|
|
||||||
|
|
||||||
/* The casts shut Sun's compiler up and are safe in the context these
|
|
||||||
are actually used. */
|
|
||||||
#define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y))
|
|
||||||
#define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y))
|
|
||||||
|
|
||||||
#ifndef _NFILE /* rough guess at maximum number of open files */
|
|
||||||
#define _NFILE 20
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define EOT_STR "\004"
|
|
||||||
#define EOT_CHR '\004'
|
|
||||||
|
|
||||||
/* connection types */
|
|
||||||
#define CONN_UNIX 0
|
|
||||||
#define CONN_INTERNET 1
|
|
||||||
#define CONN_IPC 2
|
|
||||||
|
|
||||||
/* function declarations */
|
|
||||||
int glibtop_make_connection (const char *hostarg, int portarg, int *s);
|
|
||||||
|
|
||||||
#ifdef INTERNET_DOMAIN_SOCKETS
|
|
||||||
long glibtop_internet_addr (const char *host);
|
|
||||||
#endif
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user