Compare commits
553 Commits
LIBGTOP_1_
...
LIBGTOP_2_
Author | SHA1 | Date | |
---|---|---|---|
|
892c59f8a8 | ||
|
07ec479243 | ||
|
45b69b3277 | ||
|
ea9147a717 | ||
|
dc0de7a8c0 | ||
|
5884e4c6d7 | ||
|
0ef0f65d95 | ||
|
355a8dd9b9 | ||
|
2b221cbb1f | ||
|
1cffda35ec | ||
|
64b86ef8e3 | ||
|
aa7d624aca | ||
|
bb174b24e9 | ||
|
1d00248f3d | ||
|
c2895a9aa0 | ||
|
576aed18ba | ||
|
a4ee15727c | ||
|
6cd93d82a0 | ||
|
1d73fbed99 | ||
|
89e79ee51f | ||
|
f3be4b50a9 | ||
|
ab1d1077d6 | ||
|
3c7c79944c | ||
|
897db07104 | ||
|
4bd9752d52 | ||
|
a795ff4847 | ||
|
58c15ceeda | ||
|
f3e89490d4 | ||
|
10e619439e | ||
|
05f3377934 | ||
|
2ae3495a87 | ||
|
bbea6f3e16 | ||
|
74afd1c1d1 | ||
|
1c57c82637 | ||
|
857b940e93 | ||
|
aac28131d8 | ||
|
a3c4323de4 | ||
|
6ae17d92b2 | ||
|
0fa183a762 | ||
|
567da04f9c | ||
|
a046e42f3f | ||
|
c881020dc3 | ||
|
116348de15 | ||
|
b48b12e12b | ||
|
1c61b27933 | ||
|
7b86568eb0 | ||
|
60ccb2ca26 | ||
|
1cc7293497 | ||
|
62ee900299 | ||
|
00f9d271f2 | ||
|
16073f4179 | ||
|
a3a2c8cf21 | ||
|
d9aca3dd2c | ||
|
a931b14a9b | ||
|
87f2a442d9 | ||
|
d06db7bd7a | ||
|
49aa40e524 | ||
|
955b2d5c82 | ||
|
e25dba32e2 | ||
|
bf20705511 | ||
|
53a7a2e40c | ||
|
e8d4ffed34 | ||
|
056a7e5cc5 | ||
|
c1fd4120c5 | ||
|
d076fa81cc | ||
|
79fdd6cd3b | ||
|
291d63f2b9 | ||
|
f93de2fd0b | ||
|
cea6b6292d | ||
|
9ea55a3f4d | ||
|
310a51dd8f | ||
|
0cd19c9db1 | ||
|
04290020ea | ||
|
315397219b | ||
|
b836fa0c60 | ||
|
765064dd80 | ||
|
02d7b4b3de | ||
|
fc130166dd | ||
|
1625b5304f | ||
|
3a3ac84cae | ||
|
db6de7b017 | ||
|
a544c1ddb0 | ||
|
31133cc3dc | ||
|
58b323cfab | ||
|
07d991f383 | ||
|
a50e5fdc9a | ||
|
10305e7fd0 | ||
|
33fb22edd3 | ||
|
b2283f7c79 | ||
|
adc9a55578 | ||
|
ac8f958305 | ||
|
40a615e1df | ||
|
b67e4c7f7d | ||
|
ba36a20cb8 | ||
|
af8478ca5f | ||
|
532aec1891 | ||
|
cdfa0dfa1f | ||
|
21c4e155dd | ||
|
45273d9a44 | ||
|
80aeb305c2 | ||
|
4c8ae9e25c | ||
|
bae16b467f | ||
|
5e28a55218 | ||
|
4d0bca118a | ||
|
c3011b646c | ||
|
b94a36c719 | ||
|
7aaa4454ab | ||
|
6572ee1baf | ||
|
c95d39dde7 | ||
|
a32503df9b | ||
|
d31e33d4bf | ||
|
09becf3b7d | ||
|
6e9589702f | ||
|
ab7f98d2ff | ||
|
75b2832076 | ||
|
142a323364 | ||
|
3a4a550e06 | ||
|
2fc6e07c0f | ||
|
2d4db7f03f | ||
|
9b87f4586e | ||
|
9ff3af644c | ||
|
ffb5f13711 | ||
|
6dbc1e0d4a | ||
|
c660c08b6f | ||
|
2ce38167e1 | ||
|
7cad52aaa0 | ||
|
61f8cb7ff2 | ||
|
f05ee369d5 | ||
|
c3bfcf38a8 | ||
|
1552efa493 | ||
|
9bb1b80751 | ||
|
40140ad487 | ||
|
47e518d612 | ||
|
4e4cf10334 | ||
|
b02653eef9 | ||
|
bfb2d1b25c | ||
|
1042379d6d | ||
|
240d07da28 | ||
|
fb2247a58b | ||
|
c04ee88f00 | ||
|
1b44968284 | ||
|
47bad7fac1 | ||
|
7691d85225 | ||
|
d0863b7406 | ||
|
7afa0e0be7 | ||
|
0c260bfef1 | ||
|
312baf1bc2 | ||
|
1dc0883059 | ||
|
222b93c33f | ||
|
db93479a51 | ||
|
236d2b18e7 | ||
|
08956770d2 | ||
|
7a7c6baf55 | ||
|
5bfb085021 | ||
|
dfb9d6f967 | ||
|
530cc00ae7 | ||
|
a3557112a7 | ||
|
3f34aafc6e | ||
|
d6630b9f7a | ||
|
3b7c109916 | ||
|
c5fcc9aad6 | ||
|
f4fc67f85c | ||
|
bcc4ec968e | ||
|
543b3b9160 | ||
|
aac46b6daf | ||
|
407514e4d7 | ||
|
1491ccc594 | ||
|
14b462fdc5 | ||
|
1c64d5c704 | ||
|
21ecc84514 | ||
|
b7acfa6441 | ||
|
de0391e6a4 | ||
|
56e7068a8b | ||
|
ed9140570e | ||
|
ae5ecfe538 | ||
|
fdd8cb8d27 | ||
|
2c986b988f | ||
|
46cf060788 | ||
|
6ded77b938 | ||
|
b730035db5 | ||
|
38755e23a3 | ||
|
94a24147c7 | ||
|
5e08479a71 | ||
|
bb24644744 | ||
|
eb8fd1d1be | ||
|
f349d3a624 | ||
|
a0b236f4f7 | ||
|
e5e1729baf | ||
|
b035190e66 | ||
|
427504e7ac | ||
|
33c49d7c14 | ||
|
c24b7f3bc4 | ||
|
e76a450779 | ||
|
c0fc0f4cb4 | ||
|
5c597901ad | ||
|
d3145d1b8b | ||
|
1ac0f147b7 | ||
|
fdb4a824fc | ||
|
2449e92804 | ||
|
7846ac218d | ||
|
5b34c23069 | ||
|
b6ee365761 | ||
|
e4f5543f9d | ||
|
a7f8debaa2 | ||
|
34e8918003 | ||
|
478be2d170 | ||
|
8a78a93e0c | ||
|
622eb0ea5b | ||
|
455118131e | ||
|
74ab42d100 | ||
|
d294298c7e | ||
|
4befe086c4 | ||
|
98930be564 | ||
|
16b81f0d91 | ||
|
dfd678599f | ||
|
6e4f80b8e2 | ||
|
f704c4becf | ||
|
9ab1889a3f | ||
|
201e78d00a | ||
|
d8cb698ae4 | ||
|
876b2725c0 | ||
|
c06a084fcf | ||
|
cee38c53bc | ||
|
81b009733e | ||
|
035b387463 | ||
|
158dec2b2a | ||
|
752d5b47d2 | ||
|
c15ff3f342 | ||
|
7a7e7d1bc3 | ||
|
6511ad348b | ||
|
5b1eb2290a | ||
|
00aed22f17 | ||
|
15c1ad1bd9 | ||
|
e1d552d9f7 | ||
|
60749e0bef | ||
|
bd01a45455 | ||
|
54529c2425 | ||
|
cf62a380bf | ||
|
ab2a4e6e6a | ||
|
7a9428a0e5 | ||
|
da80f53deb | ||
|
ae15c4159c | ||
|
eaee97b2bf | ||
|
94882bbc60 | ||
|
1e02e69b4a | ||
|
8277cc4d67 | ||
|
29858d29d8 | ||
|
984baf22f2 | ||
|
cdd3862061 | ||
|
c7cec23cf4 | ||
|
55b6e2e082 | ||
|
7d481fc8e9 | ||
|
50a02de454 | ||
|
1fcdf1af86 | ||
|
c62a74fb5a | ||
|
608ac42afe | ||
|
99a3b1fe82 | ||
|
ec00e62a54 | ||
|
29060eb6ce | ||
|
5301e8a86a | ||
|
dc103ad41d | ||
|
de91c11f87 | ||
|
b6091762ac | ||
|
4719557dae | ||
|
f4a05d8fc9 | ||
|
0ff66c2eaa | ||
|
a40a438ec8 | ||
|
718cd38098 | ||
|
6b88dcd4aa | ||
|
29b428608d | ||
|
e487fc30f4 | ||
|
578e5a5194 | ||
|
fb08ec7144 | ||
|
a51ffb6b73 | ||
|
0ecdde94c2 | ||
|
969260c9a9 | ||
|
fe00191113 | ||
|
60f0ea7dc2 | ||
|
d6c8167076 | ||
|
26b2aaa2db | ||
|
0b45f63e61 | ||
|
a790130414 | ||
|
f36d5e5370 | ||
|
5dbfe42493 | ||
|
76f1fb641c | ||
|
7b30b1ec86 | ||
|
9e2a8f7db8 | ||
|
d6a6d70c75 | ||
|
da16460aad | ||
|
444ede9949 | ||
|
b25b0cf4d4 | ||
|
f282240c0c | ||
|
8d6e26a8d6 | ||
|
62af029665 | ||
|
e43f1a64c5 | ||
|
f92c264826 | ||
|
350e4e799d | ||
|
6c6d8e006e | ||
|
df3901571d | ||
|
a4db88252e | ||
|
48440ac59b | ||
|
c3a55796c2 | ||
|
33a659ab06 | ||
|
5e8644d736 | ||
|
14e7219160 | ||
|
5f0246b07d | ||
|
fa20de8904 | ||
|
00d9dd7065 | ||
|
0a3a0c1a34 | ||
|
a9ed25e7fc | ||
|
e577aa3d08 | ||
|
8bcbf2f86c | ||
|
1e9cb3ea2a | ||
|
7e24f71432 | ||
|
4dad0e5b8c | ||
|
9dc214b3e7 | ||
|
7700a6525e | ||
|
28150c48f7 | ||
|
1f6916b5d0 | ||
|
36c36b9afb | ||
|
6402efe196 | ||
|
00a32c887c | ||
|
c92bf0f9a9 | ||
|
44027f6bd2 | ||
|
3fec7a0946 | ||
|
47d4322965 | ||
|
7ae71b3d8f | ||
|
a73800ae2d | ||
|
b124998639 | ||
|
238d03677a | ||
|
0f3babc8e9 | ||
|
55ff827b50 | ||
|
0daf65ef73 | ||
|
2eab7cfc48 | ||
|
a691993a86 | ||
|
d3e83afb0a | ||
|
129e4bc0ac | ||
|
faec393b8d | ||
|
a7d39be2b5 | ||
|
8892637796 | ||
|
00a9f98ee0 | ||
|
4b8a9ece16 | ||
|
fc8645245a | ||
|
2d4553adf2 | ||
|
5f02295a63 | ||
|
8b1dd440ee | ||
|
77a1a6a43d | ||
|
e9c8125828 | ||
|
3212af2fb4 | ||
|
52dbe1469d | ||
|
837ee6bcc6 | ||
|
8a85be8f00 | ||
|
3455d025a2 | ||
|
d2f4502e74 | ||
|
2144fab671 | ||
|
e8c90833e8 | ||
|
d567c86818 | ||
|
931ba0fa8d | ||
|
8da7cfd032 | ||
|
3fa1063b74 | ||
|
e2d5319441 | ||
|
85a7719f39 | ||
|
490a05d01c | ||
|
b54197c2e1 | ||
|
86dbeab484 | ||
|
15da337d8a | ||
|
992e064952 | ||
|
26ff5dbd79 | ||
|
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 |
14
.cvsignore
14
.cvsignore
@@ -13,7 +13,6 @@ gtopConf.sh
|
||||
i386-bsdi
|
||||
i686-pc-linux-gnu
|
||||
intl
|
||||
libgtop-0.01.tar.gz
|
||||
libgtop-mirror.sh.swp
|
||||
libgtopConf.sh
|
||||
libtool
|
||||
@@ -31,12 +30,7 @@ i686-pc-linux-gnu-linux
|
||||
libgtop-config
|
||||
ABOUT-NLS
|
||||
libgtop.spec
|
||||
libgtop-0.99.*.tar.gz
|
||||
libgtop-0.99.*
|
||||
install-sh
|
||||
mkinstalldirs
|
||||
missing
|
||||
INSTALL
|
||||
COPYING
|
||||
glibtop-config.h
|
||||
stamp-gc-h
|
||||
libgtop*.tar.gz
|
||||
*-debstamp
|
||||
libgtop*.pc
|
||||
autom4te.cache
|
||||
|
@@ -7,19 +7,22 @@
|
||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
||||
#
|
||||
LIBGTOP_MAJOR_VERSION=1
|
||||
LIBGTOP_MINOR_VERSION=1
|
||||
LIBGTOP_MICRO_VERSION=2
|
||||
LIBGTOP_MINOR_VERSION=90
|
||||
LIBGTOP_MICRO_VERSION=0
|
||||
|
||||
LIBGTOP_INTERFACE_AGE=2
|
||||
LIBGTOP_BINARY_AGE=2
|
||||
LIBGTOP_INTERFACE_AGE=0
|
||||
LIBGTOP_BINARY_AGE=0
|
||||
# you can set this to `-snap' for instance to create
|
||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||
LIBGTOP_VERSION_SUFFIX=
|
||||
|
||||
# Increase each time you change the client/server protocol.
|
||||
LIBGTOP_SERVER_VERSION=50
|
||||
LIBGTOP_SERVER_VERSION=5
|
||||
|
||||
# Don't change this
|
||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||
LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc`
|
||||
|
||||
# For automake.
|
||||
VERSION=$LIBGTOP_VERSION
|
||||
VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX
|
||||
PACKAGE=libgtop
|
||||
|
100
Makefile.am
100
Makefile.am
@@ -1,99 +1,19 @@
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
if EXAMPLES
|
||||
examples_SUBDIRS = examples
|
||||
else
|
||||
examples_SUBDIRS =
|
||||
endif
|
||||
SUBDIRS = po misc include sysdeps lib src examples doc
|
||||
|
||||
if BUILD_GNOME_SUPPORT
|
||||
support = support
|
||||
endif
|
||||
libgtopinclude_HEADERS = glibtop.h
|
||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||
|
||||
SUBDIRS = po intl $(support) macros misc include sysdeps lib src \
|
||||
$(examples_SUBDIRS) doc
|
||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
|
||||
LIBGTOP-VERSION features.def \
|
||||
libgtop-sysdeps.m4 README \
|
||||
libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4
|
||||
|
||||
include_HEADERS = glibtop.h
|
||||
configincludedir = $(pkglibdir)/include
|
||||
|
||||
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
|
||||
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
|
||||
RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \
|
||||
libgtop-mirror.sh
|
||||
|
||||
configinclude_DATA = \
|
||||
glibtop-config.h
|
||||
|
||||
BUILT_SOURCES = stamp-gc-h #note: not glibtop-config.h
|
||||
glibtop-config.h: stamp-gc-h
|
||||
@:
|
||||
stamp-gc-h: config.status
|
||||
CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=glibtop-config.h ./config.status
|
||||
echo timestamp > stamp-gc-h
|
||||
|
||||
dist-hook: libgtop.spec
|
||||
dist-hook:
|
||||
cp libgtop.spec $(distdir)
|
||||
|
||||
release:
|
||||
$(MAKE) dist distdir=$(PACKAGE)-$(VERSION)
|
||||
|
||||
## Put `exec' in the name because this should be installed by
|
||||
## `install-exec', not `install-data'.
|
||||
confexecdir = $(libdir)
|
||||
confexec_DATA = $(top_builddir)/libgtopConf.sh \
|
||||
$(top_builddir)/libgtop-features.def
|
||||
|
||||
CLEANFILES=libgtopConf.sh
|
||||
|
||||
bin_SCRIPTS = $(top_builddir)/libgtop-config
|
||||
|
||||
## to automatically rebuild aclocal.m4 if any of the macros in
|
||||
## `macros/' change
|
||||
@MAINT@ include macros/macros.dep
|
||||
@MAINT@macros/macros.dep: macros/Makefile.am
|
||||
@MAINT@ cd macros && $(MAKE) macros.dep
|
||||
|
||||
@MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4
|
||||
|
||||
## We create libgtopConf.sh here and not from configure because we want
|
||||
## to get the paths expanded correctly. Macros like srcdir are given
|
||||
## the value NONE in configure if the user doesn't specify them (this
|
||||
## is an autoconf feature, not a bug).
|
||||
libgtopConf.sh: libgtopConf.sh.in Makefile
|
||||
## Use sed and then mv to avoid problems if the user interrupts.
|
||||
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
||||
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#g' \
|
||||
-e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \
|
||||
-e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||
-e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \
|
||||
-e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \
|
||||
-e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \
|
||||
-e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \
|
||||
-e 's#\@LIBGTOP_GUILE_LIBS\@#$(LIBGTOP_GUILE_LIBS)#g' \
|
||||
-e 's#\@LIBGTOP_GUILE_INCS\@#$(LIBGTOP_GUILE_INCS)#g' \
|
||||
-e 's#\@LIBGTOP_GUILE_NAMES_LIBS\@#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \
|
||||
-e 's#\@LIBGTOP_GUILE_NAMES_INCS\@#$(LIBGTOP_GUILE_NAMES_INCS)#g' \
|
||||
-e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \
|
||||
-e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \
|
||||
-e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \
|
||||
-e 's#\@LIBGTOP_MINOR_VERSION\@#$(LIBGTOP_MINOR_VERSION)#g' \
|
||||
-e 's#\@LIBGTOP_MICRO_VERSION\@#$(LIBGTOP_MICRO_VERSION)#g' \
|
||||
-e 's#\@LIBGTOP_VERSION\@#$(LIBGTOP_VERSION)#g' \
|
||||
-e 's#\@LIBGTOP_VERSION_CODE\@#$(LIBGTOP_VERSION_CODE)#g' \
|
||||
-e 's#\@LIBGTOP_SERVER_VERSION\@#$(LIBGTOP_SERVER_VERSION)#g' \
|
||||
-e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \
|
||||
-e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \
|
||||
-e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \
|
||||
-e 's#\@libgtop_guile_found\@#$(libgtop_guile_found)#g' \
|
||||
-e 's#\@libgtop_want_examples\@#$(libgtop_want_examples)#g' \
|
||||
< $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
|
||||
&& mv libgtopConf.tmp libgtopConf.sh
|
||||
|
||||
libgtop-config: libgtop-config.in Makefile
|
||||
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
|
||||
< $(srcdir)/libgtop-config.in > libgtop-config.tmp \
|
||||
&& mv libgtop-config.tmp libgtop-config && \
|
||||
chmod 755 libgtop-config
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libgtop-2.0.pc
|
||||
|
||||
libgtop-features.def: features.def
|
||||
@LN_S@ $< $@
|
||||
|
82
NEWS
82
NEWS
@@ -1,8 +1,82 @@
|
||||
October 19, 1999:
|
||||
March 11, 2004:
|
||||
===============
|
||||
|
||||
* Released LibGTop 2.5.99 "Gross Work", dedicated to people who do push-ups
|
||||
in the loos.
|
||||
|
||||
- plenty of code cleanups
|
||||
|
||||
- removed the dependency on libgnome, only glib required now
|
||||
|
||||
- Linux 2.6 support, NetBSD support and better FreeBSD support
|
||||
|
||||
- Make the block size available for filesystem statistics
|
||||
|
||||
February 27, 2001:
|
||||
=================
|
||||
|
||||
* Released LibGTop 1.0.12 "Gerolzhofen".
|
||||
|
||||
- fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits).
|
||||
|
||||
- fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses
|
||||
`_KERNEL' instead of `KERNEL'). Bug #51334.
|
||||
|
||||
- for BSDI, comment out `subnet' field in netload; this should make
|
||||
it compile, but there may be other problems. Bug #13345.
|
||||
|
||||
This release is for GNOME 1.4 Beta2.
|
||||
|
||||
February 14, 2001:
|
||||
=================
|
||||
|
||||
* Released LibGTop 1.0.11 "Jasmin":
|
||||
|
||||
[The release which was supposed to be called "Gerolzhofen".]
|
||||
|
||||
- merged in the Solaris code from LIBGTOP_1_1_2_PATCHES.
|
||||
|
||||
- minor OpenBSD fixes.
|
||||
|
||||
- again a bunch of updated translations.
|
||||
|
||||
Please test the Solaris stuff and report and bugs and
|
||||
problems as soon as possible; I'll make a new release
|
||||
for the 2nd beta of GNOME 1.4 if necessary.
|
||||
|
||||
November 20, 2000:
|
||||
=================
|
||||
|
||||
* Released LibGTop 1.0.10 "November Rain":
|
||||
|
||||
- this release contains a bunch of updated translations.
|
||||
|
||||
May 25, 2000:
|
||||
============
|
||||
|
||||
* Released LibGTop 1.0.9 "Stuttgart".
|
||||
|
||||
(LibGTop 1.0.8 "Frankfurt" was not publically released.)
|
||||
|
||||
February 15, 2000:
|
||||
=================
|
||||
|
||||
* Released LibGTop 1.0.7 "Copenhagen":
|
||||
|
||||
- this is a bug fix release for the GUADEC CD-ROM;
|
||||
it contains fixes in both the Linux and *BSD sysdeps
|
||||
directory.
|
||||
|
||||
October 18, 1999:
|
||||
================
|
||||
|
||||
* Released LibGTop 1.1.2 "Hardangervidda"
|
||||
* Released LibGTop 1.0.6 "October LibGTop":
|
||||
|
||||
This is a stable release from the development branch
|
||||
of LibGTop for Solaris users of October GNOME.
|
||||
- compilation fixes for FreeBSD.
|
||||
- updated reference manual.
|
||||
|
||||
September 29, 1999:
|
||||
==================
|
||||
|
||||
* Released LibGTop 1.0.5.
|
||||
|
||||
|
36
README
36
README
@@ -1,32 +1,8 @@
|
||||
This is the *development* branch of LibGTop. It is indended
|
||||
for people who want to help with the development of LibGTop and
|
||||
not for end-users.
|
||||
$Id$
|
||||
|
||||
Please use the LIBGTOP_STABLE_1_0 branch (which is LibGTop 1.0.x)
|
||||
unless you're really a developer.
|
||||
LATEST NEWS:
|
||||
===========
|
||||
|
||||
If you're using LibGTop from CVS simply do a
|
||||
|
||||
cvs update -r LIBGTOP_STABLE_1_0
|
||||
|
||||
to get the latest version from the stable branch.
|
||||
|
||||
However, I'll periodically make snapshot releases from the development
|
||||
branch for Solaris users of LibGTop.
|
||||
|
||||
They can be found at
|
||||
|
||||
ftp://ftp.home-of-linux.org/pub/libgtop/1.1/
|
||||
|
||||
in near future.
|
||||
|
||||
Using released tarballs from the development branch is a lot better than
|
||||
compiling directly from CVS since things in CVS may not always work as
|
||||
expected.
|
||||
|
||||
Note that releases from the developer branch are neither binary
|
||||
nor fully source compatible; you'll normally have to recompile
|
||||
everything that use them.
|
||||
|
||||
October 1999
|
||||
Martin Baulig
|
||||
Please look also in the file 'NEWS' for latest news.
|
||||
|
||||
Martin
|
||||
|
146
RELNOTES-0.25
146
RELNOTES-0.25
@@ -1,146 +0,0 @@
|
||||
RELEASE NOTES FOR LIBGTOP 0.25 STABLE
|
||||
=====================================
|
||||
|
||||
OVERVIEW
|
||||
--------
|
||||
|
||||
LibGTop is a library that read information about processes and the running
|
||||
systems. This information include:
|
||||
|
||||
General System Information
|
||||
|
||||
cpu - CPU Usage
|
||||
mem - Memory Usage
|
||||
swap - Swap Usage (including paging activity)
|
||||
loadavg - Load average (including nr_running, nr_tasks, last_pid)
|
||||
uptime - Uptime and Idle time, can be calculated from CPU usage
|
||||
|
||||
SYS V IPC Limits:
|
||||
|
||||
shm_limits - Shared Memory Limits
|
||||
msg_limits - Message Queue Limits
|
||||
sem_limits - Semaphore Set Limits
|
||||
|
||||
Process List:
|
||||
|
||||
proclist - List of processes
|
||||
|
||||
Process information:
|
||||
|
||||
proc_state - cmd, state, uid, gid
|
||||
proc_uid - uid,euid,gid,egid,pid,ppid,pgrp
|
||||
session,tty,tpgid,priority,nice
|
||||
proc_mem - size,vsize,resident,share,rss,rss_rlim
|
||||
proc_time - start_time,rtime,utime,stime,cutime,cstime
|
||||
timeout,it_real_value,frequency
|
||||
proc_signal - signal,blocked,sigignore,sigcatch
|
||||
proc_kernel - k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
|
||||
kstk_esp,kstk_eip,nwchan,wchan
|
||||
proc_segment - text_rss,shlib_rss,data_rss,stack_rss,dirty_size
|
||||
start_code,end_code,start_stack
|
||||
|
||||
Process maps:
|
||||
|
||||
proc_map - Process map (/proc/<pid>/maps under Linux)
|
||||
|
||||
File system usage:
|
||||
|
||||
mountlist - List of currently mounted filesystems
|
||||
fsusage - File system usage
|
||||
|
||||
PORTABILITY:
|
||||
-----------
|
||||
|
||||
LibGtop is designed to be as portable as possible. None of the functions
|
||||
and retrieved information should be specific to a specific operating
|
||||
system. So you only need to port the system dependent part of the library
|
||||
to a new system and all application programs can then use libgtop on this
|
||||
new system.
|
||||
|
||||
CLIENT/SERVER MODEL:
|
||||
-------------------
|
||||
|
||||
Some systems like DEC OSF/1 or BSD require special priviledges for the calling
|
||||
proces to fetch the required information (SUID root/SGID kmem). To solve this
|
||||
problem, I designed a client/server model which makes a call to a SUID/SGID
|
||||
server which fetches the required information whenever it is required. This
|
||||
server is only called for features that really require priviledges, otherwise
|
||||
the sysdeps code is called directory (every user can get the CPU usage on
|
||||
DEC OSF/1, but only root can get information about processes other than the
|
||||
current one).
|
||||
|
||||
There is also some kind of daemon which can be used to fetch information from
|
||||
remote systems (still experimental). This daemon normally runs as nobody and
|
||||
calls the SUID/SGID itself when needed.
|
||||
|
||||
GNOME APPLETS:
|
||||
--------------
|
||||
|
||||
There are some applets and applications which already use LibGTop. They can
|
||||
be found in the `libgtop-apps' module in the GNOME CVS tree:
|
||||
|
||||
* Applets: cpuload, cpumemusage - they need LibGTop to get their information
|
||||
on all systems other than Linux.
|
||||
|
||||
* Applets: diskusage - just uses the mountlist/fsusage features of LibGTop,
|
||||
the one in gnome-core also works on other systems.
|
||||
|
||||
* Applets: multiload - I enhanced the cpuload applet a little bit, it is
|
||||
now a multi applet and can display CPU, Memory and
|
||||
Swap usages.
|
||||
|
||||
GTOP:
|
||||
----
|
||||
|
||||
This cool GNOME app has been ported to use LibGTop. It can be found in
|
||||
`libgtop-apps/gtop' in the GNOME CVS tree.
|
||||
|
||||
You can now use nearly the full functionality of GTop on FreeBSD !
|
||||
|
||||
|
||||
PLATTFORM SPECIFIC NOTES FOR LINUX:
|
||||
==================================
|
||||
|
||||
Under Linux, LibGTop should work without problems and read everything
|
||||
from /proc.
|
||||
|
||||
There is also an experimental kernel interface to read this information
|
||||
directly from the kernel with a system call - but this is still experimental
|
||||
and not well tested while I made this release.
|
||||
|
||||
PLATTFORM SPECIFIC NOTES FOR FREEBSD:
|
||||
====================================
|
||||
|
||||
LibGTop should now work under FreeBSD and give you the full functionality
|
||||
of GTop.
|
||||
|
||||
There are a few caveats:
|
||||
|
||||
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to kmem
|
||||
after installation and mount the /proc filesystem of FreeBSD
|
||||
(/proc/<pid>/mem is used withing kvm_uread ()).
|
||||
|
||||
* To get the filenames of the process maps displayed in GTop, you need to
|
||||
configure with the `--with-libgtop-inodedb' option (you need GDBM for this
|
||||
to work).
|
||||
|
||||
* You have then to create an inode database which is used to look up to
|
||||
filenames. This is done using the `mkinodedb' program which comes along
|
||||
with libgtop.
|
||||
|
||||
See the file src/inodedb/README for details:
|
||||
|
||||
The `mkinodedb' program which is build in this directory takes two
|
||||
command line arguments: the full pathname of the database to be created
|
||||
and the name of a configuration file consisting of directory and file names
|
||||
each on a line by itself - see `/etc/ld.so.conf' for an example.
|
||||
|
||||
Putting a directory name in this file means all regular files found in this
|
||||
directory are included in the database, but it will not recursively descend
|
||||
into subdirectories (for instance, we want everythink in `/usr/lib' but not
|
||||
every single file in `/usr/lib/sgml'). You can also use filenames to include
|
||||
a single file.
|
||||
|
||||
Have fun,
|
||||
|
||||
Martin <martin@home-of-linux.org>
|
163
RELNOTES-1.0
163
RELNOTES-1.0
@@ -1,163 +0,0 @@
|
||||
RELEASE NOTES FOR LIBGTOP 1.0 STABLE
|
||||
====================================
|
||||
|
||||
OVERVIEW
|
||||
--------
|
||||
|
||||
LibGTop is a library that read information about processes and the
|
||||
running systems. This information include:
|
||||
|
||||
General System Information:
|
||||
|
||||
cpu - CPU Usage
|
||||
mem - Memory Usage
|
||||
swap - Swap Usage (including paging activity)
|
||||
loadavg - Load average (including nr_running, nr_tasks, last_pid)
|
||||
uptime - Uptime and Idle time, can be calculated from CPU usage
|
||||
|
||||
SYS V IPC Limits:
|
||||
|
||||
shm_limits - Shared Memory Limits
|
||||
msg_limits - Message Queue Limits
|
||||
sem_limits - Semaphore Set Limits
|
||||
|
||||
Network:
|
||||
|
||||
netload - Network load
|
||||
ppp - PPP statistics
|
||||
|
||||
Process List:
|
||||
|
||||
proclist - List of processes
|
||||
|
||||
Process information:
|
||||
|
||||
proc_state - cmd, state, uid, gid
|
||||
proc_uid - uid,euid,gid,egid,pid,ppid,pgrp
|
||||
session,tty,tpgid,priority,nice
|
||||
proc_mem - size,vsize,resident,share,rss,rss_rlim
|
||||
proc_time - start_time,rtime,utime,stime,cutime,cstime
|
||||
timeout,it_real_value,frequency
|
||||
proc_signal - signal,blocked,sigignore,sigcatch
|
||||
proc_kernel - k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt
|
||||
kstk_esp,kstk_eip,nwchan,wchan
|
||||
proc_segment - text_rss,shlib_rss,data_rss,stack_rss,dirty_size
|
||||
start_code,end_code,start_stack
|
||||
|
||||
Process maps:
|
||||
|
||||
proc_args - Command line arguments
|
||||
proc_map - Process map (/proc/<pid>/maps under Linux)
|
||||
|
||||
File system usage:
|
||||
|
||||
mountlist - List of currently mounted filesystems
|
||||
fsusage - File system usage
|
||||
|
||||
PORTABILITY:
|
||||
-----------
|
||||
|
||||
LibGTop is designed to be as portable as possible. None of the
|
||||
functions and retrieved information should be specific to a specific
|
||||
operating system. So you only need to port the system dependent part
|
||||
of the library to a new system and all application programs can then
|
||||
use libgtop on this new system.
|
||||
|
||||
CLIENT/SERVER MODEL:
|
||||
-------------------
|
||||
|
||||
Some systems like DEC OSF/1 or BSD require special privileges for the
|
||||
calling process to fetch the required information (SUID root/SGID
|
||||
kmem). To solve this problem, I designed a client/server model which
|
||||
makes a call to a SUID/SGID server which fetches the required
|
||||
information whenever it is required. This server is only called for
|
||||
features that really require privileges, otherwise the sysdeps code
|
||||
is called directory (every user can get the CPU usage on DEC OSF/1,
|
||||
but only root can get information about processes other than the
|
||||
current one).
|
||||
|
||||
There is also some kind of daemon which can be used to fetch
|
||||
information from remote systems (still experimental). This daemon
|
||||
normally runs as nobody and calls the SUID/SGID itself when needed.
|
||||
|
||||
LIBGTOP AND GNOME:
|
||||
-----------------
|
||||
|
||||
LibGTop is currently used in various places in the GNOME Project,
|
||||
for instance in some of the applets in gnome-core and - of cause -
|
||||
this ultra-cool application called GTop ...
|
||||
|
||||
Although LibGTop is not specific to GNOME and under LGPL license, I
|
||||
spent most my time during the last months to work in the GNOME project
|
||||
so this is the primary use for LibGTop (and currently the only one).
|
||||
|
||||
However, you can also give its configure.in script the `--without-gnome'
|
||||
parameter and then use it fully without GNOME in your own applications.
|
||||
|
||||
LIBGTOP AND GNOME - PART II:
|
||||
---------------------------
|
||||
|
||||
LibGTop was tested with FreeBSD 3.0 but it should also work with
|
||||
FreeBSD 2.2.7, NetBSD and OpenBSD.
|
||||
|
||||
Currently my primary aim is to help the GNOME people with our 1.0 release
|
||||
so I won't have much time to test it with any other system than Linux.
|
||||
|
||||
However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for
|
||||
LibGTop and whenever I get bug reports I will do my best to fix them as
|
||||
quickly as possible.
|
||||
|
||||
PLATFORM SPECIFIC NOTES FOR LINUX:
|
||||
==================================
|
||||
|
||||
Under Linux, LibGTop should work without problems and read everything
|
||||
from /proc.
|
||||
|
||||
LibGTop 0.25 also had an experimental kernel interface to read this
|
||||
information directly from the kernel with a system call - but I have
|
||||
currently dropped support for this as I am too busy with GNOME
|
||||
development to keep current with kernel hacking.
|
||||
|
||||
PLATFORM SPECIFIC NOTES FOR SOLARIS:
|
||||
====================================
|
||||
|
||||
Since so many people were asking me about this:
|
||||
|
||||
LibGTop currently does not have any support for Solaris, and it will
|
||||
never have until some volunteer writes the code for it. I can't do this
|
||||
myself since I do not have any machine to test it on.
|
||||
|
||||
PLATFORM SPECIFIC NOTES FOR BSD:
|
||||
=================================
|
||||
|
||||
There are a few caveats:
|
||||
|
||||
* You need to manually make the `$(prefix)/bin/libgtop_server' SGID to
|
||||
kmem after installation and mount the /proc file system of FreeBSD
|
||||
(/proc/<pid>/mem is used within kvm_uread ()).
|
||||
|
||||
* To get the filenames of the process maps displayed in GTop, you need
|
||||
to configure with the `--with-libgtop-inodedb' option (you need GDBM
|
||||
for this to work).
|
||||
|
||||
You have then to create an inode database which is used to look up
|
||||
filenames. This is done using the `mkinodedb' program which comes
|
||||
along with libgtop.
|
||||
|
||||
See the file src/inodedb/README for details:
|
||||
|
||||
The `mkinodedb' program which is build in this directory takes two
|
||||
command line arguments: the full pathname of the database to be
|
||||
created and the name of a configuration file consisting of directory
|
||||
and file names each on a line by itself - see `/etc/ld.so.conf' for
|
||||
an example.
|
||||
|
||||
Putting a directory name in this file means all regular files found
|
||||
in this directory are included in the database, but it will not
|
||||
recursively descend into subdirectories (for instance, we want
|
||||
everything in `/usr/lib' but not every single file in `/usr/lib/sgml').
|
||||
You can also use filenames to include a single file.
|
||||
|
||||
Have fun,
|
||||
|
||||
Martin <martin@home-of-linux.org>
|
@@ -1,46 +0,0 @@
|
||||
RELEASE NOTES FOR LIBGTOP 1.1.2
|
||||
===============================
|
||||
|
||||
This is a snapshot release for Solaris users of October GNOME. It contains
|
||||
a first version of the Solaris port of LibGTop which works at least on
|
||||
Solaris 7.
|
||||
|
||||
Please use LibGTop 1.0.x if you're not on a Solaris system
|
||||
(look at the README file for details).
|
||||
|
||||
IMPORTANT CHANGES SINCE 1.0:
|
||||
----------------------------
|
||||
|
||||
* 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
|
@@ -18,6 +18,7 @@
|
||||
|
||||
#undef ENABLE_NLS
|
||||
#undef HAVE_CATGETS
|
||||
#undef GETTEXT_PACKAGE
|
||||
#undef HAVE_GETTEXT
|
||||
#undef HAVE_LC_MESSAGES
|
||||
#undef HAVE_STPCPY
|
||||
@@ -125,7 +126,7 @@
|
||||
#undef HAVE_GUILE
|
||||
|
||||
#undef ssize_t
|
||||
#undef u_int64_t
|
||||
#undef guint64
|
||||
#undef int64_t
|
||||
|
||||
#undef HAVE_GLIBTOP_MACHINE_H
|
||||
@@ -138,7 +139,7 @@
|
||||
|
||||
#undef NEED_LIBGTOP
|
||||
|
||||
#undef HAVE_LINUX_SYSCTL
|
||||
#undef HAVE_LINUX_TABLE
|
||||
#undef HAVE_LIBGTOP_SMP
|
||||
|
||||
#undef HAVE_XAUTH
|
||||
|
878
acinclude.m4
Normal file
878
acinclude.m4
Normal file
@@ -0,0 +1,878 @@
|
||||
dnl This is just copied m4s from need-declaration.m4 gnome-fileutils.m4
|
||||
dnl gnome-supprt-checks.m4 and a little from gnome-libgtop-check.m4
|
||||
dnl and finally libgtop-sysdeps.m4
|
||||
|
||||
dnl
|
||||
dnl LIBGTOP_CHECK_TYPE
|
||||
dnl
|
||||
dnl Improved version of AC_CHECK_TYPE which takes into account
|
||||
dnl that we need to #include some other header files on some
|
||||
dnl systems to get some types.
|
||||
|
||||
dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT)
|
||||
AC_DEFUN([AC_LIBGTOP_CHECK_TYPE],
|
||||
[AC_REQUIRE([AC_HEADER_STDC])dnl
|
||||
AC_MSG_CHECKING(for $1)
|
||||
AC_CACHE_VAL(ac_cv_type_$1,
|
||||
[AC_EGREP_CPP(dnl
|
||||
changequote(<<,>>)dnl
|
||||
<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
|
||||
changequote([,]), [#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#endif
|
||||
|
||||
/* For Tru64 */
|
||||
#ifdef HAVE_SYS_BITYPES_H
|
||||
#include <sys/bitypes.h>
|
||||
#endif
|
||||
], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
|
||||
AC_MSG_RESULT($ac_cv_type_$1)
|
||||
if test $ac_cv_type_$1 = no; then
|
||||
AC_DEFINE($1, $2)
|
||||
fi
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl GNOME_LIBGTOP_TYPES
|
||||
dnl
|
||||
dnl some typechecks for libgtop.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GNOME_LIBGTOP_TYPES],
|
||||
[
|
||||
AC_CHECK_HEADERS(sys/bitypes.h)
|
||||
])
|
||||
|
||||
dnl See whether we need a declaration for a function.
|
||||
dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
|
||||
AC_DEFUN([GCC_NEED_DECLARATION],
|
||||
[AC_MSG_CHECKING([whether $1 must be declared])
|
||||
AC_CACHE_VAL(gcc_cv_decl_needed_$1,
|
||||
[AC_TRY_COMPILE([
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#else
|
||||
#ifdef HAVE_STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAVE_STDLIB_H
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
$2],
|
||||
[char *(*pfn) = (char *(*)) $1],
|
||||
eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")])
|
||||
if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
gcc_need_declarations="$gcc_need_declarations $1"
|
||||
gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
AC_DEFINE_UNQUOTED($gcc_tr_decl)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
])dnl
|
||||
|
||||
dnl Check multiple functions to see whether each needs a declaration.
|
||||
dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
|
||||
AC_DEFUN([GCC_NEED_DECLARATIONS],
|
||||
[for ac_func in $1
|
||||
do
|
||||
GCC_NEED_DECLARATION($ac_func, $2)
|
||||
done
|
||||
]
|
||||
)
|
||||
|
||||
dnl
|
||||
dnl GNOME_FILEUTILS_CHECKS
|
||||
dnl
|
||||
dnl checks that are needed for the diskusage applet.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GNOME_FILEUTILS_CHECKS],
|
||||
[
|
||||
AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \
|
||||
mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \
|
||||
sys/filsys.h sys/fs_types.h sys/fs/s5param.h)
|
||||
|
||||
AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \
|
||||
getcwd getmntinfo gettimeofday isascii lchown \
|
||||
listmntent memcpy mkfifo strchr strerror strrchr vprintf)
|
||||
|
||||
dnl Set some defaults when cross-compiling
|
||||
|
||||
if test x$cross_compiling = xyes ; then
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
fu_cv_sys_mounted_getmntent1=yes
|
||||
fu_cv_sys_stat_statfs2_bsize=yes
|
||||
;;
|
||||
sunos*)
|
||||
fu_cv_sys_stat_statfs4=yes
|
||||
;;
|
||||
freebsd*)
|
||||
fu_cv_sys_stat_statfs2_bsize=yes
|
||||
;;
|
||||
osf*)
|
||||
fu_cv_sys_stat_statfs3_osf1=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Determine how to get the list of mounted filesystems.
|
||||
list_mounted_fs=
|
||||
|
||||
# If the getmntent function is available but not in the standard library,
|
||||
# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX).
|
||||
AC_FUNC_GETMNTENT
|
||||
|
||||
# This test must precede the ones for getmntent because Unicos-9 is
|
||||
# reported to have the getmntent function, but its support is incompatible
|
||||
# with other getmntent implementations.
|
||||
|
||||
# NOTE: Normally, I wouldn't use a check for system type as I've done for
|
||||
# `CRAY' below since that goes against the whole autoconf philosophy. But
|
||||
# I think there is too great a chance that some non-Cray system has a
|
||||
# function named listmntent to risk the false positive.
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# Cray UNICOS 9
|
||||
AC_MSG_CHECKING([for listmntent of Cray/Unicos-9])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent,
|
||||
[fu_cv_sys_mounted_cray_listmntent=no
|
||||
AC_EGREP_CPP(yes,
|
||||
[#ifdef _CRAY
|
||||
yes
|
||||
#endif
|
||||
], [test $ac_cv_func_listmntent = yes \
|
||||
&& fu_cv_sys_mounted_cray_listmntent=yes]
|
||||
)
|
||||
]
|
||||
)
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
|
||||
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_LISTMNTENT)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $ac_cv_func_getmntent = yes; then
|
||||
|
||||
# This system has the getmntent function.
|
||||
# Determine whether it's the one-argument variant or the two-argument one.
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# 4.3BSD, SunOS, HP-UX, Dynix, Irix
|
||||
AC_MSG_CHECKING([for one-argument getmntent function])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
|
||||
[test $ac_cv_header_mntent_h = yes \
|
||||
&& fu_cv_sys_mounted_getmntent1=yes \
|
||||
|| fu_cv_sys_mounted_getmntent1=no])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
|
||||
if test $fu_cv_sys_mounted_getmntent1 = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT1)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# SVR4
|
||||
AC_MSG_CHECKING([for two-argument getmntent function])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2,
|
||||
[AC_EGREP_HEADER(getmntent, sys/mnttab.h,
|
||||
fu_cv_sys_mounted_getmntent2=yes,
|
||||
fu_cv_sys_mounted_getmntent2=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
|
||||
if test $fu_cv_sys_mounted_getmntent2 = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT2)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# DEC Alpha running OSF/1.
|
||||
AC_MSG_CHECKING([for getfsstat function])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_getsstat,
|
||||
[AC_TRY_LINK([
|
||||
#include <sys/types.h>
|
||||
#include <sys/mount.h>
|
||||
#include <sys/fs_types.h>],
|
||||
[struct statfs *stats;
|
||||
int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ],
|
||||
fu_cv_sys_mounted_getsstat=yes,
|
||||
fu_cv_sys_mounted_getsstat=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
|
||||
if test $fu_cv_sys_mounted_getsstat = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETFSSTAT)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# AIX.
|
||||
AC_MSG_CHECKING([for mntctl function and struct vmount])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_vmount,
|
||||
[AC_TRY_CPP([#include <fshelp.h>],
|
||||
fu_cv_sys_mounted_vmount=yes,
|
||||
fu_cv_sys_mounted_vmount=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
|
||||
if test $fu_cv_sys_mounted_vmount = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_VMOUNT)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# SVR3
|
||||
AC_MSG_CHECKING([for FIXME existence of three headers])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp,
|
||||
[AC_TRY_CPP([
|
||||
#include <sys/statfs.h>
|
||||
#include <sys/fstyp.h>
|
||||
#include <mnttab.h>],
|
||||
fu_cv_sys_mounted_fread_fstyp=yes,
|
||||
fu_cv_sys_mounted_fread_fstyp=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
|
||||
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD_FSTYP)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# 4.4BSD and DEC OSF/1.
|
||||
AC_MSG_CHECKING([for getmntinfo function])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
|
||||
[
|
||||
ok=
|
||||
if test $ac_cv_func_getmntinfo = yes; then
|
||||
AC_EGREP_HEADER(f_type;, sys/mount.h,
|
||||
ok=yes)
|
||||
fi
|
||||
test -n "$ok" \
|
||||
&& fu_cv_sys_mounted_getmntinfo=yes \
|
||||
|| fu_cv_sys_mounted_getmntinfo=no
|
||||
])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
|
||||
if test $fu_cv_sys_mounted_getmntinfo = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTINFO)
|
||||
fi
|
||||
fi
|
||||
|
||||
# FIXME: add a test for netbsd-1.1 here
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# Ultrix
|
||||
AC_MSG_CHECKING([for getmnt function])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_getmnt,
|
||||
[AC_TRY_CPP([
|
||||
#include <sys/fs_types.h>
|
||||
#include <sys/mount.h>],
|
||||
fu_cv_sys_mounted_getmnt=yes,
|
||||
fu_cv_sys_mounted_getmnt=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
|
||||
if test $fu_cv_sys_mounted_getmnt = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNT)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
# SVR2
|
||||
AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab])
|
||||
AC_CACHE_VAL(fu_cv_sys_mounted_fread,
|
||||
[AC_TRY_CPP([#include <mnttab.h>],
|
||||
fu_cv_sys_mounted_fread=yes,
|
||||
fu_cv_sys_mounted_fread=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
|
||||
if test $fu_cv_sys_mounted_fread = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
||||
# FIXME -- no need to abort building the whole package
|
||||
# Cannot build mountlist.c or anything that needs its functions
|
||||
fi
|
||||
|
||||
AC_CHECKING(how to get filesystem space usage)
|
||||
space=no
|
||||
|
||||
# Perform only the link test since it seems there are no variants of the
|
||||
# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
|
||||
# because that got a false positive on SCO OSR5. Adding the declaration
|
||||
# of a `struct statvfs' causes this test to fail (as it should) on such
|
||||
# systems. That system is reported to work fine with STAT_STATFS4 which
|
||||
# is what it gets when this test fails.
|
||||
if test $space = no; then
|
||||
# SVR4
|
||||
AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
|
||||
[AC_TRY_LINK([#include <sys/types.h>
|
||||
#include <sys/statvfs.h>],
|
||||
[struct statvfs fsd; statvfs (0, &fsd);],
|
||||
fu_cv_sys_stat_statvfs=yes,
|
||||
fu_cv_sys_stat_statvfs=no)])
|
||||
if test $fu_cv_sys_stat_statvfs = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATVFS)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# DEC Alpha running OSF/1
|
||||
AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
|
||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
|
||||
[AC_TRY_RUN([
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/mount.h>
|
||||
int main ()
|
||||
{
|
||||
struct statfs fsd;
|
||||
fsd.f_fsize = 0;
|
||||
return (statfs (".", &fsd, sizeof (struct statfs)));
|
||||
}],
|
||||
fu_cv_sys_stat_statfs3_osf1=yes,
|
||||
fu_cv_sys_stat_statfs3_osf1=no,
|
||||
fu_cv_sys_stat_statfs3_osf1=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
|
||||
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS3_OSF1)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# AIX
|
||||
AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
|
||||
member (AIX, 4.3BSD)])
|
||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
|
||||
[AC_TRY_RUN([
|
||||
#ifdef HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_MOUNT_H
|
||||
#include <sys/mount.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_VFS_H
|
||||
#include <sys/vfs.h>
|
||||
#endif
|
||||
int main ()
|
||||
{
|
||||
struct statfs fsd;
|
||||
fsd.f_bsize = 0;
|
||||
return (statfs (".", &fsd));
|
||||
}],
|
||||
fu_cv_sys_stat_statfs2_bsize=yes,
|
||||
fu_cv_sys_stat_statfs2_bsize=no,
|
||||
fu_cv_sys_stat_statfs2_bsize=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
|
||||
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS2_BSIZE)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# SVR3
|
||||
AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
|
||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
|
||||
[AC_TRY_RUN([#include <sys/types.h>
|
||||
#include <sys/statfs.h>
|
||||
int main ()
|
||||
{
|
||||
struct statfs fsd;
|
||||
return (statfs (".", &fsd, sizeof fsd, 0));
|
||||
}],
|
||||
fu_cv_sys_stat_statfs4=yes,
|
||||
fu_cv_sys_stat_statfs4=no,
|
||||
fu_cv_sys_stat_statfs4=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
|
||||
if test $fu_cv_sys_stat_statfs4 = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS4)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# 4.4BSD and NetBSD
|
||||
AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
|
||||
member (4.4BSD and NetBSD)])
|
||||
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
|
||||
[AC_TRY_RUN([#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_MOUNT_H
|
||||
#include <sys/mount.h>
|
||||
#endif
|
||||
int main ()
|
||||
{
|
||||
struct statfs fsd;
|
||||
fsd.f_fsize = 0;
|
||||
return (statfs (".", &fsd));
|
||||
}],
|
||||
fu_cv_sys_stat_statfs2_fsize=yes,
|
||||
fu_cv_sys_stat_statfs2_fsize=no,
|
||||
fu_cv_sys_stat_statfs2_fsize=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
|
||||
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS2_FSIZE)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# Ultrix
|
||||
AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
|
||||
AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
|
||||
[AC_TRY_RUN([#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_MOUNT_H
|
||||
#include <sys/mount.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_FS_TYPES_H
|
||||
#include <sys/fs_types.h>
|
||||
#endif
|
||||
int main ()
|
||||
{
|
||||
struct fs_data fsd;
|
||||
/* Ultrix's statfs returns 1 for success,
|
||||
0 for not mounted, -1 for failure. */
|
||||
return (statfs (".", &fsd) != 1);
|
||||
}],
|
||||
fu_cv_sys_stat_fs_data=yes,
|
||||
fu_cv_sys_stat_fs_data=no,
|
||||
fu_cv_sys_stat_fs_data=no)])
|
||||
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
|
||||
if test $fu_cv_sys_stat_fs_data = yes; then
|
||||
space=yes
|
||||
AC_DEFINE(STAT_STATFS2_FS_DATA)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $space = no; then
|
||||
# SVR2
|
||||
AC_TRY_CPP([#include <sys/filsys.h>],
|
||||
AC_DEFINE(STAT_READ_FILSYS) space=yes)
|
||||
fi
|
||||
|
||||
if test -n "$list_mounted_fs" && test $space != no; then
|
||||
DF_PROG="df"
|
||||
# AC_LIBOBJ(fsusage)
|
||||
# AC_LIBOBJ(mountlist)
|
||||
fi
|
||||
|
||||
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
|
||||
# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
|
||||
# enable the work-around code in fsusage.c.
|
||||
AC_MSG_CHECKING([for statfs that truncates block counts])
|
||||
AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
|
||||
[AC_TRY_COMPILE([
|
||||
#if !defined(sun) && !defined(__sun)
|
||||
choke -- this is a workaround for a Sun-specific problem
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/vfs.h>],
|
||||
[struct statfs t; long c = *(t.f_spare);],
|
||||
fu_cv_sys_truncating_statfs=yes,
|
||||
fu_cv_sys_truncating_statfs=no,
|
||||
)])
|
||||
if test $fu_cv_sys_truncating_statfs = yes; then
|
||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
|
||||
fi
|
||||
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
||||
|
||||
AC_CHECKING(for AFS)
|
||||
test -d /afs && AC_DEFINE(AFS)
|
||||
])
|
||||
|
||||
dnl GNOME_SUPPORT_CHECKS
|
||||
dnl Check for various support functions needed by the standard
|
||||
dnl Gnome libraries. Sets LIBOBJS, might define some macros.
|
||||
dnl This should only be used when building the Gnome libs;
|
||||
dnl Gnome clients should not need this macro.
|
||||
AC_DEFUN([GNOME_SUPPORT_CHECKS],[
|
||||
# we need an `awk' to build `gnomesupport.h'
|
||||
AC_REQUIRE([AC_PROG_AWK])
|
||||
|
||||
# this should go away soon
|
||||
need_gnome_support=yes
|
||||
|
||||
AC_CHECK_FUNCS(getopt_long,,
|
||||
[AC_LIBOBJ(getopt)
|
||||
AC_LIBOBJ(getopt1)])
|
||||
|
||||
# for `scandir'
|
||||
AC_HEADER_DIRENT
|
||||
|
||||
# copied from `configure.in' of `libiberty'
|
||||
vars="program_invocation_short_name program_invocation_name sys_errlist"
|
||||
for v in $vars; do
|
||||
AC_MSG_CHECKING([for $v])
|
||||
AC_CACHE_VAL(gnome_cv_var_$v,
|
||||
[AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
|
||||
[eval "gnome_cv_var_$v=yes"],
|
||||
[eval "gnome_cv_var_$v=no"])])
|
||||
if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
AC_DEFINE_UNQUOTED($n)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
done
|
||||
|
||||
AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
|
||||
AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
|
||||
|
||||
AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize))
|
||||
|
||||
# to include `error.c' error.c has some HAVE_* checks
|
||||
AC_CHECK_FUNCS(vprintf doprnt strerror_r)
|
||||
# stolen from am_func_error_at_line
|
||||
AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
|
||||
[AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
|
||||
am_cv_lib_error_at_line=yes,
|
||||
am_cv_lib_error_at_line=no)])
|
||||
if test $am_cv_lib_error_at_line = no; then
|
||||
AC_LIBOBJ(error)
|
||||
fi
|
||||
|
||||
# This is required if we declare setreuid () and setregid ().
|
||||
AC_TYPE_UID_T
|
||||
|
||||
# see if we need to declare some functions. Solaris is notorious for
|
||||
# putting functions into the `libc' but not listing them in the headers
|
||||
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
|
||||
GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
|
||||
GCC_NEED_DECLARATION(scandir,[
|
||||
#ifdef HAVE_DIRENT_H
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
])
|
||||
|
||||
AC_SUBST(need_gnome_support)
|
||||
|
||||
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
|
||||
])
|
||||
|
||||
|
||||
dnl This file is intended for use both internally in libgtop and in every program
|
||||
dnl that wants to use it.
|
||||
dnl
|
||||
dnl It defines the following variables:
|
||||
dnl
|
||||
dnl * 'libgtop_sysdeps_dir' - sysdeps dir for libgtop.
|
||||
dnl * 'libgtop_use_machine_h' - some of system dependend parts of libgtop provide
|
||||
dnl their own header file. In this case we need to
|
||||
dnl define 'HAVE_GLIBTOP_MACHINE_H'.
|
||||
dnl * 'libgtop_need_server' - is the server really needed? Defines 'NEED_LIBGTOP'
|
||||
dnl if true; defines conditional 'NEED_LIBGTOP'.
|
||||
|
||||
AC_DEFUN([LIBGTOP_HACKER_TESTS],[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
AC_ARG_WITH(linux-table,
|
||||
[ --with-linux-table Use the table () function from Martin Baulig],
|
||||
[linux_table="$withval"],[linux_table=auto])
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
if test $linux_table = yes ; then
|
||||
AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no)
|
||||
elif test $linux_table = auto ; then
|
||||
AC_MSG_CHECKING(for table function in Linux Kernel)
|
||||
AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/table.h>
|
||||
|
||||
#include <syscall.h>
|
||||
|
||||
static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param);
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
union table tbl;
|
||||
int ret;
|
||||
|
||||
ret = table (TABLE_VERSION, NULL, NULL);
|
||||
|
||||
if (ret == -1)
|
||||
exit (-errno);
|
||||
|
||||
exit (ret < 1 ? ret : 0);
|
||||
}
|
||||
], linux_table=yes, linux_table=no, linux_table=no)
|
||||
AC_MSG_RESULT($linux_table)
|
||||
fi
|
||||
if test $linux_table = yes ; then
|
||||
AC_DEFINE(HAVE_LINUX_TABLE)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
AC_SUBST(libgtop_sysdeps_dir)
|
||||
AC_SUBST(libgtop_use_machine_h)
|
||||
AC_SUBST(libgtop_need_server)
|
||||
|
||||
AC_ARG_WITH(libgtop-examples,
|
||||
[ --with-libgtop-examples Build the libgtop examples (default=no)],[
|
||||
build_examples="$withval"], [build_examples=no])
|
||||
|
||||
AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes)
|
||||
|
||||
AC_ARG_ENABLE(hacker-mode,
|
||||
[ --enable-hacker-mode Enable building of unstable sysdeps],
|
||||
[hacker_mode="$enableval"], [hacker_mode=no])
|
||||
|
||||
AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes)
|
||||
|
||||
linux_table=auto
|
||||
if test x$hacker_mode = xyes ; then
|
||||
LIBGTOP_HACKER_TESTS
|
||||
fi
|
||||
AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes)
|
||||
|
||||
AC_ARG_WITH(libgtop-smp,
|
||||
[ --with-libgtop-smp Enable SMP support (default-auto)],[
|
||||
libgtop_smp="$withval"],[libgtop_smp=auto])
|
||||
|
||||
if test $libgtop_smp = auto ; then
|
||||
AC_MSG_CHECKING(whether to enable SMP support)
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
libgtop_smp=yes
|
||||
;;
|
||||
aix*)
|
||||
libgtop_smp=yes
|
||||
;;
|
||||
*)
|
||||
libgtop_smp=no
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT($libgtop_smp)
|
||||
fi
|
||||
|
||||
if test $libgtop_smp = yes ; then
|
||||
AC_DEFINE(HAVE_LIBGTOP_SMP)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes)
|
||||
|
||||
AC_MSG_CHECKING(for libgtop sysdeps directory)
|
||||
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
if test x$linux_table = xyes ; then
|
||||
libgtop_sysdeps_dir=kernel
|
||||
libgtop_use_machine_h=no
|
||||
else
|
||||
libgtop_sysdeps_dir=linux
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_have_sysinfo=yes
|
||||
fi
|
||||
libgtop_need_server=no
|
||||
;;
|
||||
freebsd*|netbsd*|openbsd*|bsdi*)
|
||||
libgtop_sysdeps_dir=freebsd
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||
;;
|
||||
solaris*)
|
||||
libgtop_sysdeps_dir=solaris
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||
;;
|
||||
aix*)
|
||||
libgtop_sysdeps_dir=aix
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
|
||||
;;
|
||||
*)
|
||||
if test x$hacker_mode = xyes ; then
|
||||
case "$host_os" in
|
||||
sunos4*)
|
||||
#Please note that this port is obsolete and not working at
|
||||
#all. It is only useful for people who want to fix it ... :-)
|
||||
libgtop_sysdeps_dir=sun4
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
osf*)
|
||||
libgtop_sysdeps_dir=osf1
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
*)
|
||||
libgtop_sysdeps_dir=stub
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
;;
|
||||
esac
|
||||
else
|
||||
libgtop_sysdeps_dir=stub
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
test -z "$libgtop_postinstall" && libgtop_postinstall=:
|
||||
|
||||
AC_MSG_RESULT($libgtop_sysdeps_dir)
|
||||
|
||||
AC_SUBST(libgtop_sysdeps_dir)
|
||||
AC_SUBST(libgtop_postinstall)
|
||||
AC_SUBST(libgtop_have_sysinfo)
|
||||
|
||||
case "$host_os" in
|
||||
*bsd*)
|
||||
AC_CHECK_HEADERS(net/if_var.h)
|
||||
AC_MSG_CHECKING([for I4B])
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_types.h>
|
||||
|
||||
#ifdef HAVE_NET_IF_VAR_H
|
||||
#include <net/if_var.h>
|
||||
#endif
|
||||
|
||||
#include <net/netisr.h>
|
||||
#include <net/route.h>
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#include <net/if_sppp.h>
|
||||
#else
|
||||
#include <i4b/sppp/if_sppp.h>
|
||||
#endif
|
||||
],[
|
||||
size_t size = sizeof (struct sppp);
|
||||
], have_i4b=yes, have_i4b=no)
|
||||
AC_MSG_RESULT($have_i4b)
|
||||
if test x$have_i4b = xyes; then
|
||||
AC_DEFINE(HAVE_I4B)
|
||||
AC_MSG_CHECKING([for I4B accounting])
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_types.h>
|
||||
|
||||
#ifdef HAVE_NET_IF_VAR_H
|
||||
#include <net/if_var.h>
|
||||
#endif
|
||||
|
||||
#include <net/netisr.h>
|
||||
#include <net/route.h>
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#include <net/if_sppp.h>
|
||||
#else
|
||||
#include <i4b/sppp/if_sppp.h>
|
||||
#endif
|
||||
|
||||
#include <machine/i4b_acct.h>
|
||||
],[
|
||||
size_t size = sizeof (struct i4bisppp_softc);
|
||||
], have_i4b_acct=yes, have_i4b_acct=no)
|
||||
AC_MSG_RESULT($have_i4b_acct)
|
||||
if test x$have_i4b_acct = xyes ; then
|
||||
AC_DEFINE(HAVE_I4B_ACCT)
|
||||
else
|
||||
AC_WARN([
|
||||
*** I4B accounting disabled - you won't get any PPP statistics.
|
||||
*** Read "misc/i4b_acct.txt" in the LibGTop source directory
|
||||
*** to see how to enable it.])
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
linux*)
|
||||
os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||
os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q"
|
||||
|
||||
AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes,
|
||||
have_linux_version_h=no)
|
||||
|
||||
if test x$have_linux_version_h = xyes ; then
|
||||
version_code=`cat /usr/include/linux/version.h | \
|
||||
grep \#define | grep LINUX_VERSION_CODE`
|
||||
os_version_code=`echo $version_code | \
|
||||
sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'`
|
||||
else
|
||||
os_version_code=`echo "$os_version_expr" | dc`
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(for Linux kernel version code)
|
||||
AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code)
|
||||
AC_MSG_RESULT($os_version_code)
|
||||
;;
|
||||
solaris*)
|
||||
os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'`
|
||||
os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'`
|
||||
os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'`
|
||||
test -z "$os_micro_version" && os_micro_version=0
|
||||
os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q"
|
||||
os_version_code=`echo "$os_version_expr" | dc`
|
||||
|
||||
AC_MSG_CHECKING(for Solaris release code)
|
||||
AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code)
|
||||
AC_MSG_RESULT($os_version_code)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir)
|
||||
AC_MSG_RESULT($libgtop_use_machine_h)
|
||||
|
||||
AC_MSG_CHECKING(whether we need libgtop)
|
||||
AC_MSG_RESULT($libgtop_need_server)
|
||||
|
||||
if test x$libgtop_need_server = xyes ; then
|
||||
AC_DEFINE(NEED_LIBGTOP)
|
||||
fi
|
||||
|
||||
if test x$libgtop_use_machine_h = xyes ; then
|
||||
AC_DEFINE(HAVE_GLIBTOP_MACHINE_H)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
|
||||
])
|
||||
|
||||
|
@@ -14,4 +14,8 @@ PKG_NAME="Gnome Top Library"
|
||||
exit 1
|
||||
}
|
||||
|
||||
. $srcdir/macros/autogen.sh
|
||||
which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common from the GNOME CVS"
|
||||
exit 1
|
||||
}
|
||||
USE_GNOME2_MACROS=1 . gnome-autogen.sh
|
||||
|
5
backends/.cvsignore
Normal file
5
backends/.cvsignore
Normal file
@@ -0,0 +1,5 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
15
backends/Makefile.am
Normal file
15
backends/Makefile.am
Normal file
@@ -0,0 +1,15 @@
|
||||
if NEED_LIBGTOP
|
||||
server_dir = server
|
||||
else
|
||||
server_dir =
|
||||
endif
|
||||
|
||||
if HAVE_SYSDEPS
|
||||
sysdeps_dir = sysdeps
|
||||
else
|
||||
sysdeps_dir =
|
||||
endif
|
||||
|
||||
SUBDIRS = $(server_dir) $(sysdeps_dir) common
|
||||
|
||||
DIST_SUBDIRS = server sysdeps common
|
7
backends/common/.cvsignore
Normal file
7
backends/common/.cvsignore
Normal file
@@ -0,0 +1,7 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
*.la
|
||||
marshal.c
|
50
backends/common/ChangeLog
Normal file
50
backends/common/ChangeLog
Normal file
@@ -0,0 +1,50 @@
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-common.c: (_open_common): s/u_int64_t/guint64/
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-common.h: fixed compilation
|
||||
|
||||
2000-11-26 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* glibtop-backend-private.h: Removed.
|
||||
|
||||
* backend-common.h: New files.
|
||||
|
||||
* backend-common.c (_open_common): Don't overwrite
|
||||
`backend->_priv'.
|
||||
|
||||
2000-11-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Link libgtop_backend_common.la against
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la and
|
||||
$(top_builddir)/lib/libgtop_server.la.
|
||||
|
||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* backend-sysdeps.c (LibGTopBackendInfo): Call this
|
||||
`LibGTopBackendInfo_Common' when we don't use gmodule.
|
||||
|
||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
|
||||
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
|
||||
|
||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
|
||||
|
||||
* libgtop-common.backend: New file.
|
||||
|
||||
* backend-common.c (glibtop_backend_common): Renamed to
|
||||
`LibGTopBackendInfo'.
|
||||
|
||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
Initial version of the "glibtop-backend-common" backend.
|
||||
|
||||
* backend-common.c: New file.
|
||||
* glibtop-backend-private.h: New file.
|
||||
* marshal.pl: New file. Automatically creates `marshal.c'.
|
||||
|
47
backends/common/Makefile.am
Normal file
47
backends/common/Makefile.am
Normal file
@@ -0,0 +1,47 @@
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
if LIBGTOP_USE_GMODULE
|
||||
backendlibdir = $(backenddir)
|
||||
else
|
||||
backendlibdir = $(libdir)
|
||||
endif
|
||||
|
||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-common.backend
|
||||
|
||||
noinst_HEADERS = \
|
||||
backend-common.h
|
||||
|
||||
backendlib_LTLIBRARIES = \
|
||||
libgtop_backend_common.la
|
||||
|
||||
libgtop_backend_common_la_SOURCES = \
|
||||
backend-common.c \
|
||||
marshal.c
|
||||
|
||||
libgtop_backend_common_la_LDFLAGS = \
|
||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
||||
|
||||
libgtop_backend_common_la_LIBADD = \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/lib/libgtop_server.la
|
||||
|
||||
BUILT_SOURCES = \
|
||||
marshal.c
|
||||
|
||||
EXTRA_DIST = \
|
||||
marshal.pl \
|
||||
libgtop-common.backend
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t marshal.c
|
||||
|
61
backends/common/backend-common.c
Normal file
61
backends/common/backend-common.c
Normal file
@@ -0,0 +1,61 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-common.h>
|
||||
|
||||
static int
|
||||
_open_common (glibtop_server *, glibtop_backend *, guint64, const char **);
|
||||
|
||||
static int
|
||||
_close_common (glibtop_server *, glibtop_backend *, void *closure);
|
||||
|
||||
extern glibtop_call_vector glibtop_backend_common_call_vector;
|
||||
|
||||
#ifdef LIBGTOP_USE_GMODULE
|
||||
glibtop_backend_info LibGTopBackendInfo = {
|
||||
"glibtop-backend-common", _open_common, _close_common,
|
||||
&glibtop_backend_common_call_vector
|
||||
};
|
||||
#else
|
||||
glibtop_backend_info LibGTopBackendInfo_Common = {
|
||||
"glibtop-backend-common", _open_common, _close_common,
|
||||
&glibtop_backend_common_call_vector
|
||||
};
|
||||
#endif
|
||||
|
||||
static int
|
||||
_open_common (glibtop_server *server, glibtop_backend *backend,
|
||||
guint64 features, const char **backend_args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
_close_common (glibtop_server *server, glibtop_backend *backend,
|
||||
void *closure)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
36
backends/common/backend-common.h
Normal file
36
backends/common/backend-common.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_COMMON_H__
|
||||
#define __GLIBTOP_BACKEND_COMMON_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/glibtop-backend.h>
|
||||
#include <glibtop/glibtop-backend-info.h>
|
||||
|
||||
#endif
|
13
backends/common/libgtop-common.backend
Normal file
13
backends/common/libgtop-common.backend
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||
|
||||
<libgtop:Backend>
|
||||
<libgtop:Name>glibtop-backend-common</libgtop:Name>
|
||||
<libgtop:Location>
|
||||
<libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName>
|
||||
<libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName>
|
||||
</libgtop:Location>
|
||||
</libgtop:Backend>
|
||||
|
||||
</libgtop:Backends>
|
175
backends/common/marshal.pl
Normal file
175
backends/common/marshal.pl
Normal file
@@ -0,0 +1,175 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 1;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* marshal.c */';
|
||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <backend-common.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include <glibtop/call-vector.h>';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $orig;
|
||||
|
||||
return unless $orig =~ /^@/;
|
||||
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$first_param_name = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
}
|
||||
}
|
||||
|
||||
if ($line_fields[3] eq '') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
||||
} else {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
||||
}
|
||||
|
||||
$func_decl = 'static '.$retval."\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
}
|
||||
|
||||
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
||||
|
||||
print $total_code;
|
||||
}
|
||||
|
||||
$call_vector_code = '';
|
||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||
$feature = $features{$nr};
|
||||
|
||||
if ($feature =~ /^@/) {
|
||||
$feature =~ s/^@//;
|
||||
|
||||
$call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature);
|
||||
} else {
|
||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||
}
|
||||
}
|
||||
|
||||
print 'glibtop_call_vector glibtop_backend_common_call_vector = {';
|
||||
print $call_vector_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
10
backends/server/.cvsignore
Normal file
10
backends/server/.cvsignore
Normal file
@@ -0,0 +1,10 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
*.la
|
||||
marshal.c
|
||||
demarshal.c
|
||||
libgtop_server
|
||||
command.h
|
121
backends/server/ChangeLog
Normal file
121
backends/server/ChangeLog
Normal file
@@ -0,0 +1,121 @@
|
||||
2004-03-09 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* command.c: (glibtop_call_i):
|
||||
* demarshal.pl:
|
||||
* marshal.pl:
|
||||
* read_data.c: (glibtop_read_data_i):
|
||||
* server.c: (handle_slave_connection): fix g_malloc usage on non-Linux
|
||||
platforms (patch by Benoit Dejean <bnet@ifrance.com>)
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-server.c: (_open_server):
|
||||
* backend-server.h:
|
||||
* command.h.in: s/u_int64_t/guint64/
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-server.h:
|
||||
* command.h.in:
|
||||
* demarshal.pl:
|
||||
* server.h: fixed compilation
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-server.c: (_open_server):
|
||||
* command.c: (glibtop_call_i):
|
||||
* demarshal.pl:
|
||||
* marshal.pl:
|
||||
* read_data.c: (glibtop_read_data_i):
|
||||
* server.c: (main), (handle_slave_connection):
|
||||
replace all the xmalloc crap by glib memory management functions
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* Makefile.am: removed traces of guile, intllibs and libgnomesupport
|
||||
|
||||
2000-11-27 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* backend-server.c (backend_server_quark): New global variable.
|
||||
(_open_server, _close_server): Use the quark.
|
||||
* commands.c: Likewise.
|
||||
|
||||
2000-11-26 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* backend-server.h: New file.
|
||||
(backend_server_private): New struct, formerly known
|
||||
as glibtop_backend_private.
|
||||
|
||||
* glibtop-backend-private.h: Removed.
|
||||
|
||||
* backend-server.c: (_open_server): Use g_object_set_data()
|
||||
to set add the backend_server_private data to the glibtop_backend,
|
||||
don't override `backend->_priv'.
|
||||
(_close_server): Use g_object_get_data() to get the data.
|
||||
[FIXME: Use quarks directly.]
|
||||
|
||||
* read.c: (glibtop_read_i): Replaced the glibtop_server and
|
||||
glibtop_backend arguments with backend_server_private.
|
||||
* read_data.c: (glibtop_read_data_i): Likewise.
|
||||
* write.c: (glibtop_write_i): Likewise.
|
||||
|
||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* backend-sysdeps.c (LibGTopBackendInfo): Call this
|
||||
`LibGTopBackendInfo_Server' when we don't use gmodule.
|
||||
|
||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
|
||||
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
|
||||
|
||||
2000-01-18 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* demarshal.pl: Only emit code for functions which are
|
||||
really suid/sgid.
|
||||
|
||||
2000-01-13 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* write.c (glibtop_write_i): The buffer which we write is
|
||||
now a `const'.
|
||||
|
||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Install everything except the server binary
|
||||
in $(LIBGTOP_BACKEND_DIR).
|
||||
|
||||
* libgtop-server.backend: New file.
|
||||
|
||||
* backend-server.c (glibtop_backend_server): Renamed to
|
||||
`LibGTopBackendInfo'.
|
||||
|
||||
2000-01-08 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* command.h.in (glibtop_response): New structure.
|
||||
|
||||
2000-01-02 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* command.pl: New file. Creates `command.h' from `command.h.in'.
|
||||
* command.h.in: New file. Template file for `command.h'.
|
||||
|
||||
* io.c, version.c: New files. Copied here from `src/daemon'.
|
||||
|
||||
* demarshal.pl: New file. Automatically creates `demarshal.c'.
|
||||
* demarshal.c: This automatically created file handles the
|
||||
demarshalling in the libgtop_server.
|
||||
|
||||
* Makefile.am: Build the `libgtop_server' here.
|
||||
* server.c, server.h: New files. Copied here from `src/daemon'.
|
||||
|
||||
2000-01-01 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
Initial version of the "glibtop-backend-server" backend.
|
||||
|
||||
* command.c, read.c, read_data.c, write.c: New files. Moved here
|
||||
from the `lib' directory.
|
||||
|
||||
* backend-server.c: New file.
|
||||
* glibtop-backend-private.h: New file.
|
||||
|
||||
* marshal.pl: New file. Automatically creates `marshal.c'.
|
||||
|
84
backends/server/Makefile.am
Normal file
84
backends/server/Makefile.am
Normal file
@@ -0,0 +1,84 @@
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
INCLUDES = @INCLUDES@ -D_BSD \
|
||||
-DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
|
||||
-DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
|
||||
-DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
|
||||
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
if LIBGTOP_USE_GMODULE
|
||||
backendlibdir = $(backenddir)
|
||||
else
|
||||
backendlibdir = $(libdir)
|
||||
endif
|
||||
|
||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-server.backend
|
||||
|
||||
noinst_HEADERS = \
|
||||
backend-server.h
|
||||
|
||||
backendlib_LTLIBRARIES = \
|
||||
libgtop_backend_server.la
|
||||
|
||||
bin_PROGRAMS = \
|
||||
@server_programs@
|
||||
|
||||
EXTRA_PROGRAMS = \
|
||||
libgtop_server
|
||||
|
||||
libgtop_backend_server_la_SOURCES = \
|
||||
backend-server.c \
|
||||
marshal.c \
|
||||
command.c \
|
||||
read.c \
|
||||
read_data.c \
|
||||
write.c
|
||||
|
||||
libgtop_backend_server_la_LDFLAGS = \
|
||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
||||
|
||||
libgtop_server_SOURCES = \
|
||||
server.c \
|
||||
server.h \
|
||||
demarshal.c \
|
||||
version.c \
|
||||
io.c
|
||||
|
||||
libgtop_server_LDADD = \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_suid_common.la
|
||||
|
||||
if ENABLE_STATIC
|
||||
libgtop_server_LDFLAGS = -static
|
||||
endif
|
||||
|
||||
BUILT_SOURCES = \
|
||||
marshal.c \
|
||||
demarshal.c \
|
||||
command.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
marshal.pl \
|
||||
demarshal.pl \
|
||||
command.pl \
|
||||
command.h.in \
|
||||
libgtop-server.backend
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t marshal.c
|
||||
|
||||
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t demarshal.c
|
||||
|
||||
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
|
||||
mv tmp-t command.h
|
||||
|
113
backends/server/backend-server.c
Normal file
113
backends/server/backend-server.c
Normal file
@@ -0,0 +1,113 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
static int
|
||||
_open_server (glibtop_server *, glibtop_backend *, guint64, const char **);
|
||||
|
||||
static int
|
||||
_close_server (glibtop_server *, glibtop_backend *, void *);
|
||||
|
||||
extern glibtop_call_vector glibtop_backend_server_call_vector;
|
||||
|
||||
#ifdef LIBGTOP_USE_GMODULE
|
||||
glibtop_backend_info LibGTopBackendInfo = {
|
||||
"glibtop-backend-server", _open_server, _close_server,
|
||||
&glibtop_backend_server_call_vector
|
||||
};
|
||||
#else
|
||||
glibtop_backend_info LibGTopBackendInfo_Server = {
|
||||
"glibtop-backend-server", _open_server, _close_server,
|
||||
&glibtop_backend_server_call_vector
|
||||
};
|
||||
#endif
|
||||
|
||||
static int
|
||||
_open_server (glibtop_server *server, glibtop_backend *backend,
|
||||
guint64 features, const char **backend_args)
|
||||
{
|
||||
backend_server_private *priv;
|
||||
|
||||
priv = g_malloc (sizeof (backend_server_private));
|
||||
|
||||
glibtop_backend_set_closure_data (backend, priv);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv);
|
||||
|
||||
fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER);
|
||||
#endif
|
||||
|
||||
if (pipe (priv->input) || pipe (priv->output)) {
|
||||
glibtop_warn_io_r (server, "cannot make a pipe");
|
||||
return -1;
|
||||
}
|
||||
|
||||
priv->pid = fork ();
|
||||
|
||||
if (priv->pid < 0) {
|
||||
glibtop_warn_io_r (server, "fork failed");
|
||||
return -1;
|
||||
} else if (priv->pid == 0) {
|
||||
close (0); close (1);
|
||||
close (priv->input [0]);
|
||||
close (priv->output [1]);
|
||||
dup2 (priv->input [1], 1);
|
||||
dup2 (priv->output [0], 0);
|
||||
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
|
||||
glibtop_error_io_r (server, "execl (%s)",
|
||||
LIBGTOP_SERVER);
|
||||
_exit (2);
|
||||
}
|
||||
|
||||
close (priv->input [1]);
|
||||
close (priv->output [0]);
|
||||
|
||||
glibtop_server_ref (server);
|
||||
priv->server = server;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
_close_server (glibtop_server *server, glibtop_backend *backend,
|
||||
void *closure)
|
||||
{
|
||||
backend_server_private *priv = closure;
|
||||
|
||||
kill (priv->pid, SIGKILL);
|
||||
close (priv->input [0]);
|
||||
close (priv->output [1]);
|
||||
|
||||
glibtop_server_unref (priv->server);
|
||||
|
||||
priv->pid = 0;
|
||||
|
||||
g_free (priv);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
65
backends/server/backend-server.h
Normal file
65
backends/server/backend-server.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_COMMON_H__
|
||||
#define __GLIBTOP_BACKEND_COMMON_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/glibtop-backend.h>
|
||||
#include <glibtop/glibtop-backend-info.h>
|
||||
|
||||
typedef struct _backend_server_private backend_server_private;
|
||||
|
||||
struct _backend_server_private
|
||||
{
|
||||
guint64 flags;
|
||||
int input [2]; /* Pipe client <- server */
|
||||
int output [2]; /* Pipe client -> server */
|
||||
pid_t pid; /* PID of the server */
|
||||
|
||||
glibtop_server *server;
|
||||
};
|
||||
|
||||
void *
|
||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
|
||||
unsigned command, size_t send_size, const void *send_ptr,
|
||||
size_t data_size, const void *data_ptr,
|
||||
size_t recv_size, void *recv_ptr,
|
||||
int *retval_ptr);
|
||||
|
||||
void
|
||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf);
|
||||
|
||||
void *
|
||||
glibtop_read_data_i (backend_server_private *priv);
|
||||
|
||||
void
|
||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf);
|
||||
|
||||
#endif
|
||||
|
100
backends/server/command.c
Normal file
100
backends/server/command.c
Normal file
@@ -0,0 +1,100 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
#include "command.h"
|
||||
|
||||
void *
|
||||
glibtop_call_i (glibtop_server *server, backend_server_private *priv,
|
||||
unsigned command, size_t send_size, const void *send_buf,
|
||||
size_t data_size, const void *data_buf,
|
||||
size_t recv_size, void *recv_ptr,
|
||||
int *retval_ptr)
|
||||
{
|
||||
glibtop_command cmnd;
|
||||
glibtop_response resp;
|
||||
#if 0
|
||||
int retval;
|
||||
#endif
|
||||
|
||||
memset (&cmnd, 0, sizeof (glibtop_command));
|
||||
memset (&resp, 0, sizeof (glibtop_response));
|
||||
|
||||
cmnd.command = command;
|
||||
|
||||
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
|
||||
* send it together with command, so we only need one system call instead
|
||||
* of two. */
|
||||
|
||||
if (send_size <= _GLIBTOP_PARAM_SIZE) {
|
||||
memcpy (cmnd.parameter, send_buf, send_size);
|
||||
cmnd.param_size = send_size;
|
||||
} else {
|
||||
cmnd.send_size = send_size;
|
||||
}
|
||||
|
||||
cmnd.data_size = data_size;
|
||||
|
||||
glibtop_write_i (priv, sizeof (glibtop_command), &cmnd);
|
||||
|
||||
if (data_size) {
|
||||
#ifdef SLAVE_DEBUG
|
||||
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
|
||||
#endif
|
||||
glibtop_write_i (priv, data_size, data_buf);
|
||||
}
|
||||
|
||||
glibtop_read_i (priv, sizeof (glibtop_response), &resp);
|
||||
|
||||
#ifdef SLAVE_DEBUG
|
||||
fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
|
||||
resp.retval, resp.glibtop_errno,
|
||||
(long) resp.recv_size, (long) resp.data_size,
|
||||
recv_ptr, (long) recv_size);
|
||||
#endif
|
||||
|
||||
if (retval_ptr)
|
||||
*retval_ptr = resp.glibtop_errno;
|
||||
|
||||
if (resp.recv_size != recv_size) {
|
||||
glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
|
||||
(long) recv_size, (long) resp.recv_size);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (recv_ptr)
|
||||
glibtop_read_i (priv, recv_size, recv_ptr);
|
||||
|
||||
if (resp.data_size) {
|
||||
void *ptr = g_malloc (resp.data_size);
|
||||
|
||||
glibtop_read_i (priv, resp.data_size, ptr);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
@@ -2,6 +2,8 @@
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
@@AUTOGEN_COMMENT@@
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
@@ -23,26 +25,35 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_XMALLOC_H__
|
||||
#define __GLIBTOP_XMALLOC_H__
|
||||
#ifndef __GLIBTOP_COMMAND_H__
|
||||
#define __GLIBTOP_COMMAND_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
#include <glibtop/union.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define glibtop_malloc(p1) glibtop_malloc_r(glibtop_global_server, p1)
|
||||
#define glibtop_calloc(p1, p2) glibtop_calloc_r(glibtop_global_server, p1, p2)
|
||||
#define glibtop_realloc(p1, p2) glibtop_realloc_r(glibtop_global_server, p1, p2)
|
||||
#define glibtop_strdup(p1) glibtop_strdup_r(glibtop_global_server, p1)
|
||||
#define glibtop_free(p1) glibtop_free_r(glibtop_global_server, p1)
|
||||
@@GLIBTOP_COMMAND_CONSTANTS@@
|
||||
|
||||
void *glibtop_malloc_r (glibtop *server, size_t size);
|
||||
void *glibtop_calloc_r (glibtop *server, size_t nmemb, size_t size);
|
||||
void *glibtop_realloc_r (glibtop *server, void *ptr, size_t size);
|
||||
char *glibtop_strdup_r (glibtop *server, const char *string);
|
||||
void glibtop_free_r (glibtop *server, const void *ptr);
|
||||
#define _GLIBTOP_PARAM_SIZE 16
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
typedef struct _glibtop_command glibtop_command;
|
||||
typedef struct _glibtop_response glibtop_response;
|
||||
|
||||
struct _glibtop_command
|
||||
{
|
||||
guint64 command;
|
||||
guint64 param_size, send_size, data_size;
|
||||
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||
};
|
||||
|
||||
struct _glibtop_response
|
||||
{
|
||||
int retval;
|
||||
int glibtop_errno;
|
||||
guint64 recv_size, data_size;
|
||||
};
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
76
backends/server/command.pl
Normal file
76
backends/server/command.pl
Normal file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
die "Usage: $0 features.def command.h.in" unless $#ARGV == 1;
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
$constants_decl_code = '';
|
||||
|
||||
open FEATURESDEF, $ARGV[1] or
|
||||
die "open ($ARGV[1]): $!";
|
||||
|
||||
while (<FEATURESDEF>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^\#]/) {
|
||||
&parse_features_def ($_);
|
||||
}
|
||||
}
|
||||
|
||||
close FEATURESDEF;
|
||||
|
||||
sub parse_features_def {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$element_def = $line_fields[3];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$constants_decl_code .= sprintf
|
||||
(qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature),
|
||||
++$feature_count);
|
||||
|
||||
$features{$feature_count} = $feature;
|
||||
}
|
||||
|
||||
chop $constants_decl_code;
|
||||
|
||||
$auto_gen_comment = sprintf
|
||||
(qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]);
|
||||
|
||||
open COMMAND, $ARGV[2] or
|
||||
die "open ($ARGV[2]): $!";
|
||||
|
||||
while (<COMMAND>) {
|
||||
chop;
|
||||
|
||||
s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/;
|
||||
|
||||
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
|
||||
} continue {
|
||||
print $_;
|
||||
}
|
||||
|
||||
close COMMAND;
|
385
backends/server/demarshal.pl
Normal file
385
backends/server/demarshal.pl
Normal file
@@ -0,0 +1,385 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 0;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* demarshal.c */';
|
||||
print "/* This is a generated file. Please modify `demarshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <glibtop.h>';
|
||||
print '#include <glibtop/open.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include <glibtop/backend.h>';
|
||||
print '';
|
||||
print '#include <glibtop-backend-private.h>';
|
||||
print '#include "server.h"';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^\#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$element_def = $line_fields[3];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
return if $feature =~ /^@/;
|
||||
$name = 'glibtop_'.$feature;
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $feature;
|
||||
|
||||
$orig_retval = $retval;
|
||||
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
} elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
} else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$first_param_name = '';
|
||||
$size_code = "\t/* send size */\n";
|
||||
$size_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
||||
|
||||
$local_var_decl_code = '';
|
||||
$local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n";
|
||||
$local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n";
|
||||
$local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n";
|
||||
$local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n";
|
||||
$local_var_decl_code .= sprintf
|
||||
(qq[\tglibtop_%s %s;\n], $feature, $feature);
|
||||
if ($retval !~ /^void$/) {
|
||||
$local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
||||
$retval, $retval);
|
||||
}
|
||||
|
||||
$init_local_var_code = "\t/* variable initialization */\n";
|
||||
$init_local_var_code .= sprintf
|
||||
(qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature);
|
||||
$init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
||||
$init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||
"(char *) send_ptr;\n";
|
||||
|
||||
$demarshal_code = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
} else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field];
|
||||
|
||||
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$size_code .= sprintf ("sizeof (size_t)");
|
||||
} else {
|
||||
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
||||
}
|
||||
$size_code .= ";\n";
|
||||
|
||||
$local_var_decl_code .= sprintf
|
||||
(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]);
|
||||
$init_local_var_code .= sprintf
|
||||
(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n],
|
||||
$fields[$field], $c_type);
|
||||
|
||||
$demarshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||
"(char *) send_ptr + _LIBGTOP_SEND_offset;\n";
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n");
|
||||
$demarshal_code .= sprintf
|
||||
(qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]);
|
||||
$demarshal_code .= sprintf
|
||||
(qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]);
|
||||
$demarshal_code .= sprintf
|
||||
(qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]);
|
||||
}
|
||||
|
||||
if (defined $demarshal_funcs->{$type}) {
|
||||
$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
||||
} else {
|
||||
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n",
|
||||
$fields[$field], "sizeof ($c_type)");
|
||||
}
|
||||
|
||||
$demarshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$demarshal_code .= sprintf ("sizeof (size_t)");
|
||||
} else {
|
||||
$demarshal_code .= sprintf ("sizeof (%s)", $c_type);
|
||||
}
|
||||
$demarshal_code .= ";\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (!($demarshal_code eq '')) {
|
||||
$demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n],
|
||||
$demarshal_code);
|
||||
}
|
||||
|
||||
if ($line_fields[3] eq '') {
|
||||
$call_code = sprintf
|
||||
("\tretval = glibtop_get_%s_p (server%s);\n",
|
||||
$feature, $call_param);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$call_code = sprintf
|
||||
("\tretval = glibtop_get_%s_p (server, &array%s);\n",
|
||||
$feature, $call_param);
|
||||
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$call_code = sprintf
|
||||
("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n",
|
||||
$feature, $feature, $call_param);
|
||||
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
|
||||
} else {
|
||||
$call_code = sprintf
|
||||
("\tretval = glibtop_get_%s_p (server, &%s%s);\n",
|
||||
$feature, $feature, $call_param);
|
||||
}
|
||||
|
||||
if ($orig_retval eq 'retval') {
|
||||
$call_code .= sprintf
|
||||
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]);
|
||||
} else {
|
||||
$call_code .= sprintf
|
||||
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]);
|
||||
}
|
||||
|
||||
$size_code .= sprintf
|
||||
(qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]);
|
||||
|
||||
$size_code .= "\t/* recv size */\n";
|
||||
$size_code .= "\t_LIBGTOP_RECV_len = 0;\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
|
||||
$size_code .= sprintf
|
||||
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
|
||||
} else {
|
||||
$size_code .= sprintf
|
||||
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
|
||||
}
|
||||
$size_code .= "\n";
|
||||
|
||||
$size_code .= "\t/* recv buffer */\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
$size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n";
|
||||
} else {
|
||||
$size_code .= "\t_LIBGTOP_RECV_buf = g_malloc (_LIBGTOP_RECV_len);\n";
|
||||
}
|
||||
$size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n";
|
||||
|
||||
$recv_buf_code = '';
|
||||
if ($line_fields[3] eq '') {
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$recv_buf_code = "\t/* write recv buffer */\n";
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$recv_buf_code = "\t/* write recv buffer */\n";
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
|
||||
$feature, $feature);
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
|
||||
} else {
|
||||
$recv_buf_code = "\t/* write recv buffer */\n";
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
|
||||
$feature, $feature);
|
||||
$recv_buf_code .= sprintf
|
||||
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
|
||||
}
|
||||
|
||||
$recv_buf_code .= "\n";
|
||||
$recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n";
|
||||
$recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n";
|
||||
|
||||
if ($orig_retval eq 'pointer(string)') {
|
||||
$need_temp_storage = 1;
|
||||
$local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n";
|
||||
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n";
|
||||
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n";
|
||||
$local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n";
|
||||
$local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
|
||||
|
||||
$recv_buf_code .= "\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n";
|
||||
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n";
|
||||
$recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
||||
$recv_buf_code .= "\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_base = g_malloc (_LIBGTOP_TEMP_len);";
|
||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n";
|
||||
$recv_buf_code .= "\n";
|
||||
$recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
|
||||
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
|
||||
$recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
|
||||
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
||||
$recv_buf_code .= "\t}\n\n";
|
||||
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n";
|
||||
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
|
||||
$recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n";
|
||||
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
|
||||
$recv_buf_code .= "\t}\n\n";
|
||||
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
|
||||
$recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n";
|
||||
$recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n";
|
||||
$recv_buf_code .= "\t}\n";
|
||||
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$recv_buf_code .= "\n";
|
||||
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
|
||||
$recv_buf_code .= "\t\t*recv_data_ptr = retval;\n";
|
||||
$recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n";
|
||||
$recv_buf_code .= "\t}\n";
|
||||
}
|
||||
|
||||
if ($need_temp_storage) {
|
||||
$local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n";
|
||||
$local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n";
|
||||
$local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n";
|
||||
$local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n";
|
||||
|
||||
$init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
||||
$init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n";
|
||||
$init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ".
|
||||
"(char *) data_ptr;\n";
|
||||
}
|
||||
|
||||
$func_decl_code = sprintf
|
||||
(qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature);
|
||||
|
||||
if (!($call_code eq '')) {
|
||||
$call_code .= "\n";
|
||||
}
|
||||
|
||||
$func_body_code = sprintf
|
||||
(qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code);
|
||||
|
||||
$total_code = sprintf
|
||||
(qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n],
|
||||
$func_decl_code, $local_var_decl_code, $init_local_var_code,
|
||||
$func_body_code);
|
||||
|
||||
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
|
||||
&toupper($feature), $total_code,
|
||||
&toupper($feature));
|
||||
|
||||
print $total_code;
|
||||
}
|
||||
|
||||
$func_decl_code = sprintf
|
||||
(qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]);
|
||||
|
||||
$switch_body_code = '';
|
||||
|
||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||
$feature = $features{$nr};
|
||||
|
||||
$switch_body_code .= sprintf
|
||||
(qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n],
|
||||
&toupper ($feature), &toupper ($feature), $feature, &toupper ($feature));
|
||||
}
|
||||
|
||||
$switch_code = sprintf
|
||||
(qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code);
|
||||
|
||||
$total_code = sprintf
|
||||
(qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code);
|
||||
|
||||
print $total_code;
|
||||
|
||||
1;
|
114
backends/server/io.c
Normal file
114
backends/server/io.c
Normal file
@@ -0,0 +1,114 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
void
|
||||
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
||||
const void *data_ptr)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Really writing %d bytes.\n",
|
||||
sizeof (glibtop_response));
|
||||
#endif
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0)
|
||||
glibtop_warn_io ("write");
|
||||
} else {
|
||||
if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0)
|
||||
glibtop_warn_io ("send");
|
||||
}
|
||||
|
||||
if (resp->recv_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Writing %ld bytes of data.\n",
|
||||
(long) resp->recv_size);
|
||||
#endif
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, recv_ptr, resp->recv_size) < 0)
|
||||
glibtop_warn_io ("write");
|
||||
} else {
|
||||
if (send (s, recv_ptr, resp->recv_size, 0) < 0)
|
||||
glibtop_warn_io ("send");
|
||||
}
|
||||
}
|
||||
|
||||
if (resp->data_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Writing %ld bytes of extra data.\n",
|
||||
(long) resp->data_size);
|
||||
#endif
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, data_ptr, resp->data_size) < 0)
|
||||
glibtop_warn_io ("write");
|
||||
} else {
|
||||
if (send (s, data_ptr, resp->data_size, 0) < 0)
|
||||
glibtop_warn_io ("send");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
do_read (int s, void *ptr, size_t total_size)
|
||||
{
|
||||
int nread;
|
||||
char *tmp_ptr;
|
||||
size_t already_read = 0, remaining = total_size;
|
||||
|
||||
while (already_read < total_size) {
|
||||
if (s)
|
||||
nread = recv (s, ptr, remaining, 0);
|
||||
else
|
||||
nread = read (0, ptr, remaining);
|
||||
|
||||
if ((already_read == 0) && (nread == 0)) {
|
||||
glibtop_warn ("pid %d received eof.", getpid ());
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (nread <= 0) {
|
||||
glibtop_warn_io ("recv");
|
||||
return 0;
|
||||
}
|
||||
|
||||
already_read += nread;
|
||||
remaining -= nread;
|
||||
/* (char *) ptr += nread; */
|
||||
tmp_ptr = ptr;
|
||||
tmp_ptr += nread;
|
||||
ptr = tmp_ptr;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "READ (%d): %d - %d - %d\n",
|
||||
nread, already_read, remaining, total_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
return already_read;
|
||||
}
|
13
backends/server/libgtop-server.backend
Normal file
13
backends/server/libgtop-server.backend
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||
|
||||
<libgtop:Backend>
|
||||
<libgtop:Name>glibtop-backend-server</libgtop:Name>
|
||||
<libgtop:Location>
|
||||
<libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName>
|
||||
<libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName>
|
||||
</libgtop:Location>
|
||||
</libgtop:Backend>
|
||||
|
||||
</libgtop:Backends>
|
305
backends/server/marshal.pl
Normal file
305
backends/server/marshal.pl
Normal file
@@ -0,0 +1,305 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 1;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* marshal.c */';
|
||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <backend-server.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include "command.h"';
|
||||
print '#include <glibtop/call-vector.h>';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $orig;
|
||||
return if $orig =~ /^@/;
|
||||
|
||||
$orig_retval = $retval;
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$local_var_init_code = "\t/* variable initialization */\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
|
||||
$local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||
"(char *) _LIBGTOP_SEND_buf;\n";
|
||||
$marshal_code = "\t/* marshal start */\n";
|
||||
$marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
|
||||
$first_param_name = '';
|
||||
$size_code = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
|
||||
$size_code .= "\t_LIBGTOP_SEND_len += ";
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$size_code .= sprintf ("sizeof (size_t)");
|
||||
} else {
|
||||
$size_code .= sprintf ("sizeof (%s)", $c_type);
|
||||
}
|
||||
$size_code .= ";\n";
|
||||
|
||||
if (defined $sizeof_funcs->{$type}) {
|
||||
$size_code .= "\t_LIBGTOP_DATA_len += ";
|
||||
$size_code .= $sizeof_funcs->{$type}->($fields[$field]);
|
||||
$size_code .= ";\n";
|
||||
}
|
||||
|
||||
$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
|
||||
"(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
|
||||
|
||||
if (defined $marshal_funcs->{$type}) {
|
||||
$marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
|
||||
} else {
|
||||
$marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
|
||||
'&'.$fields[$field], "sizeof ($c_type)");
|
||||
}
|
||||
|
||||
$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$marshal_code .= sprintf ("sizeof (size_t)");
|
||||
} else {
|
||||
$marshal_code .= sprintf ("sizeof (%s)", $c_type);
|
||||
}
|
||||
$marshal_code .= ";\n";
|
||||
}
|
||||
}
|
||||
|
||||
$local_var_code = "";
|
||||
$local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
|
||||
$local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
|
||||
if ($need_temp_len) {
|
||||
$local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
|
||||
}
|
||||
$local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
|
||||
$local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
|
||||
if ($retval !~ /^void$/) {
|
||||
$local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
|
||||
$retval, $retval);
|
||||
}
|
||||
|
||||
$total_code = '';
|
||||
|
||||
$send_buf_code = "\t/* send buffer */\n";
|
||||
$send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
|
||||
if ($need_temp_storage) {
|
||||
$send_buf_code .= "g_malloc (_LIBGTOP_SEND_len+1)";
|
||||
} else {
|
||||
$send_buf_code .= '(void *) &'.$first_param_name;
|
||||
}
|
||||
$send_buf_code .= ";\n\n";
|
||||
|
||||
$send_buf_code .= "\t/* data buffer */\n";
|
||||
$send_buf_code .= "\t_LIBGTOP_DATA_buf = ";
|
||||
if ($need_temp_storage) {
|
||||
$send_buf_code .= "g_malloc (_LIBGTOP_DATA_len+1)";
|
||||
} else {
|
||||
$send_buf_code .= 'NULL';
|
||||
}
|
||||
$send_buf_code .= ";\n";
|
||||
$send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n";
|
||||
|
||||
$call_code = '';
|
||||
$call_code .= sprintf ("\t%sglibtop_call_i (server, closure, GLIBTOP_CMND_%s,\n",
|
||||
$call_prefix, &toupper($feature));
|
||||
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
|
||||
"_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf");
|
||||
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
|
||||
"_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf");
|
||||
if ($line_fields[3] eq '') {
|
||||
$call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n",
|
||||
$call_prefix_space);
|
||||
} else {
|
||||
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n",
|
||||
$call_prefix_space, $feature);
|
||||
}
|
||||
$call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param);
|
||||
|
||||
if ($need_temp_storage) {
|
||||
$send_buf_free_code = "\tg_free (_LIBGTOP_SEND_buf);\n";
|
||||
$send_buf_free_code .= "\tg_free (_LIBGTOP_DATA_buf);\n";
|
||||
} else {
|
||||
$send_buf_free_code = "";
|
||||
}
|
||||
|
||||
if (!($size_code eq '')) {
|
||||
$size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code);
|
||||
}
|
||||
|
||||
if ($orig_retval eq 'pointer(string)') {
|
||||
$call_code .= "\n";
|
||||
$local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n";
|
||||
$local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
|
||||
$local_var_code .= "\tint i;\n";
|
||||
$call_code .= "\tptrlist = g_malloc (array->number+1 * sizeof (char *));\n";
|
||||
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n";
|
||||
$call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n";
|
||||
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n";
|
||||
$call_code .= "\tfor (i = 0; i < array->number; i++)\n";
|
||||
$call_code .= "\t\tptrlist [i] = g_strdup (_LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
|
||||
$call_code .= "\tptrlist [array->number] = NULL;\n\n";
|
||||
$call_code .= "\tg_free (retval);\n";
|
||||
$call_code .= "\tretval = ptrlist;\n";
|
||||
}
|
||||
|
||||
$total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
|
||||
$size_code, $send_buf_code, $marshal_code,
|
||||
$call_code, $send_buf_free_code);
|
||||
|
||||
$return_code = '';
|
||||
if ($retval !~ /^void$/) {
|
||||
$return_code .= "\treturn retval;\n";
|
||||
} else {
|
||||
$return_code .= "\treturn;\n";
|
||||
}
|
||||
|
||||
$total_code .= $return_code;
|
||||
|
||||
$func_decl = 'static '.$retval."\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
}
|
||||
|
||||
$total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
|
||||
$local_var_code, $local_var_init_code,
|
||||
$total_code);
|
||||
|
||||
|
||||
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
|
||||
&toupper($feature), $total_code,
|
||||
&toupper($feature));
|
||||
|
||||
print $total_code;
|
||||
}
|
||||
|
||||
$call_vector_code = '';
|
||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||
$feature = $features{$nr};
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
|
||||
if ($orig =~ /^@/) {
|
||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||
} else {
|
||||
$call_vector_code .= sprintf
|
||||
(qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
|
||||
&toupper($feature), $feature);
|
||||
}
|
||||
}
|
||||
|
||||
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
|
||||
print $call_vector_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
46
backends/server/read.c
Normal file
46
backends/server/read.c
Normal file
@@ -0,0 +1,46 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
void
|
||||
glibtop_read_i (backend_server_private *priv, size_t size, void *buf)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
|
||||
size, priv->input [0]);
|
||||
#endif
|
||||
|
||||
ret = read (priv->input [0], buf, size);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
|
||||
#endif
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "read %d bytes", size);
|
||||
}
|
58
backends/server/read_data.c
Normal file
58
backends/server/read_data.c
Normal file
@@ -0,0 +1,58 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
void *
|
||||
glibtop_read_data_i (backend_server_private *priv)
|
||||
{
|
||||
size_t size;
|
||||
void *ptr;
|
||||
int ret;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
|
||||
#endif
|
||||
|
||||
ret = read (priv->input [0], (void *)&size, sizeof (size_t));
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "read data size");
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
|
||||
#endif
|
||||
|
||||
if (!size) return NULL;
|
||||
|
||||
ptr = g_malloc (size);
|
||||
|
||||
ret = read (priv->input [0], ptr, size);
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "read data %d bytes");
|
||||
|
||||
return ptr;
|
||||
}
|
189
backends/server/server.c
Normal file
189
backends/server/server.c
Normal file
@@ -0,0 +1,189 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
static glibtop _glibtop_global_server;
|
||||
glibtop *glibtop_global_server = &_glibtop_global_server;
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
|
||||
#include <sys/utsname.h>
|
||||
|
||||
const unsigned long glibtop_server_features =
|
||||
GLIBTOP_SUID_CPU +
|
||||
GLIBTOP_SUID_MEM +
|
||||
GLIBTOP_SUID_SWAP +
|
||||
GLIBTOP_SUID_UPTIME +
|
||||
GLIBTOP_SUID_LOADAVG +
|
||||
GLIBTOP_SUID_SHM_LIMITS +
|
||||
GLIBTOP_SUID_MSG_LIMITS +
|
||||
GLIBTOP_SUID_SEM_LIMITS +
|
||||
GLIBTOP_SUID_PROCLIST +
|
||||
GLIBTOP_SUID_PROC_STATE +
|
||||
GLIBTOP_SUID_PROC_UID +
|
||||
GLIBTOP_SUID_PROC_MEM +
|
||||
GLIBTOP_SUID_PROC_TIME +
|
||||
GLIBTOP_SUID_PROC_SIGNAL +
|
||||
GLIBTOP_SUID_PROC_KERNEL +
|
||||
GLIBTOP_SUID_PROC_SEGMENT +
|
||||
GLIBTOP_SUID_PROC_ARGS +
|
||||
GLIBTOP_SUID_PROC_MAP +
|
||||
GLIBTOP_SUID_NETINFO +
|
||||
GLIBTOP_SUID_NETLOAD +
|
||||
GLIBTOP_SUID_INTERFACE_NAMES +
|
||||
GLIBTOP_SUID_PPP;
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct utsname uts;
|
||||
int uid, euid, gid, egid;
|
||||
glibtop *server;
|
||||
|
||||
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
|
||||
|
||||
uid = getuid (); euid = geteuid ();
|
||||
gid = getgid (); egid = getegid ();
|
||||
|
||||
if (uname (&uts) < 0) _exit (1);
|
||||
|
||||
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
|
||||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
|
||||
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
|
||||
fprintf (stderr, "Can only run on %s %s %s\n",
|
||||
LIBGTOP_COMPILE_SYSTEM,
|
||||
LIBGTOP_COMPILE_RELEASE,
|
||||
LIBGTOP_COMPILE_MACHINE);
|
||||
_exit (1);
|
||||
}
|
||||
|
||||
server = glibtop_global_server;
|
||||
|
||||
if (!server->_priv)
|
||||
server->_priv = g_malloc (sizeof (glibtop_server_private));
|
||||
|
||||
glibtop_init_p (server, 0, 0);
|
||||
|
||||
if (setreuid (euid, uid)) _exit (1);
|
||||
|
||||
if (setregid (egid, gid)) _exit (1);
|
||||
|
||||
/* !!! END OF SUID ROOT PART !!! */
|
||||
|
||||
handle_slave_connection (0, 0);
|
||||
|
||||
_exit (0);
|
||||
}
|
||||
|
||||
void
|
||||
handle_slave_connection (int input, int output)
|
||||
{
|
||||
glibtop_command _cmnd, *cmnd = &_cmnd;
|
||||
glibtop *server = glibtop_global_server;
|
||||
|
||||
// glibtop_send_version_i (glibtop_global_server, output);
|
||||
|
||||
while (do_read (input, cmnd, sizeof (glibtop_command))) {
|
||||
size_t recv_size = 0, send_size = 0, recv_data_size = 0;
|
||||
void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL;
|
||||
char parameter [BUFSIZ];
|
||||
int retval, func_retval;
|
||||
glibtop_response resp;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Slave %d received command "
|
||||
"%ld from client.\n", getpid (), (long) cmnd->command);
|
||||
#endif
|
||||
|
||||
if (cmnd->send_size >= BUFSIZ)
|
||||
glibtop_error ("Client sent %d bytes, but buffer is %d",
|
||||
cmnd->send_size, BUFSIZ);
|
||||
else if (cmnd->param_size >= BUFSIZ)
|
||||
glibtop_error ("Client sent %d bytes, but buffer is %d",
|
||||
cmnd->param_size, BUFSIZ);
|
||||
|
||||
memset (parameter, 0, sizeof (parameter));
|
||||
|
||||
if (cmnd->send_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Client has %d bytes of data.\n",
|
||||
cmnd->send_size);
|
||||
#endif
|
||||
|
||||
send_size = cmnd->send_size;
|
||||
do_read (input, parameter, send_size);
|
||||
} else if (cmnd->param_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Client has %d bytes of parameter data.\n",
|
||||
cmnd->param_size);
|
||||
#endif
|
||||
send_size = cmnd->param_size;
|
||||
memcpy (parameter, cmnd->parameter, send_size);
|
||||
}
|
||||
|
||||
if (cmnd->data_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n",
|
||||
cmnd->data_size);
|
||||
#endif
|
||||
|
||||
data_ptr = g_malloc (cmnd->data_size);
|
||||
do_read (input, data_ptr, cmnd->data_size);
|
||||
}
|
||||
|
||||
retval = glibtop_demarshal_func_i (server, NULL,
|
||||
cmnd->command,
|
||||
parameter, send_size,
|
||||
data_ptr, cmnd->data_size,
|
||||
&recv_ptr, &recv_size,
|
||||
&recv_data_ptr, &recv_data_size,
|
||||
&func_retval);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Retval %d / %d - %p - %d\n",
|
||||
retval, func_retval, recv_ptr, recv_size);
|
||||
|
||||
if (recv_data_size) {
|
||||
fprintf (stderr, "Returning %d bytes of data from %p.\n",
|
||||
recv_data_size, recv_data_ptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
memset (&resp, 0, sizeof (glibtop_response));
|
||||
|
||||
resp.retval = retval;
|
||||
resp.glibtop_errno = func_retval;
|
||||
resp.recv_size = recv_size;
|
||||
resp.data_size = recv_data_size;
|
||||
|
||||
do_output (output, &resp, recv_ptr, recv_data_ptr);
|
||||
}
|
||||
}
|
84
backends/server/server.h
Normal file
84
backends/server/server.h
Normal file
@@ -0,0 +1,84 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_DAEMON_H__
|
||||
#define __GLIBTOP_DAEMON_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/socket.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include <glibtop/backend.h>
|
||||
#include <glibtop-backend-private.h>
|
||||
|
||||
#include "command.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/* Some don't have LOG_PERROR */
|
||||
#ifndef LOG_PERROR
|
||||
#define LOG_PERROR 0
|
||||
#endif
|
||||
|
||||
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
|
||||
|
||||
#if defined(HAVE_GETDTABLESIZE)
|
||||
#define GET_MAX_FDS() getdtablesize()
|
||||
#else
|
||||
/* Fallthrough case - please add other #elif cases above
|
||||
for different OS's as necessary */
|
||||
#define GET_MAX_FDS() 256
|
||||
#endif
|
||||
|
||||
void
|
||||
do_output (int s, glibtop_response *resp, const void *recv_ptr,
|
||||
const void *data_ptr);
|
||||
|
||||
int
|
||||
do_read (int s, void *ptr, size_t total_size);
|
||||
|
||||
void
|
||||
handle_slave_connection (int input, int output);
|
||||
|
||||
int
|
||||
glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr);
|
||||
|
||||
void
|
||||
glibtop_send_version_i (glibtop *server, int fd);
|
||||
|
||||
extern int enable_debug;
|
||||
extern int verbose_output;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
62
backends/server/version.c
Normal file
62
backends/server/version.c
Normal file
@@ -0,0 +1,62 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
void
|
||||
glibtop_send_version_i (glibtop *server, int fd)
|
||||
{
|
||||
char buffer [BUFSIZ];
|
||||
size_t size;
|
||||
|
||||
sprintf (buffer, LIBGTOP_VERSION_STRING,
|
||||
LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
|
||||
sizeof (glibtop_command),
|
||||
sizeof (glibtop_response),
|
||||
sizeof (glibtop_union),
|
||||
sizeof (glibtop_sysdeps));
|
||||
|
||||
size = strlen (buffer) + 1;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "SERVER ID: |%s|\n", buffer);
|
||||
#endif
|
||||
|
||||
if (fd == 0) {
|
||||
if (write (1, (const void *) &size, sizeof (size)) < 0)
|
||||
glibtop_warn_io_r (server, "write");
|
||||
} else {
|
||||
if (send (fd, (const void *) &size, sizeof (size), 0) < 0)
|
||||
glibtop_warn_io_r (server, "send");
|
||||
}
|
||||
|
||||
if (fd == 0) {
|
||||
if (write (1, (const void *) buffer, size) < 0)
|
||||
glibtop_warn_io_r (server, "write");
|
||||
} else {
|
||||
if (send (fd, (const void *) buffer, size, 0) < 0)
|
||||
glibtop_warn_io_r (server, "send");
|
||||
}
|
||||
}
|
43
backends/server/write.c
Normal file
43
backends/server/write.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-server.h>
|
||||
|
||||
void
|
||||
glibtop_write_i (backend_server_private *priv, size_t size, const void *buf)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (size == 0) return;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
|
||||
#endif
|
||||
|
||||
ret = write (priv->output [1], buf, size);
|
||||
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (priv->server, "write %d bytes", size);
|
||||
}
|
7
backends/sysdeps/.cvsignore
Normal file
7
backends/sysdeps/.cvsignore
Normal file
@@ -0,0 +1,7 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
*.la
|
||||
marshal.c
|
68
backends/sysdeps/ChangeLog
Normal file
68
backends/sysdeps/ChangeLog
Normal file
@@ -0,0 +1,68 @@
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-sysdeps.c: (_open_sysdeps): s/u_int64_t/guint64/
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* backend-sysdeps.h: fixed compilation
|
||||
|
||||
2000-11-26 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* glibtop-backend-private.h: Removed.
|
||||
|
||||
* backend-sysdeps.h: New files.
|
||||
|
||||
* backend-sysdeps.c (_open_sysdeps): Don't overwrite
|
||||
`backend->_priv'.
|
||||
|
||||
2000-11-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Link libgtop_backend_sysdeps.la against
|
||||
$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and
|
||||
$(top_builddir)/lib/libgtop_server.la.
|
||||
|
||||
* libgtop-sysdeps.backend: Removed the ExtraLibs section.
|
||||
|
||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* backend-sysdeps.c (LibGTopBackendInfo): Call this
|
||||
`LibGTopBackendInfo_Sysdeps' when we don't use gmodule.
|
||||
|
||||
2000-02-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR)
|
||||
when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise.
|
||||
|
||||
2000-01-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* libgtop-sysdeps.backend: Added "ExtraLibs" section to
|
||||
load `-lgtop_sysdeps'.
|
||||
|
||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
|
||||
|
||||
* libgtop-sysdeps.backend: New file.
|
||||
|
||||
* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to
|
||||
`LibGTopBackendInfo'.
|
||||
|
||||
2000-01-12 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* marshal.pl: Create the `_glibtop_init_hook_s' as well.
|
||||
|
||||
* marshal.pl: Don't create code for things which are now
|
||||
in the new `glibtop-backend-common' backend.
|
||||
|
||||
2000-01-02 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* marshal.pl: New file. Automatically creates `marshal.c'.
|
||||
* call-vector.c: Removed.
|
||||
|
||||
2000-01-01 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
Initial version of the "glibtop-backend-sysdeps" backend.
|
||||
|
||||
* backend-sysdeps.c: New file.
|
||||
* glibtop-backend-private.h: New file.
|
||||
|
47
backends/sysdeps/Makefile.am
Normal file
47
backends/sysdeps/Makefile.am
Normal file
@@ -0,0 +1,47 @@
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
if LIBGTOP_USE_GMODULE
|
||||
backendlibdir = $(backenddir)
|
||||
else
|
||||
backendlibdir = $(libdir)
|
||||
endif
|
||||
|
||||
dynamic_ldflags = @libgtop_dynamic_ldflags@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-sysdeps.backend
|
||||
|
||||
noinst_HEADERS = \
|
||||
backend-sysdeps.h
|
||||
|
||||
backendlib_LTLIBRARIES = \
|
||||
libgtop_backend_sysdeps.la
|
||||
|
||||
libgtop_backend_sysdeps_la_SOURCES = \
|
||||
backend-sysdeps.c \
|
||||
marshal.c
|
||||
|
||||
libgtop_backend_sysdeps_la_LDFLAGS = \
|
||||
$(LT_VERSION_INFO) $(dynamic_ldflags)
|
||||
|
||||
libgtop_backend_sysdeps_la_LIBADD = \
|
||||
$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la
|
||||
$(top_builddir)/lib/libgtop_server.la
|
||||
|
||||
BUILT_SOURCES = \
|
||||
marshal.c
|
||||
|
||||
EXTRA_DIST = \
|
||||
marshal.pl \
|
||||
libgtop-sysdeps.backend
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
|
||||
mv tmp-t marshal.c
|
||||
|
76
backends/sysdeps/backend-sysdeps.c
Normal file
76
backends/sysdeps/backend-sysdeps.c
Normal file
@@ -0,0 +1,76 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <backend-sysdeps.h>
|
||||
|
||||
static int
|
||||
_open_sysdeps (glibtop_server *, glibtop_backend *, guint64, const char **);
|
||||
|
||||
static int
|
||||
_close_sysdeps (glibtop_server *, glibtop_backend *, void *);
|
||||
|
||||
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
|
||||
|
||||
#ifdef LIBGTOP_USE_GMODULE
|
||||
glibtop_backend_info LibGTopBackendInfo = {
|
||||
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
|
||||
&glibtop_backend_sysdeps_call_vector
|
||||
};
|
||||
#else
|
||||
glibtop_backend_info LibGTopBackendInfo_Sysdeps = {
|
||||
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
|
||||
&glibtop_backend_sysdeps_call_vector
|
||||
};
|
||||
#endif
|
||||
|
||||
static int
|
||||
_open_sysdeps (glibtop_server *server, glibtop_backend *backend,
|
||||
guint64 features, const char **backend_args)
|
||||
{
|
||||
glibtop_init_func_t *init_fkt;
|
||||
|
||||
/* Do the initialization, but only if not already initialized. */
|
||||
|
||||
if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
|
||||
glibtop_open_s (server, "glibtop", features, 0);
|
||||
|
||||
for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
|
||||
(*init_fkt) (server);
|
||||
|
||||
server->info->sysdeps.pointer_size = sizeof (void*)*8;
|
||||
|
||||
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
_close_sysdeps (glibtop_server *server, glibtop_backend *backend,
|
||||
void *closure)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
36
backends/sysdeps/backend-sysdeps.h
Normal file
36
backends/sysdeps/backend-sysdeps.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_SYSDEPS_H__
|
||||
#define __GLIBTOP_BACKEND_SYSDEPS_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/glibtop-backend.h>
|
||||
#include <glibtop/glibtop-backend-info.h>
|
||||
|
||||
#endif
|
13
backends/sysdeps/libgtop-sysdeps.backend
Normal file
13
backends/sysdeps/libgtop-sysdeps.backend
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0"?> <!-- -*-xml-*- -->
|
||||
<!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'>
|
||||
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
|
||||
|
||||
<libgtop:Backend>
|
||||
<libgtop:Name>glibtop-backend-sysdeps</libgtop:Name>
|
||||
<libgtop:Location>
|
||||
<libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName>
|
||||
<libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName>
|
||||
</libgtop:Location>
|
||||
</libgtop:Backend>
|
||||
|
||||
</libgtop:Backends>
|
195
backends/sysdeps/marshal.pl
Normal file
195
backends/sysdeps/marshal.pl
Normal file
@@ -0,0 +1,195 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
$always_use_temp_storage = 1;
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* marshal.c */';
|
||||
print "/* This is a generated file. Please modify `marshal.pl' */";
|
||||
print '';
|
||||
|
||||
print '#include <backend-sysdeps.h>';
|
||||
print '';
|
||||
print '#include <glibtop/sysdeps.h>';
|
||||
print '#include <glibtop/union.h>';
|
||||
print '';
|
||||
print '#include <glibtop/call-vector.h>';
|
||||
print '';
|
||||
|
||||
$feature_count = 0;
|
||||
|
||||
while (<>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^#]/) {
|
||||
&output($_);
|
||||
}
|
||||
}
|
||||
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
$features{++$feature_count} = $orig;
|
||||
|
||||
return if $orig =~ /^@/;
|
||||
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
$prefix = 'retval = ';
|
||||
$prefix_space = ' ';
|
||||
$call_prefix = 'retval = ';
|
||||
$call_prefix_space = ' ';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
$call_prefix = '';
|
||||
$call_prefix_space = '';
|
||||
$prefix = '';
|
||||
$prefix_space = '';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$need_temp_storage = $always_use_temp_storage;
|
||||
$first_param_name = '';
|
||||
|
||||
$call_param = '';
|
||||
$param_decl = '';
|
||||
$need_temp_len = 0;
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
if ($first_param_name eq '') {
|
||||
$first_param_name = $fields[$field];
|
||||
}
|
||||
|
||||
if ($typeinfo->{$type}->[2]) {
|
||||
$need_temp_storage = 1;
|
||||
}
|
||||
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
else {
|
||||
$param_decl = $param_decl . ', ';
|
||||
}
|
||||
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
}
|
||||
}
|
||||
|
||||
if ($line_fields[3] eq '') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
|
||||
} else {
|
||||
$total_code = sprintf
|
||||
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
|
||||
}
|
||||
|
||||
$func_decl = 'static '.$retval."\n";
|
||||
if ($line_fields[3] eq '') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n",
|
||||
$feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n",
|
||||
$feature, 'glibtop_'.$feature, $param_decl);
|
||||
}
|
||||
|
||||
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
|
||||
|
||||
$total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n",
|
||||
&toupper($feature), $total_code,
|
||||
&toupper($feature));
|
||||
|
||||
print $total_code;
|
||||
}
|
||||
|
||||
$init_hook_code = '';
|
||||
$call_vector_code = '';
|
||||
for ($nr = 1; $nr <= $feature_count; $nr++) {
|
||||
$feature = $features{$nr};
|
||||
|
||||
if ($feature =~ /^@/) {
|
||||
$call_vector_code .= sprintf (qq[\tNULL,\n]);
|
||||
} else {
|
||||
$call_vector_code .= sprintf
|
||||
(qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n],
|
||||
&toupper($feature), $feature);
|
||||
}
|
||||
|
||||
if (!($feature =~ /^@/)) {
|
||||
$init_hook_code .= sprintf
|
||||
(qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n],
|
||||
&toupper($feature), $feature);
|
||||
}
|
||||
}
|
||||
$init_hook_code .= sprintf (qq[\tNULL\n]);
|
||||
|
||||
chop $init_hook_code;
|
||||
chop $call_vector_code;
|
||||
|
||||
print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {';
|
||||
print $call_vector_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
||||
print 'glibtop_init_func_t _glibtop_init_hook_s [] = {';
|
||||
print $init_hook_code;
|
||||
print '};';
|
||||
print '';
|
||||
|
383
configure.in
383
configure.in
@@ -6,24 +6,33 @@ AC_INIT(copyright.txt)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
dnl This is required at several places
|
||||
AC_CHECK_PROG(ac_dc_found, dc, yes, no)
|
||||
if test x$ac_dc_found != xyes ; then
|
||||
AC_MSG_ERROR([
|
||||
*** The "dc" utility was not found on your system.
|
||||
***
|
||||
*** When using RedHat Linux, you need to install the "bc" package.
|
||||
***
|
||||
*** It is now part of the "bc" package, so you should look at
|
||||
*** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself.
|
||||
***
|
||||
*** Other systems and distributions may also have it in their "bc" package,
|
||||
*** so if there's no "dc" one, please look for "bc".
|
||||
***])
|
||||
fi
|
||||
LIBGTOP_MAJOR_VERSION=2
|
||||
LIBGTOP_MINOR_VERSION=6
|
||||
LIBGTOP_MICRO_VERSION=0
|
||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
|
||||
|
||||
. $srcdir/LIBGTOP-VERSION
|
||||
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
|
||||
dnl increment if the interface has additions, changes, removals.
|
||||
LIBGTOP_CURRENT=3
|
||||
|
||||
dnl increment any time the source changes; set to
|
||||
dnl 0 if you increment CURRENT
|
||||
LIBGTOP_REVISION=0
|
||||
|
||||
dnl increment if any interfaces have been added; set to 0
|
||||
dnl if any interfaces have been removed. removal has
|
||||
dnl precedence over adding, so set to 0 if both happened.
|
||||
LIBGTOP_AGE=1
|
||||
|
||||
# you can set this to `-snap' for instance to create
|
||||
# a `libgtop-1.x.y-snap.tar.gz' tarball.
|
||||
LIBGTOP_VERSION_SUFFIX=
|
||||
|
||||
# Increase each time you change the client/server protocol.
|
||||
LIBGTOP_SERVER_VERSION=5
|
||||
|
||||
# Version code calculation
|
||||
LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION`
|
||||
|
||||
AC_SUBST(LIBGTOP_MAJOR_VERSION)
|
||||
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
||||
@@ -33,25 +42,26 @@ AC_SUBST(LIBGTOP_BINARY_AGE)
|
||||
AC_SUBST(LIBGTOP_SERVER_VERSION)
|
||||
AC_SUBST(LIBGTOP_VERSION)
|
||||
AC_SUBST(LIBGTOP_VERSION_CODE)
|
||||
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
|
||||
|
||||
# libtool versioning
|
||||
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
||||
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
|
||||
LT_REVISION=$LIBGTOP_INTERFACE_AGE
|
||||
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
|
||||
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} -release ${LT_RELEASE}'
|
||||
LT_CURRENT=$LIBGTOP_CURRENT
|
||||
LT_REVISION=$LIBGTOP_REVISION
|
||||
LT_AGE=$LIBGTOP_AGE
|
||||
LT_VERSION_INFO="-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}"
|
||||
AC_SUBST(LT_VERSION_INFO)
|
||||
AC_SUBST(LT_RELEASE)
|
||||
AC_SUBST(LT_CURRENT)
|
||||
AC_SUBST(LT_REVISION)
|
||||
AC_SUBST(LT_AGE)
|
||||
|
||||
AM_ACLOCAL_INCLUDE(. macros)
|
||||
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
|
||||
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_CC
|
||||
AC_STDC_HEADERS
|
||||
AC_ARG_PROGRAM
|
||||
dnl AC_ARG_PROGRAM
|
||||
|
||||
dnl We need this at some places.
|
||||
libgtop_top_builddir=`pwd`
|
||||
@@ -70,10 +80,8 @@ AC_CHECK_TOOL(CC,gcc)
|
||||
AC_CHECK_TOOL(RANLIB,ranlib)
|
||||
AC_CHECK_TOOL(AS,as)
|
||||
AC_CHECK_TOOL(AR,ar)
|
||||
AC_CHECK_TOOL(NM,nm)
|
||||
|
||||
NM=`which $NM`
|
||||
export CC CXX RANLIB LD AS AR NM
|
||||
export CC CXX RANLIB LD AS AR
|
||||
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
@@ -83,44 +91,11 @@ export cross_compiling
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
dnl Let the user enable compiler warnings
|
||||
GNOME_COMPILE_WARNINGS
|
||||
|
||||
GNOME_INIT_HOOK(gnome_found=yes)
|
||||
|
||||
if test "x$gnome_found" != xyes; then
|
||||
if test "x$want_gnome" != xno ; then
|
||||
AC_MSG_ERROR([
|
||||
*** GNOME was not found on this system. ***
|
||||
|
||||
*** If you want to use LibGTop without GNOME, you need
|
||||
*** to give configure the --without-gnome parameter.
|
||||
])
|
||||
else
|
||||
AC_DEFINE(WITHOUT_GNOME)
|
||||
fi
|
||||
GNOME_SUPPORT_CHECKS
|
||||
else
|
||||
if test "x$want_gnome" != xno ; then
|
||||
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
||||
else
|
||||
GNOME_SUPPORT_CHECKS
|
||||
fi
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
||||
|
||||
GNOME_LIBGTOP_SYSDEPS
|
||||
GNOME_LIBGTOP_TYPES
|
||||
|
||||
AC_ARG_WITH(libgtop-guile,
|
||||
[ --with-libgtop-guile Build the libgtop guile interface (default=no)],
|
||||
[build_guile="$withval"], [build_guile=yes])
|
||||
|
||||
if test x$build_guile != xno ; then
|
||||
GNOME_CHECK_GUILE
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(libgtop-inodedb,
|
||||
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
||||
[build_inodedb="$withval"], [build_inodedb=no])
|
||||
@@ -139,20 +114,6 @@ fi
|
||||
|
||||
AC_DEFINE(GLIBTOP_NAMES)
|
||||
|
||||
if test x$ac_cv_guile_found = xyes ; then
|
||||
AC_DEFINE(GLIBTOP_GUILE)
|
||||
AC_DEFINE(GLIBTOP_GUILE_NAMES)
|
||||
libgtop_guile_found=yes
|
||||
guile_examples='third'
|
||||
guile_static_examples='third_static'
|
||||
guile_subdirs='guile'
|
||||
else
|
||||
libgtop_guile_found=no
|
||||
guile_examples=
|
||||
guile_static_examples=
|
||||
guile_subdirs=
|
||||
fi
|
||||
|
||||
if test x$libgtop_smp = xyes ; then
|
||||
smp_examples='smp'
|
||||
smp_static_examples='smp_static'
|
||||
@@ -162,7 +123,7 @@ else
|
||||
fi
|
||||
|
||||
if test "x$enable_static" != xno; then
|
||||
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $guile_static_examples $smp_static_examples"
|
||||
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $smp_static_examples"
|
||||
else
|
||||
static_targets=""
|
||||
fi
|
||||
@@ -172,16 +133,20 @@ AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
|
||||
|
||||
AC_SUBST(static_targets)
|
||||
AC_SUBST(smp_examples)
|
||||
AC_SUBST(guile_examples)
|
||||
AC_SUBST(guile_subdirs)
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
GLIB_REQUIRED=2.0.0
|
||||
|
||||
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop))
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
|
||||
dnl You need to uncomment the following line if you want to use
|
||||
dnl libGTop without Gnome.
|
||||
dnl GNOME_SUPPORT_CHECKS
|
||||
AC_CHECK_HEADER(popt.h,[POPT=yes],[POPT=no])
|
||||
AC_MSG_CHECKING(for popt.h)
|
||||
if test x$POPT = xyes ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_ERROR([libgtop requires the popt development libraries])
|
||||
fi
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
@@ -215,6 +180,16 @@ AC_CHECK_FUNCS(dlerror,,)
|
||||
LIBS="$oLIBS"
|
||||
AC_SUBST(DL_LIB)
|
||||
|
||||
dnl Linux
|
||||
AC_CHECK_HEADER(linux/isdn.h,[HAVE_ISDN_H=yes],[HAVE_ISDN_H=no])
|
||||
if test x$HAVE_ISDN_H = xyes ; then
|
||||
AC_DEFINE(HAVE_ISDN_H, 1, [defined if you have linux/isdn.h])
|
||||
fi
|
||||
|
||||
dnl AIX
|
||||
AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the 'vmgetinfo' function in libperfstat])
|
||||
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
|
||||
|
||||
dnl Solaris
|
||||
AC_CHECK_LIB(kstat, kstat_open)
|
||||
AC_CHECK_FUNCS(getloadavg swapctl)
|
||||
@@ -242,18 +217,18 @@ AC_CHECK_LIB(kvm, kvm_open,[
|
||||
dnl For DEC OSF1
|
||||
AC_CHECK_LIB(mach, vm_statistics)
|
||||
|
||||
dnl For some broken libc5 systems (Debian 1.3)
|
||||
saved_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS -D_GNU_SOURCE"
|
||||
dnl For some broken libc5 systems (Debian 1.3)
|
||||
saved_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS -D_GNU_SOURCE"
|
||||
GCC_NEED_DECLARATION(program_invocation_name, [
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
])
|
||||
CFLAGS=$saved_CFLAGS
|
||||
|
||||
dnl Check for Internet sockets.
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
])
|
||||
|
||||
CFLAGS=$saved_CFLAGS
|
||||
|
||||
AC_CHECK_FUNC(socket,
|
||||
[AC_CHECK_HEADER(netinet/in.h,
|
||||
[AC_CHECK_HEADER(arpa/inet.h, [
|
||||
@@ -275,9 +250,13 @@ AC_TYPE_SIGNAL
|
||||
AC_FUNC_STRFTIME
|
||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||
|
||||
dnl ## all 'es_??' are only needed for format numbers different of 'es'
|
||||
ALL_LINGUAS="da de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr ja ko nl no pl pt_BR sv"
|
||||
AM_GNOME_GETTEXT
|
||||
ALL_LINGUAS="am ar az be bg bn ca cs cy da de el en_CA en_GB es et fa fi fr ga gl he hi hr hu id it ja ko lt lv mk ml mn ms nl nn no pa pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
|
||||
|
||||
GETTEXT_PACKAGE=libgtop-2.0
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
|
||||
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
AC_PATH_XTRA
|
||||
|
||||
@@ -317,27 +296,9 @@ dnl Debugging
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
||||
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
||||
|
||||
if test "x$gnome_found" = xyes ; then
|
||||
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
||||
SUPPORTINCS="$GNOME_INCLUDEDIR"
|
||||
else
|
||||
LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la'
|
||||
SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support'
|
||||
fi
|
||||
|
||||
dnl Some ugly hack; if '-lgnomesupport' is part of $GNOME_LIBS,
|
||||
dnl we include it here.
|
||||
case "$GNOME_LIBS" in
|
||||
'*-lgnomesupport*' )
|
||||
LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport"
|
||||
SUPPORTINCS="$GNOME_INCLUDEDIR" ;;
|
||||
esac
|
||||
AC_SUBST(LIBSUPPORT)
|
||||
AC_SUBST(SUPPORTINCS)
|
||||
|
||||
dnl These definitions are expanded in make.
|
||||
LIBGTOP_LIBS='-L$(libdir)'
|
||||
LIBGTOP_INCS='-I$(includedir) -I$(pkglibdir)/include'
|
||||
LIBGTOP_INCS='-I$(includedir)/libgtop-2.0'
|
||||
|
||||
if test x$libgtop_use_machine_h = xyes ; then
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||
@@ -355,25 +316,14 @@ if test x$libgtop_have_sysinfo = xyes ; then
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
|
||||
fi
|
||||
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS"
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS $GLIB_CFLAGS"
|
||||
|
||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS"
|
||||
LIBGTOP_GUILE_INCS="$LIBGTOP_INCS"
|
||||
LIBGTOP_BINDIR='$(bindir)'
|
||||
LIBGTOP_SERVER='$(bindir)/libgtop_server'
|
||||
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
|
||||
|
||||
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||
AC_SUBST(sysdeps_dir)
|
||||
|
||||
if test x$ac_cv_guile_found = xyes ; then
|
||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile"
|
||||
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
|
||||
@@ -382,54 +332,44 @@ 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_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names"
|
||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS"
|
||||
|
||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS"
|
||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS"
|
||||
|
||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
|
||||
LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE"
|
||||
|
||||
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
||||
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES"
|
||||
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES"
|
||||
|
||||
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
||||
|
||||
AC_SUBST(machine_incs)
|
||||
|
||||
if test x$libgtop_guile_found = xyes ; then
|
||||
guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
|
||||
else
|
||||
guile_def=""
|
||||
if test "$GCC" = "yes" ; then
|
||||
CFLAGS="\
|
||||
-Wall \
|
||||
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
||||
-Wnested-externs -Wpointer-arith \
|
||||
-Wcast-align -Wsign-compare \
|
||||
-fno-strict-aliasing \
|
||||
$CFLAGS"
|
||||
fi
|
||||
|
||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -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_VERSION_CODE='$LIBGTOP_VERSION_CODE' -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 $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"'\"'
|
||||
|
||||
AC_SUBST(INCLUDES)
|
||||
|
||||
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
||||
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
AC_SUBST(LIBGTOP_LIBS)
|
||||
AC_SUBST(LIBGTOP_INCS)
|
||||
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
||||
AC_SUBST(LIBGTOP_NAMES_INCS)
|
||||
AC_SUBST(LIBGTOP_GUILE_LIBS)
|
||||
AC_SUBST(LIBGTOP_GUILE_INCS)
|
||||
AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS)
|
||||
AC_SUBST(LIBGTOP_GUILE_NAMES_INCS)
|
||||
AC_SUBST(LIBGTOP_BINDIR)
|
||||
AC_SUBST(LIBGTOP_SERVER)
|
||||
|
||||
if test x$libgtop_need_server = xyes ; then
|
||||
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la"
|
||||
server_programs='libgtop_server'
|
||||
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la"
|
||||
server_programs='libgtop_server2'
|
||||
else
|
||||
sysdeps_suid_lib=
|
||||
server_programs=
|
||||
@@ -437,152 +377,16 @@ fi
|
||||
AC_SUBST(sysdeps_suid_lib)
|
||||
AC_SUBST(server_programs)
|
||||
|
||||
|
||||
dnl The following one is copied from glib/configure.in
|
||||
|
||||
AC_OUTPUT_COMMANDS([
|
||||
|
||||
## Generate `glibconfig.h' in two cases
|
||||
## 1. `config.status' is run either explicitly, or via configure.
|
||||
## Esp. not when it is run in `Makefile' to generate makefiles and
|
||||
## config.h
|
||||
## 2. CONFIG_OTHER is set explicitly
|
||||
##
|
||||
## Case 1 is difficult. We know that `automake' sets one of
|
||||
## CONFIG_FILES or CONFIG_HEADERS to empty. This heuristic works
|
||||
## only when AM_CONFIG_HEADER is set, however.
|
||||
|
||||
if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
|
||||
# Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
|
||||
CONFIG_OTHER=${CONFIG_OTHER:-glibtop-config.h}
|
||||
fi
|
||||
case "$CONFIG_OTHER" in
|
||||
*glibtop-config.h*)
|
||||
echo creating glibtop-config.h
|
||||
outfile=glibtop-config.h-tmp
|
||||
cat > $outfile <<\_______EOF
|
||||
/* glibtop-config.h
|
||||
*
|
||||
* This is a generated file. Please modify `configure.in'
|
||||
*/
|
||||
|
||||
#ifndef GLIBTOP_CONFIG_H
|
||||
#define GLIBTOP_CONFIG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
_______EOF
|
||||
|
||||
did_typedefs=no
|
||||
|
||||
if test x$glibtop_uint64_t != xyes ; then
|
||||
did_typedefs=yes
|
||||
cat >> $outfile <<\_______EOF
|
||||
|
||||
#ifndef u_int64_t
|
||||
typedef unsigned long long int u_int64_t;
|
||||
#endif
|
||||
_______EOF
|
||||
fi
|
||||
|
||||
if test x$glibtop_int64_t != xyes ; then
|
||||
did_typedefs=yes
|
||||
cat >> $outfile <<\_______EOF
|
||||
|
||||
#ifndef int64_t
|
||||
typedef signed long long int int64_t;
|
||||
#endif
|
||||
_______EOF
|
||||
fi
|
||||
|
||||
if test x$did_typedefs = xyes ; then
|
||||
cat >>$outfile <<_______EOF
|
||||
|
||||
/*
|
||||
* NOTE: If your application checks for "u_int64_t" or "int64_t" in its own
|
||||
* config.h, you must not include it after any of the LibGTop headers.
|
||||
*/
|
||||
_______EOF
|
||||
fi
|
||||
|
||||
cat >>$outfile <<_______EOF
|
||||
|
||||
/* Define if we need the LibGTop server. */
|
||||
_______EOF
|
||||
|
||||
if test x$glibtop_need_libgtop = xyes ; then
|
||||
echo '#define NEED_LIBGTOP 1' >> $outfile
|
||||
else
|
||||
echo '#undef NEED_LIBGTOP' >> $outfile
|
||||
fi
|
||||
|
||||
cat >>$outfile <<_______EOF
|
||||
|
||||
/* Define if LibGTop has support for multiple processors. */
|
||||
_______EOF
|
||||
|
||||
if test x$glibtop_have_smp = xyes ; then
|
||||
echo '#define HAVE_LIBGTOP_SMP 1' >> $outfile
|
||||
else
|
||||
echo '#undef HAVE_LIBGTOP_SMP' >> $outfile
|
||||
fi
|
||||
|
||||
cat >>$outfile <<_______EOF
|
||||
|
||||
/* LibGTop major, minor and micro version. */
|
||||
#define LIBGTOP_MAJOR_VERSION $libgtop_major_version
|
||||
#define LIBGTOP_MINOR_VERSION $libgtop_minor_version
|
||||
#define LIBGTOP_MICRO_VERSION $libgtop_micro_version
|
||||
|
||||
/* LibGTop version and numerical version code ("1.234.567" -> 1234567). */
|
||||
#define LIBGTOP_VERSION "$libgtop_version"
|
||||
#define LIBGTOP_VERSION_CODE $libgtop_version_code
|
||||
|
||||
/* LibGTop server version, increased each time the protocol changes. */
|
||||
#define LIBGTOP_SERVER_VERSION $libgtop_server_version
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* GLIBCONFIG_H */
|
||||
_______EOF
|
||||
|
||||
if cmp -s $outfile glibtop-config.h; then
|
||||
echo glibtop-config.h is unchanged
|
||||
rm -f $outfile
|
||||
else
|
||||
mv $outfile glibtop-config.h
|
||||
fi ;;
|
||||
esac
|
||||
],[
|
||||
glibtop_uint64_t=$ac_cv_type_u_int64_t
|
||||
glibtop_int64_t=$ac_cv_type_int64_t
|
||||
libgtop_major_version=$LIBGTOP_MAJOR_VERSION
|
||||
libgtop_minor_version=$LIBGTOP_MINOR_VERSION
|
||||
libgtop_micro_version=$LIBGTOP_MICRO_VERSION
|
||||
libgtop_version_code=$LIBGTOP_VERSION_CODE
|
||||
libgtop_server_version=$LIBGTOP_SERVER_VERSION
|
||||
libgtop_version=$LIBGTOP_VERSION
|
||||
glibtop_need_libgtop=$libgtop_need_server
|
||||
glibtop_have_smp=$libgtop_smp
|
||||
])
|
||||
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
libgtop.spec
|
||||
po/Makefile.in
|
||||
intl/Makefile
|
||||
misc/Makefile
|
||||
include/Makefile
|
||||
include/glibtop/Makefile
|
||||
sysdeps/Makefile
|
||||
sysdeps/common/Makefile
|
||||
sysdeps/names/Makefile
|
||||
sysdeps/guile/Makefile
|
||||
sysdeps/guile/names/Makefile
|
||||
sysdeps/stub/Makefile
|
||||
sysdeps/stub_suid/Makefile
|
||||
sysdeps/sun4/Makefile
|
||||
@@ -591,11 +395,12 @@ sysdeps/linux/Makefile
|
||||
sysdeps/kernel/Makefile
|
||||
sysdeps/freebsd/Makefile
|
||||
sysdeps/solaris/Makefile
|
||||
sysdeps/aix/Makefile
|
||||
src/Makefile
|
||||
src/daemon/Makefile
|
||||
src/inodedb/Makefile
|
||||
lib/Makefile
|
||||
examples/Makefile
|
||||
doc/Makefile
|
||||
support/Makefile
|
||||
macros/Makefile])
|
||||
libgtop-2.0.pc
|
||||
])
|
||||
|
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
|
9
debian/README.Debian
vendored
Normal file
9
debian/README.Debian
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
LibGTop CVS snapshots for Debian
|
||||
--------------------------------
|
||||
|
||||
This is a debian package made from a stable release of LibGTop, but it
|
||||
should be considered "unofficial" since I'm not a Debian Maintainer.
|
||||
|
||||
|
||||
Martin Baulig <martin@home-of-linux.org>, Wed, 16 Feb 2000 16:40:50 +0100
|
||||
|
121
debian/changelog
vendored
Normal file
121
debian/changelog
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
libgtop (1.0.7-1) unstable; urgency=low
|
||||
* New upstream source (1.0.7 "Copenhagen" release)
|
||||
* Non-maintainer upload; since I'm not a Debian maintainer, this is some
|
||||
kind of "unofficial" debian package for LibGTop 1.0.7 - but I think it
|
||||
can be considered stable and working.
|
||||
|
||||
-- Martin Baulig <martin@home-of-linux.org> Wed, 16 Feb 2000 16:40:50 +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: libgtop1@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: libgtop1@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 libgtop1$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)
|
24
debian/libgtop-dev.files.in
vendored
Normal file
24
debian/libgtop-dev.files.in
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
@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/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/libgtop1.README.Debian
vendored
Normal file
5
debian/libgtop1.README.Debian
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
The Debian package of libgtop, a GNOME library.
|
||||
|
||||
--
|
||||
Martin Baulig <martin@home-of-linux.org>
|
12
debian/libgtop1.copyright
vendored
Normal file
12
debian/libgtop1.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.
|
5
debian/libgtop1.docs
vendored
Normal file
5
debian/libgtop1.docs
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
RELNOTES-0.25
|
||||
RELNOTES-1.0.x
|
||||
NEWS
|
||||
AUTHORS
|
||||
debian/changelog
|
4
debian/libgtop1.files.in
vendored
Normal file
4
debian/libgtop1.files.in
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
@PREFIX@/lib/libgtop*.so.[0-9].[0-9][0-9].[0-9]
|
||||
@PREFIX@/lib/libgtop*.so.[0-9].[0-9].[0-9]
|
||||
@PREFIX@/lib/libgtop*.so.[0-9]
|
||||
@PREFIX@/share/locale/*/*/libgtop.mo
|
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 \
|
||||
libgtop1@SUFFIX@ \
|
||||
libgtop-dev@SUFFIX@
|
||||
|
||||
#
|
||||
# libgtop1@SUFFIX@
|
||||
#
|
||||
|
||||
libgtop1@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 libgtop1@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
|
||||
|
||||
|
@@ -1,3 +1,26 @@
|
||||
2004-03-05 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* reference.texi: update for new API
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* reference.texi: s/u_int64_t/guint64/
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* Makefile.am: removed traces of guile, intllibs and libgnomesupport
|
||||
|
||||
2002-03-12 James Henstridge <james@daa.com.au>
|
||||
|
||||
* Makefile.am (MAKEINFO): using += seems to screw up the build
|
||||
with newer automakes. Set it explicitly (using @MAKEINFO@) seems
|
||||
to be compatible with both.
|
||||
|
||||
2001-11-26 Abel Cheung <maddog@linux.org.hk>
|
||||
|
||||
* libgtop.texi, Makefile.am: Renamed to libgtop2.texi
|
||||
* about.texi: Very minor update.
|
||||
|
||||
1999-10-18 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* about.texi: Added a note about LibGTop and GNOME.
|
||||
@@ -7,22 +30,7 @@
|
||||
|
||||
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* Makefile.am: Reverted Timur's commit.
|
||||
(MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. This still
|
||||
creates libgtop.info in srcdir, but that's an automake problem.
|
||||
|
||||
Tue Jun 15 15:59:50 1999 Timur Bakeyev <mc@bat.ru>
|
||||
|
||||
* Makefile.am: Force `auto-macros.texi' to be created in $(srcdir),
|
||||
as, otherwise, makeinfo is unable to find it, if srcdir != builddir.
|
||||
That's a buggy solution, as spoils srcdir, but, as libgtop.info also
|
||||
created in srcdir - this is acceptable. Both SHOULD be fixed!
|
||||
|
||||
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
|
||||
|
||||
* internals.texi: New file documenting LibGTop internals.
|
||||
* reference.texi: Started to document all library functions and
|
||||
finished the sysdeps and common references.
|
||||
* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here.
|
||||
|
||||
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
|
@@ -1,27 +1,23 @@
|
||||
info_TEXINFOS = libgtop.texi
|
||||
info_TEXINFOS = libgtop2.texi
|
||||
|
||||
libgtop_TEXINFOS = libgtop.texi about.texi reference.texi \
|
||||
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.texi \
|
||||
auto-macros.texi version.texi main.texi \
|
||||
white-paper.texi
|
||||
|
||||
MAKEINFO += -I @libgtop_top_builddir@/doc
|
||||
MAKEINFO = @MAKEINFO@ -I @libgtop_top_builddir@/doc
|
||||
|
||||
EXTRA_DIST = auto-macros.texi.in
|
||||
|
||||
auto-macros.texi: auto-macros.texi.in Makefile
|
||||
## Use sed and then mv to avoid problems if the user interrupts.
|
||||
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
||||
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)#g' \
|
||||
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \
|
||||
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
||||
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
||||
-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' \
|
||||
@@ -33,7 +29,6 @@ auto-macros.texi: auto-macros.texi.in Makefile
|
||||
-e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \
|
||||
-e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \
|
||||
-e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \
|
||||
-e 's#\%libgtop_guile_found\%#$(libgtop_guile_found)#g' \
|
||||
-e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \
|
||||
< $(srcdir)/auto-macros.texi.in > auto-macros.tmp
|
||||
echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp
|
||||
|
@@ -7,9 +7,10 @@ and information about running Processes.
|
||||
On Systems like Solaris or Digital Unix where you need special privileges to
|
||||
get those data, it uses a setuid/setgid server to do so.
|
||||
|
||||
Even if LibGTop is a part of the GNOME desktop environment (@uref{http://www.gnome.org}),
|
||||
the main interface of LibGTop is totally independent from any particular desktop environment,
|
||||
so you can also use it as a standalone library in any piece of GPLed software.
|
||||
Even if LibGTop is a part of the GNOME desktop environment
|
||||
(@uref{http://www.gnome.org}), the main interface of LibGTop is totally
|
||||
independent from any particular desktop environment, so you can also use it
|
||||
as a standalone library in any piece of GPLed software.
|
||||
|
||||
@menu
|
||||
* Availability:: Where to get LibGTop
|
||||
@@ -32,10 +33,10 @@ latest release tarballs from
|
||||
@noindent
|
||||
or any of its mirror sites.
|
||||
|
||||
The latest stable version of LibGTop is 1.0.1 which is also the one that comes
|
||||
together with GNOME 1.0. In CVS, there is a @code{LIBGTOP_STABLE_1_0} branch
|
||||
which is rooted at the @code{LIBGTOP_1_0_1} tag while actual development occurs
|
||||
in the @code{HEAD} which currently has version 1.1.0.
|
||||
The latest stable version of LibGTop is 1.0.12 which is also the one that comes
|
||||
together with GNOME 1.0. It belongs to @code{LIBGTOP_STABLE_1_0} branch in CVS.
|
||||
Actual development occurs in the @code{libgtop-GNOME-2-0-port} which is
|
||||
currently versioned 1.90.0.
|
||||
|
||||
@node Supported Platforms, Mailing List, Availability, About
|
||||
@section Supported Platforms
|
||||
@@ -46,7 +47,7 @@ The stable branch currently supports the following platforms:
|
||||
@item All versions of Linux
|
||||
|
||||
LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but
|
||||
it should also work without problems on SparcLinux.
|
||||
it should also work without problems on SparcLinux or Linux 2.4.x.
|
||||
|
||||
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
|
||||
|
||||
@@ -115,6 +116,7 @@ me a lot in the early beginning.
|
||||
@item Timur Bakeyev for the BSDI port.
|
||||
@item Drazen Kacar and the other people on the LibGTop development mailing
|
||||
list for the Solaris port.
|
||||
@item Kevin Vandersloot for the effort to port to GNOME 2.0.
|
||||
@item All people sending me patches, having good ideas, ...
|
||||
@item Everyone I have forgotten in this list ...
|
||||
@end itemize
|
||||
|
@@ -1,6 +1,6 @@
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c %**start of header
|
||||
@setfilename libgtop.info
|
||||
@setfilename libgtop2.info
|
||||
@settitle LibGTop Reference Manual
|
||||
@setchapternewpage odd
|
||||
@c %**end of header
|
||||
@@ -44,7 +44,7 @@ translation approved by the Free Software Foundation.
|
||||
@format
|
||||
@dircategory Libraries:
|
||||
@direntry
|
||||
* libgtop: (libgtop). Library to get system specific data
|
||||
* LibGTop2: (libgtop2). Library to get system specific data
|
||||
such as cpu and memory usage, active
|
||||
processes
|
||||
@end direntry
|
@@ -4,7 +4,6 @@
|
||||
* About:: About LibGTop
|
||||
* White Paper:: LibGTop White Paper
|
||||
* Reference Manual:: LibGTop Reference Manual
|
||||
* LibGTop Internals:: LibGTop Internals
|
||||
|
||||
--- The Detailed Node Listing ---
|
||||
|
||||
@@ -19,7 +18,6 @@ LibGTop White Paper
|
||||
|
||||
* Introduction:: Introduction
|
||||
* Overview:: Overview
|
||||
* Servers and Daemons:: Servers and Daemons
|
||||
|
||||
Overview
|
||||
|
||||
@@ -62,24 +60,9 @@ Library Functions
|
||||
* glibtop_init:: Server Initialization.
|
||||
* glibtop_sysdeps:: Server Sysdeps.
|
||||
* Library Parameters:: Library Parameters.
|
||||
|
||||
LibGTop Internals
|
||||
|
||||
* General Internals:: General Internals
|
||||
* Sysdeps Internals:: Sysdeps Internals
|
||||
|
||||
General Internals
|
||||
|
||||
* glibtop:: The server structure
|
||||
|
||||
Sysdeps Internals
|
||||
|
||||
* glibtop_open_s:: Non-privileged initializations
|
||||
* glibtop_close_s:: Non-privileged cleanups
|
||||
@end menu
|
||||
|
||||
@include about.texi
|
||||
@include white-paper.texi
|
||||
@include reference.texi
|
||||
@include internals.texi
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
@node Reference Manual, LibGTop Internals, White Paper, Top
|
||||
@node Reference Manual, , White Paper, Top
|
||||
@chapter LibGTop Reference Manual
|
||||
|
||||
@menu
|
||||
@@ -50,7 +50,7 @@ typedef struct _glibtop_cpu glibtop_cpu;
|
||||
|
||||
struct _glibtop_cpu
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
total,
|
||||
user,
|
||||
nice,
|
||||
@@ -139,7 +139,7 @@ typedef struct _glibtop_mem glibtop_mem;
|
||||
|
||||
struct _glibtop_mem
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
total,
|
||||
used,
|
||||
free,
|
||||
@@ -207,7 +207,7 @@ typedef struct _glibtop_swap glibtop_swap;
|
||||
|
||||
struct _glibtop_swap
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
total,
|
||||
used,
|
||||
free,
|
||||
@@ -266,10 +266,10 @@ typedef struct _glibtop_uptime glibtop_uptime;
|
||||
|
||||
struct _glibtop_uptime
|
||||
@{
|
||||
u_int64_t flags;
|
||||
guint64 flags;
|
||||
double uptime,
|
||||
idletime;
|
||||
u_int64_t boot_time;
|
||||
guint64 boot_time;
|
||||
@};
|
||||
@end cartouche
|
||||
@end example
|
||||
@@ -318,9 +318,9 @@ typedef struct _glibtop_loadavg glibtop_loadavg;
|
||||
|
||||
struct _glibtop_loadavg
|
||||
@{
|
||||
u_int64_t flags;
|
||||
guint64 flags;
|
||||
double loadavg [3];
|
||||
u_int64_t nr_running,
|
||||
guint64 nr_running,
|
||||
nr_tasks,
|
||||
last_pid;
|
||||
@};
|
||||
@@ -395,7 +395,7 @@ typedef struct _glibtop_proclist glibtop_proclist;
|
||||
|
||||
struct _glibtop_proclist
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
number,
|
||||
total,
|
||||
size;
|
||||
@@ -464,8 +464,8 @@ Size of a single entry in the returned list
|
||||
(this equals @code{sizeof (unsigned)}).
|
||||
@end table
|
||||
|
||||
The returned list is allocated using @code{glibtop_malloc} and must be freed
|
||||
using @code{glibtop_free} to avoid a memory leak.
|
||||
The returned list is allocated using @code{g_malloc} and must be freed
|
||||
using @code{g_free} to avoid a memory leak.
|
||||
|
||||
@page
|
||||
@node glibtop_proc_state, glibtop_proc_uid, glibtop_proclist, System Dependent
|
||||
@@ -492,7 +492,7 @@ typedef struct _glibtop_proc_state glibtop_proc_state;
|
||||
|
||||
struct _glibtop_proc_state
|
||||
@{
|
||||
u_int64_t flags;
|
||||
guint64 flags;
|
||||
char cmd[40];
|
||||
@ifset LIBGTOP-1-1
|
||||
unsigned state;
|
||||
@@ -618,7 +618,7 @@ typedef struct _glibtop_proc_uid glibtop_proc_uid;
|
||||
|
||||
struct _glibtop_proc_uid
|
||||
@{
|
||||
u_int64_t flags;
|
||||
guint64 flags;
|
||||
int uid,
|
||||
euid,
|
||||
gid,
|
||||
@@ -698,7 +698,7 @@ typedef struct _glibtop_proc_mem glibtop_proc_mem;
|
||||
|
||||
struct _glibtop_proc_mem
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
size,
|
||||
vsize,
|
||||
resident,
|
||||
@@ -813,7 +813,7 @@ typedef struct _glibtop_proc_time glibtop_proc_time;
|
||||
|
||||
struct _glibtop_proc_time
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
start_time,
|
||||
rtime,
|
||||
utime,
|
||||
@@ -881,7 +881,7 @@ typedef struct _glibtop_proc_signal glibtop_proc_signal;
|
||||
|
||||
struct _glibtop_proc_signal
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
signal [2],
|
||||
blocked [2],
|
||||
sigignore [2],
|
||||
@@ -902,7 +902,7 @@ Mask of caught signals
|
||||
@end table
|
||||
|
||||
All signal masks are interpreted as bit mask; it is an array of two
|
||||
@code{u_int64_t}'s so we can save 128 signals there.
|
||||
@code{guint64}'s so we can save 128 signals there.
|
||||
|
||||
@page
|
||||
@node glibtop_proc_kernel, glibtop_proc_segment, glibtop_proc_signal, System Dependent
|
||||
@@ -929,8 +929,8 @@ typedef struct _glibtop_proc_kernel glibtop_proc_kernel;
|
||||
|
||||
struct _glibtop_proc_kernel
|
||||
@{
|
||||
u_int64_t flags;
|
||||
u_int64_t k_flags,
|
||||
guint64 flags;
|
||||
guint64 k_flags,
|
||||
min_flt,
|
||||
maj_flt,
|
||||
cmin_flt,
|
||||
@@ -1029,7 +1029,7 @@ typedef struct _glibtop_proc_segment glibtop_proc_segment;
|
||||
|
||||
struct _glibtop_proc_segment
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
text_rss,
|
||||
shlib_rss,
|
||||
data_rss,
|
||||
@@ -1096,7 +1096,7 @@ typedef struct _glibtop_proc_args glibtop_proc_args;
|
||||
|
||||
struct _glibtop_proc_args
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
size;
|
||||
@};
|
||||
@end cartouche
|
||||
@@ -1108,7 +1108,7 @@ Returns a string with all command line arguments of process @code{pid}
|
||||
The command line arguments in the returned string are separated by zero bytes;
|
||||
the lenght of this string is returned in the @code{size} field.
|
||||
|
||||
Remember to @code{glibtop_free} the returned string to avoid a memory leak.
|
||||
Remember to @code{g_free} the returned string to avoid a memory leak.
|
||||
|
||||
@page
|
||||
@node glibtop_proc_map, glibtop_netload, glibtop_proc_args, System Dependent
|
||||
@@ -1135,7 +1135,7 @@ typedef struct _glibtop_proc_map glibtop_proc_map;
|
||||
|
||||
struct _glibtop_proc_map
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
number,
|
||||
total,
|
||||
size;
|
||||
@@ -1144,7 +1144,7 @@ struct _glibtop_proc_map
|
||||
@end example
|
||||
|
||||
Returns a @code{glibtop_map_entry *} list (which needs to be freed with
|
||||
@code{glibtop_free}) of memory maps of process @code{pid}.
|
||||
@code{g_free}) of memory maps of process @code{pid}.
|
||||
|
||||
@table @code
|
||||
@item number
|
||||
@@ -1164,7 +1164,7 @@ typedef struct _glibtop_map_entry glibtop_map_entry;
|
||||
|
||||
struct _glibtop_map_entry
|
||||
@{
|
||||
u_int64_t flags, start, end, offset, perm, inode, device;
|
||||
guint64 flags, start, end, offset, perm, inode, device;
|
||||
char filename [GLIBTOP_MAP_FILENAME_LEN+1];
|
||||
@};
|
||||
@end cartouche
|
||||
@@ -1175,13 +1175,13 @@ fields are valid:
|
||||
|
||||
@example
|
||||
@cartouche
|
||||
#define GLIBTOP_MAP_ENTRY_START 1
|
||||
#define GLIBTOP_MAP_ENTRY_END 2
|
||||
#define GLIBTOP_MAP_ENTRY_OFFSET 3
|
||||
#define GLIBTOP_MAP_ENTRY_PERM 4
|
||||
#define GLIBTOP_MAP_ENTRY_INODE 5
|
||||
#define GLIBTOP_MAP_ENTRY_DEVICE 6
|
||||
#define GLIBTOP_MAP_ENTRY_FILENAME 7
|
||||
#define GLIBTOP_MAP_ENTRY_START 0
|
||||
#define GLIBTOP_MAP_ENTRY_END 1
|
||||
#define GLIBTOP_MAP_ENTRY_OFFSET 2
|
||||
#define GLIBTOP_MAP_ENTRY_PERM 3
|
||||
#define GLIBTOP_MAP_ENTRY_INODE 4
|
||||
#define GLIBTOP_MAP_ENTRY_DEVICE 5
|
||||
#define GLIBTOP_MAP_ENTRY_FILENAME 6
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
@@ -1222,7 +1222,7 @@ typedef struct _glibtop_netload glibtop_netload;
|
||||
|
||||
struct _glibtop_netload
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
if_flags,
|
||||
mtu,
|
||||
subnet,
|
||||
@@ -1329,7 +1329,7 @@ typedef struct _glibtop_ppp glibtop_ppp;
|
||||
|
||||
struct _glibtop_ppp
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
state,
|
||||
bytes_in,
|
||||
bytes_out;
|
||||
@@ -1409,7 +1409,7 @@ typedef struct _glibtop_mountlist glibtop_mountlist;
|
||||
|
||||
struct _glibtop_mountlist
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
number,
|
||||
total,
|
||||
size;
|
||||
@@ -1418,7 +1418,7 @@ struct _glibtop_mountlist
|
||||
@end example
|
||||
|
||||
Returns a @code{glibtop_mountentry *} list (which needs to be freed with
|
||||
@code{glibtop_free}) of mounted filesystems.
|
||||
@code{g_free}) of mounted filesystems.
|
||||
|
||||
@table @code
|
||||
@item number
|
||||
@@ -1438,7 +1438,7 @@ typedef struct _glibtop_mountentry glibtop_mountentry;
|
||||
|
||||
struct _glibtop_mountentry
|
||||
@{
|
||||
u_int64_t dev;
|
||||
guint64 dev;
|
||||
char devname [GLIBTOP_MOUNTENTRY_LEN+1];
|
||||
char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
|
||||
char type [GLIBTOP_MOUNTENTRY_LEN+1];
|
||||
@@ -1488,7 +1488,7 @@ typedef struct _glibtop_fsusage glibtop_fsusage;
|
||||
|
||||
struct _glibtop_fsusage
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
blocks,
|
||||
bfree,
|
||||
bavail,
|
||||
@@ -1639,7 +1639,7 @@ typedef struct _glibtop_sysdeps glibtop_sysdeps;
|
||||
|
||||
struct _glibtop_sysdeps
|
||||
@{
|
||||
u_int64_t flags,
|
||||
guint64 flags,
|
||||
features,
|
||||
pointer_size,
|
||||
cpu,
|
||||
|
@@ -4,7 +4,6 @@
|
||||
@menu
|
||||
* Introduction:: Introduction
|
||||
* Overview:: Overview
|
||||
* Servers and Daemons:: Servers and Daemons
|
||||
@end menu
|
||||
|
||||
@node Introduction, Overview, White Paper, White Paper
|
||||
@@ -48,7 +47,7 @@ since there's more than just one single program that wants to use them - for
|
||||
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
|
||||
@code{netload} panel applets.
|
||||
|
||||
@node Overview, Servers and Daemons, Introduction, White Paper
|
||||
@node Overview, , Introduction, White Paper
|
||||
@section Overview
|
||||
|
||||
This section should give you a short overview on how LibGTop was developed, which
|
||||
@@ -89,48 +88,3 @@ only contains the @dfn{features} which need privileges.
|
||||
Whenever we do not need any privileges to get all the data for some of the requested
|
||||
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
||||
rather than using the server.
|
||||
|
||||
@node Servers and Daemons, , Overview, White Paper
|
||||
@section Servers and Daemons
|
||||
|
||||
LibGTop gives you the possibility to use different LibGTop "servers" and
|
||||
"daemons" in your application.
|
||||
|
||||
Normally you do not need to worry about this things since LibGTop auto-
|
||||
matically opens a pipe to its server it it's required, but this can also
|
||||
be customized to fit your needs.
|
||||
|
||||
For instance if you have a small applet which is only interested in disk
|
||||
usage there's no need to fork a separate server process since you don't
|
||||
need any privileges to get them on any of the supported systems. This can
|
||||
be archieved with a special call to @code{glibtop_init_r} on startup.
|
||||
|
||||
There's also an option to tell @code{glibtop_init_r} that you're only
|
||||
interested in several features - for instance cpu and memory usage. In
|
||||
this case LibGTop will only fork a server process if it's required to get
|
||||
cpu and memory.
|
||||
|
||||
You can also tell @code{glibtop_init_r} to start the server only on demand,
|
||||
this might become useful in command-line based programs. For graphical
|
||||
applications it's normally best to start the server directly during their
|
||||
initialization. The same applies for any time critical applications (since
|
||||
@code{fork} is an expensive operation on some systems this may lead to
|
||||
incorrect statistics).
|
||||
|
||||
LibGTop also allows you to talk to a remote machine using the
|
||||
@dfn{LibGTop daemon}. This daemon is based on @code{gnuserv} from
|
||||
GNU Emacs and should be run as an unprivileged user. It has support
|
||||
for either @code{xauth} or host based authorization.
|
||||
|
||||
This daemon itself behaves like a LibGTop client application, i.e. it
|
||||
forks a server process if this is required.
|
||||
|
||||
The main use for this daemon is when you want to monitor a machine which
|
||||
is either very slow or has very low disk space. In this case you don't need
|
||||
to install the whole client application (for instance GTop) on the remote
|
||||
machine but only a very small (maybe also statically linked) executable and
|
||||
run the graphical application on a more powerful machine.
|
||||
|
||||
It can also be used to monitor a remote machine over a very slow link such
|
||||
as a dialup connection since the conversation between LibGTop client and
|
||||
daemon uses much less bandwith than an ordinary X11 connection.
|
||||
|
2
dtd/.cvsignore
Normal file
2
dtd/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile.in
|
||||
Makefile
|
9
dtd/Makefile.am
Normal file
9
dtd/Makefile.am
Normal file
@@ -0,0 +1,9 @@
|
||||
backenddir = @LIBGTOP_BACKEND_DIR@
|
||||
|
||||
backend_DATA = \
|
||||
libgtop-backends.dtd \
|
||||
libgtop-backend-info.dtd
|
||||
|
||||
EXTRA_DIST = |
|
||||
$(backend_DATA)
|
||||
|
23
dtd/libgtop-backend-info.dtd
Normal file
23
dtd/libgtop-backend-info.dtd
Normal file
@@ -0,0 +1,23 @@
|
||||
<!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)>
|
||||
<!ELEMENT name (short_name,long_name?)>
|
||||
<!ELEMENT short_name (#PCDATA)>
|
||||
<!ELEMENT long_name (#PCDATA)>
|
||||
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
|
||||
<!ELEMENT authors (author)+>
|
||||
<!ELEMENT author (author_name,author_email?)>
|
||||
<!ELEMENT author_name (#PCDATA)>
|
||||
<!ELEMENT author_email (#PCDATA)>
|
||||
|
||||
<!ELEMENT legalnotice (license,copyright?)>
|
||||
<!ELEMENT license (#PCDATA)>
|
||||
|
||||
<!ELEMENT copyright (holder)+>
|
||||
<!ELEMENT holder (holder_year?,holder_name,holder_email?)>
|
||||
<!ELEMENT holder_year (#PCDATA)>
|
||||
<!ELEMENT holder_name (#PCDATA)>
|
||||
<!ELEMENT holder_email (#PCDATA)>
|
||||
|
||||
<!ELEMENT comments (comment)+>
|
||||
<!ELEMENT comment (#PCDATA)>
|
11
dtd/libgtop-backends.dtd
Normal file
11
dtd/libgtop-backends.dtd
Normal file
@@ -0,0 +1,11 @@
|
||||
<!ELEMENT Backends (Backend)+>
|
||||
|
||||
<!ELEMENT Backend (Name,Location)>
|
||||
<!ELEMENT Name (#PCDATA)>
|
||||
|
||||
<!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)>
|
||||
<!ELEMENT LibtoolName (#PCDATA)>
|
||||
<!ELEMENT ShlibName (#PCDATA)>
|
||||
|
||||
<!ELEMENT ExtraLibs (ExtraLib)+>
|
||||
<!ELEMENT ExtraLib (LibtoolName?,ShlibName)>
|
@@ -1,14 +1,48 @@
|
||||
2003-12-27 Ole Laursen <olau@hardworking.dk>
|
||||
|
||||
* mountlist.c: Updated to display block size too.
|
||||
|
||||
2004-03-04 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* smp.c: use libgtop-i18n.h
|
||||
|
||||
2003-10-21 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* Makefile.am:
|
||||
* smp.c:
|
||||
* sysdeps.c: (main): install only one library, libgtop-2.0
|
||||
Fix build-time warnings due to the redefinition of guint64
|
||||
Fix building smp.c and sysdeps.c
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* first.c:
|
||||
* mountlist.c:
|
||||
* netload.c:
|
||||
* procmap.c:
|
||||
* second.c:
|
||||
* smp.c:
|
||||
* sysdeps.c:
|
||||
* third.c:
|
||||
* timings.c: fixed compilation
|
||||
|
||||
2003-10-20 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* Makefile.am: removed traces of guile, intllibs and libgnomesupport
|
||||
|
||||
2001-01-14 Abel Cheung <maddog@linux.org.hk>
|
||||
|
||||
* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE.
|
||||
|
||||
* Makefile.am, first.c, second.c, sysdeps.c: Make them at least
|
||||
compile for now, by disabling chunks which should belong to
|
||||
HEAD branch.
|
||||
|
||||
1999-05-28 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* first.c, second.c, sysdeps.c: Use LibGTop version conditionals
|
||||
so we can more easily merge the code into LIBGTOP_STABLE_1_0.
|
||||
|
||||
1999-05-08 Drazen Kacar <dave@srce.hr>
|
||||
|
||||
* mountlist.c: Changed pfintf formats to "%lld" when printing
|
||||
u_int64_t. This is still utterly unportable, but will
|
||||
hopefully work on all supported architectures. For now.
|
||||
|
||||
1999-05-07 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* timings.c (timersub): Renamed this to `libgtop_timersub' and define
|
||||
|
@@ -6,14 +6,9 @@ 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\
|
||||
noinst_PROGRAMS = first second\
|
||||
mountlist procmap netload sysdeps timings \
|
||||
@static_targets@ @guile_examples@ @smp_examples@
|
||||
@static_targets@ @smp_examples@
|
||||
|
||||
EXTRA_PROGRAMS = first_static second_static \
|
||||
mountlist_static procmap_static \
|
||||
@@ -22,77 +17,53 @@ EXTRA_PROGRAMS = first_static second_static \
|
||||
timings_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_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
first_static_SOURCES = $(first_SOURCES)
|
||||
first_static_LDADD = $(first_LDADD)
|
||||
first_static_LDFLAGS = -static
|
||||
|
||||
second_SOURCES = second.c
|
||||
second_LDADD = $(top_builddir)/lib/libgtop.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
||||
@LIBSUPPORT@ @INTLLIBS@
|
||||
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
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_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
procmap_static_SOURCES = $(procmap_SOURCES)
|
||||
procmap_static_LDADD = $(procmap_LDADD)
|
||||
procmap_static_LDFLAGS = -static
|
||||
|
||||
netload_SOURCES = netload.c
|
||||
netload_LDADD = $(top_builddir)/lib/libgtop.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
||||
@LIBSUPPORT@ @INTLLIBS@
|
||||
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
netload_static_SOURCES = $(netload_SOURCES)
|
||||
netload_static_LDADD = $(netload_LDADD)
|
||||
netload_static_LDFLAGS = -static
|
||||
|
||||
sysdeps_SOURCES = sysdeps.c
|
||||
sysdeps_LDADD = $(top_builddir)/lib/libgtop.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
||||
@LIBSUPPORT@ @INTLLIBS@
|
||||
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
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_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names-2.0.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_LDADD = $(third_names_LIBS) \
|
||||
$(top_builddir)/lib/libgtop-2.0.la \
|
||||
@INTLLIBS@
|
||||
|
||||
third_static_SOURCES = $(third_SOURCES)
|
||||
third_static_LDADD = $(third_LDADD)
|
||||
third_static_LDFLAGS = -static
|
||||
|
||||
mountlist_SOURCES = mountlist.c
|
||||
mountlist_LDADD = $(top_builddir)/lib/libgtop.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
||||
@LIBSUPPORT@ @INTLLIBS@
|
||||
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
||||
mountlist_static_LDADD = $(mountlist_LDADD)
|
||||
@@ -100,20 +71,14 @@ 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_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
smp_static_SOURCES = $(smp_SOURCES)
|
||||
smp_static_LDADD = $(smp_LDADD)
|
||||
smp_static_LDFLAGS = -static
|
||||
|
||||
timings_SOURCES = timings.c
|
||||
timings_LDADD = $(top_builddir)/lib/libgtop.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
||||
@LIBSUPPORT@ @INTLLIBS@
|
||||
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
timings_static_SOURCES = $(timings_SOURCES)
|
||||
timings_static_LDADD = $(timings_LDADD)
|
||||
|
251
examples/first.c
251
examples/first.c
@@ -26,7 +26,6 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
@@ -52,8 +51,8 @@ main (int argc, char *argv [])
|
||||
count = PROFILE_COUNT;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||
|
||||
@@ -116,16 +115,9 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_uptime (&data.uptime);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Uptime (0x%08lx): %f, %f, %lu\n",
|
||||
(unsigned long) data.uptime.flags,
|
||||
data.uptime.uptime, data.uptime.idletime,
|
||||
(unsigned long) data.uptime.boot_time);
|
||||
#else
|
||||
printf ("Uptime (0x%08lx): %f, %f\n",
|
||||
(unsigned long) data.uptime.flags,
|
||||
data.uptime.uptime, data.uptime.idletime);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_loadavg (&data.loadavg);
|
||||
@@ -239,7 +231,7 @@ main (int argc, char *argv [])
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
glibtop_free (ptr);
|
||||
g_free (ptr);
|
||||
|
||||
pid = getpid ();
|
||||
ppid = getppid ();
|
||||
@@ -249,52 +241,15 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_state (&data.proc_state, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_State PID %5d (0x%08lx): '%s', %u - "
|
||||
"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
|
||||
(unsigned long) data.proc_state.flags,
|
||||
data.proc_state.cmd, data.proc_state.state,
|
||||
data.proc_state.uid, data.proc_state.gid,
|
||||
data.proc_state.ruid, data.proc_state.rgid,
|
||||
data.proc_state.has_cpu, data.proc_state.processor,
|
||||
data.proc_state.last_processor);
|
||||
#else
|
||||
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);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_uid (&data.proc_uid, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Uid PID %5d (0x%08lx): "
|
||||
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
|
||||
(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.suid, data.proc_uid.sgid,
|
||||
data.proc_uid.fsuid, data.proc_uid.fsgid,
|
||||
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,
|
||||
data.proc_uid.ngroups);
|
||||
|
||||
if (data.proc_uid.ngroups) {
|
||||
for (i = 0; i < data.proc_uid.ngroups; i++) {
|
||||
if (i)
|
||||
printf (" %d", data.proc_uid.groups [i]);
|
||||
else
|
||||
printf (" (%d", data.proc_uid.groups [i]);
|
||||
}
|
||||
printf (")");
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
#else
|
||||
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,
|
||||
@@ -304,7 +259,6 @@ main (int argc, char *argv [])
|
||||
data.proc_uid.pgrp, data.proc_uid.session,
|
||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||
data.proc_uid.priority, data.proc_uid.nice);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_mem (&data.proc_mem, pid);
|
||||
@@ -322,30 +276,6 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Segment PID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx\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_data,
|
||||
(unsigned long) data.proc_segment.end_data,
|
||||
(unsigned long) data.proc_segment.start_brk,
|
||||
(unsigned long) data.proc_segment.end_brk,
|
||||
(unsigned long) data.proc_segment.start_stack,
|
||||
(unsigned long) data.proc_segment.start_mmap,
|
||||
(unsigned long) data.proc_segment.arg_start,
|
||||
(unsigned long) data.proc_segment.arg_end,
|
||||
(unsigned long) data.proc_segment.env_start,
|
||||
(unsigned long) data.proc_segment.env_end);
|
||||
#else
|
||||
printf ("Proc_Segment PID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||
(unsigned long) data.proc_segment.flags,
|
||||
@@ -357,7 +287,6 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_segment.start_code,
|
||||
(unsigned long) data.proc_segment.end_code,
|
||||
(unsigned long) data.proc_segment.start_stack);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_time (&data.proc_time, pid);
|
||||
@@ -378,19 +307,6 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
|
||||
(unsigned long) data.proc_signal.flags,
|
||||
(unsigned long) data.proc_signal.signal [0],
|
||||
(unsigned long) data.proc_signal.signal [1],
|
||||
(unsigned long) data.proc_signal.blocked [0],
|
||||
(unsigned long) data.proc_signal.blocked [1],
|
||||
(unsigned long) data.proc_signal.sigignore [0],
|
||||
(unsigned long) data.proc_signal.sigignore [1],
|
||||
(unsigned long) data.proc_signal.sigcatch [0],
|
||||
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||
#else
|
||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu\n", (int) pid,
|
||||
(unsigned long) data.proc_signal.flags,
|
||||
@@ -398,7 +314,6 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_signal.blocked,
|
||||
(unsigned long) data.proc_signal.sigignore,
|
||||
(unsigned long) data.proc_signal.sigcatch);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||
@@ -430,59 +345,22 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_args.size,
|
||||
args ? args : "");
|
||||
|
||||
glibtop_free (args);
|
||||
g_free (args);
|
||||
|
||||
printf ("\n");
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_state (&data.proc_state, ppid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_State PPID %5d (0x%08lx): '%s', %u - "
|
||||
"%u, %u, %u, %u - %u, %u, %u\n", (int) ppid,
|
||||
(unsigned long) data.proc_state.flags,
|
||||
data.proc_state.cmd, data.proc_state.state,
|
||||
data.proc_state.uid, data.proc_state.gid,
|
||||
data.proc_state.ruid, data.proc_state.rgid,
|
||||
data.proc_state.has_cpu, data.proc_state.processor,
|
||||
data.proc_state.last_processor);
|
||||
#else
|
||||
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);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_uid (&data.proc_uid, ppid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Uid PPID %5d (0x%08lx): "
|
||||
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
|
||||
(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.suid, data.proc_uid.sgid,
|
||||
data.proc_uid.fsuid, data.proc_uid.fsgid,
|
||||
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,
|
||||
data.proc_uid.ngroups);
|
||||
|
||||
if (data.proc_uid.ngroups) {
|
||||
for (i = 0; i < data.proc_uid.ngroups; i++) {
|
||||
if (i)
|
||||
printf (" %d", data.proc_uid.groups [i]);
|
||||
else
|
||||
printf (" (%d", data.proc_uid.groups [i]);
|
||||
}
|
||||
printf (")");
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
#else
|
||||
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,
|
||||
@@ -492,7 +370,6 @@ main (int argc, char *argv [])
|
||||
data.proc_uid.pgrp, data.proc_uid.session,
|
||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||
data.proc_uid.priority, data.proc_uid.nice);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_mem (&data.proc_mem, ppid);
|
||||
@@ -510,30 +387,6 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_segment (&data.proc_segment, ppid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Segment PPID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx\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_data,
|
||||
(unsigned long) data.proc_segment.end_data,
|
||||
(unsigned long) data.proc_segment.start_brk,
|
||||
(unsigned long) data.proc_segment.end_brk,
|
||||
(unsigned long) data.proc_segment.start_stack,
|
||||
(unsigned long) data.proc_segment.start_mmap,
|
||||
(unsigned long) data.proc_segment.arg_start,
|
||||
(unsigned long) data.proc_segment.arg_end,
|
||||
(unsigned long) data.proc_segment.env_start,
|
||||
(unsigned long) data.proc_segment.env_end);
|
||||
#else
|
||||
printf ("Proc_Segment PPID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
|
||||
(unsigned long) data.proc_segment.flags,
|
||||
@@ -545,7 +398,6 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_segment.start_code,
|
||||
(unsigned long) data.proc_segment.end_code,
|
||||
(unsigned long) data.proc_segment.start_stack);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_time (&data.proc_time, ppid);
|
||||
@@ -566,26 +418,12 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_signal (&data.proc_signal, ppid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Signal PPID %5d (0x%08lx): "
|
||||
"%lx %lx %lx %lx %lx %lx %lx %lx\n",
|
||||
(int) ppid, (unsigned long) data.proc_signal.flags,
|
||||
(unsigned long) data.proc_signal.signal [0],
|
||||
(unsigned long) data.proc_signal.signal [1],
|
||||
(unsigned long) data.proc_signal.blocked [0],
|
||||
(unsigned long) data.proc_signal.blocked [1],
|
||||
(unsigned long) data.proc_signal.sigignore [0],
|
||||
(unsigned long) data.proc_signal.sigignore [1],
|
||||
(unsigned long) data.proc_signal.sigcatch [0],
|
||||
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||
#else
|
||||
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);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
||||
@@ -617,59 +455,22 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_args.size,
|
||||
args ? args : "");
|
||||
|
||||
glibtop_free (args);
|
||||
g_free (args);
|
||||
|
||||
printf ("\n");
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_state (&data.proc_state, 1);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_State INIT %5d (0x%08lx): '%s', %u - "
|
||||
"%u, %u, %u, %u - %u, %u, %u\n", 1,
|
||||
(unsigned long) data.proc_state.flags,
|
||||
data.proc_state.cmd, data.proc_state.state,
|
||||
data.proc_state.uid, data.proc_state.gid,
|
||||
data.proc_state.ruid, data.proc_state.rgid,
|
||||
data.proc_state.has_cpu, data.proc_state.processor,
|
||||
data.proc_state.last_processor);
|
||||
#else
|
||||
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);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_uid (&data.proc_uid, 1);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Uid INIT %5d (0x%08lx): "
|
||||
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d", 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.suid, data.proc_uid.sgid,
|
||||
data.proc_uid.fsuid, data.proc_uid.fsgid,
|
||||
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,
|
||||
data.proc_uid.ngroups);
|
||||
|
||||
if (data.proc_uid.ngroups) {
|
||||
for (i = 0; i < data.proc_uid.ngroups; i++) {
|
||||
if (i)
|
||||
printf (" %d", data.proc_uid.groups [i]);
|
||||
else
|
||||
printf (" (%d", data.proc_uid.groups [i]);
|
||||
}
|
||||
printf (")");
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
#else
|
||||
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,
|
||||
@@ -679,7 +480,6 @@ main (int argc, char *argv [])
|
||||
data.proc_uid.pgrp, data.proc_uid.session,
|
||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||
data.proc_uid.priority, data.proc_uid.nice);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_mem (&data.proc_mem, 1);
|
||||
@@ -697,30 +497,6 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_segment (&data.proc_segment, 1);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Segment INIT %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx\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_data,
|
||||
(unsigned long) data.proc_segment.end_data,
|
||||
(unsigned long) data.proc_segment.start_brk,
|
||||
(unsigned long) data.proc_segment.end_brk,
|
||||
(unsigned long) data.proc_segment.start_stack,
|
||||
(unsigned long) data.proc_segment.start_mmap,
|
||||
(unsigned long) data.proc_segment.arg_start,
|
||||
(unsigned long) data.proc_segment.arg_end,
|
||||
(unsigned long) data.proc_segment.env_start,
|
||||
(unsigned long) data.proc_segment.env_end);
|
||||
#else
|
||||
printf ("Proc_Segment INIT %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
|
||||
(unsigned long) data.proc_segment.flags,
|
||||
@@ -732,7 +508,6 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_segment.start_code,
|
||||
(unsigned long) data.proc_segment.end_code,
|
||||
(unsigned long) data.proc_segment.start_stack);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_time (&data.proc_time, 1);
|
||||
@@ -753,19 +528,6 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_signal (&data.proc_signal, 1);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Signal INIT %5d (0x%08lx): "
|
||||
"%lx %lx %lx %lx %lx %lx %lx %lx\n", 1,
|
||||
(unsigned long) data.proc_signal.flags,
|
||||
(unsigned long) data.proc_signal.signal [0],
|
||||
(unsigned long) data.proc_signal.signal [1],
|
||||
(unsigned long) data.proc_signal.blocked [0],
|
||||
(unsigned long) data.proc_signal.blocked [1],
|
||||
(unsigned long) data.proc_signal.sigignore [0],
|
||||
(unsigned long) data.proc_signal.sigignore [1],
|
||||
(unsigned long) data.proc_signal.sigcatch [0],
|
||||
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||
#else
|
||||
printf ("Proc_Signal INIT %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu\n", 1,
|
||||
(unsigned long) data.proc_signal.flags,
|
||||
@@ -773,7 +535,6 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_signal.blocked,
|
||||
(unsigned long) data.proc_signal.sigignore,
|
||||
(unsigned long) data.proc_signal.sigcatch);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++)
|
||||
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
||||
@@ -805,7 +566,7 @@ main (int argc, char *argv [])
|
||||
(unsigned long) data.proc_args.size,
|
||||
args ? args : "");
|
||||
|
||||
glibtop_free (args);
|
||||
g_free (args);
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
@@ -47,8 +46,8 @@ main (int argc, char *argv [])
|
||||
char buffer [BUFSIZ];
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||
|
||||
@@ -73,7 +72,7 @@ main (int argc, char *argv [])
|
||||
for (c = 0; c < PROFILE_COUNT; c++) {
|
||||
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
||||
|
||||
glibtop_free (mount_entries);
|
||||
g_free (mount_entries);
|
||||
}
|
||||
|
||||
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
||||
@@ -89,21 +88,21 @@ main (int argc, char *argv [])
|
||||
mount_entries [index].type,
|
||||
mount_entries [index].devname);
|
||||
|
||||
printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n",
|
||||
"", "Blocks", "Free", "Avail", "Files", "Free");
|
||||
printf ("\n\n%-16s %9s %9s %9s %9s %9s %9s\n",
|
||||
"Mount", "Blocks", "Free", "Avail", "Files", "Free", "BlockSz");
|
||||
|
||||
for (index = 0; index < mount_list.number; index++) {
|
||||
glibtop_get_fsusage (&fsusage,
|
||||
mount_entries [index].mountdir);
|
||||
|
||||
printf ("Usage: %-16s %9llu %9llu %9llu %9llu %9llu\n",
|
||||
printf ("%-16s %9Lu %9Lu %9Lu %9Lu %9Lu %9d\n",
|
||||
mount_entries [index].mountdir,
|
||||
fsusage.blocks, fsusage.bfree,
|
||||
fsusage.bavail, fsusage.files,
|
||||
fsusage.ffree);
|
||||
fsusage.ffree, fsusage.block_size);
|
||||
}
|
||||
|
||||
glibtop_free (mount_entries);
|
||||
g_free (mount_entries);
|
||||
|
||||
printf ("\nsbrk (0) = %p\n\n", sbrk (0));
|
||||
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
@@ -51,8 +50,8 @@ main (int argc, char *argv [])
|
||||
count = PROFILE_COUNT;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||
|
||||
@@ -82,8 +81,8 @@ main (int argc, char *argv [])
|
||||
addr.s_addr = netload.address;
|
||||
subnet.s_addr = netload.subnet;
|
||||
|
||||
address_string = glibtop_strdup (inet_ntoa (addr));
|
||||
subnet_string = glibtop_strdup (inet_ntoa (subnet));
|
||||
address_string = g_strdup (inet_ntoa (addr));
|
||||
subnet_string = g_strdup (inet_ntoa (subnet));
|
||||
|
||||
printf ("Network Load (0x%08lx):\n\n"
|
||||
"\tInterface Flags:\t0x%08lx\n"
|
||||
@@ -116,8 +115,8 @@ main (int argc, char *argv [])
|
||||
(unsigned long) netload.errors_out,
|
||||
(unsigned long) netload.errors_total);
|
||||
|
||||
glibtop_free (address_string);
|
||||
glibtop_free (subnet_string);
|
||||
g_free (address_string);
|
||||
g_free (subnet_string);
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
@@ -58,8 +57,8 @@ main (int argc, char *argv [])
|
||||
count = PROFILE_COUNT;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||
|
||||
@@ -153,10 +152,10 @@ main (int argc, char *argv [])
|
||||
}
|
||||
|
||||
if (filename && (filename != maps [i].filename))
|
||||
glibtop_free (filename);
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
glibtop_free (maps);
|
||||
g_free (maps);
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
|
@@ -22,11 +22,11 @@
|
||||
*/
|
||||
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
@@ -51,52 +51,15 @@ output (pid_t pid)
|
||||
|
||||
glibtop_get_proc_state (&data.proc_state, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_State PID %5d (0x%08lx): '%s', %u - "
|
||||
"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
|
||||
(unsigned long) data.proc_state.flags,
|
||||
data.proc_state.cmd, data.proc_state.state,
|
||||
data.proc_state.uid, data.proc_state.gid,
|
||||
data.proc_state.ruid, data.proc_state.rgid,
|
||||
data.proc_state.has_cpu, data.proc_state.processor,
|
||||
data.proc_state.last_processor);
|
||||
#else
|
||||
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);
|
||||
#endif
|
||||
|
||||
glibtop_get_proc_uid (&data.proc_uid, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Uid PID %5d (0x%08lx): "
|
||||
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
|
||||
(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.suid, data.proc_uid.sgid,
|
||||
data.proc_uid.fsuid, data.proc_uid.fsgid,
|
||||
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,
|
||||
data.proc_uid.ngroups);
|
||||
|
||||
if (data.proc_uid.ngroups) {
|
||||
for (i = 0; i < data.proc_uid.ngroups; i++) {
|
||||
if (i)
|
||||
printf (" %d", data.proc_uid.groups [i]);
|
||||
else
|
||||
printf (" (%d", data.proc_uid.groups [i]);
|
||||
}
|
||||
printf (")");
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
#else
|
||||
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,
|
||||
@@ -106,7 +69,6 @@ output (pid_t pid)
|
||||
data.proc_uid.pgrp, data.proc_uid.session,
|
||||
data.proc_uid.tty, data.proc_uid.tpgid,
|
||||
data.proc_uid.priority, data.proc_uid.nice);
|
||||
#endif
|
||||
|
||||
glibtop_get_proc_mem (&data.proc_mem, pid);
|
||||
|
||||
@@ -122,30 +84,6 @@ output (pid_t pid)
|
||||
|
||||
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Segment PID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
|
||||
"0x%lx 0x%lx 0x%lx 0x%lx\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_data,
|
||||
(unsigned long) data.proc_segment.end_data,
|
||||
(unsigned long) data.proc_segment.start_brk,
|
||||
(unsigned long) data.proc_segment.end_brk,
|
||||
(unsigned long) data.proc_segment.start_stack,
|
||||
(unsigned long) data.proc_segment.start_mmap,
|
||||
(unsigned long) data.proc_segment.arg_start,
|
||||
(unsigned long) data.proc_segment.arg_end,
|
||||
(unsigned long) data.proc_segment.env_start,
|
||||
(unsigned long) data.proc_segment.env_end);
|
||||
#else
|
||||
printf ("Proc_Segment PID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
|
||||
(unsigned long) data.proc_segment.flags,
|
||||
@@ -157,7 +95,6 @@ output (pid_t pid)
|
||||
(unsigned long) data.proc_segment.start_code,
|
||||
(unsigned long) data.proc_segment.end_code,
|
||||
(unsigned long) data.proc_segment.start_stack);
|
||||
#endif
|
||||
|
||||
glibtop_get_proc_time (&data.proc_time, pid);
|
||||
|
||||
@@ -176,19 +113,6 @@ output (pid_t pid)
|
||||
|
||||
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
|
||||
(unsigned long) data.proc_signal.flags,
|
||||
(unsigned long) data.proc_signal.signal [0],
|
||||
(unsigned long) data.proc_signal.signal [1],
|
||||
(unsigned long) data.proc_signal.blocked [0],
|
||||
(unsigned long) data.proc_signal.blocked [1],
|
||||
(unsigned long) data.proc_signal.sigignore [0],
|
||||
(unsigned long) data.proc_signal.sigignore [1],
|
||||
(unsigned long) data.proc_signal.sigcatch [0],
|
||||
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||
#else
|
||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||
"%lu %lu %lu %lu\n", (int) pid,
|
||||
(unsigned long) data.proc_signal.flags,
|
||||
@@ -196,7 +120,6 @@ output (pid_t pid)
|
||||
(unsigned long) data.proc_signal.blocked,
|
||||
(unsigned long) data.proc_signal.sigignore,
|
||||
(unsigned long) data.proc_signal.sigcatch);
|
||||
#endif
|
||||
|
||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||
|
||||
@@ -227,7 +150,7 @@ output (pid_t pid)
|
||||
(unsigned long) data.proc_args.size,
|
||||
args ? args : "");
|
||||
|
||||
glibtop_free (args);
|
||||
g_free (args);
|
||||
|
||||
printf ("\n");
|
||||
|
||||
@@ -315,8 +238,8 @@ main (int argc, char *argv [])
|
||||
unsigned *ptr, pid, i;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init ();
|
||||
|
||||
@@ -367,7 +290,7 @@ main (int argc, char *argv [])
|
||||
output (pid);
|
||||
}
|
||||
|
||||
glibtop_free (ptr);
|
||||
g_free (ptr);
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
@@ -21,11 +21,15 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/cpu.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include "libgtop-i18n.h"
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
@@ -39,9 +43,11 @@ main (int argc, char *argv [])
|
||||
int ncpu, i;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init();
|
||||
|
||||
glibtop_get_cpu (&cpu);
|
||||
|
||||
ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
|
||||
|
@@ -26,7 +26,7 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
@@ -44,8 +44,8 @@ main (int argc, char *argv [])
|
||||
count = PROFILE_COUNT;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||
|
||||
@@ -69,13 +69,10 @@ main (int argc, char *argv [])
|
||||
|
||||
glibtop_get_sysdeps (&sysdeps);
|
||||
|
||||
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
|
||||
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f)) ? 1 : 0)
|
||||
|
||||
printf ("Sysdeps (0x%08lx):\n\n"
|
||||
"\tfeatures:\t\t0x%08lx\n\n"
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
"\tpointer_size:\t\t0x%08lx\n\n"
|
||||
#endif
|
||||
"\tcpu:\t\t%d\t0x%08lx\n"
|
||||
"\tmem:\t\t%d\t0x%08lx\n"
|
||||
"\tswap:\t\t%d\t0x%08lx\n\n"
|
||||
@@ -100,9 +97,6 @@ main (int argc, char *argv [])
|
||||
"\tppp:\t\t%d\t0x%08lx\n\n",
|
||||
(unsigned long) sysdeps.flags,
|
||||
(unsigned long) sysdeps.features,
|
||||
#if LIBGTOP_VERSION_CODE > 1001000
|
||||
(unsigned long) sysdeps.pointer_size,
|
||||
#endif
|
||||
FEATURE_CHECK(CPU),
|
||||
(unsigned long) sysdeps.cpu,
|
||||
FEATURE_CHECK(MEM),
|
||||
|
@@ -27,7 +27,6 @@
|
||||
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
@@ -38,8 +37,8 @@ int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
gh_enter (argc, argv, main_prog);
|
||||
exit (0);
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/close.h>
|
||||
#include <glibtop/xmalloc.h>
|
||||
|
||||
#include <glibtop/parameter.h>
|
||||
|
||||
@@ -79,8 +78,8 @@ main (int argc, char *argv [])
|
||||
count = PROFILE_COUNT;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
printf ("%-12s (%-10s): %7s - %9s - %9s\n",
|
||||
"Feature", "Flags", "Count", "utime", "stime");
|
||||
@@ -187,7 +186,7 @@ main (int argc, char *argv [])
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
||||
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
||||
glibtop_free (ptr);
|
||||
g_free (ptr);
|
||||
}
|
||||
|
||||
getrusage (RUSAGE_SELF, &rusage_end);
|
||||
|
12
features.def
12
features.def
@@ -1,19 +1,19 @@
|
||||
void|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|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4])
|
||||
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
||||
void|swap|ulong(total,used,free,pagein,pageout)
|
||||
void|uptime|double(uptime,idletime):ulong(boot_time)
|
||||
void|uptime|double(uptime,idletime)
|
||||
void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
||||
void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
||||
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
||||
void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
||||
unsigned *|proclist|ulong(number,size,total)|long(which,arg)
|
||||
void|proc_state|str(cmd):unsigned(state):ulong(uid,gid,ruid,rgid,has_cpu,processor,last_processor)|pid_t(pid)
|
||||
void|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_state|str(cmd):char(state):ulong(uid,gid)|pid_t(pid)
|
||||
void|proc_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid)
|
||||
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
||||
void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[GLIBTOP_NCPU],xcpu_stime[GLIBTOP_NCPU],xcpu_flags)|pid_t(pid)
|
||||
void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[4],xcpu_stime[4])|pid_t(pid)
|
||||
void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
|
||||
void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):str(wchan)|pid_t(pid)
|
||||
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_data,end_data,start_brk,end_brk,start_stack,start_mmap,arg_start,arg_end,env_start,env_end)|pid_t(pid)
|
||||
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_stack)|pid_t(pid)
|
||||
char *|proc_args|ulong(size)|pid_t(pid):unsigned(max_len)
|
||||
glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid)
|
||||
glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs)
|
||||
|
30
glibtop.h
30
glibtop.h
@@ -24,12 +24,7 @@
|
||||
#ifndef __GLIBTOP_H__
|
||||
#define __GLIBTOP_H__
|
||||
|
||||
#ifndef _IN_LIBGTOP
|
||||
#include <glibtop-config.h>
|
||||
#endif
|
||||
|
||||
#include <glibtop/global.h>
|
||||
#include <glibtop/limits.h>
|
||||
|
||||
#include <glibtop_server.h>
|
||||
#include <glibtop/types.h>
|
||||
@@ -38,6 +33,10 @@
|
||||
#include <glibtop_machine.h>
|
||||
#endif
|
||||
|
||||
#ifndef GLIBTOP_MOUNTENTRY_LEN
|
||||
#define GLIBTOP_MOUNTENTRY_LEN 79
|
||||
#endif
|
||||
|
||||
typedef struct _glibtop glibtop;
|
||||
|
||||
#include <glibtop/sysdeps.h>
|
||||
@@ -64,7 +63,6 @@ struct _glibtop
|
||||
unsigned long server_port; /* Port on which daemon is listening */
|
||||
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
||||
glibtop_sysdeps required; /* Required feature list */
|
||||
glibtop_sysdeps wanted; /* We only want this features */
|
||||
pid_t pid; /* PID of the server */
|
||||
};
|
||||
|
||||
@@ -86,24 +84,4 @@ glibtop_init_s (glibtop **server_ptr,
|
||||
unsigned long features,
|
||||
unsigned flags);
|
||||
|
||||
#ifdef GLIBTOP_GUILE
|
||||
|
||||
/* You need to link with -lgtop_guile to get this stuff here. */
|
||||
|
||||
void glibtop_boot_guile (void);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef GLIBTOP_GUILE_NAMES
|
||||
|
||||
/* You need to link with -lgtop_guile_names to get this stuff here. */
|
||||
|
||||
void glibtop_boot_guile_names (void);
|
||||
|
||||
#ifndef GLIBTOP_NAMES
|
||||
#define GLIBTOP_NAMES
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -1,2 +1,4 @@
|
||||
SUBDIRS = glibtop
|
||||
|
||||
EXTRA_DIST = libgtop-i18n.h
|
||||
|
||||
|
@@ -1,11 +1,10 @@
|
||||
glibtopdir = $(includedir)/glibtop
|
||||
glibtopdir = $(includedir)/libgtop-2.0/glibtop
|
||||
|
||||
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||
sem_limits.h uptime.h command.h mem.h proclist.h \
|
||||
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
|
||||
procmem.h procuid.h swap.h write.h error.h open.h \
|
||||
procsegment.h read.h sysdeps.h xmalloc.h global.h \
|
||||
procsegment.h read.h sysdeps.h global.h \
|
||||
procsignal.h read_data.h union.h types.h gnuserv.h \
|
||||
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
|
||||
limits.h
|
||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h
|
||||
|
50
include/glibtop/array.h
Normal file
50
include/glibtop/array.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_ARRAY_H__
|
||||
#define __GLIBTOP_ARRAY_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_ARRAY_NUMBER 0
|
||||
#define GLIBTOP_ARRAY_SIZE 1
|
||||
#define GLIBTOP_ARRAY_TOTAL 2
|
||||
|
||||
#define GLIBTOP_MAX_ARRAY 3
|
||||
|
||||
typedef struct _glibtop_array glibtop_array;
|
||||
|
||||
struct _glibtop_array
|
||||
{
|
||||
guint64 flags,
|
||||
number, /* GLIBTOP_ARRAY_NUMBER */
|
||||
size, /* GLIBTOP_ARRAY_SIZE */
|
||||
total; /* GLIBTOP_ARRAY_TOTAL */
|
||||
};
|
||||
|
||||
#endif
|
43
include/glibtop/call-vector.h.in
Normal file
43
include/glibtop/call-vector.h.in
Normal file
@@ -0,0 +1,43 @@
|
||||
/* -*- 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_CALL_VECTOR_H__
|
||||
#define __GLIBTOP_CALL_VECTOR_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/union.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
struct _glibtop_call_vector
|
||||
{
|
||||
@@GLIBTOP_CALL_VECTOR@@
|
||||
};
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
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_server *, glibtop_closure *%s);\n], $retval, $feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, glibtop_array *%s);\n], $retval, $feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, %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,5 +1,3 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
@@ -28,13 +26,13 @@
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
G_BEGIN_DECLS
|
||||
|
||||
void glibtop_close_r (glibtop *server);
|
||||
|
||||
void glibtop_close_s (glibtop *server);
|
||||
void glibtop_close_p (glibtop *server);
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@@ -1,5 +1,3 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
@@ -30,7 +28,7 @@
|
||||
#include <glibtop/sysdeps.h>
|
||||
#include <glibtop/union.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_CMND_QUIT 0
|
||||
#define GLIBTOP_CMND_SYSDEPS 1
|
||||
@@ -71,22 +69,22 @@ 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];
|
||||
guint64 command;
|
||||
guint64 size, data_size;
|
||||
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||
};
|
||||
|
||||
union _glibtop_response_union
|
||||
{
|
||||
glibtop_union data;
|
||||
glibtop_sysdeps sysdeps;
|
||||
glibtop_union data;
|
||||
glibtop_sysdeps sysdeps;
|
||||
};
|
||||
|
||||
struct _glibtop_response
|
||||
{
|
||||
int64_t offset;
|
||||
u_int64_t size, data_size;
|
||||
glibtop_response_union u;
|
||||
int64_t offset;
|
||||
guint64 size, data_size;
|
||||
glibtop_response_union u;
|
||||
};
|
||||
|
||||
#define glibtop_call(p1, p2, p3, p4) glibtop_call_r(glibtop_global_server, p1, p2, p3, p4)
|
||||
@@ -99,6 +97,6 @@ void *
|
||||
glibtop_call_s (glibtop *server, unsigned command, size_t send_size,
|
||||
const void *send_buf, size_t recv_size, void *recv_buf);
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
91
include/glibtop/compat_10.h
Normal file
91
include/glibtop/compat_10.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_COMPAT10_H__
|
||||
#define __GLIBTOP_COMPAT10_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/* glibtop_cpu */
|
||||
|
||||
#define GLIBTOP_XCPU_TOTAL GLIBTOP_CPU_XCPU_TOTAL
|
||||
#define GLIBTOP_XCPU_USER GLIBTOP_CPU_XCPU_USER
|
||||
#define GLIBTOP_XCPU_NICE GLIBTOP_CPU_XCPU_NICE
|
||||
#define GLIBTOP_XCPU_SYS GLIBTOP_CPU_XCPU_SYS
|
||||
#define GLIBTOP_XCPU_IDLE GLIBTOP_CPU_XCPU_IDLE
|
||||
#define GLIBTOP_XCPU_FLAGS GLIBTOP_CPU_XCPU_FLAGS
|
||||
|
||||
/* glibtop_proclist */
|
||||
|
||||
#define GLIBTOP_PROCLIST_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_PROCLIST_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_PROCLIST_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_PROCLIST GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_proclist;
|
||||
|
||||
/* glibtop_mountlist */
|
||||
|
||||
#define GLIBTOP_MOUNTLIST_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_MOUNTLIST_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_MOUNTLIST_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_MOUNTLIST GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_mountlist;
|
||||
|
||||
/* glibtop_proc_args */
|
||||
|
||||
#define GLIBTOP_PROC_ARGS_SIZE 0
|
||||
|
||||
#define GLIBTOP_MAX_PROC_ARGS 1
|
||||
|
||||
typedef struct _glibtop_array glibtop_proc_args;
|
||||
|
||||
/* glibtop_proc_map */
|
||||
|
||||
#define GLIBTOP_PROC_MAP_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_PROC_MAP_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_PROC_MAP_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_PROC_MAP GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_proc_map;
|
||||
|
||||
/* glibtop_interface_names */
|
||||
|
||||
#define GLIBTOP_INTERFACE_NAMES_NUMBER GLIBTOP_ARRAY_NUMBER
|
||||
#define GLIBTOP_INTERFACE_NAMES_SIZE GLIBTOP_ARRAY_SIZE
|
||||
#define GLIBTOP_INTERFACE_NAMES_TOTAL GLIBTOP_ARRAY_TOTAL
|
||||
|
||||
#define GLIBTOP_MAX_INTERFACE_NAMES GLIBTOP_MAX_ARRAY
|
||||
|
||||
typedef struct _glibtop_array glibtop_interface_names;
|
||||
|
||||
#endif
|
@@ -1,5 +1,3 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
@@ -29,7 +27,7 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_CPU_TOTAL 0
|
||||
#define GLIBTOP_CPU_USER 1
|
||||
@@ -43,27 +41,30 @@ BEGIN_LIBGTOP_DECLS
|
||||
#define GLIBTOP_XCPU_NICE 8
|
||||
#define GLIBTOP_XCPU_SYS 9
|
||||
#define GLIBTOP_XCPU_IDLE 10
|
||||
#define GLIBTOP_XCPU_FLAGS 11
|
||||
#define GLIBTOP_XCPU_FLAGS 11
|
||||
|
||||
#define GLIBTOP_MAX_CPU 12
|
||||
|
||||
/* Nobody should really be using more than 4 processors. */
|
||||
#define GLIBTOP_NCPU 4
|
||||
|
||||
typedef struct _glibtop_cpu glibtop_cpu;
|
||||
|
||||
struct _glibtop_cpu
|
||||
{
|
||||
u_int64_t flags,
|
||||
total, /* GLIBTOP_CPU_TOTAL */
|
||||
user, /* GLIBTOP_CPU_USER */
|
||||
nice, /* GLIBTOP_CPU_NICE */
|
||||
sys, /* GLIBTOP_CPU_SYS */
|
||||
idle, /* GLIBTOP_CPU_IDLE */
|
||||
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
||||
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
|
||||
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
|
||||
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
|
||||
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
|
||||
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IDLE */
|
||||
xcpu_flags; /* GLIBTOP_XCPU_FLAGS */
|
||||
guint64 flags,
|
||||
total, /* GLIBTOP_CPU_TOTAL */
|
||||
user, /* GLIBTOP_CPU_USER */
|
||||
nice, /* GLIBTOP_CPU_NICE */
|
||||
sys, /* GLIBTOP_CPU_SYS */
|
||||
idle, /* GLIBTOP_CPU_IDLE */
|
||||
frequency, /* GLIBTOP_CPU_FREQUENCY */
|
||||
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
|
||||
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
|
||||
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
|
||||
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
|
||||
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IDLE */
|
||||
xcpu_flags; /* GLIBTOP_XCPU_IDLE */
|
||||
};
|
||||
|
||||
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
|
||||
@@ -95,6 +96,6 @@ extern const char *glibtop_descriptions_cpu [];
|
||||
|
||||
#endif
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@@ -1,5 +1,3 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
@@ -28,7 +26,7 @@
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#ifndef G_GNUC_UNUSED
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
||||
@@ -48,41 +46,41 @@ void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args);
|
||||
static void G_GNUC_UNUSED
|
||||
glibtop_error_r (glibtop *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_error_vr (server, format, args);
|
||||
va_end (args);
|
||||
va_start (args, format);
|
||||
glibtop_error_vr (server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void G_GNUC_UNUSED
|
||||
glibtop_warn_r (glibtop *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_warn_vr (server, format, args);
|
||||
va_end (args);
|
||||
va_start (args, format);
|
||||
glibtop_warn_vr (server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void G_GNUC_UNUSED
|
||||
glibtop_error_io_r (glibtop *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vr (server, format, errno, args);
|
||||
va_end (args);
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vr (server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void G_GNUC_UNUSED
|
||||
glibtop_warn_io_r (glibtop *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vr (server, format, errno, args);
|
||||
va_end (args);
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vr (server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
@@ -98,41 +96,41 @@ glibtop_warn_io_r (glibtop *server, char *format, ...)
|
||||
static void
|
||||
glibtop_error (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_error_vr (glibtop_global_server, format, args);
|
||||
va_end (args);
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_error_vr (glibtop_global_server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
glibtop_warn (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_warn_vr (glibtop_global_server, format, args);
|
||||
va_end (args);
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_warn_vr (glibtop_global_server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
glibtop_error_io (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
|
||||
va_end (args);
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
glibtop_warn_io (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
|
||||
va_end (args);
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
#endif /* no __GNUC__ */
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
95
include/glibtop/errors.h
Normal file
95
include/glibtop/errors.h
Normal file
@@ -0,0 +1,95 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_ERRORS_H__
|
||||
#define __GLIBTOP_ERRORS_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
|
||||
#include <glib/gerror.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_ERROR glibtop_error_quark ()
|
||||
|
||||
GQuark glibtop_error_quark (void) G_GNUC_CONST;
|
||||
|
||||
typedef enum {
|
||||
GLIBTOP_ERROR_NO_ERROR = 0,
|
||||
GLIBTOP_ERROR_UNKNOWN,
|
||||
GLIBTOP_ERROR_INVALID_ARGUMENT,
|
||||
GLIBTOP_ERROR_NO_SUCH_PARAMETER,
|
||||
GLIBTOP_ERROR_READONLY_VALUE,
|
||||
GLIBTOP_ERROR_SIZE_MISMATCH,
|
||||
|
||||
GLIBTOP_ERROR_SERVER_COMM_FAILURE,
|
||||
|
||||
GLIBTOP_ERROR_NO_SUCH_PROCESS,
|
||||
|
||||
GLIBTOP_ERROR_NO_KERNEL_SUPPORT,
|
||||
GLIBTOP_ERROR_INCOMPATIBLE_KERNEL,
|
||||
|
||||
GLIBTOP_ERROR_NO_SUCH_BACKEND,
|
||||
GLIBTOP_ERROR_NOT_IMPLEMENTED,
|
||||
GLIBTOP_ERROR_NO_BACKEND_OPENED,
|
||||
|
||||
GLIBTOP_ERROR_DEMARSHAL_ERROR
|
||||
} glibtop_error;
|
||||
|
||||
void
|
||||
glibtop_error_vl (glibtop_client *client, glibtop_error code,
|
||||
const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_error_io_vl (glibtop_client *client, glibtop_error code,
|
||||
int io_errno, const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_warn_vl (glibtop_client *client, glibtop_error code,
|
||||
const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_warn_io_vl (glibtop_client *client, glibtop_error code,
|
||||
int io_errno, const char *format, va_list args);
|
||||
|
||||
void
|
||||
glibtop_error_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
void
|
||||
glibtop_warn_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
void
|
||||
glibtop_error_io_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
void
|
||||
glibtop_warn_io_l (glibtop_client *client, glibtop_error code,
|
||||
char *format, ...);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
@@ -1,9 +1,6 @@
|
||||
/* -*- 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.
|
||||
|
||||
@@ -29,26 +26,29 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_FSUSAGE_BLOCKS 0
|
||||
#define GLIBTOP_FSUSAGE_BFREE 1
|
||||
#define GLIBTOP_FSUSAGE_BAVAIL 2
|
||||
#define GLIBTOP_FSUSAGE_FILES 3
|
||||
#define GLIBTOP_FSUSAGE_FFREE 4
|
||||
#define GLIBTOP_FSUSAGE_BLOCK_SIZE 5
|
||||
|
||||
#define GLIBTOP_MAX_FSUSAGE 6
|
||||
|
||||
#define GLIBTOP_MAX_FSUSAGE 5
|
||||
|
||||
typedef struct _glibtop_fsusage glibtop_fsusage;
|
||||
|
||||
struct _glibtop_fsusage
|
||||
{
|
||||
u_int64_t flags,
|
||||
blocks, /* Total blocks. */
|
||||
bfree, /* Free blocks available to superuser. */
|
||||
bavail, /* Free blocks available to non-superuser. */
|
||||
files, /* Total file nodes. */
|
||||
ffree; /* Free file nodes. */
|
||||
guint64 flags,
|
||||
blocks, /* Total number of blocks. */
|
||||
bfree, /* Free blocks available to superuser. */
|
||||
bavail, /* Free blocks available to non-superuser. */
|
||||
files, /* Total file nodes. */
|
||||
ffree; /* Free file nodes. */
|
||||
gint block_size; /* Size of a block in bytes. */
|
||||
};
|
||||
|
||||
#define glibtop_get_fsusage(fsusage,disk) glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk)
|
||||
@@ -69,6 +69,6 @@ extern const char *glibtop_descriptions_fsusage [];
|
||||
|
||||
#endif
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
50
include/glibtop/glib-arrays.h
Normal file
50
include/glibtop/glib-arrays.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_GLIB_ARRAYS_H__
|
||||
#define __GLIBTOP_GLIB_ARRAYS_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/array.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
GPtrArray *
|
||||
glibtop_get_proc_args_as_array_l (glibtop_client *client, pid_t pid);
|
||||
|
||||
GArray *
|
||||
glibtop_get_proclist_as_array_l (glibtop_client *client, int64_t which, int64_t arg);
|
||||
|
||||
GPtrArray *
|
||||
glibtop_get_proc_map_as_array_l (glibtop_client *client, pid_t pid);
|
||||
|
||||
GPtrArray *
|
||||
glibtop_get_mountlist_as_array_l (glibtop_client *client, int all_fs);
|
||||
|
||||
G_END_DECLS
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user