Compare commits
998 Commits
GNOME_STAB
...
gnome-2-6
Author | SHA1 | Date | |
---|---|---|---|
|
df2efa95d8 | ||
|
f73649ea24 | ||
|
3bc207f6df | ||
|
6f4f70853d | ||
|
c73d0eb3c9 | ||
|
de7fd9e85b | ||
|
c30e6a0dd2 | ||
|
47b0db5ca9 | ||
|
2e6438e582 | ||
|
babe152ba2 | ||
|
7612022e83 | ||
|
24073c48c5 | ||
|
b55ecd65bc | ||
|
50f086cb68 | ||
|
8eae848c3f | ||
|
d8a9aebdf5 | ||
|
76c967224b | ||
|
a08c8d96bb | ||
|
b279819639 | ||
|
99723e15ba | ||
|
6b3d52ff0e | ||
|
bb01063e93 | ||
|
e12ac5f40c | ||
|
34e322e7c2 | ||
|
559f481354 | ||
|
bb4397aec8 | ||
|
7eeae24a4a | ||
|
7fe2ca8cd7 | ||
|
16bcad422c | ||
|
3881c09b51 | ||
|
cd8b43e1d1 | ||
|
6a10d1ada9 | ||
|
a415d909a2 | ||
|
09febbf67d | ||
|
d5b8a71e5b | ||
|
f03e2d3c11 | ||
|
ac2b8285ab | ||
|
4de267e394 | ||
|
10d56bd5fc | ||
|
70b0925a82 | ||
|
b0edf88ff7 | ||
|
4fe066a430 | ||
|
95d39a87c8 | ||
|
54fb1482ba | ||
|
2f87aa4479 | ||
|
31e8abe019 | ||
|
d8cb4ccdf7 | ||
|
45f2f19c3a | ||
|
fe494bc846 | ||
|
7de929d2d7 | ||
|
bc4a882c4a | ||
|
75291a665c | ||
|
5af13a2a6a | ||
|
0cdaaf1f62 | ||
|
0a761f37f2 | ||
|
dc3027c438 | ||
|
74453855aa | ||
|
b15f542bfc | ||
|
1faa40ce18 | ||
|
4e4a2bcbed | ||
|
0de7c96d2a | ||
|
f070fea744 | ||
|
f416087865 | ||
|
cc8b169a8e | ||
|
31eb5d64cc | ||
|
5670749242 | ||
|
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 | ||
|
afeb4d50a5 | ||
|
7fb4f43469 | ||
|
ca0cdbae5a | ||
|
879b173ae4 | ||
|
58b341ceec | ||
|
98981183d8 | ||
|
2747d6bd2a | ||
|
e76df47af0 | ||
|
04fbf58c18 | ||
|
10dcb079f7 | ||
|
8da7856780 | ||
|
78a6bcd553 | ||
|
66dd76be8f | ||
|
2174194bbd | ||
|
d58d11fa29 | ||
|
20bc40ac18 | ||
|
7881e4212f | ||
|
aaca4e7cd6 | ||
|
3250583253 | ||
|
be4c952542 | ||
|
5656ad7f6c | ||
|
ed3ab3d31d | ||
|
7c0f91b7f5 | ||
|
8619b3a79b | ||
|
f71e60619d | ||
|
3274a72cda | ||
|
c285171500 | ||
|
16156b8e27 | ||
|
56f34dd385 | ||
|
4d910a33fc | ||
|
e0ec7f5c67 | ||
|
886896137c | ||
|
e0a91cb479 | ||
|
bc51f8c734 | ||
|
a396e42fa8 | ||
|
009c491b9b | ||
|
9667d88e60 | ||
|
de68843eda | ||
|
cb52909ded | ||
|
52c9bb06c7 | ||
|
2957ec5b57 | ||
|
f384aae3a4 | ||
|
3a3899fda1 | ||
|
9cba48fbc9 | ||
|
86fbcede24 | ||
|
6e7ba4a9ca | ||
|
8f02d15fb9 | ||
|
cecae08c13 | ||
|
9152479981 | ||
|
2814206ffa | ||
|
a5c839da3a | ||
|
e3c3db72e2 | ||
|
1318d89456 | ||
|
68f97794bd | ||
|
9bd351abae | ||
|
60a6d0876e | ||
|
6b11b4b581 | ||
|
58cfb44e52 | ||
|
df3fb1c6fa | ||
|
71bda8b99d | ||
|
331e128116 | ||
|
69de36e70f | ||
|
b9cbea40e7 | ||
|
7654d547d7 | ||
|
995e9ffd47 | ||
|
11e6109a4a | ||
|
9e79025aef | ||
|
c1ea6cd689 | ||
|
4322ef4b37 | ||
|
e56d9e3fb0 | ||
|
833170d18c | ||
|
9ef8c5739b | ||
|
b8cdd9e090 | ||
|
cad4a8da0d | ||
|
432adade05 | ||
|
e9baa3543e | ||
|
d5c8af57f3 | ||
|
deeadb6648 | ||
|
f8f0ee6882 | ||
|
76be244662 | ||
|
d97a151695 | ||
|
c9dfc76155 | ||
|
506023c898 | ||
|
0e9245ba28 | ||
|
091811a4d6 | ||
|
18f4bccb37 | ||
|
37af4964cc | ||
|
f248d99d7a | ||
|
ca80d88a74 | ||
|
56765d966f | ||
|
d169afcafa | ||
|
1f4b738639 | ||
|
981668a56b | ||
|
b55257d0d3 | ||
|
ae6f746cf2 | ||
|
68e7b7a1d4 | ||
|
7b7071cf6d | ||
|
b1e908e6b6 | ||
|
f91050a7c7 | ||
|
e3f9aa526b | ||
|
7db0c756d6 | ||
|
c1bd844673 | ||
|
914354adb2 | ||
|
2ac4fb92c2 | ||
|
0c1dd954eb | ||
|
116767b8b8 | ||
|
3eb5394474 | ||
|
953f59195f | ||
|
309f3998d7 | ||
|
887c4013a0 | ||
|
f232ddcdcb | ||
|
bd0424ee7d | ||
|
62824e1537 | ||
|
36e7d3133b | ||
|
20c69951ab | ||
|
d9d8cdf043 | ||
|
29fba02b4a | ||
|
1954718e3f | ||
|
6712cae260 | ||
|
6ddf213d5d | ||
|
b700a17efa | ||
|
bedec591a2 | ||
|
2c4568119c | ||
|
efd8e2f343 | ||
|
f29793c868 | ||
|
e8bbb15f7e | ||
|
fdb2e5eb7b | ||
|
da58e7edb4 | ||
|
e81b8ba479 | ||
|
cfbe553724 | ||
|
17634e05d4 | ||
|
7d216d364e | ||
|
9e16f6e88c | ||
|
f23e8b3d1c | ||
|
04d988357f | ||
|
14ed950dad | ||
|
f107c34f82 | ||
|
9b5bfd33ef | ||
|
8fc6c79b6d | ||
|
2d838b9f09 | ||
|
c1649507e9 | ||
|
a246a6390f | ||
|
6a9317238a | ||
|
0a45542477 | ||
|
03be66c857 | ||
|
777c371be9 | ||
|
d8bb202fbd | ||
|
f0f9167682 | ||
|
6fbde2ea22 | ||
|
2378f459de | ||
|
1b4ae67f51 | ||
|
ec67c56cc7 | ||
|
393c1dba75 | ||
|
5b76314ef4 | ||
|
0ca2053a27 | ||
|
c2c209d19a | ||
|
de5137ff28 | ||
|
ffb4b0fade | ||
|
bfd03680cc | ||
|
82280b673e | ||
|
27dbd28c5c | ||
|
4d55985151 | ||
|
2635e545bf | ||
|
e8a3a40691 | ||
|
3a7d7778a0 | ||
|
437c7585cc | ||
|
507766bff6 | ||
|
74d11991ab | ||
|
217a1e92c6 | ||
|
83bc7b831d | ||
|
1071b2ee69 | ||
|
3753ac5ee6 | ||
|
6120c5e4a8 | ||
|
b252a80b7e | ||
|
d67182f411 | ||
|
fec8f23ad4 | ||
|
ab7f1cc3be | ||
|
3f65468299 | ||
|
333d0c5709 | ||
|
8c47939ad2 | ||
|
664d24f258 | ||
|
f8adb23062 | ||
|
a2a4b1d170 | ||
|
aa6f26f9fb | ||
|
fd2ddf8b50 | ||
|
0408c86065 | ||
|
e1555fc335 | ||
|
75141bdb65 | ||
|
3951c8863f | ||
|
bdc1579a9c | ||
|
8e1c6601af | ||
|
1c634bd736 | ||
|
2868191440 | ||
|
a567adcce5 | ||
|
5db1ee8fc4 | ||
|
a6729d9454 | ||
|
57f7039795 | ||
|
5c3775c6ee | ||
|
1cec9b70a2 | ||
|
eca34c37d9 | ||
|
58acfc4042 | ||
|
feab865203 | ||
|
754f09cdad | ||
|
fac354623b | ||
|
5967e6c3e4 | ||
|
174f316a62 | ||
|
c9651a012e | ||
|
3130d7db33 | ||
|
30af079f99 | ||
|
3ccae8efee | ||
|
5b946cb261 | ||
|
885045ca55 | ||
|
01d728ac6b | ||
|
f9e670f464 | ||
|
868e1677e3 | ||
|
84407de2aa | ||
|
7011b04cb2 | ||
|
ede4594dd9 | ||
|
3a7f02352a | ||
|
e2cb4ed031 | ||
|
24a1fe55bb | ||
|
66dddd9799 | ||
|
b3b2411cb7 | ||
|
eb71d82ecc | ||
|
298fc043ff | ||
|
63f678210a | ||
|
7a38246284 | ||
|
5390903a22 | ||
|
4b9e977fdc | ||
|
6a9a681559 | ||
|
a6e919767c | ||
|
290e9ac767 | ||
|
cd8ac36e9b | ||
|
3068969b51 | ||
|
e947e72169 | ||
|
86a53dbfc9 | ||
|
aa5c5c4553 | ||
|
1f93237ee3 | ||
|
3d248e9ad2 | ||
|
ec9aedea0b | ||
|
33021311b2 | ||
|
2a3d9e080a | ||
|
b528d0b1db | ||
|
a429e9c3f9 | ||
|
b90d2c1c90 | ||
|
27dc7ef79a | ||
|
76441b1d5f | ||
|
d2e3577784 | ||
|
4a0344182f | ||
|
ddc496cdaa | ||
|
746981611b | ||
|
c1beefce3a | ||
|
1667cc8a8d | ||
|
0aea46a643 | ||
|
820ab2210e | ||
|
f40e8a57b4 | ||
|
005357e821 | ||
|
5fcfc95280 | ||
|
dfc9e912b5 | ||
|
a6385288aa | ||
|
2f6457b3f7 | ||
|
ba2f0f753b | ||
|
38554dbcbe | ||
|
fe98fde338 | ||
|
c3ea69f26a | ||
|
367e1f047c | ||
|
7db1ed695c | ||
|
26b4615262 | ||
|
c4ccf53aad | ||
|
8fe9163e6b | ||
|
293995a277 | ||
|
991da49977 | ||
|
cbf3bc895e | ||
|
75c105d65d | ||
|
e83cb0acf7 | ||
|
db4d801792 | ||
|
f17e45bcc3 | ||
|
b912c83b8b | ||
|
ec280b5bd0 | ||
|
3f39ec8d37 | ||
|
8bbdeca6b5 | ||
|
00960e6a04 | ||
|
8f4bb6c9c4 | ||
|
f33814d409 | ||
|
1a501c271a | ||
|
5b43466d5f | ||
|
83d8b9aedc | ||
|
cf611f9157 | ||
|
8ec7d76b35 | ||
|
ce4f660965 | ||
|
e46306d2f9 | ||
|
21b2aee946 | ||
|
d379bb6acb | ||
|
3ad9e06909 | ||
|
9ba9f4fa8f | ||
|
9142e721bb | ||
|
b7e1c60b40 | ||
|
72a3f5aaa1 | ||
|
3c9b2e3d9f | ||
|
35995577ca | ||
|
eaf527d66a | ||
|
a7bdfcb951 | ||
|
9146d53ecc | ||
|
38a4f74c1a | ||
|
0da389347e | ||
|
ba563cf615 | ||
|
27fbdef425 | ||
|
b27412def1 | ||
|
e5cb661a95 | ||
|
4def53aabb | ||
|
ce45801873 | ||
|
a22d3fad36 | ||
|
1272d38f72 | ||
|
2b96f77245 | ||
|
c2fdf05f2b | ||
|
69fed8d42d | ||
|
1da8264984 | ||
|
2deb3c30c4 | ||
|
00f0791ebd | ||
|
ad7aca6105 | ||
|
1ea58b48ff | ||
|
dd17160a5f | ||
|
1086496f93 | ||
|
896729108c | ||
|
f5397c79b0 | ||
|
4fbfde4d1c | ||
|
cd7cd23403 | ||
|
48e5a13495 | ||
|
137bbe308c | ||
|
eca7c245f8 | ||
|
4d220ddb26 | ||
|
3f6800469b | ||
|
af4dadde0b | ||
|
8773604ef1 | ||
|
411a1c8e84 | ||
|
5b38a14a44 | ||
|
208c7a0ce0 | ||
|
96542d050e | ||
|
7790965d45 | ||
|
505c175cb6 | ||
|
7af22c51b9 | ||
|
1cadb2c3be | ||
|
6e278d98f1 | ||
|
17a1b6b1cb | ||
|
8a25330615 | ||
|
ce52ba2dbe | ||
|
bfe951b32a | ||
|
7bdcc494c3 | ||
|
7922e3bcc7 | ||
|
f2c8347f34 | ||
|
413283849c | ||
|
6dd6173874 | ||
|
16da233b6d | ||
|
3f0e166e3f | ||
|
8262f295b7 | ||
|
73a334727e | ||
|
059992ef36 | ||
|
df20c8534b | ||
|
8ba42b25e0 | ||
|
3b270123eb | ||
|
a66b6cc86d | ||
|
e491343151 | ||
|
688e65fbec | ||
|
c1c629eb37 | ||
|
5566a5cde2 | ||
|
364130c6e1 | ||
|
394d4dc226 | ||
|
ce80f111df | ||
|
abdeeda9c0 | ||
|
e0d4139bf2 | ||
|
17962b4548 | ||
|
2f12b5aec2 | ||
|
be97f1b90a | ||
|
a9928eb8a8 | ||
|
3dfd759826 | ||
|
48191c7111 | ||
|
5a0b925037 | ||
|
58e1e76a06 | ||
|
4bc0213ca9 |
12
.cvsignore
12
.cvsignore
@@ -13,7 +13,6 @@ gtopConf.sh
|
|||||||
i386-bsdi
|
i386-bsdi
|
||||||
i686-pc-linux-gnu
|
i686-pc-linux-gnu
|
||||||
intl
|
intl
|
||||||
libgtop-0.01.tar.gz
|
|
||||||
libgtop-mirror.sh.swp
|
libgtop-mirror.sh.swp
|
||||||
libgtopConf.sh
|
libgtopConf.sh
|
||||||
libtool
|
libtool
|
||||||
@@ -21,6 +20,7 @@ ltconfig
|
|||||||
ltmain.sh
|
ltmain.sh
|
||||||
macros
|
macros
|
||||||
stamp-h
|
stamp-h
|
||||||
|
stamp-h.in
|
||||||
sun4
|
sun4
|
||||||
sun4sol2
|
sun4sol2
|
||||||
support
|
support
|
||||||
@@ -29,3 +29,13 @@ alpha-dec-osf3.0
|
|||||||
i686-pc-linux-gnu-linux
|
i686-pc-linux-gnu-linux
|
||||||
libgtop-config
|
libgtop-config
|
||||||
ABOUT-NLS
|
ABOUT-NLS
|
||||||
|
libgtop.spec
|
||||||
|
libgtop*.tar.gz
|
||||||
|
*-debstamp
|
||||||
|
libgtop*.pc
|
||||||
|
autom4te.cache
|
||||||
|
COPYING
|
||||||
|
INSTALL
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
|
95
ANNOUNCE
95
ANNOUNCE
@@ -1,95 +0,0 @@
|
|||||||
Hi all,
|
|
||||||
|
|
||||||
I just uploaded the first working draft alpha version 0.01 to my website:
|
|
||||||
|
|
||||||
http://www.home-of-linux.org/gnome/libgtop/
|
|
||||||
|
|
||||||
Libgtop is a library that fetches information about the running system such as cpu and
|
|
||||||
memory usage, active processes etc. On Linux systems, these information are taken directly
|
|
||||||
from the /proc filesystem. For other systems such as Solaris, where such programs need to be
|
|
||||||
suid root (or only setgid kmem/mem on some systems), it provides a suid/setgid server that
|
|
||||||
fetches those information and a client-side library that talks to this server. Main idea
|
|
||||||
was to have the same interface for all operating systems, thus all system dependent details
|
|
||||||
are hidden in the implementation of that server.
|
|
||||||
|
|
||||||
Currently, it only works for Linux, documentation on how to port it to other systems is on
|
|
||||||
the way. I'm planning to keep this site an up-to-date mirror of my local machine (which is
|
|
||||||
connected to the internet over some expensive dialup connection, so I'll upload it about
|
|
||||||
once every day I made significant changes) so that you can always find the latest version
|
|
||||||
of the software here.
|
|
||||||
|
|
||||||
I've written a simple guile interface for the library to show which information it can
|
|
||||||
already fetch. See examples/third for details.
|
|
||||||
|
|
||||||
===========================================================================================
|
|
||||||
|
|
||||||
#include <glibtop.h>
|
|
||||||
#include <glibtop/open.h>
|
|
||||||
#include <glibtop/close.h>
|
|
||||||
|
|
||||||
#include <glibtop/cpu.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv [])
|
|
||||||
{
|
|
||||||
glibtop server;
|
|
||||||
glibtop_cpu cpu;
|
|
||||||
unsigned i, *ptr;
|
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
glibtop_open (&server, argv [0]);
|
|
||||||
|
|
||||||
glibtop_get_cpu (&server, &cpu);
|
|
||||||
|
|
||||||
fprintf (stderr, "CPU: %lu, %lu, %lu, %lu, %lu\n",
|
|
||||||
cpu.total, cpu.user, cpu.nice, cpu.sys, cpu.idle);
|
|
||||||
|
|
||||||
glibtop_close (&server);
|
|
||||||
|
|
||||||
exit (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
===========================================================================================
|
|
||||||
|
|
||||||
The following scheme code is used in examples/third to show all information that is
|
|
||||||
currently available:
|
|
||||||
|
|
||||||
(display (get-cpu)) (newline)
|
|
||||||
(display (get-mem)) (newline)
|
|
||||||
(display (get-swap)) (newline)
|
|
||||||
(display (get-uptime)) (newline)
|
|
||||||
(display (get-loadavg)) (newline)
|
|
||||||
(display (get-shm_limits)) (newline)
|
|
||||||
(display (get-msg_limits)) (newline)
|
|
||||||
(display (get-sem_limits)) (newline)
|
|
||||||
(display (get-sysdeps)) (newline)
|
|
||||||
(display (get-proclist)) (newline)
|
|
||||||
|
|
||||||
On my system, this yields:
|
|
||||||
|
|
||||||
(3796245 348706 66 89999 3357474)
|
|
||||||
(31715328 31354880 360448 13385728 401408 7237632 17567744)
|
|
||||||
(133885952 42160128 91725824)
|
|
||||||
(37962.49 33574.74)
|
|
||||||
(0.01 0.02 0.0)
|
|
||||||
(33554432 1 128 128 4194304)
|
|
||||||
(2048 16384 4056 16384 128 16 16384)
|
|
||||||
(4096 128 4096 4096 32 32 32 20 32767 16383)
|
|
||||||
(31 127 7 3 1 31 127 1023 3)
|
|
||||||
(71 4 284 1 2 3 246 247 210 8 48 81 83 153 157 167 170 171 172 173 174 175 178 181 195 191 200 203 207 248 215 216 217 220 222 227 245 249 250 251 253 254 315 267 331 373 338 334 335 345 337 372 374 342 343 344 375 14445 13119 6438 14555 13118 13801 6439 17362 18411 18455 6521 6522 6523 23979 23980 7905 7906)
|
|
||||||
|
|
||||||
===========================================================================================
|
|
||||||
|
|
||||||
Better documentation is on the way! There's still a little bit under the URL above.
|
|
||||||
|
|
||||||
Enjoy it!
|
|
||||||
|
|
||||||
Martin <martin@home-of-linux.org>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
241
ANNOUNCE-0.25
241
ANNOUNCE-0.25
@@ -1,241 +0,0 @@
|
|||||||
[Posted to the Gnome Mailing List on Fri Aug 21 1998]
|
|
||||||
|
|
||||||
About this release:
|
|
||||||
------------------
|
|
||||||
|
|
||||||
LibGTop 0.25 is a stable release.
|
|
||||||
|
|
||||||
Of cause it has its bug like any software has, I'm planning
|
|
||||||
to fix as many bugs as possible in _this_ release and then
|
|
||||||
re-release it as libgtop-0.26 or even libgtop-0.30.
|
|
||||||
|
|
||||||
Especially portings to new operating systems should be made
|
|
||||||
in this release.
|
|
||||||
|
|
||||||
This also means that we can safely use this version of LibGTop
|
|
||||||
all over the GNOME project.
|
|
||||||
|
|
||||||
Currently LibGTop-Apps is still a little bit under development -
|
|
||||||
especially the LibGTop-Apps GTop does not yet have the full
|
|
||||||
functionallity of the real GTop.
|
|
||||||
|
|
||||||
We should test this extensively and then decide whether to continue
|
|
||||||
with the `libgtop-apps' module or whether to merge all its code
|
|
||||||
back into the modules it came from. I'd like to hear some comments
|
|
||||||
about this from you !
|
|
||||||
|
|
||||||
Please look at the release notes below for more details about this
|
|
||||||
release.
|
|
||||||
|
|
||||||
Where to get the sources
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
The sources can be found at:
|
|
||||||
|
|
||||||
ftp://ftp.home-of-linux.org/pub/
|
|
||||||
|
|
||||||
Tarballs:
|
|
||||||
|
|
||||||
libgtop-0.25.0.tar.gz
|
|
||||||
libgtop-apps-0.25.0.tar.gz
|
|
||||||
|
|
||||||
Source RPM:
|
|
||||||
|
|
||||||
libgtop-0.25.0-REL.src.rpm
|
|
||||||
libgtop-apps-0.25.0-REL.src.rpm
|
|
||||||
|
|
||||||
Binary RPMS:
|
|
||||||
|
|
||||||
libgtop-0.25.0-REL.i386.rpm
|
|
||||||
libgtop-devel-0.25.0-REL.i386.rpm
|
|
||||||
libgtop-examples-0.25.0-REL.i386.rpm
|
|
||||||
libgtop-apps-0.25.0-REL.i386.rpm
|
|
||||||
|
|
||||||
There is some little problem with the binary RPMS of `libgtop-apps':
|
|
||||||
|
|
||||||
Most of its files will conflict with ones from `gnome-core' and `gnome-utils',
|
|
||||||
so you'll need to use the `--force' parameter to install it.
|
|
||||||
|
|
||||||
Getting the sources from CVS:
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
You can also fetch the sources from the GNOME CVS tree
|
|
||||||
(see http://www.gnome.org/ for details).
|
|
||||||
|
|
||||||
To get the latest sources:
|
|
||||||
|
|
||||||
$ cvs checkout libgtop
|
|
||||||
$ cvs checkout libgtop-apps
|
|
||||||
|
|
||||||
To get the sources of *this* release:
|
|
||||||
|
|
||||||
$ cvs checkout -r LIBGTOP_0_25 libgtop
|
|
||||||
$ cvs checkout -r LIBGTOP_0_25 libgtop-apps
|
|
||||||
|
|
||||||
To get the sources of this release with all bug-fixes applied:
|
|
||||||
|
|
||||||
$ cvs checkout -r LIBGTOP_0_25_PATCHES libgtop
|
|
||||||
$ cvs checkout -r LIBGTOP_0_25_PATCHES libgtop-apps
|
|
||||||
|
|
||||||
To get a patch to apply to the tarballs to get all bug-fixes:
|
|
||||||
|
|
||||||
$ cvs rdiff -r LIBGTOP_0_25 -r LIBGTOP_0_25_PATCHES libgtop
|
|
||||||
$ cvs rdiff -r LIBGTOP_0_25 -r LIBGTOP_0_25_PATCHES libgtop-apps
|
|
||||||
|
|
||||||
[Note for people having write access to the GNOME CVS tree:
|
|
||||||
|
|
||||||
Please apply bug fixes to the `LIBGTOP_0_25_PATCHES' branch and
|
|
||||||
merge them into the main trunk.
|
|
||||||
|
|
||||||
After merging, please re-tag the branch `libgtop_0_25_after_merge'.
|
|
||||||
|
|
||||||
This will help us to re-release this package when all bugs are
|
|
||||||
fixed.
|
|
||||||
]
|
|
||||||
|
|
||||||
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>
|
|
2
AUTHORS
2
AUTHORS
@@ -1,2 +1,2 @@
|
|||||||
Martin Baulig (martin@home-of-linux.org)
|
Martin Baulig (martin@home-of-linux.org)
|
||||||
Josh Sled <jsled@scam.XCF.Berkeley.EDU>
|
Drazen Kacar (dave@srce.hr)
|
||||||
|
@@ -6,20 +6,23 @@
|
|||||||
# if backwards compatibility has been broken,
|
# if backwards compatibility has been broken,
|
||||||
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
# set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0.
|
||||||
#
|
#
|
||||||
LIBGTOP_MAJOR_VERSION=0
|
LIBGTOP_MAJOR_VERSION=1
|
||||||
LIBGTOP_MINOR_VERSION=99
|
LIBGTOP_MINOR_VERSION=90
|
||||||
LIBGTOP_MICRO_VERSION=0
|
LIBGTOP_MICRO_VERSION=0
|
||||||
|
|
||||||
LIBGTOP_INTERFACE_AGE=0
|
LIBGTOP_INTERFACE_AGE=0
|
||||||
LIBGTOP_BINARY_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.
|
# Increase each time you change the client/server protocol.
|
||||||
LIBGTOP_SERVER_VERSION=3
|
LIBGTOP_SERVER_VERSION=5
|
||||||
|
|
||||||
# Don't change this
|
# Don't change this
|
||||||
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||||
LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc`
|
LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc`
|
||||||
|
|
||||||
# For automake.
|
# For automake.
|
||||||
VERSION=$LIBGTOP_VERSION
|
VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX
|
||||||
PACKAGE=libgtop
|
PACKAGE=libgtop
|
||||||
|
2
MAINTAINERS
Normal file
2
MAINTAINERS
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Email: martin@home-of-linux.org
|
||||||
|
Email: dave@srce.hr
|
84
Makefile.am
84
Makefile.am
@@ -1,81 +1,19 @@
|
|||||||
## Process this file with automake to produce Makefile.in.
|
|
||||||
|
|
||||||
if EXAMPLES
|
SUBDIRS = po misc include sysdeps lib src examples doc
|
||||||
examples_SUBDIRS = examples
|
|
||||||
else
|
|
||||||
examples_SUBDIRS =
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_GNOME_SUPPORT
|
libgtopinclude_HEADERS = glibtop.h
|
||||||
support = support
|
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||||
endif
|
|
||||||
|
|
||||||
SUBDIRS = po intl $(support) macros misc include sysdeps lib src \
|
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
|
||||||
$(examples_SUBDIRS)
|
LIBGTOP-VERSION features.def \
|
||||||
|
libgtop-sysdeps.m4 README \
|
||||||
|
libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4
|
||||||
|
|
||||||
include_HEADERS = glibtop.h
|
dist-hook:
|
||||||
|
cp libgtop.spec $(distdir)
|
||||||
|
|
||||||
EXTRA_DIST = autogen.sh libgtop.spec copyright.txt libgtopConf.sh.in \
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
|
pkgconfig_DATA = libgtop-2.0.pc
|
||||||
libgtop-sysdeps.m4
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
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_EXTRA_LIBS\@,$(LIBGTOP_EXTRA_LIBS),g' \
|
|
||||||
-e 's,\@LIBGTOP_LIBS\@,$(LIBGTOP_LIBS),g' \
|
|
||||||
-e 's,\@LIBGTOP_INCS\@,$(LIBGTOP_INCS),g' \
|
|
||||||
-e 's,\@LIBGTOP_NAMES_LIBS\@,$(LIBGTOP_NAMES_LIBS),g' \
|
|
||||||
-e 's,\@LIBGTOP_NAMES_INCS\@,$(LIBGTOP_NAMES_INCS),g' \
|
|
||||||
-e 's,\@LIBGTOP_GUILE_LIBS\@,$(LIBGTOP_GUILE_LIBS),g' \
|
|
||||||
-e 's,\@LIBGTOP_GUILE_INCS\@,$(LIBGTOP_GUILE_INCS),g' \
|
|
||||||
-e 's,\@LIBGTOP_GUILE_NAMES_LIBS\@,$(LIBGTOP_GUILE_NAMES_LIBS),g' \
|
|
||||||
-e 's,\@LIBGTOP_GUILE_NAMES_INCS\@,$(LIBGTOP_GUILE_NAMES_INCS),g' \
|
|
||||||
-e 's,\@LIBGTOP_BINDIR\@,$(LIBGTOP_BINDIR),g' \
|
|
||||||
-e 's,\@LIBGTOP_SERVER\@,$(LIBGTOP_SERVER),g' \
|
|
||||||
-e 's,\@LIBGTOP_MAJOR_VERSION\@,$(LIBGTOP_MAJOR_VERSION),g' \
|
|
||||||
-e 's,\@LIBGTOP_MINOR_VERSION\@,$(LIBGTOP_MINOR_VERSION),g' \
|
|
||||||
-e 's,\@LIBGTOP_MICRO_VERSION\@,$(LIBGTOP_MICRO_VERSION),g' \
|
|
||||||
-e 's,\@LIBGTOP_VERSION\@,$(LIBGTOP_VERSION),g' \
|
|
||||||
-e 's,\@LIBGTOP_VERSION_CODE\@,$(LIBGTOP_VERSION_CODE),g' \
|
|
||||||
-e 's,\@LIBGTOP_SERVER_VERSION\@,$(LIBGTOP_SERVER_VERSION),g' \
|
|
||||||
-e 's,\@libgtop_sysdeps_dir\@,$(libgtop_sysdeps_dir),g' \
|
|
||||||
-e 's,\@libgtop_need_server\@,$(libgtop_need_server),g' \
|
|
||||||
-e 's,\@libgtop_use_machine_h\@,$(libgtop_use_machine_h),g' \
|
|
||||||
-e 's,\@libgtop_guile_found\@,$(libgtop_guile_found),g' \
|
|
||||||
-e 's,\@libgtop_want_examples\@,$(libgtop_want_examples),g' \
|
|
||||||
< $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \
|
|
||||||
&& mv libgtopConf.tmp libgtopConf.sh
|
|
||||||
|
|
||||||
libgtop-config: libgtop-config.in Makefile
|
|
||||||
sed -e 's,\@LIBGTOP_LIBDIR\@,$(libdir),g' \
|
|
||||||
< $(srcdir)/libgtop-config.in > libgtop-config.tmp \
|
|
||||||
&& mv libgtop-config.tmp libgtop-config && \
|
|
||||||
chmod 755 libgtop-config
|
|
||||||
|
|
||||||
libgtop-features.def: features.def
|
libgtop-features.def: features.def
|
||||||
@LN_S@ $< $@
|
@LN_S@ $< $@
|
||||||
|
261
NEWS
261
NEWS
@@ -1,244 +1,97 @@
|
|||||||
$Id$
|
July 11, 2004:
|
||||||
|
==============
|
||||||
|
|
||||||
Jun/01/1998
|
* Released LibGTop 2.6.1
|
||||||
===========
|
|
||||||
|
|
||||||
* We have some new ``suffix rules'':
|
- code cleanups.
|
||||||
|
|
||||||
'__l' is a function defined in the client part;
|
- glibtop_mountlist()'s all_fs parameter now works.
|
||||||
'__s' is a function defined in the sysdeps part and
|
|
||||||
'__p' is a function that needs special priviledges.
|
|
||||||
'__r' is mapped either on '__p' or on '__s'.
|
|
||||||
the function without suffix is mapped on '__l'.
|
|
||||||
|
|
||||||
* We now decide at runtime whether or not using the server
|
- glibtop_uptime.boot_time is set on every arch.
|
||||||
is required for a particular function. All user programs
|
|
||||||
now call the '__l' function defined in '-lgtop' (in the lib
|
|
||||||
subdir). These functions either use 'glibtop_call__l' to
|
|
||||||
call the server or call the '__r' function.
|
|
||||||
|
|
||||||
* A function in the sysdeps directory now has the '__s' suffix
|
- linux SMP support is fixed.
|
||||||
if it do not need any priviledges (and thus can be called directly
|
|
||||||
from client code) and the '__p' suffix otherwise (when it has to
|
|
||||||
be called from the server).
|
|
||||||
|
|
||||||
* If you call one of these functions:
|
- Replaced unsafe strcpy by g_strlcpy.
|
||||||
|
|
||||||
-> use the '__p' suffix to be sure to get the SUID-safe one
|
March 11, 2004:
|
||||||
(used in the server).
|
===============
|
||||||
-> use the '__s' suffix to be sure to get a function that
|
|
||||||
doesn't need any priviledges.
|
|
||||||
-> use the '__r' suffix otherwise (it is mapped either on the
|
|
||||||
'__p' or on the '__s' one).
|
|
||||||
|
|
||||||
Only use the '__p' and '__s' functions in a 'GLIBTOP_SUID_<feature>'
|
* Released LibGTop 2.5.99 "Gross Work", dedicated to people who do push-ups
|
||||||
conditional, otherwise you'll get undefined symbols !
|
in the loos.
|
||||||
|
|
||||||
* The server is now started from 'glibtop_init__r', but only when
|
- plenty of code cleanups
|
||||||
it's really needed; for instance on DEC OSF/1 you only need it
|
|
||||||
for the proc* features - if you program only fetches the CPU usage,
|
|
||||||
now server will be started.
|
|
||||||
|
|
||||||
* Sorry, at the moment everything is a little bit unstable, I'm doing
|
- removed the dependency on libgnome, only glib required now
|
||||||
heavy changes. I've just some great ideas which still need some work:
|
|
||||||
|
|
||||||
-> I want to have a SUID server that only implements those features
|
- Linux 2.6 support, NetBSD support and better FreeBSD support
|
||||||
that need to be SUID; everything else uses the sysdeps code directly.
|
|
||||||
|
|
||||||
-> If a program only uses stuff that do not need the server, the
|
- Make the block size available for filesystem statistics
|
||||||
server will not be started at all.
|
|
||||||
|
|
||||||
-> I'm working on some kind of proxy server that can be used on a remote
|
February 27, 2001:
|
||||||
host; in feature one can then use the MDI stuff from ghex in gtop to
|
=================
|
||||||
have notebook pages displaying processes from different hosts.
|
|
||||||
|
|
||||||
* Well it is as much unstable that it only works under Linux at the moment.
|
* Released LibGTop 1.0.12 "Gerolzhofen".
|
||||||
|
|
||||||
1998-06-01 Martin Baulig <martin@home-of-linux.org>
|
- fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits).
|
||||||
|
|
||||||
* sysdeps/common/sysdeps.c: now using '__r' functions,
|
- fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses
|
||||||
they are #defined either as the '__p' or the '__s' ones.
|
`_KERNEL' instead of `KERNEL'). Bug #51334.
|
||||||
|
|
||||||
* sysdeps/linux/*.c: changed call of 'glibtop_init__r',
|
- for BSDI, comment out `subnet' field in netload; this should make
|
||||||
it now takes two additional arguments.
|
it compile, but there may be other problems. Bug #13345.
|
||||||
|
|
||||||
* examples/{first.c, second.c}: now using 'glibtop_init'
|
This release is for GNOME 1.4 Beta2.
|
||||||
instead of 'glibtop_init__r'.
|
|
||||||
|
|
||||||
* include/glibtop/sysdeps.h: added 'dummy' member so
|
February 14, 2001:
|
||||||
'GLIBTOP_SYSDEPS_<feature>' now start with 1.
|
=================
|
||||||
|
|
||||||
* include/glibtop/*.h: we now #define 'glibtop_get_<feature>'
|
* Released LibGTop 1.0.11 "Jasmin":
|
||||||
as 'glibtop_get_<feature>__l' and 'glibtop_get_<feature>__r'
|
|
||||||
either as the '__p' or the '__s' function.
|
|
||||||
|
|
||||||
* lib/*.c: removed #if's - we now decide at runtime
|
[The release which was supposed to be called "Gerolzhofen".]
|
||||||
whether to use the server or to call the appropriate
|
|
||||||
function for the sysdeps directory.
|
|
||||||
|
|
||||||
1998-05-28 Martin Baulig <baulig@merkur.uni-trier.de>
|
- merged in the Solaris code from LIBGTOP_1_1_2_PATCHES.
|
||||||
|
|
||||||
* src/server/main.c: we now use the '__p' functions,
|
- minor OpenBSD fixes.
|
||||||
but only if the appropriate 'GLIBTOP_SUID_<feature>'
|
|
||||||
has a non-zero value.
|
|
||||||
|
|
||||||
* configure.in (@machine_incs@): always use
|
- again a bunch of updated translations.
|
||||||
`-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no
|
|
||||||
longer conditional.
|
|
||||||
|
|
||||||
* examples/Makefile.am: removed the '_linux' examples.
|
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.
|
||||||
|
|
||||||
* sysdeps/linux/*.c: renamed all functions implementing
|
November 20, 2000:
|
||||||
features to '__s'.
|
=================
|
||||||
|
|
||||||
* lib/*.c: renamed all functions implementing features
|
* Released LibGTop 1.0.10 "November Rain":
|
||||||
to '__l'; we only emit code for those functions if the
|
|
||||||
corresponding 'GLIBTOP_SUID_<feature>' has a positive value.
|
|
||||||
|
|
||||||
* include/glibtop/*.h: added some new function suffixes:
|
- this release contains a bunch of updated translations.
|
||||||
'__l' is a function defined in the client part;
|
|
||||||
'__s' is a function defined in the sysdeps part and
|
|
||||||
'__p' is a function that needs special priviledges.
|
|
||||||
'__r' is mapped either on '__l' or on '__s'.
|
|
||||||
|
|
||||||
* sysdeps/linux/glibtop_server.h: New file -
|
May 25, 2000:
|
||||||
defines system dependent constants 'GLIBTOP_SUID_<feature>'
|
============
|
||||||
being either 'GLIBTOP_SYSDEPS_<feature>'+1 depending upon
|
|
||||||
whether or not this feature requires using the server.
|
|
||||||
|
|
||||||
* lib/sysdeps.c: removed that file; it is no longer
|
* Released LibGTop 1.0.9 "Stuttgart".
|
||||||
needed.
|
|
||||||
|
|
||||||
|
(LibGTop 1.0.8 "Frankfurt" was not publically released.)
|
||||||
|
|
||||||
|
February 15, 2000:
|
||||||
|
=================
|
||||||
|
|
||||||
May/21/1998
|
* Released LibGTop 1.0.7 "Copenhagen":
|
||||||
===========
|
|
||||||
|
|
||||||
* doc/gnome-hackers.sgml: This is a short intro on how to use libgtop
|
- this is a bug fix release for the GUADEC CD-ROM;
|
||||||
in the GNOME project. It covers especially the use of its 'configure'
|
it contains fixes in both the Linux and *BSD sysdeps
|
||||||
script and the automatically generated 'gtopConf.sh'.
|
directory.
|
||||||
|
|
||||||
May/20/1998
|
October 18, 1999:
|
||||||
===========
|
================
|
||||||
|
|
||||||
* 'gtopConf.sh' now defines 'GTOP_LIBS' and 'GTOP_INCS' in a manner
|
* Released LibGTop 1.0.6 "October LibGTop":
|
||||||
that they contain everything that is needed to link some program with
|
|
||||||
libgtop. It will use '-lgtop' only if the server is really needed and
|
|
||||||
'-lgtop_sysdeps' otherwise;
|
|
||||||
|
|
||||||
* 'gtopConf.sh' additionally defines 'GTOP_GUILE_LIBS' and 'GTOP_GUILE_INCS'
|
- compilation fixes for FreeBSD.
|
||||||
containing everything that is needed to link some program both with
|
- updated reference manual.
|
||||||
libgtop and its guile interface. They are identically to 'GTOP_LIBS'
|
|
||||||
and 'GTOP_INCS' if building the guile interface is disabled or guile
|
|
||||||
cannot be found on the system.
|
|
||||||
|
|
||||||
* 'configure' takes additional arguments '--enable-libgtop-server' and
|
September 29, 1999:
|
||||||
'--disable-libgtop-server' to use the server even when it's not needed
|
==================
|
||||||
or to disable it's use where it's needed.
|
|
||||||
|
|
||||||
* 'configure' takes an argument '--without-libgtop-guile' to disable
|
* Released LibGTop 1.0.5.
|
||||||
guile support.
|
|
||||||
|
|
||||||
* 'configure takes an argument '--without-libgtop-names' to remove
|
|
||||||
'-lgtop_names' (and '-lgtop_guile_names' when we have guile) from
|
|
||||||
'GTOP_LIBS'; in this case these libraries are not even built.
|
|
||||||
|
|
||||||
May/19/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* Libgtop is now in the GNOME CVS Repository.
|
|
||||||
|
|
||||||
May/17/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* we have now 'const char *glibtop_types_* []' consisting
|
|
||||||
of the C types of the corresponding files of '_glibtop_*'.
|
|
||||||
|
|
||||||
* added guile function '(glibtop-types-*)' and '(glibtop-descriptions-*)'.
|
|
||||||
|
|
||||||
May/10/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* Port to DEC OSF1 3.0 has been made:
|
|
||||||
|
|
||||||
cpu (total, user, nice, sys, idle)
|
|
||||||
mem (total, used, free)
|
|
||||||
|
|
||||||
loadavg (loadavg)
|
|
||||||
uptime (uptime)
|
|
||||||
|
|
||||||
msg_limits (map, max, mnb, mni, tql)
|
|
||||||
sem_limits (mni, msl, opm, vmx, aem)
|
|
||||||
shm_limits (max, min, mni, seg)
|
|
||||||
|
|
||||||
The following need the server to be SUID root:
|
|
||||||
|
|
||||||
proclist (total, number, size)
|
|
||||||
procdata (cmd, state, uid, pid, ppid, pgrp, tty, k_flags,
|
|
||||||
session, tpgid, sigignore, sigcatch, signal, nice,
|
|
||||||
priority, resident, rss, vsize, utime, stime,
|
|
||||||
cutime, cstime, trs, drs)
|
|
||||||
|
|
||||||
May/07/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* 'flags' member of sysdeps/linux/procdata.c is now
|
|
||||||
'unsigned long flags [2]'.
|
|
||||||
|
|
||||||
* When we give glibtop_get_procdata () a pid of zero, only
|
|
||||||
the flags are returned.
|
|
||||||
|
|
||||||
* We now use static constants instead of #defines for sysdeps flags.
|
|
||||||
|
|
||||||
May/03/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* VPATH-Build now working; sometimes it's necessary to copy
|
|
||||||
$(top_srcdir)/po/cat-id-tbl.c to $(top_builddir)/po.
|
|
||||||
|
|
||||||
* The library has been tested on the following systems:
|
|
||||||
|
|
||||||
- i686-pc-linux-gnu
|
|
||||||
- sparc-sun-sunos4.1.1
|
|
||||||
- alpha-dec-osf1 (that's DEC OSF1 3.0 and 3.2)
|
|
||||||
|
|
||||||
* Compilation has been tested on the following systems (I have no root
|
|
||||||
access there and cannot test the library because of this):
|
|
||||||
|
|
||||||
- sparc-sun-solaris2
|
|
||||||
- i386-bsdi
|
|
||||||
|
|
||||||
* Does no longer require Gnome.
|
|
||||||
|
|
||||||
* Guile-Parts are compiled only if guile can be found.
|
|
||||||
|
|
||||||
* Some of the executables are statically linked to copy them more easily
|
|
||||||
between machines.
|
|
||||||
|
|
||||||
May/02/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
* Global changes to the interfaces, all functions except glibtop_open()
|
|
||||||
and glibtop_close() that took a server argument have now a '__r' suffix;
|
|
||||||
the original name is now a macro that uses glibtop_global_server.
|
|
||||||
|
|
||||||
Apr/10/1998
|
|
||||||
===========
|
|
||||||
Added new directory sysdeps/guile/names. It is the guile interface
|
|
||||||
to the gtop_names library found in sysdeps/names. Changed
|
|
||||||
GLIBTOP_DESCRIPTIONS to GLIBTOP_NAMES and added GLIBTOP_GUILE_NAMES
|
|
||||||
to the header files.
|
|
||||||
|
|
||||||
Apr/09/1998
|
|
||||||
===========
|
|
||||||
Added new directories guile and names to sysdeps. In names are
|
|
||||||
some string constants about the data stored in the structures.
|
|
||||||
guile is a guile interface for the library. It is used in
|
|
||||||
examples/third (which has been completely rewritten).
|
|
||||||
The header files define things from names when GLIBTOP_DESCRIPTIONS
|
|
||||||
if defined and/or from guile when HAVE_GUILE is defined.
|
|
||||||
|
|
||||||
Apr/08/1998
|
|
||||||
===========
|
|
||||||
|
|
||||||
Added guile wrapper for the library (see examples/third).
|
|
||||||
|
57
README
57
README
@@ -1,57 +1,8 @@
|
|||||||
Hi all,
|
$Id$
|
||||||
|
|
||||||
[PLEASE READ THE FILE ``README.LATEST'' FOR LATEST NEWS]
|
LATEST NEWS:
|
||||||
|
|
||||||
this is the latest alpha version of libgtop, a library that fetches
|
|
||||||
information about the running system such as cpu and memory usage,
|
|
||||||
active processes etc. On Linux systems, these information are taken
|
|
||||||
directly from the /proc filesystem. For other systems such as Solaris,
|
|
||||||
where such programs need to be suid root (or only setgid kmem/mem on
|
|
||||||
some systems), it provides a suid/setgid server that fetches those
|
|
||||||
information and a client-side library that talks to this server.
|
|
||||||
|
|
||||||
Main idea was to have the same interface for all operating systems,
|
|
||||||
thus all system dependent details are hidden in the implementation
|
|
||||||
of that server.
|
|
||||||
|
|
||||||
Currently, it only works for Linux, documentation on how to port it
|
|
||||||
to other systems is on the way. I'm planning to keep this site an
|
|
||||||
up-to-date mirror of my local machine (which is connected to the
|
|
||||||
internet over some expensive dialup connection, so I'll upload it about
|
|
||||||
once every day I made significant changes) so that you can always find
|
|
||||||
the latest version of the software here.
|
|
||||||
|
|
||||||
I've written a simple guile interface for the library to show which
|
|
||||||
information it can already fetch. See examples/third for details.
|
|
||||||
|
|
||||||
Source Code:
|
|
||||||
===========
|
===========
|
||||||
|
|
||||||
libgtop-current-cvs.cpio.gz is a cpio archive from the CVS repository
|
Please look also in the file 'NEWS' for latest news.
|
||||||
libgtop-current.cpio.gz contains the lates checked out sources
|
|
||||||
libgtop-stable.cpio.gz if present, it contains the last stable release
|
|
||||||
|
|
||||||
Documentation:
|
Martin
|
||||||
=============
|
|
||||||
|
|
||||||
libgtop.sgml is the SGML source of the (DocBook) documentation
|
|
||||||
|
|
||||||
The next three files are only provided until they get too big to upload.
|
|
||||||
|
|
||||||
libgtop.tex TEX file of the documentation
|
|
||||||
libgtop.dvi DVI file of the documentation
|
|
||||||
libgtop.ps Postscript file of the documentation
|
|
||||||
|
|
||||||
HTML-Documentation:
|
|
||||||
==================
|
|
||||||
|
|
||||||
libgtop.shtml Start here to browse the HTML documentation
|
|
||||||
|
|
||||||
Other stuff:
|
|
||||||
===========
|
|
||||||
|
|
||||||
README, NEWS, ChangeLog copied from the sources
|
|
||||||
|
|
||||||
Enjoy it!
|
|
||||||
|
|
||||||
Martin (martin@home-of-linux.org - baulig@merkur.uni-trier.de)
|
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
$Id$
|
|
||||||
|
|
||||||
LATEST NEWS:
|
|
||||||
===========
|
|
||||||
|
|
||||||
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>
|
|
48
TODO
48
TODO
@@ -1,48 +0,0 @@
|
|||||||
This is LibGTop 0.30.0,
|
|
||||||
|
|
||||||
a feature-freezed version of LibGTop for GNOME 1.0.
|
|
||||||
|
|
||||||
You need to use the latest version of LibGTop from CVS for Gnome, it will
|
|
||||||
no longer work with older releases.
|
|
||||||
|
|
||||||
Martin
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
|
|
||||||
NOTE: LibGTop is already feature-freezed for GNOME 1.0, so only bug fixes
|
|
||||||
are ok, no API changes !
|
|
||||||
|
|
||||||
Sysdeps directory 'linux':
|
|
||||||
==========================
|
|
||||||
|
|
||||||
* Add implementation `netload' and `ppp' with modems.
|
|
||||||
|
|
||||||
* Add implementation for `proc_args'.
|
|
||||||
|
|
||||||
Sysdeps directory 'freebsd':
|
|
||||||
============================
|
|
||||||
|
|
||||||
* FreeBSD 3.0: It works fine on this system, so please make sure not
|
|
||||||
to break it here.
|
|
||||||
|
|
||||||
* FreeBSD 2.2: Make sure it still works here.
|
|
||||||
|
|
||||||
* NetBSD/OpenBSD: Support was added on Dec 6, but we need to check
|
|
||||||
whether all data are valid.
|
|
||||||
|
|
||||||
Sysdeps directories 'kernel', 'osf1' and 'sun4':
|
|
||||||
================================================
|
|
||||||
|
|
||||||
* You need to use the `--enable-hacker-mode' parameter to configure
|
|
||||||
to build this directories.
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Everything except sysdeps directories:
|
|
||||||
======================================
|
|
||||||
|
|
||||||
* Ready for Gnome 1.0. [ALREADY FEATURE FREEZED]
|
|
||||||
|
|
||||||
December 15, 1998
|
|
||||||
|
|
||||||
Martin
|
|
||||||
|
18
acconfig.h
18
acconfig.h
@@ -11,10 +11,14 @@
|
|||||||
/* Define if getpagesize () must be declared. */
|
/* Define if getpagesize () must be declared. */
|
||||||
#undef NEED_DECLARATION_GETPAGESIZE
|
#undef NEED_DECLARATION_GETPAGESIZE
|
||||||
|
|
||||||
|
/* Define if program_invocation_name must be declared. */
|
||||||
|
#undef NEED_DECLARATION_PROGRAM_INVOCATION_NAME
|
||||||
|
|
||||||
@TOP@
|
@TOP@
|
||||||
|
|
||||||
#undef ENABLE_NLS
|
#undef ENABLE_NLS
|
||||||
#undef HAVE_CATGETS
|
#undef HAVE_CATGETS
|
||||||
|
#undef GETTEXT_PACKAGE
|
||||||
#undef HAVE_GETTEXT
|
#undef HAVE_GETTEXT
|
||||||
#undef HAVE_LC_MESSAGES
|
#undef HAVE_LC_MESSAGES
|
||||||
#undef HAVE_STPCPY
|
#undef HAVE_STPCPY
|
||||||
@@ -122,7 +126,7 @@
|
|||||||
#undef HAVE_GUILE
|
#undef HAVE_GUILE
|
||||||
|
|
||||||
#undef ssize_t
|
#undef ssize_t
|
||||||
#undef u_int64_t
|
#undef guint64
|
||||||
#undef int64_t
|
#undef int64_t
|
||||||
|
|
||||||
#undef HAVE_GLIBTOP_MACHINE_H
|
#undef HAVE_GLIBTOP_MACHINE_H
|
||||||
@@ -152,3 +156,15 @@
|
|||||||
* the running kernel (if we don't have configured kernel sources).
|
* the running kernel (if we don't have configured kernel sources).
|
||||||
*/
|
*/
|
||||||
#undef GLIBTOP_LINUX_VERSION_CODE
|
#undef GLIBTOP_LINUX_VERSION_CODE
|
||||||
|
|
||||||
|
/* Solaris release code (eg. 251 for Solaris 2.5.1). */
|
||||||
|
#undef GLIBTOP_SOLARIS_RELEASE
|
||||||
|
|
||||||
|
/* Define if you want to use LibGTop without GNOME. */
|
||||||
|
#undef WITHOUT_GNOME
|
||||||
|
|
||||||
|
/* Define if you have the <procfs.h> header file */
|
||||||
|
#undef HAVE_PROCFS_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/procfs.h> header file */
|
||||||
|
#undef HAVE_SYS_PROCFS_H
|
||||||
|
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
|
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
|
||||||
|
@@ -2,7 +2,4 @@
|
|||||||
.libs
|
.libs
|
||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
guile.c
|
|
||||||
so_locations
|
|
||||||
libgtop_guile.la
|
|
||||||
*.lo
|
*.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;
|
||||||
|
}
|
59
backends/server/command.h.in
Normal file
59
backends/server/command.h.in
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
@@AUTOGEN_COMMENT@@
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIBTOP_COMMAND_H__
|
||||||
|
#define __GLIBTOP_COMMAND_H__
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
@@GLIBTOP_COMMAND_CONSTANTS@@
|
||||||
|
|
||||||
|
#define _GLIBTOP_PARAM_SIZE 16
|
||||||
|
|
||||||
|
typedef struct _glibtop_command glibtop_command;
|
||||||
|
typedef struct _glibtop_response glibtop_response;
|
||||||
|
|
||||||
|
struct _glibtop_command
|
||||||
|
{
|
||||||
|
guint64 command;
|
||||||
|
guint64 param_size, send_size, data_size;
|
||||||
|
char parameter [_GLIBTOP_PARAM_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _glibtop_response
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
int glibtop_errno;
|
||||||
|
guint64 recv_size, data_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif
|
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 '';
|
||||||
|
|
284
configure.in
284
configure.in
@@ -6,8 +6,33 @@ AC_INIT(copyright.txt)
|
|||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
|
|
||||||
. $srcdir/LIBGTOP-VERSION
|
LIBGTOP_MAJOR_VERSION=2
|
||||||
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
|
LIBGTOP_MINOR_VERSION=6
|
||||||
|
LIBGTOP_MICRO_VERSION=1
|
||||||
|
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION
|
||||||
|
AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION)
|
||||||
|
|
||||||
|
dnl increment if the interface has additions, changes, removals.
|
||||||
|
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_MAJOR_VERSION)
|
||||||
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
AC_SUBST(LIBGTOP_MINOR_VERSION)
|
||||||
@@ -17,39 +42,46 @@ AC_SUBST(LIBGTOP_BINARY_AGE)
|
|||||||
AC_SUBST(LIBGTOP_SERVER_VERSION)
|
AC_SUBST(LIBGTOP_SERVER_VERSION)
|
||||||
AC_SUBST(LIBGTOP_VERSION)
|
AC_SUBST(LIBGTOP_VERSION)
|
||||||
AC_SUBST(LIBGTOP_VERSION_CODE)
|
AC_SUBST(LIBGTOP_VERSION_CODE)
|
||||||
|
AC_SUBST(LIBGTOP_VERSION_SUFFIX)
|
||||||
|
|
||||||
# libtool versioning
|
# libtool versioning
|
||||||
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION
|
||||||
LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE`
|
LT_CURRENT=$LIBGTOP_CURRENT
|
||||||
LT_REVISION=$LIBGTOP_INTERFACE_AGE
|
LT_REVISION=$LIBGTOP_REVISION
|
||||||
LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE`
|
LT_AGE=$LIBGTOP_AGE
|
||||||
LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
|
LT_VERSION_INFO="-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}"
|
||||||
AC_SUBST(LT_VERSION_INFO)
|
AC_SUBST(LT_VERSION_INFO)
|
||||||
AC_SUBST(LT_RELEASE)
|
AC_SUBST(LT_RELEASE)
|
||||||
AC_SUBST(LT_CURRENT)
|
AC_SUBST(LT_CURRENT)
|
||||||
AC_SUBST(LT_REVISION)
|
AC_SUBST(LT_REVISION)
|
||||||
AC_SUBST(LT_AGE)
|
AC_SUBST(LT_AGE)
|
||||||
|
|
||||||
AM_ACLOCAL_INCLUDE(. macros)
|
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ."
|
||||||
|
|
||||||
AC_ISC_POSIX
|
AC_ISC_POSIX
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_STDC_HEADERS
|
AC_STDC_HEADERS
|
||||||
AC_ARG_PROGRAM
|
dnl AC_ARG_PROGRAM
|
||||||
|
|
||||||
|
dnl We need this at some places.
|
||||||
|
libgtop_top_builddir=`pwd`
|
||||||
|
AC_SUBST(libgtop_top_builddir)
|
||||||
|
|
||||||
dnl We don't use `AC_PROG_AWK' since it checks for mawk first which
|
dnl We don't use `AC_PROG_AWK' since it checks for mawk first which
|
||||||
dnl does not work for libgtop.
|
dnl does not work for libgtop.
|
||||||
AC_CHECK_PROGS(AWK, gawk awk, )
|
AC_CHECK_PROGS(AWK, gawk awk, )
|
||||||
test -z "$AWK" && AC_MSG_ERROR([Sorry, you need a working awk interpreter.])
|
test -z "$AWK" && AC_MSG_ERROR([Sorry, you need a working awk interpreter.])
|
||||||
|
|
||||||
|
dnl Most people should have a working perl interpreter on their system
|
||||||
|
AC_CHECK_PROGS(PERL, perl5 perl)
|
||||||
|
test -z "$PERL" && AC_MSG_ERROR([You need to have a working perl interpreter.])
|
||||||
|
|
||||||
AC_CHECK_TOOL(CC,gcc)
|
AC_CHECK_TOOL(CC,gcc)
|
||||||
AC_CHECK_TOOL(RANLIB,ranlib)
|
AC_CHECK_TOOL(RANLIB,ranlib)
|
||||||
AC_CHECK_TOOL(AS,as)
|
AC_CHECK_TOOL(AS,as)
|
||||||
AC_CHECK_TOOL(AR,ar)
|
AC_CHECK_TOOL(AR,ar)
|
||||||
AC_CHECK_TOOL(NM,nm)
|
|
||||||
|
|
||||||
NM=`which $NM`
|
export CC CXX RANLIB LD AS AR
|
||||||
export CC CXX RANLIB LD AS AR NM
|
|
||||||
|
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
@@ -59,37 +91,11 @@ export cross_compiling
|
|||||||
|
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
dnl Let the user enable compiler warnings
|
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
||||||
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.
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
GNOME_SUPPORT_CHECKS
|
|
||||||
else
|
|
||||||
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
|
|
||||||
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
|
|
||||||
fi
|
|
||||||
|
|
||||||
GNOME_LIBGTOP_SYSDEPS
|
GNOME_LIBGTOP_SYSDEPS
|
||||||
GNOME_LIBGTOP_TYPES
|
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,
|
AC_ARG_WITH(libgtop-inodedb,
|
||||||
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
[ --with-libgtop-inodedb Build the inodedb stuff (default=no)],
|
||||||
[build_inodedb="$withval"], [build_inodedb=no])
|
[build_inodedb="$withval"], [build_inodedb=no])
|
||||||
@@ -108,20 +114,6 @@ fi
|
|||||||
|
|
||||||
AC_DEFINE(GLIBTOP_NAMES)
|
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
|
if test x$libgtop_smp = xyes ; then
|
||||||
smp_examples='smp'
|
smp_examples='smp'
|
||||||
smp_static_examples='smp_static'
|
smp_static_examples='smp_static'
|
||||||
@@ -131,23 +123,30 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$enable_static" != xno; then
|
if test "x$enable_static" != xno; then
|
||||||
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static $guile_static_examples $smp_static_examples"
|
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $smp_static_examples"
|
||||||
else
|
else
|
||||||
static_targets=""
|
static_targets=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
|
||||||
|
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
|
||||||
|
|
||||||
AC_SUBST(static_targets)
|
AC_SUBST(static_targets)
|
||||||
AC_SUBST(smp_examples)
|
AC_SUBST(smp_examples)
|
||||||
AC_SUBST(guile_examples)
|
|
||||||
AC_SUBST(guile_subdirs)
|
|
||||||
|
|
||||||
AM_PROG_LIBTOOL
|
GLIB_REQUIRED=2.0.0
|
||||||
|
|
||||||
AM_PATH_GLIB(1.1.3,,AC_MSG_ERROR(GLIB >= 1.1.3 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
|
AC_CHECK_HEADER(popt.h,[POPT=yes],[POPT=no])
|
||||||
dnl libGTop without Gnome.
|
AC_MSG_CHECKING(for popt.h)
|
||||||
dnl GNOME_SUPPORT_CHECKS
|
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.
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
@@ -165,12 +164,71 @@ AC_CHECK_TYPE(ssize_t, int)
|
|||||||
AC_CHECK_HEADERS(memory.h)
|
AC_CHECK_HEADERS(memory.h)
|
||||||
AC_CHECK_HEADERS(string.h strings.h, break)
|
AC_CHECK_HEADERS(string.h strings.h, break)
|
||||||
AC_REPLACE_FUNCS(strerror)
|
AC_REPLACE_FUNCS(strerror)
|
||||||
AC_CHECK_LIB(kvm, kvm_open)
|
|
||||||
|
dnl dlopen() and dlsym()
|
||||||
|
DL_LIB=
|
||||||
|
AC_CHECK_FUNCS(dlopen,,[
|
||||||
|
AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", [
|
||||||
|
AC_CHECK_LIB(dld, shl_load, DL_LIB="-ldld", [
|
||||||
|
AC_CHECK_FUNCS(dlopen, DL_LIB="", DL_LIB="")
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
oLIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $DL_LIB"
|
||||||
|
AC_CHECK_FUNCS(dlerror,,)
|
||||||
|
LIBS="$oLIBS"
|
||||||
|
AC_SUBST(DL_LIB)
|
||||||
|
|
||||||
|
dnl 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)
|
||||||
|
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
|
||||||
|
|
||||||
|
dnl Some versions of Solaris require -lelf for -lkvm
|
||||||
|
AC_CHECK_LIB(kvm, kvm_open,[
|
||||||
|
LIBS="-lkvm $LIBS"
|
||||||
|
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
|
||||||
|
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
|
||||||
|
[ac_save_LIBS="$LIBS"
|
||||||
|
LIBS="-lkvm -lelf $LIBS"
|
||||||
|
AC_TRY_LINK([char kvm_open();], [kvm_open()],
|
||||||
|
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
])
|
||||||
|
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
LIBS="-lkvm -lelf $LIBS"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
dnl For DEC OSF1
|
dnl For DEC OSF1
|
||||||
AC_CHECK_LIB(mach, vm_statistics)
|
AC_CHECK_LIB(mach, vm_statistics)
|
||||||
|
|
||||||
dnl Check for Internet sockets.
|
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
|
||||||
|
|
||||||
AC_CHECK_FUNC(socket,
|
AC_CHECK_FUNC(socket,
|
||||||
[AC_CHECK_HEADER(netinet/in.h,
|
[AC_CHECK_HEADER(netinet/in.h,
|
||||||
[AC_CHECK_HEADER(arpa/inet.h, [
|
[AC_CHECK_HEADER(arpa/inet.h, [
|
||||||
@@ -192,9 +250,13 @@ AC_TYPE_SIGNAL
|
|||||||
AC_FUNC_STRFTIME
|
AC_FUNC_STRFTIME
|
||||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||||
|
|
||||||
dnl ## all 'es_??' are only needed for format numbers different of 'es'
|
ALL_LINGUAS="am ar az be bg bn ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id it ja ko lt lv mk ml mn ms nl nn no or pa pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW"
|
||||||
ALL_LINGUAS="de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fr ko no"
|
|
||||||
AM_GNOME_GETTEXT
|
GETTEXT_PACKAGE=libgtop-2.0
|
||||||
|
AC_SUBST(GETTEXT_PACKAGE)
|
||||||
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
|
||||||
|
|
||||||
|
AM_GLIB_GNU_GETTEXT
|
||||||
|
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
|
|
||||||
@@ -234,55 +296,34 @@ dnl Debugging
|
|||||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
|
||||||
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
|
AC_ARG_ENABLE(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.
|
dnl These definitions are expanded in make.
|
||||||
LIBGTOP_LIBS='-L$(libdir)'
|
LIBGTOP_LIBS='-L$(libdir)'
|
||||||
LIBGTOP_INCS='-I$(includedir)'
|
LIBGTOP_INCS='-I$(includedir)/libgtop-2.0'
|
||||||
|
|
||||||
|
if test x$libgtop_use_machine_h = xyes ; then
|
||||||
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$build_inodedb = xyes ; then
|
if test x$build_inodedb = xyes ; then
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$libgtop_smp = xyes ; then
|
||||||
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP"
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$libgtop_have_sysinfo = xyes ; then
|
if test x$libgtop_have_sysinfo = xyes ; then
|
||||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
|
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
|
||||||
fi
|
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_BINDIR='$(bindir)'
|
||||||
LIBGTOP_SERVER='$(bindir)/libgtop_server'
|
LIBGTOP_SERVER='$(bindir)/libgtop_server2'
|
||||||
|
|
||||||
sysdeps_dir="$libgtop_sysdeps_dir"
|
sysdeps_dir="$libgtop_sysdeps_dir"
|
||||||
AC_SUBST(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
|
if test -z "$LIBGTOP_EXTRA_LIBS" ; then
|
||||||
LIBGTOP_EXTRA_LIBS="$libs_xauth"
|
LIBGTOP_EXTRA_LIBS="$libs_xauth"
|
||||||
else
|
else
|
||||||
@@ -291,54 +332,44 @@ fi
|
|||||||
|
|
||||||
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop_common -lgtop -lgtop_sysdeps"
|
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_common -lgtop -lgtop_sysdeps"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS"
|
||||||
|
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
|
|
||||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names"
|
|
||||||
|
|
||||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||||
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS"
|
|
||||||
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS"
|
|
||||||
|
|
||||||
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
|
|
||||||
LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE"
|
|
||||||
|
|
||||||
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
|
||||||
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES"
|
|
||||||
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES"
|
|
||||||
|
|
||||||
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
||||||
|
|
||||||
AC_SUBST(machine_incs)
|
AC_SUBST(machine_incs)
|
||||||
|
|
||||||
if test x$libgtop_guile_found = xyes ; then
|
if test "$GCC" = "yes" ; then
|
||||||
guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
|
CFLAGS="\
|
||||||
else
|
-Wall \
|
||||||
guile_def=""
|
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
||||||
|
-Wnested-externs -Wpointer-arith \
|
||||||
|
-Wcast-align -Wsign-compare \
|
||||||
|
-fno-strict-aliasing \
|
||||||
|
$CFLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
|
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $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(INCLUDES)
|
||||||
|
|
||||||
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
||||||
|
AC_SUBST(GLIB_LIBS)
|
||||||
AC_SUBST(LIBGTOP_LIBS)
|
AC_SUBST(LIBGTOP_LIBS)
|
||||||
AC_SUBST(LIBGTOP_INCS)
|
AC_SUBST(LIBGTOP_INCS)
|
||||||
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
AC_SUBST(LIBGTOP_NAMES_LIBS)
|
||||||
AC_SUBST(LIBGTOP_NAMES_INCS)
|
AC_SUBST(LIBGTOP_NAMES_INCS)
|
||||||
AC_SUBST(LIBGTOP_GUILE_LIBS)
|
|
||||||
AC_SUBST(LIBGTOP_GUILE_INCS)
|
|
||||||
AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS)
|
|
||||||
AC_SUBST(LIBGTOP_GUILE_NAMES_INCS)
|
|
||||||
AC_SUBST(LIBGTOP_BINDIR)
|
AC_SUBST(LIBGTOP_BINDIR)
|
||||||
AC_SUBST(LIBGTOP_SERVER)
|
AC_SUBST(LIBGTOP_SERVER)
|
||||||
|
|
||||||
if test x$libgtop_need_server = xyes ; then
|
if test x$libgtop_need_server = xyes ; then
|
||||||
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la"
|
sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la"
|
||||||
server_programs='libgtop_server'
|
server_programs='libgtop_server2'
|
||||||
else
|
else
|
||||||
sysdeps_suid_lib=
|
sysdeps_suid_lib=
|
||||||
server_programs=
|
server_programs=
|
||||||
@@ -348,16 +379,14 @@ AC_SUBST(server_programs)
|
|||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
Makefile
|
Makefile
|
||||||
|
libgtop.spec
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
intl/Makefile
|
|
||||||
misc/Makefile
|
misc/Makefile
|
||||||
include/Makefile
|
include/Makefile
|
||||||
include/glibtop/Makefile
|
include/glibtop/Makefile
|
||||||
sysdeps/Makefile
|
sysdeps/Makefile
|
||||||
sysdeps/common/Makefile
|
sysdeps/common/Makefile
|
||||||
sysdeps/names/Makefile
|
sysdeps/names/Makefile
|
||||||
sysdeps/guile/Makefile
|
|
||||||
sysdeps/guile/names/Makefile
|
|
||||||
sysdeps/stub/Makefile
|
sysdeps/stub/Makefile
|
||||||
sysdeps/stub_suid/Makefile
|
sysdeps/stub_suid/Makefile
|
||||||
sysdeps/sun4/Makefile
|
sysdeps/sun4/Makefile
|
||||||
@@ -365,10 +394,13 @@ sysdeps/osf1/Makefile
|
|||||||
sysdeps/linux/Makefile
|
sysdeps/linux/Makefile
|
||||||
sysdeps/kernel/Makefile
|
sysdeps/kernel/Makefile
|
||||||
sysdeps/freebsd/Makefile
|
sysdeps/freebsd/Makefile
|
||||||
|
sysdeps/solaris/Makefile
|
||||||
|
sysdeps/aix/Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/daemon/Makefile
|
src/daemon/Makefile
|
||||||
src/inodedb/Makefile
|
src/inodedb/Makefile
|
||||||
lib/Makefile
|
lib/Makefile
|
||||||
examples/Makefile
|
examples/Makefile
|
||||||
support/Makefile
|
doc/Makefile
|
||||||
macros/Makefile])
|
libgtop-2.0.pc
|
||||||
|
])
|
||||||
|
@@ -1,21 +1,23 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
11
doc/.cvsignore
Normal file
11
doc/.cvsignore
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
texinfo.tex
|
||||||
|
*.info
|
||||||
|
Makefile.in
|
||||||
|
Makefile
|
||||||
|
*.log *.toc *.dvi *.aux *.cp *.fn *.vr *.tp *.ky *.pg
|
||||||
|
*.ps
|
||||||
|
auto-macros.texi
|
||||||
|
version.texi
|
||||||
|
stamp-vti
|
||||||
|
*.html *.pdf
|
||||||
|
mdate-sh
|
61
doc/ChangeLog
Normal file
61
doc/ChangeLog
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
|
* reference.texi (glibtop_proc_state): Fix description of the `state'
|
||||||
|
field for LibGTop 1.0.x.
|
||||||
|
|
||||||
|
1999-09-29 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here.
|
||||||
|
|
||||||
|
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* main.texi: This is now the main file which will @include all
|
||||||
|
chapter files so we can use `texinfo-multiple-files-update'.
|
||||||
|
|
||||||
|
* reference.texi: Added all missing sections with a "not yet written"
|
||||||
|
notice.
|
||||||
|
|
||||||
|
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* white-paper.texi: Initial version of the LibGTop White Paper.
|
||||||
|
|
||||||
|
* Makefile.am: Create `auto-macros.texi' from `auto-macros.texi.in'
|
||||||
|
which will contain some `@set' commands for the LibGTop version etc.
|
||||||
|
|
||||||
|
* auto-macros.texi.in: New file. This is a template for
|
||||||
|
`auto-macros.texi' which will be automatically generated.
|
||||||
|
|
||||||
|
1999-05-09 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* about.texi: Split the `libgtop.texi' into one file pro chapter,
|
||||||
|
this is the "About LibGTop".
|
||||||
|
|
||||||
|
* reference.texi: The "LibGTop Reference Manual".
|
||||||
|
|
||||||
|
* libgtop.texi: Initial version of the new LibGTop Manual.
|
||||||
|
|
40
doc/Makefile.am
Normal file
40
doc/Makefile.am
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
info_TEXINFOS = libgtop2.texi
|
||||||
|
|
||||||
|
libgtop2_TEXINFOS = libgtop2.texi about.texi reference.texi \
|
||||||
|
auto-macros.texi version.texi main.texi \
|
||||||
|
white-paper.texi
|
||||||
|
|
||||||
|
MAKEINFO = @MAKEINFO@ -I @libgtop_top_builddir@/doc
|
||||||
|
|
||||||
|
EXTRA_DIST = auto-macros.texi.in
|
||||||
|
|
||||||
|
auto-macros.texi: auto-macros.texi.in Makefile
|
||||||
|
## Use sed and then mv to avoid problems if the user interrupts.
|
||||||
|
sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \
|
||||||
|
-e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \
|
||||||
|
-e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \
|
||||||
|
-e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \
|
||||||
|
-e 's#\%LIBGTOP_BINDIR\%#$(LIBGTOP_BINDIR)#g' \
|
||||||
|
-e 's#\%LIBGTOP_SERVER\%#$(LIBGTOP_SERVER)#g' \
|
||||||
|
-e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \
|
||||||
|
-e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \
|
||||||
|
-e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \
|
||||||
|
-e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \
|
||||||
|
-e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \
|
||||||
|
-e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \
|
||||||
|
-e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \
|
||||||
|
< $(srcdir)/auto-macros.texi.in > auto-macros.tmp
|
||||||
|
echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp
|
||||||
|
if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \
|
||||||
|
echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \
|
||||||
|
else \
|
||||||
|
echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \
|
||||||
|
fi
|
||||||
|
mv auto-macros.tmp auto-macros.texi
|
123
doc/about.texi
Normal file
123
doc/about.texi
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
@node About, White Paper, Top, Top
|
||||||
|
@chapter About LibGTop
|
||||||
|
|
||||||
|
LibGTop is a library to get system specific data such as CPU and Memory Usage
|
||||||
|
and information about running Processes.
|
||||||
|
|
||||||
|
On Systems like Solaris or Digital Unix where you need special privileges to
|
||||||
|
get those data, it uses a setuid/setgid server to do so.
|
||||||
|
|
||||||
|
Even if LibGTop is a part of the GNOME desktop environment
|
||||||
|
(@uref{http://www.gnome.org}), the main interface of LibGTop is totally
|
||||||
|
independent from any particular desktop environment, so you can also use it
|
||||||
|
as a standalone library in any piece of GPLed software.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Availability:: Where to get LibGTop
|
||||||
|
* Supported Platforms:: Supported Platforms
|
||||||
|
* Mailing List:: Helping with LibGTop development
|
||||||
|
* Thanks:: People who contributed to LibGTop
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Availability, Supported Platforms, About, About
|
||||||
|
@section Availability
|
||||||
|
|
||||||
|
The master source of LibGTop is the GNOME CVS tree
|
||||||
|
(see @uref{http://www.gnome.org} for details), but you can also get the
|
||||||
|
latest release tarballs from
|
||||||
|
|
||||||
|
@display
|
||||||
|
@uref{ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/}
|
||||||
|
@end display
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
or any of its mirror sites.
|
||||||
|
|
||||||
|
The latest stable version of LibGTop is 1.0.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
|
||||||
|
|
||||||
|
The stable branch currently supports the following platforms:
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item All versions of Linux
|
||||||
|
|
||||||
|
LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but
|
||||||
|
it should also work without problems on SparcLinux or Linux 2.4.x.
|
||||||
|
|
||||||
|
Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system.
|
||||||
|
|
||||||
|
@item FreeBSD, NetBSD and OpenBSD
|
||||||
|
|
||||||
|
LibGTop was tested under FreeBSD 2.2.6 and 3.0, NetBSD 1.3.2 and OpenBSD 2.4.
|
||||||
|
Support for NetBSD 1.4 was added in LibGTop 1.0.2.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
The platforms listed above are known to be stable and working. However, if
|
||||||
|
you're using the latest development version, you can use it on the following
|
||||||
|
platforms as well:
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item BSD/OS
|
||||||
|
|
||||||
|
There is a port for BSD/OS (aka BSDI) 2.x and 3.x from Timur Bakeyev which
|
||||||
|
should also work with 4.x. This isn't tested very well, but it should be
|
||||||
|
working.
|
||||||
|
|
||||||
|
@item Digital Unix
|
||||||
|
|
||||||
|
There is some basic support for Digital Unix (formerly DEC OSF/1) V3.2C, but
|
||||||
|
this may still be a bit unstable. I'm currently working on this port as time
|
||||||
|
permits so it should be fully supported soon.
|
||||||
|
|
||||||
|
@item Solaris
|
||||||
|
|
||||||
|
The Solaris port currently works on Solaris 7 and maybe also on other releases.
|
||||||
|
Thanks a lot to Drazen Kacar and everyone who helped working on this port. They
|
||||||
|
have really done excellent work here and I'm pretty sure that this port will be
|
||||||
|
fully functional on most Solaris versions in near future.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@node Mailing List, Thanks, Supported Platforms, About
|
||||||
|
@section Mailing List
|
||||||
|
|
||||||
|
There is a @email{libgtop-devel-list@@egroups.com} mailing list for people who
|
||||||
|
want to help with the development of LibGTop.
|
||||||
|
|
||||||
|
It is meant as a low-traffic, but high content-list where we can discuss
|
||||||
|
technical details such as adding new sysdeps ports etc.
|
||||||
|
|
||||||
|
Especially, I'd like to see people with a deeper knowledge of operating systems
|
||||||
|
internals joining my list so we can discuss technical details of the sysdeps
|
||||||
|
code.
|
||||||
|
|
||||||
|
It is *not* for users that want to know how to compile LibGTop etc.
|
||||||
|
|
||||||
|
You can subscribe to this mailing list and view the mailing list archives
|
||||||
|
on the LibGTop Page at @uref{http://www.home-of-linux.org/gnome/libgtop}.
|
||||||
|
|
||||||
|
@node Thanks, , Mailing List, About
|
||||||
|
@section Thanks
|
||||||
|
|
||||||
|
At the place I'd like to thank the following people who contributed to
|
||||||
|
LibGTop (listed in chronological order):
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item Sebastian Wilhelmi who had the initial idea of LibGTop and helped
|
||||||
|
me a lot in the early beginning.
|
||||||
|
@item Josh Sled for the initial FreeBSD port.
|
||||||
|
@item Jeremy Lea for his BSD patches.
|
||||||
|
@item Timur Bakeyev for the BSDI port.
|
||||||
|
@item Drazen Kacar and the other people on the LibGTop development mailing
|
||||||
|
list for the Solaris port.
|
||||||
|
@item 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
|
||||||
|
|
12
doc/auto-macros.texi.in
Normal file
12
doc/auto-macros.texi.in
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@c LibGTop major, minor and micro version.
|
||||||
|
@set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION%
|
||||||
|
@set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION%
|
||||||
|
@set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION%
|
||||||
|
|
||||||
|
@c LibGTop version and numerical version code ("1.234.567" -> 1234567).
|
||||||
|
@set LIBGTOP_VERSION "%LIBGTOP_VERSION%"
|
||||||
|
@set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE%
|
||||||
|
|
||||||
|
@c LibGTop server version, increased each time the protocol changes.
|
||||||
|
@set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION%
|
||||||
|
|
107
doc/internals.texi
Normal file
107
doc/internals.texi
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
@node LibGTop Internals, , Reference Manual, Top
|
||||||
|
@chapter LibGTop Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* General Internals:: General Internals
|
||||||
|
* Sysdeps Internals:: Sysdeps Internals
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals
|
||||||
|
@section General Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop:: The server structure
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop, , General Internals, General Internals
|
||||||
|
@subsection The server structure - @code{glibtop}
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
typedef struct _glibtop glibtop;
|
||||||
|
|
||||||
|
struct _glibtop
|
||||||
|
@{
|
||||||
|
unsigned flags;
|
||||||
|
unsigned method;
|
||||||
|
unsigned error_method;
|
||||||
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
glibtop_machine machine;
|
||||||
|
#endif
|
||||||
|
int input [2];
|
||||||
|
int output [2];
|
||||||
|
int socket;
|
||||||
|
int ncpu;
|
||||||
|
unsigned long os_version_code;
|
||||||
|
const char *name;
|
||||||
|
const char *server_command;
|
||||||
|
const char *server_host;
|
||||||
|
const char *server_user;
|
||||||
|
const char *server_rsh;
|
||||||
|
unsigned long features;
|
||||||
|
unsigned long server_port;
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
glibtop_sysdeps required;
|
||||||
|
glibtop_sysdeps wanted;
|
||||||
|
pid_t pid;
|
||||||
|
@};
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@node Sysdeps Internals, , General Internals, LibGTop Internals
|
||||||
|
@section Sysdeps Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop_open_s:: Non-privileged initializations
|
||||||
|
* glibtop_close_s:: Non-privileged cleanups
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals
|
||||||
|
@subsection glibtop_open_s
|
||||||
|
|
||||||
|
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
||||||
|
initialize a server. It should do all initializations that do not need any
|
||||||
|
privileges.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_open_s (glibtop *server, const char *program_name,
|
||||||
|
const unsigned long features,
|
||||||
|
const unsigned flags);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item server
|
||||||
|
Pointer to the @code{glibtop} server structure.
|
||||||
|
@item program_name
|
||||||
|
Name of the calling program; the implementation will usually
|
||||||
|
set @samp{server->name} to this so it'll be used as the program
|
||||||
|
name in error messages.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Typically, this function will set @code{server->name}, @code{server->ncpu} and
|
||||||
|
@code{server->os_version_code} and initialize any of the @code{server->machine}
|
||||||
|
fields which do not need any privileges.
|
||||||
|
|
||||||
|
It is normally implemented in @file{open.c} in the sysdeps directory.
|
||||||
|
|
||||||
|
@node glibtop_close_s, , glibtop_open_s, Sysdeps Internals
|
||||||
|
@subsection glibtop_close_s
|
||||||
|
|
||||||
|
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
||||||
|
clean-up a server when it's no longer used.
|
||||||
|
|
||||||
|
It must free all resources that were allocated in @code{glibtop_open_s}.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_close_s (glibtop *server);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
It is normally implemented in @file{close.c} in the sysdeps directory, but may
|
||||||
|
be empty.
|
||||||
|
|
89
doc/libgtop2.texi
Normal file
89
doc/libgtop2.texi
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
\input texinfo @c -*-texinfo-*-
|
||||||
|
@c %**start of header
|
||||||
|
@setfilename libgtop2.info
|
||||||
|
@settitle LibGTop Reference Manual
|
||||||
|
@setchapternewpage odd
|
||||||
|
@c %**end of header
|
||||||
|
|
||||||
|
@include auto-macros.texi
|
||||||
|
@include version.texi
|
||||||
|
|
||||||
|
@ifinfo
|
||||||
|
This is the LibGTop Reference Manual version @value{VERSION}
|
||||||
|
(last modified @value{UPDATED}).
|
||||||
|
|
||||||
|
Copyright 1999 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Permission is granted to make and distribute verbatim
|
||||||
|
copies of this manual provided the copyright notice and
|
||||||
|
this permission notice are preserved on all copies.
|
||||||
|
|
||||||
|
@ignore
|
||||||
|
Permission is granted to process this file through TeX
|
||||||
|
and print the results, provided the printed document
|
||||||
|
carries a copying permission notice identical to this
|
||||||
|
one except for the removal of this paragraph (this
|
||||||
|
paragraph not being relevant to the printed manual).
|
||||||
|
|
||||||
|
@end ignore
|
||||||
|
Permission is granted to copy and distribute modified
|
||||||
|
versions of this manual under the conditions for
|
||||||
|
verbatim copying, provided also that the sections
|
||||||
|
entitled ``Copying'' and ``GNU General Public License''
|
||||||
|
are included exactly as in the original, and provided
|
||||||
|
that the entire resulting derived work is distributed
|
||||||
|
under the terms of a permission notice identical to this
|
||||||
|
one.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute
|
||||||
|
translations of this manual into another language,
|
||||||
|
under the above conditions for modified versions,
|
||||||
|
except that this permission notice may be stated in a
|
||||||
|
translation approved by the Free Software Foundation.
|
||||||
|
|
||||||
|
@format
|
||||||
|
@dircategory Libraries:
|
||||||
|
@direntry
|
||||||
|
* LibGTop2: (libgtop2). Library to get system specific data
|
||||||
|
such as cpu and memory usage, active
|
||||||
|
processes
|
||||||
|
@end direntry
|
||||||
|
@end format
|
||||||
|
|
||||||
|
@end ifinfo
|
||||||
|
|
||||||
|
@titlepage
|
||||||
|
@title LibGTop Reference Manual
|
||||||
|
@subtitle Version @value{VERSION} - @value{UPDATED}
|
||||||
|
@author Martin Baulig
|
||||||
|
|
||||||
|
@page
|
||||||
|
@vskip 0pt plus 1filll
|
||||||
|
Copyright @copyright{} 1999 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Permission is granted to make and distribute verbatim
|
||||||
|
copies of this manual provided the copyright notice and
|
||||||
|
this permission notice are preserved on all copies.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute modified
|
||||||
|
versions of this manual under the conditions for
|
||||||
|
verbatim copying, provided also that the sections
|
||||||
|
entitled ``Copying'' and ``GNU General Public License''
|
||||||
|
are included exactly as in the original, and provided
|
||||||
|
that the entire resulting derived work is distributed
|
||||||
|
under the terms of a permission notice identical to this
|
||||||
|
one.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute
|
||||||
|
translations of this manual into another language,
|
||||||
|
under the above conditions for modified versions,
|
||||||
|
except that this permission notice may be stated in a
|
||||||
|
translation approved by the Free Software Foundation.
|
||||||
|
@end titlepage
|
||||||
|
|
||||||
|
@contents
|
||||||
|
|
||||||
|
@include main.texi
|
||||||
|
|
||||||
|
@bye
|
||||||
|
|
68
doc/main.texi
Normal file
68
doc/main.texi
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
@node Top, About, (dir), (dir)
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* About:: About LibGTop
|
||||||
|
* White Paper:: LibGTop White Paper
|
||||||
|
* Reference Manual:: LibGTop Reference Manual
|
||||||
|
|
||||||
|
--- The Detailed Node Listing ---
|
||||||
|
|
||||||
|
About LibGTop
|
||||||
|
|
||||||
|
* Availability:: Where to get LibGTop
|
||||||
|
* Supported Platforms:: Supported Platforms
|
||||||
|
* Mailing List:: Helping with LibGTop development
|
||||||
|
* Thanks:: People who contributed to LibGTop
|
||||||
|
|
||||||
|
LibGTop White Paper
|
||||||
|
|
||||||
|
* Introduction:: Introduction
|
||||||
|
* Overview:: Overview
|
||||||
|
|
||||||
|
Overview
|
||||||
|
|
||||||
|
* Interface Design:: Things that need to be considered
|
||||||
|
* Server Implementation:: The LibGTop "server"
|
||||||
|
|
||||||
|
LibGTop Reference Manual
|
||||||
|
|
||||||
|
* System Dependent:: System Dependent Functions.
|
||||||
|
* Common Functions:: Common Functions.
|
||||||
|
* Library Functions:: Library Functions.
|
||||||
|
|
||||||
|
System Dependent Functions
|
||||||
|
|
||||||
|
* glibtop_cpu:: CPU Usage.
|
||||||
|
* glibtop_mem:: Memory Usage.
|
||||||
|
* glibtop_swap:: Swap Usage.
|
||||||
|
* glibtop_uptime:: System Uptime.
|
||||||
|
* glibtop_loadavg:: Load Average.
|
||||||
|
* glibtop_proclist:: Process List.
|
||||||
|
* glibtop_proc_state:: Process State.
|
||||||
|
* glibtop_proc_uid:: Process UID and TTY Information.
|
||||||
|
* glibtop_proc_mem:: Process Memory Information.
|
||||||
|
* glibtop_proc_time:: Process Time Information.
|
||||||
|
* glibtop_proc_signal:: Process Signal Information.
|
||||||
|
* glibtop_proc_kernel:: Process Kernel Data Information.
|
||||||
|
* glibtop_proc_segment:: Process Segment Information.
|
||||||
|
* glibtop_proc_args:: Process Arguments.
|
||||||
|
* glibtop_proc_map:: Process Memory Maps.
|
||||||
|
* glibtop_netload:: Network Load.
|
||||||
|
* glibtop_ppp:: PPP Usage.
|
||||||
|
|
||||||
|
Common Functions
|
||||||
|
|
||||||
|
* glibtop_mountlist:: Mount List.
|
||||||
|
* glibtop_fsusage:: File System Usage.
|
||||||
|
|
||||||
|
Library Functions
|
||||||
|
|
||||||
|
* glibtop_init:: Server Initialization.
|
||||||
|
* glibtop_sysdeps:: Server Sysdeps.
|
||||||
|
* Library Parameters:: Library Parameters.
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@include about.texi
|
||||||
|
@include white-paper.texi
|
||||||
|
@include reference.texi
|
||||||
|
|
1807
doc/reference.texi
Normal file
1807
doc/reference.texi
Normal file
File diff suppressed because it is too large
Load Diff
90
doc/white-paper.texi
Normal file
90
doc/white-paper.texi
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
@node White Paper, Reference Manual, About, Top
|
||||||
|
@chapter LibGTop White Paper
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Introduction:: Introduction
|
||||||
|
* Overview:: Overview
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Introduction, Overview, White Paper, White Paper
|
||||||
|
@section Introduction
|
||||||
|
|
||||||
|
Many modern UNIX systems like Solaris, BSD or Digitial Unix only allow
|
||||||
|
priviledged processes to read information like CPU and Memory Usage or
|
||||||
|
information about running processes.
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
BSD, for instance, doesn't have any other way to get those data than reading
|
||||||
|
directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to
|
||||||
|
be able to read this.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Other systems, like Digital Unix, allow all users to get things like CPU and
|
||||||
|
Memory statistics, but only root may read information about any process other
|
||||||
|
than the current one (you may not even get information about your own processes
|
||||||
|
if you're not root).
|
||||||
|
|
||||||
|
@item
|
||||||
|
Linux has a very nice @file{/proc} filesystem, but reading and parsing
|
||||||
|
@file{/proc} is very slow and inefficient.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Solaris is a bit better, but you still need to be in the @code{sys} group or
|
||||||
|
even root to get some data.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Because of this system utilities like @code{ps}, @code{uptime} or @code{top}
|
||||||
|
often are setgid kmem or setuid root. Usually, they're also very specific to
|
||||||
|
the system they're written for and not easily portable to other systems without
|
||||||
|
a lot of work.
|
||||||
|
|
||||||
|
This, of cause, becomes a problem for graphical tools like @code{gtop} - making
|
||||||
|
a GTK+ program setgid or even setuid would be a security hole as big as you can
|
||||||
|
drive the entire X11 source code through. For the GNOME project, we also needed
|
||||||
|
some kind of library which provides all the required information in a portable
|
||||||
|
since there's more than just one single program that wants to use them - for
|
||||||
|
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
|
||||||
|
@code{netload} panel applets.
|
||||||
|
|
||||||
|
@node Overview, , Introduction, White Paper
|
||||||
|
@section Overview
|
||||||
|
|
||||||
|
This section should give you a short overview on how LibGTop was developed, which
|
||||||
|
things needed to be considered and how it works.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Interface Design:: Things that need to be considered
|
||||||
|
* Server Implementation:: The LibGTop "server"
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Interface Design, Server Implementation, Overview, Overview
|
||||||
|
@subsection Interface Design
|
||||||
|
|
||||||
|
At the very beginning, it was necessary to collect all the data the library part
|
||||||
|
should provide and put them into some C structures. This was not that easiy as it
|
||||||
|
might sound since LibGTop should be portable to any modern UNIX system with a common
|
||||||
|
library part on all those systems, but the data that should be returned vary from
|
||||||
|
system to system. For instance some systems support shared memory, but some others
|
||||||
|
may not.
|
||||||
|
|
||||||
|
The header files where we define these C structures (which are system-independent) are
|
||||||
|
shared between client and server. This way we can call the system dependent code
|
||||||
|
directly where we do not need any special privileges to do so.
|
||||||
|
|
||||||
|
All of those structures contain a @code{flags} member which is interpreted as a bit
|
||||||
|
mask and tells the caller of the library functions which of the fields in the returned
|
||||||
|
structure are valid and which are not.
|
||||||
|
|
||||||
|
@node Server Implementation, , Interface Design, Overview
|
||||||
|
@subsection Server Implementation
|
||||||
|
|
||||||
|
The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system
|
||||||
|
dependent code which needs special privileges. It is only build if it's required
|
||||||
|
on the current system (for instance, the Linux kernel provides all the required
|
||||||
|
data via its @file{/proc} filesystem so we do not need the server at all) and it
|
||||||
|
only contains the @dfn{features} which need privileges.
|
||||||
|
|
||||||
|
Whenever we do not need any privileges to get all the data for some of the requested
|
||||||
|
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
||||||
|
rather than using the server.
|
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)>
|
@@ -11,3 +11,6 @@ third_linux
|
|||||||
third_static
|
third_static
|
||||||
second_static
|
second_static
|
||||||
second_linux
|
second_linux
|
||||||
|
smp_static sysdeps_static netload_static procmap_static mountlist_static
|
||||||
|
smp sysdeps netload procmap mountlist
|
||||||
|
timings timings_static
|
||||||
|
@@ -1,3 +1,67 @@
|
|||||||
|
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-07 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* timings.c (timersub): Renamed this to `libgtop_timersub' and define
|
||||||
|
it on all systems.
|
||||||
|
|
||||||
|
Fri Apr 9 00:14:52 1999 Timur Bakeyev <timur@gnu.org>
|
||||||
|
|
||||||
|
* timings.c: Added timersub defenition, to make code compilable on
|
||||||
|
BSDI.
|
||||||
|
|
||||||
|
1999-03-24 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* timings.c: New example.
|
||||||
|
|
||||||
|
1999-03-17 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* first.c, second.c: Fixed a bug that caused a core dump when
|
||||||
|
the sysdeps code does not return all data.
|
||||||
|
|
||||||
1998-11-22 Martin Baulig <baulig@taurus.uni-trier.de>
|
1998-11-22 Martin Baulig <baulig@taurus.uni-trier.de>
|
||||||
|
|
||||||
* netload.c: Call inet_ntoa () to get address and subnet
|
* netload.c: Call inet_ntoa () to get address and subnet
|
||||||
|
@@ -2,96 +2,68 @@
|
|||||||
|
|
||||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
CFLAGS = -Wall -W @CFLAGS@ -O0
|
INCLUDES = @INCLUDES@
|
||||||
|
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
|
|
||||||
# We install it in `libexec' since this will make it more easy
|
noinst_PROGRAMS = first second\
|
||||||
# to put the examples into an extra RPM package.
|
mountlist procmap netload sysdeps timings \
|
||||||
|
@static_targets@ @smp_examples@
|
||||||
libgtopdir = $(libexecdir)/libgtop
|
|
||||||
|
|
||||||
libgtop_PROGRAMS = first second\
|
|
||||||
mountlist procmap netload sysdeps\
|
|
||||||
@static_targets@ @guile_examples@ @smp_examples@
|
|
||||||
|
|
||||||
EXTRA_PROGRAMS = first_static second_static \
|
EXTRA_PROGRAMS = first_static second_static \
|
||||||
mountlist_static procmap_static \
|
mountlist_static procmap_static \
|
||||||
third third_static smp smp_static \
|
third third_static smp smp_static \
|
||||||
netload_static sysdeps_static
|
netload_static sysdeps_static \
|
||||||
|
timings_static
|
||||||
|
|
||||||
first_SOURCES = first.c
|
first_SOURCES = first.c
|
||||||
first_LDADD = $(top_builddir)/lib/libgtop.la \
|
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
first_static_SOURCES = $(first_SOURCES)
|
first_static_SOURCES = $(first_SOURCES)
|
||||||
first_static_LDADD = $(first_LDADD)
|
first_static_LDADD = $(first_LDADD)
|
||||||
first_static_LDFLAGS = -static
|
first_static_LDFLAGS = -static
|
||||||
|
|
||||||
second_SOURCES = second.c
|
second_SOURCES = second.c
|
||||||
second_LDADD = $(top_builddir)/lib/libgtop.la \
|
second_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
second_static_SOURCES = $(second_SOURCES)
|
second_static_SOURCES = $(second_SOURCES)
|
||||||
second_static_LDADD = $(second_LDADD)
|
second_static_LDADD = $(second_LDADD)
|
||||||
second_static_LDFLAGS = -static
|
second_static_LDFLAGS = -static
|
||||||
|
|
||||||
procmap_SOURCES = procmap.c
|
procmap_SOURCES = procmap.c
|
||||||
procmap_LDADD = $(top_builddir)/lib/libgtop.la \
|
procmap_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
procmap_static_SOURCES = $(procmap_SOURCES)
|
procmap_static_SOURCES = $(procmap_SOURCES)
|
||||||
procmap_static_LDADD = $(procmap_LDADD)
|
procmap_static_LDADD = $(procmap_LDADD)
|
||||||
procmap_static_LDFLAGS = -static
|
procmap_static_LDFLAGS = -static
|
||||||
|
|
||||||
netload_SOURCES = netload.c
|
netload_SOURCES = netload.c
|
||||||
netload_LDADD = $(top_builddir)/lib/libgtop.la \
|
netload_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
netload_static_SOURCES = $(netload_SOURCES)
|
netload_static_SOURCES = $(netload_SOURCES)
|
||||||
netload_static_LDADD = $(netload_LDADD)
|
netload_static_LDADD = $(netload_LDADD)
|
||||||
netload_static_LDFLAGS = -static
|
netload_static_LDFLAGS = -static
|
||||||
|
|
||||||
sysdeps_SOURCES = sysdeps.c
|
sysdeps_SOURCES = sysdeps.c
|
||||||
sysdeps_LDADD = $(top_builddir)/lib/libgtop.la \
|
sysdeps_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
|
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
|
||||||
sysdeps_static_LDADD = $(sysdeps_LDADD)
|
sysdeps_static_LDADD = $(sysdeps_LDADD)
|
||||||
sysdeps_static_LDFLAGS = -static
|
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-2.0.la
|
||||||
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names.la
|
|
||||||
|
|
||||||
third_SOURCES = third.c
|
third_SOURCES = third.c
|
||||||
third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile.la \
|
third_LDADD = $(third_names_LIBS) \
|
||||||
$(third_guile_names_LIBS) $(third_names_LIBS) \
|
$(top_builddir)/lib/libgtop-2.0.la \
|
||||||
$(top_builddir)/lib/libgtop.la \
|
@INTLLIBS@
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@GUILE_LIBS@ @INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
third_static_SOURCES = $(third_SOURCES)
|
third_static_SOURCES = $(third_SOURCES)
|
||||||
third_static_LDADD = $(third_LDADD)
|
third_static_LDADD = $(third_LDADD)
|
||||||
third_static_LDFLAGS = -static
|
third_static_LDFLAGS = -static
|
||||||
|
|
||||||
mountlist_SOURCES = mountlist.c
|
mountlist_SOURCES = mountlist.c
|
||||||
mountlist_LDADD = $(top_builddir)/lib/libgtop.la \
|
mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
mountlist_static_SOURCES= $(mountlist_SOURCES)
|
||||||
mountlist_static_LDADD = $(mountlist_LDADD)
|
mountlist_static_LDADD = $(mountlist_LDADD)
|
||||||
@@ -99,12 +71,16 @@ mountlist_static_LDFLAGS= -static
|
|||||||
|
|
||||||
|
|
||||||
smp_SOURCES = smp.c
|
smp_SOURCES = smp.c
|
||||||
smp_LDADD = $(top_builddir)/lib/libgtop.la \
|
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
$(top_builddir)/sysdeps/common/libgtop_common.la \
|
|
||||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
|
|
||||||
@INTLLIBS@ @LIBSUPPORT@
|
|
||||||
|
|
||||||
smp_static_SOURCES = $(smp_SOURCES)
|
smp_static_SOURCES = $(smp_SOURCES)
|
||||||
smp_static_LDADD = $(smp_LDADD)
|
smp_static_LDADD = $(smp_LDADD)
|
||||||
smp_static_LDFLAGS = -static
|
smp_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
timings_SOURCES = timings.c
|
||||||
|
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||||
|
|
||||||
|
timings_static_SOURCES = $(timings_SOURCES)
|
||||||
|
timings_static_LDADD = $(timings_LDADD)
|
||||||
|
timings_static_LDFLAGS = -static
|
||||||
|
|
||||||
|
@@ -1,30 +1,33 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
@@ -50,8 +53,8 @@ main (int argc, char *argv [])
|
|||||||
count = PROFILE_COUNT;
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
@@ -230,7 +233,7 @@ main (int argc, char *argv [])
|
|||||||
printf ("\n");
|
printf ("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
glibtop_free (ptr);
|
g_free (ptr);
|
||||||
|
|
||||||
pid = getpid ();
|
pid = getpid ();
|
||||||
ppid = getppid ();
|
ppid = getppid ();
|
||||||
@@ -318,7 +321,7 @@ main (int argc, char *argv [])
|
|||||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid,
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
|
||||||
(unsigned long) data.proc_kernel.flags,
|
(unsigned long) data.proc_kernel.flags,
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
@@ -342,9 +345,9 @@ main (int argc, char *argv [])
|
|||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
||||||
(unsigned long) data.proc_args.flags,
|
(unsigned long) data.proc_args.flags,
|
||||||
(unsigned long) data.proc_args.size,
|
(unsigned long) data.proc_args.size,
|
||||||
args);
|
args ? args : "");
|
||||||
|
|
||||||
glibtop_free (args);
|
g_free (args);
|
||||||
|
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
|
|
||||||
@@ -428,7 +431,7 @@ main (int argc, char *argv [])
|
|||||||
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
||||||
|
|
||||||
printf ("Proc_Kernel PPID %5d (0x%08lx): "
|
printf ("Proc_Kernel PPID %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) ppid,
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) ppid,
|
||||||
(unsigned long) data.proc_kernel.flags,
|
(unsigned long) data.proc_kernel.flags,
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
@@ -452,9 +455,9 @@ main (int argc, char *argv [])
|
|||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) ppid,
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) ppid,
|
||||||
(unsigned long) data.proc_args.flags,
|
(unsigned long) data.proc_args.flags,
|
||||||
(unsigned long) data.proc_args.size,
|
(unsigned long) data.proc_args.size,
|
||||||
args);
|
args ? args : "");
|
||||||
|
|
||||||
glibtop_free (args);
|
g_free (args);
|
||||||
|
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
|
|
||||||
@@ -539,7 +542,7 @@ main (int argc, char *argv [])
|
|||||||
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
||||||
|
|
||||||
printf ("Proc_Kernel INIT %5d (0x%08lx): "
|
printf ("Proc_Kernel INIT %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", 1,
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", 1,
|
||||||
(unsigned long) data.proc_kernel.flags,
|
(unsigned long) data.proc_kernel.flags,
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
@@ -563,9 +566,9 @@ main (int argc, char *argv [])
|
|||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", 1,
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", 1,
|
||||||
(unsigned long) data.proc_args.flags,
|
(unsigned long) data.proc_args.flags,
|
||||||
(unsigned long) data.proc_args.size,
|
(unsigned long) data.proc_args.size,
|
||||||
args);
|
args ? args : "");
|
||||||
|
|
||||||
glibtop_free (args);
|
g_free (args);
|
||||||
|
|
||||||
glibtop_close ();
|
glibtop_close ();
|
||||||
|
|
||||||
|
@@ -1,30 +1,33 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
@@ -45,8 +48,8 @@ main (int argc, char *argv [])
|
|||||||
char buffer [BUFSIZ];
|
char buffer [BUFSIZ];
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
@@ -71,7 +74,7 @@ main (int argc, char *argv [])
|
|||||||
for (c = 0; c < PROFILE_COUNT; c++) {
|
for (c = 0; c < PROFILE_COUNT; c++) {
|
||||||
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
||||||
|
|
||||||
glibtop_free (mount_entries);
|
g_free (mount_entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
||||||
@@ -87,21 +90,21 @@ main (int argc, char *argv [])
|
|||||||
mount_entries [index].type,
|
mount_entries [index].type,
|
||||||
mount_entries [index].devname);
|
mount_entries [index].devname);
|
||||||
|
|
||||||
printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n",
|
printf ("\n\n%-16s %9s %9s %9s %9s %9s %9s\n",
|
||||||
"", "Blocks", "Free", "Avail", "Files", "Free");
|
"Mount", "Blocks", "Free", "Avail", "Files", "Free", "BlockSz");
|
||||||
|
|
||||||
for (index = 0; index < mount_list.number; index++) {
|
for (index = 0; index < mount_list.number; index++) {
|
||||||
glibtop_get_fsusage (&fsusage,
|
glibtop_get_fsusage (&fsusage,
|
||||||
mount_entries [index].mountdir);
|
mount_entries [index].mountdir);
|
||||||
|
|
||||||
printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n",
|
printf ("%-16s %9Lu %9Lu %9Lu %9Lu %9Lu %9d\n",
|
||||||
mount_entries [index].mountdir,
|
mount_entries [index].mountdir,
|
||||||
fsusage.blocks, fsusage.bfree,
|
fsusage.blocks, fsusage.bfree,
|
||||||
fsusage.bavail, fsusage.files,
|
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));
|
printf ("\nsbrk (0) = %p\n\n", sbrk (0));
|
||||||
|
|
||||||
|
@@ -1,30 +1,33 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
@@ -41,7 +44,7 @@ int
|
|||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
{
|
{
|
||||||
glibtop_netload netload;
|
glibtop_netload netload;
|
||||||
unsigned method, count, port, i;
|
unsigned method, count, port;
|
||||||
struct in_addr addr, subnet;
|
struct in_addr addr, subnet;
|
||||||
char *address_string, *subnet_string;
|
char *address_string, *subnet_string;
|
||||||
char buffer [BUFSIZ];
|
char buffer [BUFSIZ];
|
||||||
@@ -49,8 +52,8 @@ main (int argc, char *argv [])
|
|||||||
count = PROFILE_COUNT;
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
@@ -80,8 +83,8 @@ main (int argc, char *argv [])
|
|||||||
addr.s_addr = netload.address;
|
addr.s_addr = netload.address;
|
||||||
subnet.s_addr = netload.subnet;
|
subnet.s_addr = netload.subnet;
|
||||||
|
|
||||||
address_string = glibtop_strdup (inet_ntoa (addr));
|
address_string = g_strdup (inet_ntoa (addr));
|
||||||
subnet_string = glibtop_strdup (inet_ntoa (subnet));
|
subnet_string = g_strdup (inet_ntoa (subnet));
|
||||||
|
|
||||||
printf ("Network Load (0x%08lx):\n\n"
|
printf ("Network Load (0x%08lx):\n\n"
|
||||||
"\tInterface Flags:\t0x%08lx\n"
|
"\tInterface Flags:\t0x%08lx\n"
|
||||||
@@ -114,8 +117,8 @@ main (int argc, char *argv [])
|
|||||||
(unsigned long) netload.errors_out,
|
(unsigned long) netload.errors_out,
|
||||||
(unsigned long) netload.errors_total);
|
(unsigned long) netload.errors_total);
|
||||||
|
|
||||||
glibtop_free (address_string);
|
g_free (address_string);
|
||||||
glibtop_free (subnet_string);
|
g_free (subnet_string);
|
||||||
|
|
||||||
glibtop_close ();
|
glibtop_close ();
|
||||||
|
|
||||||
|
30
examples/procargs.c
Normal file
30
examples/procargs.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#include <glibtop/procargs.h>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
while(*++argv)
|
||||||
|
{
|
||||||
|
glibtop_proc_args buf;
|
||||||
|
pid_t pid = strtol(*argv, NULL, 10);
|
||||||
|
char ** const pargv = glibtop_get_proc_argv(&buf, pid, 20);
|
||||||
|
|
||||||
|
char **parg = pargv;
|
||||||
|
|
||||||
|
printf("<%ld>\t", (long)pid);
|
||||||
|
|
||||||
|
while(*parg)
|
||||||
|
{
|
||||||
|
printf("\"%s\"\t", *parg);
|
||||||
|
parg++;
|
||||||
|
}
|
||||||
|
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
g_strfreev(pargv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@@ -1,30 +1,33 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
@@ -56,8 +59,8 @@ main (int argc, char *argv [])
|
|||||||
count = PROFILE_COUNT;
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
@@ -95,7 +98,7 @@ main (int argc, char *argv [])
|
|||||||
unsigned device, device_major, device_minor;
|
unsigned device, device_major, device_minor;
|
||||||
char perm [5];
|
char perm [5];
|
||||||
|
|
||||||
if (maps [i].flags & (1 << GLIBTOP_MAP_ENTRY_FILENAME))
|
if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME))
|
||||||
filename = maps [i].filename;
|
filename = maps [i].filename;
|
||||||
|
|
||||||
#ifdef GLIBTOP_INODEDB
|
#ifdef GLIBTOP_INODEDB
|
||||||
@@ -114,30 +117,47 @@ main (int argc, char *argv [])
|
|||||||
device_minor = (device & 255);
|
device_minor = (device & 255);
|
||||||
device_major = ((device >> 8) & 255);
|
device_major = ((device >> 8) & 255);
|
||||||
|
|
||||||
if (filename)
|
if (filename) {
|
||||||
fprintf (stderr, "%08lx-%08lx %08lx - "
|
char *format;
|
||||||
"%02x:%02x %08lu - %4s - %s\n",
|
|
||||||
|
if (sizeof (void*) == 8)
|
||||||
|
format = "%016lx-%016lx %016lx - "
|
||||||
|
"%02x:%02x %08lu - %4s - %s\n";
|
||||||
|
else
|
||||||
|
format = "%08lx-%08lx %08lx - "
|
||||||
|
"%02x:%02x %08lu - %4s - %s\n";
|
||||||
|
|
||||||
|
fprintf (stderr, format,
|
||||||
(unsigned long) maps [i].start,
|
(unsigned long) maps [i].start,
|
||||||
(unsigned long) maps [i].end,
|
(unsigned long) maps [i].end,
|
||||||
(unsigned long) maps [i].offset,
|
(unsigned long) maps [i].offset,
|
||||||
device_major, device_minor,
|
device_major, device_minor,
|
||||||
(unsigned long) maps [i].inode,
|
(unsigned long) maps [i].inode,
|
||||||
perm, filename);
|
perm, filename);
|
||||||
else
|
} else {
|
||||||
fprintf (stderr, "%08lx-%08lx %08lx - "
|
char * format;
|
||||||
"%02x:%02x %08lu - %4s\n",
|
|
||||||
|
if (sizeof (void*) == 8)
|
||||||
|
format = "%016lx-%016lx %016lx - "
|
||||||
|
"%02x:%02x %08lu - %4s\n";
|
||||||
|
else
|
||||||
|
format = "%08lx-%08lx %08lx - "
|
||||||
|
"%02x:%02x %08lu - %4s\n";
|
||||||
|
|
||||||
|
fprintf (stderr, format,
|
||||||
(unsigned long) maps [i].start,
|
(unsigned long) maps [i].start,
|
||||||
(unsigned long) maps [i].end,
|
(unsigned long) maps [i].end,
|
||||||
(unsigned long) maps [i].offset,
|
(unsigned long) maps [i].offset,
|
||||||
device_major, device_minor,
|
device_major, device_minor,
|
||||||
(unsigned long) maps [i].inode,
|
(unsigned long) maps [i].inode,
|
||||||
perm);
|
perm);
|
||||||
|
}
|
||||||
|
|
||||||
if (filename && (filename != maps [i].filename))
|
if (filename && (filename != maps [i].filename))
|
||||||
glibtop_free (filename);
|
g_free ((void*)filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
glibtop_free (maps);
|
g_free (maps);
|
||||||
|
|
||||||
glibtop_close ();
|
glibtop_close ();
|
||||||
|
|
||||||
|
@@ -1,36 +1,38 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/union.h>
|
#include <glibtop/union.h>
|
||||||
#include <glibtop/sysdeps.h>
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
output (pid_t pid)
|
output (pid_t pid)
|
||||||
{
|
{
|
||||||
@@ -44,7 +46,7 @@ output (pid_t pid)
|
|||||||
double b_total, b_utime, b_stime;
|
double b_total, b_utime, b_stime;
|
||||||
double s_total, s_utime, s_stime;
|
double s_total, s_utime, s_stime;
|
||||||
double my_utime, my_stime;
|
double my_utime, my_stime;
|
||||||
int ncpu;
|
unsigned int ncpu;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
@@ -124,7 +126,7 @@ output (pid_t pid)
|
|||||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
printf ("Proc_Kernel PID %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid,
|
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
|
||||||
(unsigned long) data.proc_kernel.flags,
|
(unsigned long) data.proc_kernel.flags,
|
||||||
(unsigned long) data.proc_kernel.k_flags,
|
(unsigned long) data.proc_kernel.k_flags,
|
||||||
(unsigned long) data.proc_kernel.min_flt,
|
(unsigned long) data.proc_kernel.min_flt,
|
||||||
@@ -148,9 +150,9 @@ output (pid_t pid)
|
|||||||
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
printf ("Proc_Args PID %5d (0x%08lx): %lu - '%s'\n", (int) pid,
|
||||||
(unsigned long) data.proc_args.flags,
|
(unsigned long) data.proc_args.flags,
|
||||||
(unsigned long) data.proc_args.size,
|
(unsigned long) data.proc_args.size,
|
||||||
args);
|
args ? args : "");
|
||||||
|
|
||||||
glibtop_free (args);
|
g_free (args);
|
||||||
|
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
|
|
||||||
@@ -238,8 +240,8 @@ main (int argc, char *argv [])
|
|||||||
unsigned *ptr, pid, i;
|
unsigned *ptr, pid, i;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init ();
|
glibtop_init ();
|
||||||
|
|
||||||
@@ -290,7 +292,7 @@ main (int argc, char *argv [])
|
|||||||
output (pid);
|
output (pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
glibtop_free (ptr);
|
g_free (ptr);
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
@@ -1,31 +1,37 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, September 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, September 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/cpu.h>
|
#include <glibtop/cpu.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <math.h>
|
#include "libgtop-i18n.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
@@ -39,8 +45,10 @@ main (int argc, char *argv [])
|
|||||||
int ncpu, i;
|
int ncpu, i;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
glibtop_init();
|
||||||
|
|
||||||
glibtop_get_cpu (&cpu);
|
glibtop_get_cpu (&cpu);
|
||||||
|
|
||||||
@@ -65,7 +73,7 @@ main (int argc, char *argv [])
|
|||||||
memset (separator, '-', 91);
|
memset (separator, '-', 91);
|
||||||
separator [92] = '\0';
|
separator [92] = '\0';
|
||||||
|
|
||||||
sprintf (buffer, _("Ticks (%d per second):"), frequency);
|
sprintf (buffer, _("Ticks (%ld per second):"), frequency);
|
||||||
|
|
||||||
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
|
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
|
||||||
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
|
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);
|
||||||
|
@@ -1,30 +1,34 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
#include <glibtop/parameter.h>
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
@@ -36,14 +40,14 @@ int
|
|||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
{
|
{
|
||||||
glibtop_sysdeps sysdeps;
|
glibtop_sysdeps sysdeps;
|
||||||
unsigned method, count, port, i;
|
unsigned method, count, port;
|
||||||
char buffer [BUFSIZ];
|
char buffer [BUFSIZ];
|
||||||
|
|
||||||
count = PROFILE_COUNT;
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
|
||||||
|
|
||||||
@@ -67,7 +71,7 @@ main (int argc, char *argv [])
|
|||||||
|
|
||||||
glibtop_get_sysdeps (&sysdeps);
|
glibtop_get_sysdeps (&sysdeps);
|
||||||
|
|
||||||
#define FEATURE_CHECK(f) ((sysdeps.features & (1 << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
|
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f)) ? 1 : 0)
|
||||||
|
|
||||||
printf ("Sysdeps (0x%08lx):\n\n"
|
printf ("Sysdeps (0x%08lx):\n\n"
|
||||||
"\tfeatures:\t\t0x%08lx\n\n"
|
"\tfeatures:\t\t0x%08lx\n\n"
|
||||||
|
@@ -1,31 +1,34 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
|
|
||||||
#include <glibtop/open.h>
|
#include <glibtop/open.h>
|
||||||
#include <glibtop/close.h>
|
#include <glibtop/close.h>
|
||||||
#include <glibtop/xmalloc.h>
|
|
||||||
|
|
||||||
#include <glibtop/union.h>
|
#include <glibtop/union.h>
|
||||||
#include <glibtop/sysdeps.h>
|
#include <glibtop/sysdeps.h>
|
||||||
@@ -36,8 +39,8 @@ int
|
|||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
setlocale (LC_ALL, "");
|
setlocale (LC_ALL, "");
|
||||||
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
gh_enter (argc, argv, main_prog);
|
gh_enter (argc, argv, main_prog);
|
||||||
exit (0);
|
exit (0);
|
||||||
|
358
examples/timings.c
Normal file
358
examples/timings.c
Normal file
@@ -0,0 +1,358 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
|
||||||
|
#include <glibtop.h>
|
||||||
|
#include <glibtop/open.h>
|
||||||
|
#include <glibtop/close.h>
|
||||||
|
|
||||||
|
#include <glibtop/parameter.h>
|
||||||
|
|
||||||
|
#include <glibtop/union.h>
|
||||||
|
#include <glibtop/sysdeps.h>
|
||||||
|
|
||||||
|
#include <sys/times.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT
|
||||||
|
#define PROFILE_COUNT 100000L
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PROFILE_COUNT_EXPENSIVE
|
||||||
|
#define PROFILE_COUNT_EXPENSIVE 10000L
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 + (unsigned long) elapsed_utime.tv_usec)
|
||||||
|
#define ELAPSED_STIME ((unsigned long) elapsed_stime.tv_sec * 1000000 + (unsigned long) elapsed_stime.tv_usec)
|
||||||
|
|
||||||
|
#define libgtop_timeradd(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec >= 1000000) { \
|
||||||
|
(vvp)->tv_sec++; \
|
||||||
|
(vvp)->tv_usec -= 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define libgtop_timersub(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec < 0) { \
|
||||||
|
(vvp)->tv_sec--; \
|
||||||
|
(vvp)->tv_usec += 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv [])
|
||||||
|
{
|
||||||
|
glibtop_union data;
|
||||||
|
unsigned c, count, *ptr;
|
||||||
|
struct rusage total_start, total_end;
|
||||||
|
struct rusage rusage_start, rusage_end;
|
||||||
|
struct timeval elapsed_utime, elapsed_stime;
|
||||||
|
pid_t pid;
|
||||||
|
|
||||||
|
count = PROFILE_COUNT;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||||
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
printf ("%-12s (%-10s): %7s - %9s - %9s\n",
|
||||||
|
"Feature", "Flags", "Count", "utime", "stime");
|
||||||
|
printf ("-------------------------------------------"
|
||||||
|
"---------------\n");
|
||||||
|
|
||||||
|
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &total_start);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_cpu (&data.cpu);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("CPU (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.cpu.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++)
|
||||||
|
glibtop_get_mem (&data.mem);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Memory (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.mem.flags, PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++)
|
||||||
|
glibtop_get_swap (&data.swap);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Swap (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.swap.flags, PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_uptime (&data.uptime);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Uptime (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.uptime.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_loadavg (&data.loadavg);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Loadavg (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.loadavg.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) {
|
||||||
|
ptr = glibtop_get_proclist (&data.proclist, 0, 0);
|
||||||
|
g_free (ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proclist (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proclist.flags,
|
||||||
|
PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE);
|
||||||
|
|
||||||
|
pid = getpid ();
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_state (&data.proc_state, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_State (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_state.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_uid (&data.proc_uid, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Uid (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_uid.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_mem (&data.proc_mem, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Mem (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_mem.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_segment (&data.proc_segment, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Segment (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_segment.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_time (&data.proc_time, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Time (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_time.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Signal (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_signal.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_start);
|
||||||
|
|
||||||
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &rusage_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("Proc_Kernel (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
|
||||||
|
(unsigned long) data.proc_kernel.flags, PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_UTIME / PROFILE_COUNT,
|
||||||
|
(long double) ELAPSED_STIME / PROFILE_COUNT);
|
||||||
|
|
||||||
|
getrusage (RUSAGE_SELF, &total_end);
|
||||||
|
|
||||||
|
libgtop_timersub (&total_end.ru_utime, &total_start.ru_utime,
|
||||||
|
&elapsed_utime);
|
||||||
|
|
||||||
|
libgtop_timersub (&total_end.ru_stime, &total_start.ru_stime,
|
||||||
|
&elapsed_stime);
|
||||||
|
|
||||||
|
printf ("-------------------------------------------"
|
||||||
|
"---------------\n");
|
||||||
|
|
||||||
|
printf ("%-36s %9lu - %9lu\n\n", "TOTAL",
|
||||||
|
ELAPSED_UTIME, ELAPSED_STIME);
|
||||||
|
|
||||||
|
printf ("All timings are in clock ticks "
|
||||||
|
"(1000000 ticks per second).\n\n");
|
||||||
|
|
||||||
|
glibtop_close ();
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
59
glibtop.h
59
glibtop.h
@@ -1,23 +1,25 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1998-99 Martin Baulig
|
||||||
This file is part of the Gnome Top Library.
|
This file is part of LibGTop 1.0.
|
||||||
|
|
||||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||||
|
|
||||||
The Gnome Top Library is free software; you can redistribute it and/or
|
LibGTop is free software; you can redistribute it and/or modify it
|
||||||
modify it under the terms of the GNU Library General Public License as
|
under the terms of the GNU General Public License as published by
|
||||||
published by the Free Software Foundation; either version 2 of the
|
the Free Software Foundation; either version 2 of the License,
|
||||||
License, or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
The Gnome Top Library is distributed in the hope that it will be useful,
|
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
Library General Public License for more details.
|
for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
along with LibGTop; see the file COPYING. If not, write to the
|
||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef __GLIBTOP_H__
|
#ifndef __GLIBTOP_H__
|
||||||
#define __GLIBTOP_H__
|
#define __GLIBTOP_H__
|
||||||
@@ -72,27 +74,14 @@ extern const unsigned long glibtop_server_features;
|
|||||||
|
|
||||||
#define glibtop_close() glibtop_close_r(glibtop_global_server);
|
#define glibtop_close() glibtop_close_r(glibtop_global_server);
|
||||||
|
|
||||||
extern glibtop *glibtop_init_r __P((glibtop **, unsigned long, unsigned));
|
glibtop *
|
||||||
extern glibtop *glibtop_init_s __P((glibtop **, unsigned long, unsigned));
|
glibtop_init_r (glibtop **server_ptr,
|
||||||
|
unsigned long features,
|
||||||
|
unsigned flags);
|
||||||
|
|
||||||
#ifdef GLIBTOP_GUILE
|
glibtop *
|
||||||
|
glibtop_init_s (glibtop **server_ptr,
|
||||||
/* You need to link with -lgtop_guile to get this stuff here. */
|
unsigned long features,
|
||||||
|
unsigned flags);
|
||||||
extern void glibtop_boot_guile __P((void));
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef GLIBTOP_GUILE_NAMES
|
|
||||||
|
|
||||||
/* You need to link with -lgtop_guile_names to get this stuff here. */
|
|
||||||
|
|
||||||
extern void glibtop_boot_guile_names __P((void));
|
|
||||||
|
|
||||||
#ifndef GLIBTOP_NAMES
|
|
||||||
#define GLIBTOP_NAMES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,2 +1,4 @@
|
|||||||
SUBDIRS = glibtop
|
SUBDIRS = glibtop
|
||||||
|
|
||||||
|
EXTRA_DIST = libgtop-i18n.h
|
||||||
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
glibtopdir = $(includedir)/glibtop
|
glibtopdir = $(includedir)/libgtop-2.0/glibtop
|
||||||
|
|
||||||
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||||
sem_limits.h uptime.h command.h mem.h proclist.h \
|
sem_limits.h uptime.h command.h mem.h proclist.h \
|
||||||
proctime.h shm_limits.h version.h cpu.h msg_limits.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 \
|
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 \
|
procsignal.h read_data.h union.h types.h gnuserv.h \
|
||||||
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
||||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h
|
inodedb.h sysinfo.h ppp.h procargs.h netload.h
|
||||||
|
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
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user