Compare commits
	
		
			1092 Commits
		
	
	
		
			LIBGTOP_2_
			...
			LIBGTOP_2_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | d10a584e40 | ||
|  | a55eee5863 | ||
|  | 7437509412 | ||
|  | c9e73e52ac | ||
|  | 4c455ac8a0 | ||
|  | 56f03d0987 | ||
|  | a3b502ec3f | ||
|  | b74d6abf19 | ||
|  | ca42f1f3af | ||
|  | 106ee901bb | ||
|  | 0642c2d610 | ||
|  | 42e860e5ad | ||
|  | 8f2f236404 | ||
|  | 4e0d819264 | ||
|  | 5c6879baab | ||
|  | a0e97885c1 | ||
|  | d817bee619 | ||
|  | 58d50d3546 | ||
|  | d3a247a60f | ||
|  | 45c8452140 | ||
|  | 72b4aed8f1 | ||
|  | 0e8f911410 | ||
|  | db8ad19eef | ||
|  | d30fbb22e0 | ||
|  | 6762719e43 | ||
|  | ad7dc16d89 | ||
|  | f2e57d9fec | ||
|  | 1481823085 | ||
|  | 4e57a6222d | ||
|  | cf531d3faf | ||
|  | b447260691 | ||
|  | 1dbe133a24 | ||
|  | 5ee8d4cb58 | ||
|  | 3bd720ad81 | ||
|  | 6acebf416d | ||
|  | 51fd022bdd | ||
|  | 6239438dce | ||
|  | 0099cbb6b4 | ||
|  | cd5649f326 | ||
|  | d8a5e2162d | ||
|  | 185396d674 | ||
|  | 90f0e40395 | ||
|  | 172f0a50ba | ||
|  | 887092a05d | ||
|  | b2a2f6b5c2 | ||
|  | 6bdb9a76eb | ||
|  | fd29dae933 | ||
|  | 65c5ca842f | ||
|  | edd08e6fd6 | ||
|  | 82ff91b74c | ||
|  | ca6cabe41d | ||
|  | 4fb241097f | ||
|  | 214c3635da | ||
|  | fba67da65d | ||
|  | 119049b8c0 | ||
|  | 1908c00d32 | ||
|  | 70640d297e | ||
|  | c33623c097 | ||
|  | 6fe3b94f13 | ||
|  | f1a01a543c | ||
|  | 758862e272 | ||
|  | 6941e7e22f | ||
|  | ee2ac6d563 | ||
|  | 4c0632ccbd | ||
|  | 71c7d65b1d | ||
|  | 94aa63f796 | ||
|  | 931a8364ff | ||
|  | 598764c171 | ||
|  | aa7f9df00e | ||
|  | 4c4466292e | ||
|  | fcc1d9d957 | ||
|  | 0580b2fb2c | ||
|  | a206cfc728 | ||
|  | 58ca70eaee | ||
|  | 421419fdbf | ||
|  | ebb7f9d5e2 | ||
|  | 1f3b08e6dc | ||
|  | a870dfc8f2 | ||
|  | e0244ad3fc | ||
|  | 1156794b33 | ||
|  | 874771ec1c | ||
|  | 16f262985d | ||
|  | 0a94dc7992 | ||
|  | 50b5dea402 | ||
|  | f4b23ef0c6 | ||
|  | 1f41349a7e | ||
|  | 548f104f35 | ||
|  | 4808aac8ef | ||
|  | f04ce61b80 | ||
|  | c7f7e5a1c6 | ||
|  | e2348c24a0 | ||
|  | f76b37be1b | ||
|  | b2fee3e111 | ||
|  | 7b2416a8d1 | ||
|  | d006da7e54 | ||
|  | a93dc2526d | ||
|  | a3a16707b5 | ||
|  | fd53595189 | ||
|  | 0057bbbc47 | ||
|  | e6d776ee61 | ||
|  | c68e077909 | ||
|  | 72e46fc6b4 | ||
|  | 2ea8a156f3 | ||
|  | 40e1a86d52 | ||
|  | a101d6b27a | ||
|  | 9770db12d2 | ||
|  | a61052dc59 | ||
|  | 8985e7e239 | ||
|  | 1c1449306b | ||
|  | 3f8f65386e | ||
|  | 30d29e624b | ||
|  | bea8b6790a | ||
|  | 5e6c25d29d | ||
|  | b7e1219e0a | ||
|  | 057dcf77d6 | ||
|  | b7edd1542e | ||
|  | 7326f8816d | ||
|  | ed1b3f5834 | ||
|  | 7a3414d002 | ||
|  | 564506bb0d | ||
|  | 9e0843064d | ||
|  | d8d8aac9d3 | ||
|  | 9a887feed2 | ||
|  | 81dfeb526c | ||
|  | d9c01aac4a | ||
|  | 82c28b2ad2 | ||
|  | 05345dc032 | ||
|  | 63ba7b2c12 | ||
|  | 5371e8ec88 | ||
|  | e682094418 | ||
|  | 2e861977a6 | ||
|  | a39f290683 | ||
|  | 02b55313f3 | ||
|  | 596c42d7f1 | ||
|  | d4d4f7735a | ||
|  | 4cd3e4fed6 | ||
|  | c99ceeaa65 | ||
|  | ecbfade528 | ||
|  | 73d4679ad8 | ||
|  | df1db43032 | ||
|  | ff07ba102f | ||
|  | 07d2816d5b | ||
|  | 2caff8bf5c | ||
|  | 78e257e958 | ||
|  | efaaf6eb77 | ||
|  | 47bcd423b5 | ||
|  | 38bfee6739 | ||
|  | 3147bf2e34 | ||
|  | 2506662196 | ||
|  | b6eb0873e7 | ||
|  | 2c08229f04 | ||
|  | 753d9abb13 | ||
|  | af7e9cd1b6 | ||
|  | 552ea7ec3a | ||
|  | 43f19912e3 | ||
|  | 16bb5c8075 | ||
|  | bebcb377af | ||
|  | 4cffb2f094 | ||
|  | 5adaa90de3 | ||
|  | f9e8ae8dfc | ||
|  | efeb24a96c | ||
|  | 3c4ddb5572 | ||
|  | fec9e956e3 | ||
|  | 2ee4fa70a5 | ||
|  | 7a4b2d91ad | ||
|  | dc7eab4329 | ||
|  | a44392d948 | ||
|  | b013937b2c | ||
|  | 4bded8fa91 | ||
|  | f88a38aa52 | ||
|  | 37774dc02d | ||
|  | 4efe3721e7 | ||
|  | 31cbc3374d | ||
|  | c8a33802c2 | ||
|  | a3ff5fb398 | ||
|  | 8d5b3dd86a | ||
|  | fecedf8c72 | ||
|  | 183b7b0cf1 | ||
|  | 1523fae41e | ||
|  | a6d0d61175 | ||
|  | b0f4bee85e | ||
|  | 1d1d3fb907 | ||
|  | bd363a9ca6 | ||
|  | 46c1169ab1 | ||
|  | b11aa1517e | ||
|  | aa7572abfd | ||
|  | 17b03f33ab | ||
|  | dd46d6a00e | ||
|  | 7bd52fc397 | ||
|  | ff7cbcbe61 | ||
|  | d1d565aa60 | ||
|  | 169b76a88f | ||
|  | 0a265d05d4 | ||
|  | 08ac661b19 | ||
|  | 1baa3fcc6a | ||
|  | eaff15b741 | ||
|  | 4612e7c7eb | ||
|  | f66324f84d | ||
|  | 138889c4d6 | ||
|  | cac71bf6c4 | ||
|  | 2ea3da9da5 | ||
|  | 5144c3e127 | ||
|  | c4907672cd | ||
|  | 4c9a161eb5 | ||
|  | 32833323d9 | ||
|  | 0de702b142 | ||
|  | 4e24854dbf | ||
|  | 08fd95d253 | ||
|  | aa1a6766f2 | ||
|  | 537dc1bff1 | ||
|  | 93829c8cbb | ||
|  | cecf53394b | ||
|  | 62239cfe50 | ||
|  | 15ffb2d039 | ||
|  | 7f14f4409d | ||
|  | f8c573b78c | ||
|  | 49641cc363 | ||
|  | 46706961ac | ||
|  | edda30a4ad | ||
|  | c775a536c8 | ||
|  | 84a697a826 | ||
|  | 07c04634bc | ||
|  | 78a4292fb4 | ||
|  | 7bdc92f325 | ||
|  | b40f210d03 | ||
|  | 50bb0d51b3 | ||
|  | 3d0dc2b36e | ||
|  | 33f0825b3c | ||
|  | 3cc7b3aecb | ||
|  | f7e1ab5a0e | ||
|  | f6edec8c76 | ||
|  | ccf85794e2 | ||
|  | 9bd7b581cd | ||
|  | 825c28e04f | ||
|  | f787bfa0c7 | ||
|  | 93ceca1af2 | ||
|  | a1bc181e96 | ||
|  | 3db7ab8ddd | ||
|  | 5b64ff7b6e | ||
|  | f6347e796d | ||
|  | 26adc05a52 | ||
|  | 6a2464c4ad | ||
|  | 178420d1f7 | ||
|  | 81c1f668d1 | ||
|  | 2924b470ea | ||
|  | c36239c8ea | ||
|  | 8337a4af31 | ||
|  | a2cdb07c27 | ||
|  | 2fa17f308d | ||
|  | b57703888f | ||
|  | 85a793f117 | ||
|  | ed1d6cd9e7 | ||
|  | 4a17d9fef5 | ||
|  | f2d748162e | ||
|  | 363a6f9088 | ||
|  | e2686446bb | ||
|  | 1c01f08117 | ||
|  | 6768eddab9 | ||
|  | ed440c7d0b | ||
|  | 643005349a | ||
|  | cbb3f7dd5b | ||
|  | 72537d102d | ||
|  | a43d48f67c | ||
|  | c50eb6d494 | ||
|  | 010e3a1c9d | ||
|  | 3ea6e1caf0 | ||
|  | f66c9665bd | ||
|  | a80c80ca69 | ||
|  | f41ab3beed | ||
|  | 933683da39 | ||
|  | 2679fdde9a | ||
|  | 2458096acf | ||
|  | 1f44dbb385 | ||
|  | d99a29d217 | ||
|  | 15abcdbbf2 | ||
|  | 62bafe804e | ||
|  | 9f051c9569 | ||
|  | 231f4d2a14 | ||
|  | 4af6777d76 | ||
|  | c05776fa09 | ||
|  | f6b31585bb | ||
|  | f3c86c8767 | ||
|  | c26b6ead21 | ||
|  | 3d9f260bd4 | ||
|  | 2ed2120869 | ||
|  | 5d02f86549 | ||
|  | 6e3d067edd | ||
|  | bc19d07178 | ||
|  | 8e288b06be | ||
|  | ffcbac629f | ||
|  | 568144dcd7 | ||
|  | d75259cbca | ||
|  | 7e697f047a | ||
|  | c1fba7d0fa | ||
|  | d541cf22ef | ||
|  | 35a0ac4f2c | ||
|  | 391377ccf8 | ||
|  | c0d87d96d3 | ||
|  | a7f2a1db4a | ||
|  | 77fff173fc | ||
|  | 863da1cdfd | ||
|  | 23798fbd51 | ||
|  | 8399315a4f | ||
|  | ab3f8f58ef | ||
|  | e5fdd58fee | ||
|  | 86f43f408b | ||
|  | 1aab514cda | ||
|  | 3a8f2335c9 | ||
|  | 5b5c9215dc | ||
|  | bf13e02061 | ||
|  | 1e2c9d5517 | ||
|  | 5dccc423d8 | ||
|  | d58409351c | ||
|  | 1c20ceb694 | ||
|  | 3d4491494f | ||
|  | 10a04fc9c7 | ||
|  | 10e5124770 | ||
|  | f269f738d7 | ||
|  | bc86ee5421 | ||
|  | 7ea989c2b8 | ||
|  | 91b7ae4b11 | ||
|  | ce23ce407c | ||
|  | 7f779e078d | ||
|  | 229eab1213 | ||
|  | 791e0dd859 | ||
|  | f63973eac5 | ||
|  | 806a2d2d7e | ||
|  | af81e9be75 | ||
|  | 90fc3ca780 | ||
|  | 99e9437b37 | ||
|  | 6c7f40ac64 | ||
|  | e75261ada8 | ||
|  | dc5da30913 | ||
|  | 4d78d26932 | ||
|  | cd950bbf73 | ||
|  | c1b95643a8 | ||
|  | be8a371481 | ||
|  | fedd75b2b1 | ||
|  | a02e213373 | ||
|  | e3697c9a9e | ||
|  | 91e2e5a1b7 | ||
|  | 158280e297 | ||
|  | 62c741074c | ||
|  | 87a80ba430 | ||
|  | 7bb5abb9a8 | ||
|  | 40485978ec | ||
|  | 73c62a7bdb | ||
|  | e4d9c10a73 | ||
|  | 5d3f18e12c | ||
|  | d97b0c3419 | ||
|  | 960d12822d | ||
|  | f79f25f5ce | ||
|  | 3bb78c22c4 | ||
|  | 4971103dc3 | ||
|  | 35fab4d9aa | ||
|  | 2078320e14 | ||
|  | 46a29ac020 | ||
|  | d9c98b57c9 | ||
|  | 9ce9de7942 | ||
|  | 1409a8ef80 | ||
|  | bff4a84864 | ||
|  | 77524a1ad2 | ||
|  | a171755aa6 | ||
|  | 1d5f2cb395 | ||
|  | 86ace13645 | ||
|  | 57b1547333 | ||
|  | efee8728d1 | ||
|  | 9ae5202a78 | ||
|  | 07322469b7 | ||
|  | b797fcf578 | ||
|  | 7725fdff77 | ||
|  | e5298ca598 | ||
|  | 92d54e287a | ||
|  | 2d9656e82a | ||
|  | 8674e92349 | ||
|  | f5bbc36a91 | ||
|  | b058565419 | ||
|  | 2c6b951822 | ||
|  | 9b072525a6 | ||
|  | e2e0e3a555 | ||
|  | f37f72781a | ||
|  | 9618fe795f | ||
|  | 2e3231b051 | ||
|  | 7fd14852db | ||
|  | 73728a78c7 | ||
|  | 3f55d507dd | ||
|  | 13cec7830f | ||
|  | 665d65d164 | ||
|  | 21adc6b0c5 | ||
|  | 3529a1b59f | ||
|  | 8a0a3632ac | ||
|  | e6f9e07a9e | ||
|  | 755695c537 | ||
|  | dba423b6e7 | ||
|  | 83cda8c605 | ||
|  | 6856c690f3 | ||
|  | a9b3964675 | ||
|  | 44b360a521 | ||
|  | 699524ea6a | ||
|  | 2f4826b4d8 | ||
|  | 83160ef48c | ||
|  | 76bfbd3006 | ||
|  | 73c9b1dd20 | ||
|  | da878ec588 | ||
|  | f3c90e4b3a | ||
|  | f3959743b6 | ||
|  | 70a58a4cd4 | ||
|  | 600bb6f004 | ||
|  | d5ccf3404b | ||
|  | b17762a5ae | ||
|  | 1f2325b441 | ||
|  | b1757616d8 | ||
|  | 871f300a2c | ||
|  | 650c8f2582 | ||
|  | 28ae85c10b | ||
|  | ce37ceeb15 | ||
|  | 706c847b17 | ||
|  | 82be8d7f8d | ||
|  | 22e55d2e37 | ||
|  | 31844753e8 | ||
|  | 0ad36c2f62 | ||
|  | 79143ecad7 | ||
|  | 62dba864d7 | ||
|  | 21a763e55a | ||
|  | c81d6306e5 | ||
|  | 7270bcc9d5 | ||
|  | 3c39f89281 | ||
|  | e34f38d3fc | ||
|  | a207cc1580 | ||
|  | b219d3181e | ||
|  | bc848239ff | ||
|  | 0285e018f4 | ||
|  | 01f1e7e955 | ||
|  | ef34cfb38a | ||
|  | 1e0ba1d7aa | ||
|  | 6b0bafcafb | ||
|  | c0856a39bd | ||
|  | 270820a05c | ||
|  | 358660837c | ||
|  | e387c66aad | ||
|  | e774440e77 | ||
|  | c7295cd5f0 | ||
|  | 65fe248d66 | ||
|  | 5c479c9a45 | ||
|  | 6509ddff4c | ||
|  | ee78aaf29c | ||
|  | a5f59cb81a | ||
|  | a99011fd5c | ||
|  | 598374bb1c | ||
|  | b1acd4461e | ||
|  | 0e2fe6158c | ||
|  | f8b9e6f7cc | ||
|  | 8fc7451000 | ||
|  | aaab91cc20 | ||
|  | cde89c59b1 | ||
|  | 0ce04dd037 | ||
|  | 8e4c6df830 | ||
|  | da54431af5 | ||
|  | ace68aa492 | ||
|  | eee0cad2b6 | ||
|  | 785b30aeb6 | ||
|  | 3eb958dc6c | ||
|  | cd389851b9 | ||
|  | 7ee8dae9c5 | ||
|  | 4b9bb4ee71 | ||
|  | aa9fafe5c3 | ||
|  | e0c1214cdd | ||
|  | 82612af053 | ||
|  | 2f6439a239 | ||
|  | 44ff5b7599 | ||
|  | eb6c8b696f | ||
|  | 177d1aa841 | ||
|  | 021153bc49 | ||
|  | 89810a70ec | ||
|  | 504ff4ec59 | ||
|  | 04a5531a46 | ||
|  | 5a15e409cf | ||
|  | 747438e334 | ||
|  | 10211bf7da | ||
|  | 09f8aaec1e | ||
|  | 9f509067d4 | ||
|  | a085c85db6 | ||
|  | c6a7459bc9 | ||
|  | 3d06443c2c | ||
|  | 3f49e555fc | ||
|  | e156172e7c | ||
|  | c9385972bd | ||
|  | b411ee115f | ||
|  | 63fb94127a | ||
|  | 37fc9c1544 | ||
|  | 9055b90aef | ||
|  | 3f25ae9b43 | ||
|  | a288a086f7 | ||
|  | 25a398fc24 | ||
|  | 0b438b5250 | ||
|  | 0d2382e666 | ||
|  | 56b06c7433 | ||
|  | 84f690d318 | ||
|  | fef76514ed | ||
|  | 1bc8ce6f23 | ||
|  | 920a936511 | ||
|  | 648c28b332 | ||
|  | d9282f6102 | ||
|  | 1ca0e5c5e7 | ||
|  | 537bf34f94 | ||
|  | 5982287f48 | ||
|  | 24f5bb1e22 | ||
|  | 499f599e95 | ||
|  | 71ce0e790b | ||
|  | 05dfb867a3 | ||
|  | 2345eaf4ee | ||
|  | 7b3d57c9e9 | ||
|  | 9ebea04e19 | ||
|  | 0cefbb6df0 | ||
|  | 272a72d7bc | ||
|  | 75f11dc5d6 | ||
|  | 383b4c480e | ||
|  | 610c0071cc | ||
|  | 08887909fa | ||
|  | 6bd78a815b | ||
|  | 34e8fd7400 | ||
|  | 1f7f18b399 | ||
|  | a7a9e7e9f8 | ||
|  | c51a13bf0e | ||
|  | d497c25081 | ||
|  | 3345ef1704 | ||
|  | af52067b3a | ||
|  | a3e3a224a2 | ||
|  | b9e498c0b8 | ||
|  | 875df72edf | ||
|  | c5e81bacbf | ||
|  | 8663fc3fda | ||
|  | 37487d4e62 | ||
|  | d52fc3f868 | ||
|  | bc79bf010a | ||
|  | 7f477561f0 | ||
|  | c7e0a7ac59 | ||
|  | bc6ff2cb59 | ||
|  | 1826be8ef6 | ||
|  | 739e9cac4a | ||
|  | 8c7e0e6f2e | ||
|  | 46c9f6ebeb | ||
|  | e6d6b0bba7 | ||
|  | 8d60c52922 | ||
|  | 21f74a6427 | ||
|  | 05b94bd263 | ||
|  | 956527cb57 | ||
|  | d8f9e265cf | ||
|  | 64fe5d591b | ||
|  | 12502c2673 | ||
|  | 5d2f45803b | ||
|  | 3c21c70b64 | ||
|  | 9e6115f322 | ||
|  | cead508eae | ||
|  | 26d85d02fb | ||
|  | afa9757a0e | ||
|  | 80855eabe2 | ||
|  | 3558c4d5c3 | ||
|  | 1870a03538 | ||
|  | 214e1decbd | ||
|  | 3c173b95b4 | ||
|  | 2083db6c34 | ||
|  | a7cf016d67 | ||
|  | ec7922c6bd | ||
|  | c2104f2f0b | ||
|  | 47776e8f21 | ||
|  | 88cd202147 | ||
|  | 6226594f04 | ||
|  | 580558333e | ||
|  | 702e3775c3 | ||
|  | a597640830 | ||
|  | a956784797 | ||
|  | e71023b362 | ||
|  | 89f9c1d43a | ||
|  | 29adf02352 | ||
|  | 35030c878b | ||
|  | 9b916ee402 | ||
|  | 23ca9669ae | ||
|  | d66ae501f9 | ||
|  | ccb10a7b33 | ||
|  | 9d2131a4b5 | ||
|  | 7d3059e732 | ||
|  | d3add9e115 | ||
|  | 101fe5874f | ||
|  | 3afe2bf629 | ||
|  | e296c3a37a | ||
|  | 2f3120d6c9 | ||
|  | 806a816026 | ||
|  | ba7355df9e | ||
|  | 451f9f9d6c | ||
|  | 52fa57a39b | ||
|  | aa5ac8fc10 | ||
|  | a7db1f4dfd | ||
|  | 91a312768d | ||
|  | d9a666470c | ||
|  | 79fc0e70c0 | ||
|  | 532f5ceb4f | ||
|  | a326e2dcac | ||
|  | 8a626d9f97 | ||
|  | a6513af1c6 | ||
|  | 95b2dfa326 | ||
|  | ac3ad6d2aa | ||
|  | 4186c9a956 | ||
|  | 7770480ad2 | ||
|  | 50f20979df | ||
|  | 78ec6945df | ||
|  | 170b03f4f2 | ||
|  | c183276e2b | ||
|  | d7945bdc36 | ||
|  | 2930c9f092 | ||
|  | fe6a33a5fd | ||
|  | 30ebfb45d0 | ||
|  | b43a1e01c0 | ||
|  | 88d606d814 | ||
|  | dd0d06898a | ||
|  | 3e77f3cf13 | ||
|  | 22a1120348 | ||
|  | da4dc46b7a | ||
|  | 03bcc48da6 | ||
|  | 708285f0d2 | ||
|  | a0493a0ff1 | ||
|  | 9f7d505d20 | ||
|  | 78cb7832c5 | ||
|  | b3979e6942 | ||
|  | 92d3176303 | ||
|  | e5c7f87f50 | ||
|  | 7e506a6c83 | ||
|  | 1645027004 | ||
|  | 8e656af060 | ||
|  | 4efcfb2cb3 | ||
|  | 59da1618b0 | ||
|  | e9ce3ccc1c | ||
|  | 84e45a6519 | ||
|  | 96fe554afd | ||
|  | 16e0c943b2 | ||
|  | f409c553f5 | ||
|  | b6a10fd8f7 | ||
|  | efeca4a865 | ||
|  | 5e70932b66 | ||
|  | d499bd3761 | ||
|  | 48e3d5b2ec | ||
|  | 55270e618e | ||
|  | a5c897b846 | ||
|  | b0093954b3 | ||
|  | c81e055427 | ||
|  | 06fb19b5c6 | ||
|  | f8d9557257 | ||
|  | ef2ed50bf7 | ||
|  | c19ba1af03 | ||
|  | c1e5bdfb16 | ||
|  | be7dabf75d | ||
|  | d37b1b9a2e | ||
|  | 6f755a5ca7 | ||
|  | 4cd022b315 | ||
|  | 69873a143d | ||
|  | f5655f12d3 | ||
|  | a71839c0a7 | ||
|  | 74d9b24132 | ||
|  | d4ee5eb884 | ||
|  | 872a4180e4 | ||
|  | e8351bae05 | ||
|  | adb38dd2a3 | ||
|  | 755d5fe5f5 | ||
|  | d1891b11ef | ||
|  | 765a919305 | ||
|  | ad2f74dbc3 | ||
|  | b017d60c83 | ||
|  | 29a991160c | ||
|  | 59fd67c7e0 | ||
|  | bbc10e3790 | ||
|  | f4f88ff224 | ||
|  | fffccf3309 | ||
|  | 3c0e03ee89 | ||
|  | fa9216f771 | ||
|  | 83a9bef192 | ||
|  | ca4dc56342 | ||
|  | a97ee0a513 | ||
|  | 41a723fde4 | ||
|  | f673d2ea37 | ||
|  | cae488a4ee | ||
|  | ad79ab9540 | ||
|  | e958d8dbbe | ||
|  | a58e2f6385 | ||
|  | c505f26427 | ||
|  | 53aec7429f | ||
|  | 6099a46f42 | ||
|  | 1711b912f1 | ||
|  | c817a9fac1 | ||
|  | a1657f81cb | ||
|  | 0561316344 | ||
|  | 2c0f291b3c | ||
|  | fc7d872381 | ||
|  | c97d63f368 | ||
|  | 675145ea55 | ||
|  | 965bd33d55 | ||
|  | 7a5e1a0f37 | ||
|  | da24dd8fd9 | ||
|  | 717ee1c88f | ||
|  | f031b77b3b | ||
|  | e0ae6ebcaa | ||
|  | 16123b6fe9 | ||
|  | 672da9122e | ||
|  | 35f0277afd | ||
|  | 8d77e50c03 | ||
|  | 82dc5aefe1 | ||
|  | f2f5ab9b73 | ||
|  | 49acc8769c | ||
|  | 15759a964a | ||
|  | 649b88a7fa | ||
|  | 073a6dd8c1 | ||
|  | d61ad50e23 | ||
|  | 53c43e6e90 | ||
|  | b43e879cc0 | ||
|  | 0fdfd65a2a | ||
|  | 1ac8744251 | ||
|  | bbbbb27edc | ||
|  | a5982555b9 | ||
|  | 7d44f04aed | ||
|  | c9dc0d0ef8 | ||
|  | e82f908824 | ||
|  | 8365f40856 | ||
|  | b2917db0be | ||
|  | 3d21fd97f6 | ||
|  | 666a347f25 | ||
|  | 68db204d6a | ||
|  | fbe5c8da8e | ||
|  | a354ca2635 | ||
|  | 639ea4870c | ||
|  | 702d9a1501 | ||
|  | ea1a6dbaca | ||
|  | bb60753844 | ||
|  | d9781917c5 | ||
|  | bd119a72e2 | ||
|  | 78c10bca9b | ||
|  | 270ec235c1 | ||
|  | 2362be986b | ||
|  | 8a1e1cff91 | ||
|  | 46380bf655 | ||
|  | 91dda5b70d | ||
|  | 9b263e0fbb | ||
|  | 793807b07e | ||
|  | 9898e7ee58 | ||
|  | 7ecdcd712d | ||
|  | 703a17f3f0 | ||
|  | 92a9e7d937 | ||
|  | 01c7e99aa6 | ||
|  | 6fe16f1d91 | ||
|  | fcb83e637d | ||
|  | 50e4e07013 | ||
|  | ab40c94db3 | ||
|  | fee415ecd8 | ||
|  | 647a313d5b | ||
|  | 70ac398a44 | ||
|  | 48056f7d8a | ||
|  | 7ca4171652 | ||
|  | 1537eea7e5 | ||
|  | 0a425e4e41 | ||
|  | 0fa9c9bc61 | ||
|  | 9561cf34b2 | ||
|  | be721ca476 | ||
|  | 265da513de | ||
|  | a180cb5b10 | ||
|  | c517f20195 | ||
|  | e4ad12fd93 | ||
|  | c22300d109 | ||
|  | bffc09b594 | ||
|  | b7fd73bc5c | ||
|  | 15904773f3 | ||
|  | b76ae7b1ca | ||
|  | 006eddb5fe | ||
|  | 7566ccf311 | ||
|  | cde49f488c | ||
|  | ce9ce223ca | ||
|  | 71900c0e30 | ||
|  | 817057bc3c | ||
|  | 9fe6dadcec | ||
|  | 3e06f95c84 | ||
|  | 2ca1905547 | ||
|  | 65d2d61d41 | ||
|  | 8a4fd3c971 | ||
|  | c09e2fdead | ||
|  | fe5bb1c39c | ||
|  | 4b310d26f7 | ||
|  | 83759b2a4a | ||
|  | 209219d5ce | ||
|  | 8ce468228a | ||
|  | e9e2b7c09b | ||
|  | 2fa0dc1cd8 | ||
|  | faa80b7b24 | ||
|  | 7ff2372249 | ||
|  | f378a263b0 | ||
|  | 77b892ebf7 | ||
|  | db2fed4da3 | ||
|  | 160bdeaecd | ||
|  | 1d6debfa56 | ||
|  | bbb6cbaa87 | ||
|  | ce229a4e19 | ||
|  | 544aff2f18 | ||
|  | 74f20ca469 | ||
|  | edd5156ca0 | ||
|  | 7e5ccec8bf | ||
|  | fdf313cdf6 | ||
|  | 9a6bb02fb1 | ||
|  | e6f0664c3b | ||
|  | 405f0602e0 | ||
|  | b3dfc1d1d2 | ||
|  | 13025c6c5f | ||
|  | bbcbe6b67d | ||
|  | 6c586e844f | ||
|  | a1677aefa8 | ||
|  | 9f91b2ddb8 | ||
|  | ca8d9657f0 | ||
|  | 5bd4c5feeb | ||
|  | 15a4ba35a9 | ||
|  | f028bd79bf | ||
|  | d809faba3e | ||
|  | d0833edb66 | ||
|  | 9aae957919 | ||
|  | 6d24f84fd6 | ||
|  | fe08779c6c | ||
|  | 804b82eff8 | ||
|  | 61889bc182 | ||
|  | c29887d4b0 | ||
|  | edb1e6a773 | ||
|  | 5d97c3fa5e | ||
|  | e830a8eeb6 | ||
|  | a6410588cd | ||
|  | 339b79b100 | ||
|  | 831f0e7d68 | ||
|  | 4882405885 | ||
|  | 5b15a2d1a5 | ||
|  | 6954b81396 | ||
|  | 35dd4cf1ca | ||
|  | 0b0b1ab43c | ||
|  | a6311d88c3 | ||
|  | f561120748 | ||
|  | b35532dd6f | ||
|  | c7d323749c | ||
|  | 3d1997ca94 | ||
|  | b3fd15c190 | ||
|  | 601cfef32f | ||
|  | 86fd7f23c4 | ||
|  | 3668b5bb19 | ||
|  | 89f531cdbc | ||
|  | 35488aef90 | ||
|  | dc31c8b8dd | ||
|  | a205458dbe | ||
|  | 9ccd5cc4cb | ||
|  | 0fb5f3df88 | ||
|  | c82734255b | ||
|  | 19ebd69b93 | ||
|  | c93a83e78a | ||
|  | c968c56913 | ||
|  | 8508785c67 | ||
|  | 9d142723a6 | ||
|  | a0afc5616a | ||
|  | 423d0e353d | ||
|  | a4307cb35d | ||
|  | 0bc628484c | ||
|  | 3bdad36198 | ||
|  | 7a4c9fb40f | ||
|  | 8c5093a395 | ||
|  | 5ccd5980c0 | ||
|  | 60c8aae6d9 | ||
|  | 28a5db91d2 | ||
|  | 770e39d2d2 | ||
|  | 8ca47ad9e0 | ||
|  | 49f1de8217 | ||
|  | 63cc547156 | ||
|  | fcfd0bd852 | ||
|  | 4b6c206598 | ||
|  | e81e7db939 | ||
|  | 91adde3f3d | ||
|  | ef95ef85ff | ||
|  | ff160fa9f3 | ||
|  | 11f37815a3 | ||
|  | 16d9eebd1b | ||
|  | 71c1792637 | ||
|  | 6fc4a48c6f | ||
|  | 550b9743c7 | ||
|  | 36fe063384 | ||
|  | 42c697c37e | ||
|  | 91c53d4f22 | ||
|  | 878826c871 | ||
|  | f9b9b8dbd9 | ||
|  | d20bbf57fe | ||
|  | 6bbc66417a | ||
|  | 336d234bce | ||
|  | a6df633a6f | ||
|  | 8cd69ad3df | ||
|  | ab2881a412 | ||
|  | bce095739f | ||
|  | d872544eb7 | ||
|  | 03e96ce487 | ||
|  | 95dfedd71d | ||
|  | 4cda07c19c | ||
|  | 182f069928 | ||
|  | 647f7c7be8 | ||
|  | 808a2d48ac | ||
|  | 5b39a4831d | ||
|  | 275d96b6c7 | ||
|  | a6f5be63ce | ||
|  | b818519801 | ||
|  | 7a3d548bb6 | ||
|  | dff4386212 | ||
|  | cb4a95bf02 | ||
|  | 3502306b83 | ||
|  | 69767956dc | ||
|  | e8158ec1b1 | ||
|  | 995ca5afb9 | ||
|  | 40c2e53355 | ||
|  | 4c0a0244e5 | ||
|  | e794406321 | ||
|  | e0882a5c68 | ||
|  | 4a7fb7c8cf | ||
|  | eca1b71b75 | ||
|  | 81f0ecdcbe | ||
|  | d549b72975 | ||
|  | 9737ebe1c9 | ||
|  | b91aceeccb | ||
|  | 2bad1b2cd1 | ||
|  | 16cda6232b | ||
|  | ff4fe5e846 | ||
|  | 92c18d4e8a | ||
|  | 644b0ebcf5 | ||
|  | e5a855db7c | ||
|  | bfc14a1925 | ||
|  | b1c611c7fc | ||
|  | 18abf86346 | ||
|  | 9e1b0a2814 | ||
|  | 35db2e7496 | ||
|  | a8593d5b84 | ||
|  | 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 | 
							
								
								
									
										35
									
								
								.cvsignore
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								.cvsignore
									
									
									
									
									
								
							| @@ -1,35 +0,0 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| aclocal.m4 | ||||
| config.cache | ||||
| config.h | ||||
| config.h.in | ||||
| config.log | ||||
| config.sub | ||||
| config.guess | ||||
| config.status | ||||
| configure | ||||
| gtopConf.sh | ||||
| i386-bsdi | ||||
| i686-pc-linux-gnu | ||||
| intl | ||||
| libgtop-mirror.sh.swp | ||||
| libgtopConf.sh | ||||
| libtool | ||||
| ltconfig | ||||
| ltmain.sh | ||||
| macros | ||||
| stamp-h | ||||
| stamp-h.in | ||||
| sun4 | ||||
| sun4sol2 | ||||
| support | ||||
| i386-freebsd | ||||
| alpha-dec-osf3.0 | ||||
| i686-pc-linux-gnu-linux | ||||
| libgtop-config | ||||
| ABOUT-NLS | ||||
| libgtop.spec | ||||
| libgtop*.tar.gz | ||||
| *-debstamp | ||||
| libgtop*.pc | ||||
							
								
								
									
										85
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| *~ | ||||
| *.bak | ||||
| *.o | ||||
| *.out | ||||
| *.a | ||||
| *.gmo | ||||
| *.lo | ||||
| *.la | ||||
| *.core | ||||
| *.s | ||||
| *.stamp | ||||
| .libs | ||||
| .deps | ||||
| Makefile | ||||
| Makefile.in | ||||
| src/daemon/libgtop_daemon2 | ||||
| src/daemon/libgtop_server2 | ||||
| stamp-h1 | ||||
| po/stamp-it | ||||
| po/POTFILES | ||||
| po/Makefile.in.in | ||||
| missing | ||||
| m4/ | ||||
| ltmain.sh | ||||
| libtool | ||||
| libgtopconfig.h | ||||
| libgtop.spec | ||||
| libgtop-2.0.pc | ||||
| lib/lib.c | ||||
| lib/GTop-2.0.gir | ||||
| lib/GTop-2.0.typelib | ||||
| INSTALL | ||||
| aclocal.m4 | ||||
| autom4te.cache/ | ||||
| config.guess | ||||
| config.h | ||||
| config.h.in | ||||
| config.log | ||||
| config.status | ||||
| config.sub | ||||
| configure | ||||
| compile | ||||
| depcomp | ||||
| doc/libgtop2.info | ||||
| doc/mdate-sh | ||||
| doc/reference/html/ | ||||
| doc/reference/libgtop-decl-list.txt | ||||
| doc/reference/libgtop-decl.txt | ||||
| doc/reference/libgtop-undeclared.txt | ||||
| doc/reference/libgtop-undocumented.txt | ||||
| doc/reference/libgtop-unused.txt | ||||
| doc/reference/libgtop.args | ||||
| doc/reference/libgtop.hierarchy | ||||
| doc/reference/libgtop.interfaces | ||||
| doc/reference/libgtop.prerequisites | ||||
| doc/reference/libgtop.signals | ||||
| doc/reference/tmpl/ | ||||
| doc/reference/version.xml | ||||
| doc/reference/xml/ | ||||
| doc/stamp-vti | ||||
| doc/texinfo.tex | ||||
| doc/version.texi | ||||
| examples/affinity | ||||
| examples/df | ||||
| examples/first | ||||
| examples/free | ||||
| examples/mountlist | ||||
| examples/netlist | ||||
| examples/netload | ||||
| examples/openfiles | ||||
| examples/pprint | ||||
| examples/procargs | ||||
| examples/proclist | ||||
| examples/procmap | ||||
| examples/second | ||||
| examples/smp | ||||
| examples/sysdeps | ||||
| examples/timings | ||||
| examples/wd | ||||
| gtk-doc.make | ||||
| install-sh | ||||
| intltool-extract.in | ||||
| intltool-merge.in | ||||
| intltool-update.in | ||||
|  | ||||
							
								
								
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -1,2 +1,3 @@ | ||||
| Martin Baulig (martin@home-of-linux.org) | ||||
| Drazen Kacar (dave@srce.hr) | ||||
| Benoît Dejean (tazforever@dlfp.org) | ||||
|   | ||||
							
								
								
									
										340
									
								
								COPYING
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										340
									
								
								COPYING
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,340 @@ | ||||
| 		    GNU GENERAL PUBLIC LICENSE | ||||
| 		       Version 2, June 1991 | ||||
|  | ||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||||
|      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  Everyone is permitted to copy and distribute verbatim copies | ||||
|  of this license document, but changing it is not allowed. | ||||
|  | ||||
| 			    Preamble | ||||
|  | ||||
|   The licenses for most software are designed to take away your | ||||
| freedom to share and change it.  By contrast, the GNU General Public | ||||
| License is intended to guarantee your freedom to share and change free | ||||
| software--to make sure the software is free for all its users.  This | ||||
| General Public License applies to most of the Free Software | ||||
| Foundation's software and to any other program whose authors commit to | ||||
| using it.  (Some other Free Software Foundation software is covered by | ||||
| the GNU Library General Public License instead.)  You can apply it to | ||||
| your programs, too. | ||||
|  | ||||
|   When we speak of free software, we are referring to freedom, not | ||||
| price.  Our General Public Licenses are designed to make sure that you | ||||
| have the freedom to distribute copies of free software (and charge for | ||||
| this service if you wish), that you receive source code or can get it | ||||
| if you want it, that you can change the software or use pieces of it | ||||
| in new free programs; and that you know you can do these things. | ||||
|  | ||||
|   To protect your rights, we need to make restrictions that forbid | ||||
| anyone to deny you these rights or to ask you to surrender the rights. | ||||
| These restrictions translate to certain responsibilities for you if you | ||||
| distribute copies of the software, or if you modify it. | ||||
|  | ||||
|   For example, if you distribute copies of such a program, whether | ||||
| gratis or for a fee, you must give the recipients all the rights that | ||||
| you have.  You must make sure that they, too, receive or can get the | ||||
| source code.  And you must show them these terms so they know their | ||||
| rights. | ||||
|  | ||||
|   We protect your rights with two steps: (1) copyright the software, and | ||||
| (2) offer you this license which gives you legal permission to copy, | ||||
| distribute and/or modify the software. | ||||
|  | ||||
|   Also, for each author's protection and ours, we want to make certain | ||||
| that everyone understands that there is no warranty for this free | ||||
| software.  If the software is modified by someone else and passed on, we | ||||
| want its recipients to know that what they have is not the original, so | ||||
| that any problems introduced by others will not reflect on the original | ||||
| authors' reputations. | ||||
|  | ||||
|   Finally, any free program is threatened constantly by software | ||||
| patents.  We wish to avoid the danger that redistributors of a free | ||||
| program will individually obtain patent licenses, in effect making the | ||||
| program proprietary.  To prevent this, we have made it clear that any | ||||
| patent must be licensed for everyone's free use or not licensed at all. | ||||
|  | ||||
|   The precise terms and conditions for copying, distribution and | ||||
| modification follow. | ||||
|  | ||||
| 		    GNU GENERAL PUBLIC LICENSE | ||||
|    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||
|  | ||||
|   0. This License applies to any program or other work which contains | ||||
| a notice placed by the copyright holder saying it may be distributed | ||||
| under the terms of this General Public License.  The "Program", below, | ||||
| refers to any such program or work, and a "work based on the Program" | ||||
| means either the Program or any derivative work under copyright law: | ||||
| that is to say, a work containing the Program or a portion of it, | ||||
| either verbatim or with modifications and/or translated into another | ||||
| language.  (Hereinafter, translation is included without limitation in | ||||
| the term "modification".)  Each licensee is addressed as "you". | ||||
|  | ||||
| Activities other than copying, distribution and modification are not | ||||
| covered by this License; they are outside its scope.  The act of | ||||
| running the Program is not restricted, and the output from the Program | ||||
| is covered only if its contents constitute a work based on the | ||||
| Program (independent of having been made by running the Program). | ||||
| Whether that is true depends on what the Program does. | ||||
|  | ||||
|   1. You may copy and distribute verbatim copies of the Program's | ||||
| source code as you receive it, in any medium, provided that you | ||||
| conspicuously and appropriately publish on each copy an appropriate | ||||
| copyright notice and disclaimer of warranty; keep intact all the | ||||
| notices that refer to this License and to the absence of any warranty; | ||||
| and give any other recipients of the Program a copy of this License | ||||
| along with the Program. | ||||
|  | ||||
| You may charge a fee for the physical act of transferring a copy, and | ||||
| you may at your option offer warranty protection in exchange for a fee. | ||||
|  | ||||
|   2. You may modify your copy or copies of the Program or any portion | ||||
| of it, thus forming a work based on the Program, and copy and | ||||
| distribute such modifications or work under the terms of Section 1 | ||||
| above, provided that you also meet all of these conditions: | ||||
|  | ||||
|     a) You must cause the modified files to carry prominent notices | ||||
|     stating that you changed the files and the date of any change. | ||||
|  | ||||
|     b) You must cause any work that you distribute or publish, that in | ||||
|     whole or in part contains or is derived from the Program or any | ||||
|     part thereof, to be licensed as a whole at no charge to all third | ||||
|     parties under the terms of this License. | ||||
|  | ||||
|     c) If the modified program normally reads commands interactively | ||||
|     when run, you must cause it, when started running for such | ||||
|     interactive use in the most ordinary way, to print or display an | ||||
|     announcement including an appropriate copyright notice and a | ||||
|     notice that there is no warranty (or else, saying that you provide | ||||
|     a warranty) and that users may redistribute the program under | ||||
|     these conditions, and telling the user how to view a copy of this | ||||
|     License.  (Exception: if the Program itself is interactive but | ||||
|     does not normally print such an announcement, your work based on | ||||
|     the Program is not required to print an announcement.) | ||||
|  | ||||
| These requirements apply to the modified work as a whole.  If | ||||
| identifiable sections of that work are not derived from the Program, | ||||
| and can be reasonably considered independent and separate works in | ||||
| themselves, then this License, and its terms, do not apply to those | ||||
| sections when you distribute them as separate works.  But when you | ||||
| distribute the same sections as part of a whole which is a work based | ||||
| on the Program, the distribution of the whole must be on the terms of | ||||
| this License, whose permissions for other licensees extend to the | ||||
| entire whole, and thus to each and every part regardless of who wrote it. | ||||
|  | ||||
| Thus, it is not the intent of this section to claim rights or contest | ||||
| your rights to work written entirely by you; rather, the intent is to | ||||
| exercise the right to control the distribution of derivative or | ||||
| collective works based on the Program. | ||||
|  | ||||
| In addition, mere aggregation of another work not based on the Program | ||||
| with the Program (or with a work based on the Program) on a volume of | ||||
| a storage or distribution medium does not bring the other work under | ||||
| the scope of this License. | ||||
|  | ||||
|   3. You may copy and distribute the Program (or a work based on it, | ||||
| under Section 2) in object code or executable form under the terms of | ||||
| Sections 1 and 2 above provided that you also do one of the following: | ||||
|  | ||||
|     a) Accompany it with the complete corresponding machine-readable | ||||
|     source code, which must be distributed under the terms of Sections | ||||
|     1 and 2 above on a medium customarily used for software interchange; or, | ||||
|  | ||||
|     b) Accompany it with a written offer, valid for at least three | ||||
|     years, to give any third party, for a charge no more than your | ||||
|     cost of physically performing source distribution, a complete | ||||
|     machine-readable copy of the corresponding source code, to be | ||||
|     distributed under the terms of Sections 1 and 2 above on a medium | ||||
|     customarily used for software interchange; or, | ||||
|  | ||||
|     c) Accompany it with the information you received as to the offer | ||||
|     to distribute corresponding source code.  (This alternative is | ||||
|     allowed only for noncommercial distribution and only if you | ||||
|     received the program in object code or executable form with such | ||||
|     an offer, in accord with Subsection b above.) | ||||
|  | ||||
| The source code for a work means the preferred form of the work for | ||||
| making modifications to it.  For an executable work, complete source | ||||
| code means all the source code for all modules it contains, plus any | ||||
| associated interface definition files, plus the scripts used to | ||||
| control compilation and installation of the executable.  However, as a | ||||
| special exception, the source code distributed need not include | ||||
| anything that is normally distributed (in either source or binary | ||||
| form) with the major components (compiler, kernel, and so on) of the | ||||
| operating system on which the executable runs, unless that component | ||||
| itself accompanies the executable. | ||||
|  | ||||
| If distribution of executable or object code is made by offering | ||||
| access to copy from a designated place, then offering equivalent | ||||
| access to copy the source code from the same place counts as | ||||
| distribution of the source code, even though third parties are not | ||||
| compelled to copy the source along with the object code. | ||||
|  | ||||
|   4. You may not copy, modify, sublicense, or distribute the Program | ||||
| except as expressly provided under this License.  Any attempt | ||||
| otherwise to copy, modify, sublicense or distribute the Program is | ||||
| void, and will automatically terminate your rights under this License. | ||||
| However, parties who have received copies, or rights, from you under | ||||
| this License will not have their licenses terminated so long as such | ||||
| parties remain in full compliance. | ||||
|  | ||||
|   5. You are not required to accept this License, since you have not | ||||
| signed it.  However, nothing else grants you permission to modify or | ||||
| distribute the Program or its derivative works.  These actions are | ||||
| prohibited by law if you do not accept this License.  Therefore, by | ||||
| modifying or distributing the Program (or any work based on the | ||||
| Program), you indicate your acceptance of this License to do so, and | ||||
| all its terms and conditions for copying, distributing or modifying | ||||
| the Program or works based on it. | ||||
|  | ||||
|   6. Each time you redistribute the Program (or any work based on the | ||||
| Program), the recipient automatically receives a license from the | ||||
| original licensor to copy, distribute or modify the Program subject to | ||||
| these terms and conditions.  You may not impose any further | ||||
| restrictions on the recipients' exercise of the rights granted herein. | ||||
| You are not responsible for enforcing compliance by third parties to | ||||
| this License. | ||||
|  | ||||
|   7. If, as a consequence of a court judgment or allegation of patent | ||||
| infringement or for any other reason (not limited to patent issues), | ||||
| conditions are imposed on you (whether by court order, agreement or | ||||
| otherwise) that contradict the conditions of this License, they do not | ||||
| excuse you from the conditions of this License.  If you cannot | ||||
| distribute so as to satisfy simultaneously your obligations under this | ||||
| License and any other pertinent obligations, then as a consequence you | ||||
| may not distribute the Program at all.  For example, if a patent | ||||
| license would not permit royalty-free redistribution of the Program by | ||||
| all those who receive copies directly or indirectly through you, then | ||||
| the only way you could satisfy both it and this License would be to | ||||
| refrain entirely from distribution of the Program. | ||||
|  | ||||
| If any portion of this section is held invalid or unenforceable under | ||||
| any particular circumstance, the balance of the section is intended to | ||||
| apply and the section as a whole is intended to apply in other | ||||
| circumstances. | ||||
|  | ||||
| It is not the purpose of this section to induce you to infringe any | ||||
| patents or other property right claims or to contest validity of any | ||||
| such claims; this section has the sole purpose of protecting the | ||||
| integrity of the free software distribution system, which is | ||||
| implemented by public license practices.  Many people have made | ||||
| generous contributions to the wide range of software distributed | ||||
| through that system in reliance on consistent application of that | ||||
| system; it is up to the author/donor to decide if he or she is willing | ||||
| to distribute software through any other system and a licensee cannot | ||||
| impose that choice. | ||||
|  | ||||
| This section is intended to make thoroughly clear what is believed to | ||||
| be a consequence of the rest of this License. | ||||
|  | ||||
|   8. If the distribution and/or use of the Program is restricted in | ||||
| certain countries either by patents or by copyrighted interfaces, the | ||||
| original copyright holder who places the Program under this License | ||||
| may add an explicit geographical distribution limitation excluding | ||||
| those countries, so that distribution is permitted only in or among | ||||
| countries not thus excluded.  In such case, this License incorporates | ||||
| the limitation as if written in the body of this License. | ||||
|  | ||||
|   9. The Free Software Foundation may publish revised and/or new versions | ||||
| of the General Public License from time to time.  Such new versions will | ||||
| be similar in spirit to the present version, but may differ in detail to | ||||
| address new problems or concerns. | ||||
|  | ||||
| Each version is given a distinguishing version number.  If the Program | ||||
| specifies a version number of this License which applies to it and "any | ||||
| later version", you have the option of following the terms and conditions | ||||
| either of that version or of any later version published by the Free | ||||
| Software Foundation.  If the Program does not specify a version number of | ||||
| this License, you may choose any version ever published by the Free Software | ||||
| Foundation. | ||||
|  | ||||
|   10. If you wish to incorporate parts of the Program into other free | ||||
| programs whose distribution conditions are different, write to the author | ||||
| to ask for permission.  For software which is copyrighted by the Free | ||||
| Software Foundation, write to the Free Software Foundation; we sometimes | ||||
| make exceptions for this.  Our decision will be guided by the two goals | ||||
| of preserving the free status of all derivatives of our free software and | ||||
| of promoting the sharing and reuse of software generally. | ||||
|  | ||||
| 			    NO WARRANTY | ||||
|  | ||||
|   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||||
| FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN | ||||
| OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||||
| PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||||
| OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS | ||||
| TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE | ||||
| PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||||
| REPAIR OR CORRECTION. | ||||
|  | ||||
|   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||
| WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||||
| REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||||
| INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||||
| OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||||
| TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||||
| YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||||
| PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||||
| POSSIBILITY OF SUCH DAMAGES. | ||||
|  | ||||
| 		     END OF TERMS AND CONDITIONS | ||||
|  | ||||
| 	    How to Apply These Terms to Your New Programs | ||||
|  | ||||
|   If you develop a new program, and you want it to be of the greatest | ||||
| possible use to the public, the best way to achieve this is to make it | ||||
| free software which everyone can redistribute and change under these terms. | ||||
|  | ||||
|   To do so, attach the following notices to the program.  It is safest | ||||
| to attach them to the start of each source file to most effectively | ||||
| convey the exclusion of warranty; and each file should have at least | ||||
| the "copyright" line and a pointer to where the full notice is found. | ||||
|  | ||||
|     <one line to give the program's name and a brief idea of what it does.> | ||||
|     Copyright (C) <year>  <name of author> | ||||
|  | ||||
|     This program 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. | ||||
|  | ||||
|     This program 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 this program; if not, write to the Free Software | ||||
|     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  | ||||
|  | ||||
| Also add information on how to contact you by electronic and paper mail. | ||||
|  | ||||
| If the program is interactive, make it output a short notice like this | ||||
| when it starts in an interactive mode: | ||||
|  | ||||
|     Gnomovision version 69, Copyright (C) year  name of author | ||||
|     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||||
|     This is free software, and you are welcome to redistribute it | ||||
|     under certain conditions; type `show c' for details. | ||||
|  | ||||
| The hypothetical commands `show w' and `show c' should show the appropriate | ||||
| parts of the General Public License.  Of course, the commands you use may | ||||
| be called something other than `show w' and `show c'; they could even be | ||||
| mouse-clicks or menu items--whatever suits your program. | ||||
|  | ||||
| You should also get your employer (if you work as a programmer) or your | ||||
| school, if any, to sign a "copyright disclaimer" for the program, if | ||||
| necessary.  Here is a sample; alter the names: | ||||
|  | ||||
|   Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||||
|   `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||||
|  | ||||
|   <signature of Ty Coon>, 1 April 1989 | ||||
|   Ty Coon, President of Vice | ||||
|  | ||||
| This General Public License does not permit incorporating your program into | ||||
| proprietary programs.  If your program is a subroutine library, you may | ||||
| consider it more useful to permit linking proprietary applications with the | ||||
| library.  If this is what you want to do, use the GNU Library General | ||||
| Public License instead of this License. | ||||
| @@ -1,28 +0,0 @@ | ||||
| # Making releases: | ||||
| #   LIBGTOP_MICRO_VERSION += 1; | ||||
| #   LIBGTOP_INTERFACE_AGE += 1; | ||||
| #   LIBGTOP_BINARY_AGE += 1; | ||||
| # if any functions have been added, set LIBGTOP_INTERFACE_AGE to 0. | ||||
| # if backwards compatibility has been broken, | ||||
| # set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0. | ||||
| # | ||||
| LIBGTOP_MAJOR_VERSION=1 | ||||
| LIBGTOP_MINOR_VERSION=90 | ||||
| LIBGTOP_MICRO_VERSION=0 | ||||
|  | ||||
| LIBGTOP_INTERFACE_AGE=0 | ||||
| LIBGTOP_BINARY_AGE=0 | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| LIBGTOP_VERSION_SUFFIX= | ||||
|  | ||||
| # Increase each time you change the client/server protocol. | ||||
| LIBGTOP_SERVER_VERSION=5 | ||||
|  | ||||
| # Don't change this | ||||
| LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION | ||||
| LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc` | ||||
|  | ||||
| # For automake. | ||||
| VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX | ||||
| PACKAGE=libgtop | ||||
| @@ -1,2 +1,4 @@ | ||||
| Email: martin@home-of-linux.org | ||||
| Email: dave@srce.hr | ||||
| Benoît Dejean | ||||
| E-mail: benoit@placenet.org | ||||
| Userid: bdejean | ||||
|  | ||||
|   | ||||
							
								
								
									
										95
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -1,93 +1,38 @@ | ||||
| ## Process this file with automake to produce Makefile.in. | ||||
| ACLOCAL_AMFLAGS = -I m4 | ||||
|  | ||||
| if EXAMPLES | ||||
| examples_SUBDIRS = examples | ||||
| EXAMPLES_DIR = examples | ||||
| else | ||||
| examples_SUBDIRS = | ||||
| EXAMPLES_DIR =  | ||||
| endif | ||||
|  | ||||
| if BUILD_GNOME_SUPPORT | ||||
| support = support | ||||
| endif | ||||
| SUBDIRS = po misc include sysdeps lib src $(EXAMPLES_DIR) doc | ||||
|  | ||||
| SUBDIRS = . po $(support) misc include sysdeps lib src \ | ||||
| 	  $(examples_SUBDIRS) doc | ||||
|  | ||||
| libgtopinclude_HEADERS = glibtop.h | ||||
| libgtopinclude_HEADERS = glibtop.h libgtopconfig.h | ||||
| libgtopincludedir = $(includedir)/libgtop-2.0 | ||||
|  | ||||
| EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \ | ||||
| 	LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \ | ||||
| 	RELNOTES-1.0 RELNOTES-1.0.x libgtop-sysdeps.m4 README \ | ||||
| 	libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4 | ||||
| EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \ | ||||
| 	 features.def libgtopconfig.h.in \ | ||||
| 	libgtop-sysdeps.m4 README \ | ||||
| 	 libgtop-2.0.pc.in acinclude.m4 \ | ||||
| 	intltool-extract.in \ | ||||
| 	intltool-merge.in \ | ||||
| 	libgtop.doap \ | ||||
| 	intltool-update.in \ | ||||
| 	m4/introspection.m4 | ||||
|  | ||||
| DISTCLEANFILES = \ | ||||
| 	intltool-extract \ | ||||
| 	intltool-merge \ | ||||
| 	intltool-update | ||||
|  | ||||
| dist-hook: | ||||
| 	cp libgtop.spec $(distdir) | ||||
|  | ||||
| release: | ||||
| 	$(MAKE) dist distdir=$(PACKAGE)-$(VERSION) | ||||
|  | ||||
| ## Put `exec' in the name because this should be installed by | ||||
| ## `install-exec', not `install-data'. | ||||
| ## confexecdir	= $(libdir) | ||||
| ## confexec_DATA	= $(top_builddir)/libgtopConf.sh \ | ||||
| ##		  $(top_builddir)/libgtop-features.def | ||||
| 		   | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = libgtop-2.0.pc | ||||
|  | ||||
| CLEANFILES=libgtopConf.sh | ||||
|  | ||||
| ## bin_SCRIPTS = $(top_builddir)/libgtop-config | ||||
|  | ||||
| ## to automatically rebuild aclocal.m4 if any of the macros in | ||||
| ## `macros/' change | ||||
| ## @MAINT@ include macros/macros.dep | ||||
| ## @MAINT@macros/macros.dep: macros/Makefile.am | ||||
| ## @MAINT@	cd macros && $(MAKE) macros.dep | ||||
|  | ||||
| @MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION | ||||
|  | ||||
| ## 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)/libgtop-2.0#g' \ | ||||
| 	  -e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_INCS\@#$(LIBGTOP_INCS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_NAMES_LIBS\@#$(LIBGTOP_NAMES_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_NAMES_INCS\@#$(LIBGTOP_NAMES_INCS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_GUILE_LIBS\@#$(LIBGTOP_GUILE_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_GUILE_INCS\@#$(LIBGTOP_GUILE_INCS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_GUILE_NAMES_LIBS\@#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_GUILE_NAMES_INCS\@#$(LIBGTOP_GUILE_NAMES_INCS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_BINDIR\@#$(LIBGTOP_BINDIR)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_SERVER\@#$(LIBGTOP_SERVER)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_MAJOR_VERSION\@#$(LIBGTOP_MAJOR_VERSION)#g' \ | ||||
| 	  -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 | ||||
| 	@LN_S@ $< $@ | ||||
|  | ||||
| DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --enable-introspection | ||||
|   | ||||
							
								
								
									
										459
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										459
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,462 @@ | ||||
| 16 August 2015: Overview of changes in 2.31.90 | ||||
| ============================================= | ||||
| * ABI changes: | ||||
|   - ABI was inconsistent on platforms like FreeBSD which make use of | ||||
|     glibtop_machine. The ABI was actually different between the | ||||
|     library and the server. Fixed this by simply always defining | ||||
|     glibtop_machine in glibtop struct. | ||||
|   - Add Pss and Swap members in glibtop_proc_mem. | ||||
|   - This is the second ABI breakage in since 2.28 (the first one was | ||||
|     bumping NCPU), there were no release for 2.30. | ||||
|  | ||||
| * FreeBSD: | ||||
|   - proclist: exclude the "idle" kernel process when GLIBTOP_EXCLUDE_IDLE. | ||||
|   - Remove extraneous glibtop_init() calls. | ||||
|  | ||||
| * Linux: | ||||
|   - proc_mem: implement Pss and Swap. | ||||
|   - Remove extraneous glibtop_init() calls. | ||||
|  | ||||
| * All: | ||||
|   - Propagate the change that machine in struct glibtop is now a | ||||
|     pointer. Hope that change doesn't break build on other platforms, | ||||
|     I can only test Linux and FreeBSD. | ||||
|  | ||||
|  | ||||
| 5 August 2015: Overview of changes in 2.31.4 | ||||
| ============================================= | ||||
| * 71 commits ! | ||||
| * Implement a proper --enable-debug mode. | ||||
| * FreeBSD: | ||||
| 	- procstate: set process name for kernel (pid=0) | ||||
| 	- procmap: get dev/inode for ZFS (no filename yet) | ||||
| 	- mem: rework memory usage to something more meaningful | ||||
| 	- proclist: don't report threads | ||||
| 	- proctime: fix CPU times | ||||
| * Linux: | ||||
| 	- mem: use MemAvailable when available | ||||
| 	- mem: match `free`, report Slab as Cached. | ||||
| 	- support for x.y versionsmemory to match `free` | ||||
| * Fix a lot of GI tags: it now works without crashing. | ||||
| * Server and daemon binaries are now dynamically linked against their libgtop. | ||||
| * Update a lot of examples/. | ||||
| * Clean up some very old code. | ||||
| * Updated translations. | ||||
|  | ||||
| Special thanks to Ting-Wei Lan for providing patches and feedback on FreeBSD. | ||||
|  | ||||
| 22 June 2015: Overview of changes in 2.31.3 | ||||
| ============================================= | ||||
| * Numerous OpenBSD backend fixes. | ||||
| * Fixed FreeBSD build issues. | ||||
| * Implemented procaffinity support for NetBSD. | ||||
| * Updated translations | ||||
|  | ||||
| 19 August 2013: Overview of changes in 2.28.5 | ||||
| ============================================= | ||||
| * Fix numerous bugs in the OpenBSD backend. | ||||
| * Updated translations. | ||||
|  | ||||
| 30 August 2011: Overview of changes in 2.28.4 | ||||
| ============================================= | ||||
| * Fix numerous bugs in the FreeBSD backend. | ||||
| * Split off OpenBSD code in its own backend, and fixes. | ||||
| * Updated translations. | ||||
|  | ||||
| 25 March 2011: Overview of changes in 2.28.3 | ||||
| ================================================ | ||||
| * Fix build issue for strict linkers. | ||||
| * Add Introspection support | ||||
| * Cygwin fixes. | ||||
| * FreeBSD: Fix get_mem() on 64-bit systems. | ||||
| * Updated translations. | ||||
|  | ||||
| 28 September 2010: Overview of changes in 2.28.2 | ||||
| ================================================ | ||||
| * Updated translations. | ||||
|  | ||||
| 30 March 2010: Overview of changes in 2.28.1 | ||||
| ============================================ | ||||
| * Updated translations. | ||||
|  | ||||
| 21 September 2009: Overview of changes in 2.28.0 | ||||
| ================================================ | ||||
| * Updated translations. | ||||
|  | ||||
| 25 May 2009: Overview of changes in 2.27.3 | ||||
| ========================================== | ||||
| * linux: | ||||
|   - fixed format error. | ||||
|  | ||||
| 3 May 2009: Overview of changes in 2.27.2 | ||||
| ========================================= | ||||
| * linux: | ||||
|   - glibtop_get_proc_map: oops, fixed segfault. | ||||
|  | ||||
| 3 May 2009: Overview of changes in 2.27.1 | ||||
| ========================================= | ||||
| * linux: | ||||
|   - glibtop_get_proc_map is ~40% faster. This should be noticeable | ||||
|     in system-monitor. | ||||
| * New cygwin support. | ||||
|  | ||||
| 13 April 2009: Overview of changes in 2.26.1 | ||||
| ============================================ | ||||
| * linux: | ||||
|   - glibtop_get_mounlist(...): also hide "none" fs. | ||||
|  | ||||
| 1 Mars 2009: Overview of changes in 2.26.0 | ||||
| ========================================== | ||||
| * Nothing. | ||||
|  | ||||
| 17 February 2009: Overview of changes in 2.25.91 | ||||
| ================================================ | ||||
| * Synced with gnome-2-24. | ||||
|  | ||||
| 19 January 2009: Overview of changes in 2.24.4 | ||||
| ============================================== | ||||
| * Fixed license: libgtop is GPL-2. | ||||
|  | ||||
| 12 January 2009: Overview of changes in 2.24.3 | ||||
| ============================================== | ||||
| * linux: | ||||
|   - fixed potential memory leak. Vincent Untz. | ||||
|   - fixed read(2) usage. Should fix the missing cpus bug in system-monitor. | ||||
| * darwin: | ||||
|   - fixed build. "paul". | ||||
|  | ||||
| 22 Septembre 2008: Overview of changes in 2.24.0 | ||||
| ================================================ | ||||
| * Translation updates. | ||||
|  | ||||
| 18 August 2008: Overview of changes in 2.23.90 | ||||
| ============================================== | ||||
| * freebsd: | ||||
|   - updated port by Joe Marcus Clarke. | ||||
|  | ||||
| 23 June 2008: Overview of changes in 2.23.4 | ||||
| =========================================== | ||||
| * linux: | ||||
|   - Fixed and improved glibtop_get_fsusage with kernel >= 2.6.25. | ||||
|     Closes #539360. | ||||
|  | ||||
| 24 May 2008: Overview of changes in 2.23.2 | ||||
| ========================================== | ||||
| * glibtop_get_proc_open_files API can also lists IPv6 TCP sockets. | ||||
| * glibtop_get_proc_affinity : new API to retrieve process CPU affinity. | ||||
|  | ||||
| (Let's hope one day i'll find the gtk-doc documentation ...) | ||||
|  | ||||
| * linux: | ||||
|   - fixed parsing of big /proc/stat for uptime. | ||||
|  | ||||
| 04 April 2008: Overview of changes in 2.22.1 | ||||
| ============================================ | ||||
| * Fixed compilation/dist for !linux. | ||||
|   Closes #525953. | ||||
|  | ||||
| 10 Mars 2008: Overview of changes in 2.22.0 | ||||
| =========================================== | ||||
| * linux: | ||||
|   - fixed proc_kernel. | ||||
|   | ||||
| 25 February 2008: Overview of changes in 2.21.92 | ||||
| ================================================ | ||||
| * linux: | ||||
|   - fixed smaps parsing on >= 2.6.24.x. | ||||
|  | ||||
| 14 January 2008: Overview of changes in 2.21.5 | ||||
| ============================================== | ||||
| * freebsd: | ||||
|   - fixed build on GNU/kfreebsd. Petr Salinger. | ||||
|   - fixed procmem units. Kuang-che Wu. | ||||
|  | ||||
| 28 October 2007: Overview of changes in 2.21.1 | ||||
| ============================================== | ||||
| * don't export _p/_s private symbols anymore. This is not an API/ABI breakage. | ||||
| * darwin implementation by Benjamin Reed. | ||||
| * linux: | ||||
|   - splitted fsusage and mountlist implementations; | ||||
|   - smarter mountlist(allfs = False); | ||||
|   - fixed some compile warning on 64bit; | ||||
| * solaris: | ||||
|   - fixed netload build by Henry Zhang. | ||||
|  | ||||
| 16 September 2007: Overview of changes in 2.20.0 | ||||
| ================================================ | ||||
| * Updated translations. | ||||
|  | ||||
| 27 August 2007: Overview of changes in 2.19.92 | ||||
| ============================================== | ||||
| * Fixed stupid hardwired path in linux/sysinfo.c | ||||
|  | ||||
| 26 August 2007: Overview of changes in 2.19.91 | ||||
| ============================================== | ||||
| * Translations updates. | ||||
| * linux: | ||||
|   - Small internal improvement. Might fix sysinfo when having more than | ||||
|   8 CPUS. | ||||
|  | ||||
| 9 July 2007: Overview of changes in 2.19.5 | ||||
| ========================================== | ||||
| * linux: | ||||
|   - fixed proc_map for >= 2.6.22 | ||||
| * freebsd: | ||||
|   - implemented procwd and procopenfiles | ||||
|     Joe Marcus Clarke | ||||
|  | ||||
| 18 June 2007: Overview of changes in 2.19.4 | ||||
| =========================================== | ||||
| * solaris: | ||||
|   - fixed build. Damien Carbery. | ||||
|  | ||||
| 3 June 2007: Overview of changes in 2.19.3 | ||||
| ========================================== | ||||
| * Small API change. get_proclist returns pid_t instead of unsigned | ||||
|   for consistency. | ||||
| * linux: | ||||
|   - fixed an typo bug in open_files. | ||||
|   - got rid of useless glibtop_init_s calls. | ||||
| * Enable example build by defaut. | ||||
| * Dropped G_GNUC_INTERNAL attributes no longer needed. | ||||
|   This will please people trying to implement G_GNUC macro with a non | ||||
|   GNU Compiler. | ||||
|  | ||||
| 13 May 2007: Overview of changes in 2.19.2 | ||||
| ========================================== | ||||
| * This is the first release of the 2.19.x series. | ||||
| * Got rid of inodedb (you don't even know what it is ;) | ||||
| * New unstable API glibtop_get_proc_wd to get working directories of | ||||
|   a process. | ||||
| * Fixed OpenBSD build. Jasper Lievisse Adriaanse. | ||||
|  | ||||
| 25 February 2007: Overview of changes in 2.14.8 | ||||
| =============================================== | ||||
| * bsd implementations have been splitted by Joe Marcus Clarke | ||||
|   and Alexander Nedotsukov. (k)freeBSD now has a separate implementation. | ||||
|  | ||||
| February 10, 2007: Overview of changes in 2.14.7 | ||||
| ================================================ | ||||
| * bsd: | ||||
|   - massive kfreeBSD and FreeBSD updates by Roy Marples and Petr Salinger. | ||||
| * mountlist can now ignore objfs and ctfs filesystems. | ||||
| * fsusage won't return bavail > bfree anymore. | ||||
|  | ||||
| January 14, 2007: Overview of changes in 2.14.6 | ||||
| =============================================== | ||||
| * linux: | ||||
|   - fixed stack overflow in glibtop_get_proc_map | ||||
|   - fixed handling of long filenames in glibtop_get_proc_map and glibtop_get_proc_open_files. | ||||
|   - micro-optimization | ||||
|  | ||||
| December 3, 2006: Overview of changes in 2.14.5 | ||||
| =============================================== | ||||
| * Added kfreebsd support (Petr Salinger <Petr.Salinger@seznam.cz>). | ||||
| * Added solaris glibtop_get_proc_open_files (Henry Zhang <hua.zhang@sun.com>). | ||||
| * Migrated to gtk-doc (Germán Poó-Caamaño <gpoo@ubiobio.cl>). | ||||
| * glibtop_get_mountlist can now ignore nsfd FS.  | ||||
|  | ||||
| September 16, 2006: Overview of changes in 2.14.4 | ||||
| ================================================= | ||||
| * Fixed linux maps/smaps parsing on 64bit kernel. | ||||
|  | ||||
| September 5, 2006: Overview of changes in 2.14.3 | ||||
| ================================================ | ||||
| * Fixed build with --as-needed. | ||||
| * Added missing G_BEGIN_DECLS/G_END_DECLS. | ||||
|  | ||||
| July 27, 2006: Overview of changes in 2.14.2 | ||||
| ============================================ | ||||
| * Updated solaris support (hua.zhang@sun.com) | ||||
| * Small linux updates and improvments. | ||||
|  | ||||
| April 10, 2006: Overview of changes in 2.14.1 | ||||
| ============================================= | ||||
| * Updated translations. | ||||
| * Fixed NetBSD port (Julio M. Merino Vidal  <jmmv@NetBSD.org>). | ||||
| * Fixed some warnings. | ||||
|  | ||||
| Mars 13, 2006: Overview of changes in 2.14.0 | ||||
| ============================================ | ||||
| * Updated translations. | ||||
|  | ||||
| February 27, 2006: Overview of changes in 2.13.92 | ||||
| ================================================= | ||||
| * Fixed proc_state documentation. | ||||
| * Updated mountlist ignore list. | ||||
|  | ||||
| January 23, 2006: Overview of changes in 2.13.3 | ||||
| =============================================== | ||||
| * linux: | ||||
| 	- fixe get_procmap for linux < 2.6.14. | ||||
|  | ||||
| January 2, 2006: Overview of changes in 2.13.2 | ||||
| ============================================== | ||||
| * Fixed libtool versioning (James Henstridge) | ||||
|  | ||||
| December 15, 2005: Overview of changes in 2.13.1 | ||||
| ================================================ | ||||
| * linux: | ||||
|     - fixed proclist | ||||
|     - implemented server->real_ncpu | ||||
|  | ||||
| December 13, 2005: Overview of changes in 2.13.0 | ||||
| ================================================ | ||||
| * Requires automake-1.9 (James Henstridge) | ||||
| * Supports up to 32 CPU | ||||
| * Supports Linux smaps | ||||
| * linux: fixed SMP detection | ||||
|  | ||||
| This release is not ABI compatible with previous releases. Sorry. | ||||
|  | ||||
| November 29, 2005: Overview of changes from 2.12.0 to 2.12.1 | ||||
| ============================================================ | ||||
| * Dropped dead files | ||||
| * linux: 1-line cleanup. | ||||
|  | ||||
| September 4, 2005: Overview of changes from 2.11.92 to 2.12.0 | ||||
| ============================================================= | ||||
| * Updated translations. | ||||
|  | ||||
| August 22, 2005: Overview of changes from 2.11.91 to 2.11.92 | ||||
| ============================================================ | ||||
| * Linux: | ||||
|   - fixed for 2.6 without /sys | ||||
|   - glibtop_get_cpu() : Do not add irq, softirq and iowait to idle. | ||||
|  | ||||
| August 9, 2005: Overview of changes from 2.11.90 to 2.11.91 | ||||
| =========================================================== | ||||
| * All: | ||||
|   - cleaned some headers. | ||||
|   - removed static examples. | ||||
| * Linux: | ||||
|   - fixed some issues with 2.6 without /sys | ||||
|  | ||||
| July 24, 2005: Overview of changes from 2.11.2 to 2.11.90 | ||||
| ========================================================= | ||||
| * Linux: | ||||
|   - fixed glibtop_uptime .flags. | ||||
|  | ||||
| July &3, 2005: Overview of changes from 2.11.1 to 2.11.2 | ||||
| ======================================================== | ||||
| * Linux: | ||||
|   - little improvements for 2.6. | ||||
|  | ||||
| July 3, 2005: Overview of changes from 2.11.0 to 2.11.1 | ||||
| ======================================================= | ||||
| * Linux: | ||||
|   - glibtop_get_swap : added page(in|out) for linux 2.6. | ||||
|  | ||||
| June 8, 2005: Overview of changes from 2.10.x to 2.11.0 | ||||
| ======================================================= | ||||
| * Replaced a lot of macros by functions | ||||
| * Got rid of dozens of useless files. | ||||
| * libgtop 2.11.x are and will stay API and ABI compatible with 2.10.x, i swear. | ||||
|  | ||||
| April 10, 2005: Overview of changes from 2.10.0 to 2.10.1 | ||||
| ========================================================= | ||||
| * Updated i18n. | ||||
| * Little cleanup and fixed gcc-4.0 compilation. | ||||
| * linux: fixed loadavg and uptime if locale != C. | ||||
|   Updated siglist. | ||||
| * Tighter libgtop-2.0.pc. | ||||
|  | ||||
| Mars 7, 2005: Overview of Changes from 2.9.92 to 2.10.0 | ||||
| ======================================================= | ||||
| * Updated i18n. | ||||
|  | ||||
| February 28, 2005: Overview of Changes from 2.9.90 to 2.9.92 | ||||
| ============================================================ | ||||
| * *BSD updated by marcus@freebsd.org (Joe Marcus Clarke). | ||||
| * Removed a lot of dead files :) | ||||
| * Don't build&install libgtop_daemon when it's never used. | ||||
|  | ||||
| February 6, 2004: Overview of Changes from 2.9.90 to 2.9.91 | ||||
| ========================================================== | ||||
| * Fixed typo in stub. | ||||
| * Updated i18n. | ||||
|  | ||||
| January 24, 2004: Overview of Changes from 2.9.4 to 2.9.90 | ||||
| ========================================================== | ||||
| * Updated Linux support. | ||||
|  | ||||
| January 10, 2004: Overview of Changes from 2.9.3 to 2.9.4 | ||||
| ========================================================= | ||||
| * New glibtop_proc_open_files nick@reloco.com.ar (Nicolás Lichtmaier). | ||||
| * Updated AIX support (Christophe Belle). | ||||
|  | ||||
| December 20, 2004: Overview of Changes from 2.9.0 to 2.9.3 | ||||
| ========================================================== | ||||
| * Removed libgtop_names. | ||||
| * Fixed Argument passing between library and server. #139809. | ||||
| * *BSD updated by marcus@freebsd.org (Joe Marcus Clarke). | ||||
| * glibtop_get_mountlist(False) now ignores 'unknown' fs. | ||||
|  | ||||
|  | ||||
| November 30, 2004: Overview of Changes from 2.8.1 to 2.9.0 | ||||
| ========================================================= | ||||
| * glibtop_get_netload : Fixed segfault on linux with ppp devices. | ||||
| * NEW glibtop_get_netlist : retrieves the list of all available interfaces. | ||||
| * NEW LIBGTOP_CHECK_VERSION(major, minor, micro) | ||||
| * Removed dead kernel patch and implementation. | ||||
| * Cleanups on Linux and Solaris. | ||||
|  | ||||
| October 11, 2004: Overview of Changes from 2.8.0 to 2.8.1 | ||||
| ========================================================= | ||||
| * Improved Solaris and AIX support. | ||||
|  | ||||
|  | ||||
| August 13, 2004: Overview of Changes from 2.7.92 to 2.8.0 | ||||
| ========================================================= | ||||
| * No changes | ||||
|  | ||||
|  | ||||
| August 30, 2004: | ||||
| =============== | ||||
| * Applied some *BSD patches. | ||||
| * Removed old files. | ||||
|  | ||||
|  | ||||
| August 15, 2004: | ||||
| =============== | ||||
| * Fixed compilation with C89-only compilers and old libc. | ||||
|  | ||||
|  | ||||
| August 3, 2004: | ||||
| ============== | ||||
| * Some cleanups. | ||||
| * Fixed the behaviour of some linux proc_*() functions. | ||||
| * Updated the documentation. | ||||
|  | ||||
|  | ||||
| July 19, 2004: Overview of Changes from 2.6.1 to 2.7.4 | ||||
| ====================================================== | ||||
| * Plenty of code cleanups. Uninlined a lot of functions. ~5-10KB object size | ||||
|   reduction. | ||||
| * Glibify a bit more. | ||||
| * API changes: | ||||
|  - glibtop_fsusage provides total read and writes since boot_time. | ||||
|  - glibtop_netload provides hardware address. IPv6 enable. | ||||
|  - Added glibtop_get_proc_argv. | ||||
|  | ||||
| Work in progress : | ||||
| * Finish glibtop_fsusage implementation for Linux. | ||||
| * Some fuctions don't conform to the documentation, e.g. proctime. | ||||
|  | ||||
| March 11, 2004: | ||||
| =============== | ||||
|  | ||||
| * Released LibGTop 2.5.99 "Gross Work", dedicated to people who do push-ups | ||||
|   in the loos. | ||||
|  | ||||
|   - plenty of code cleanups | ||||
|  | ||||
|   - removed the dependency on libgnome, only glib required now | ||||
|  | ||||
|   - Linux 2.6 support, NetBSD support and better FreeBSD support | ||||
|  | ||||
|   - Make the block size available for filesystem statistics | ||||
|  | ||||
| February 27, 2001: | ||||
| ================= | ||||
|  | ||||
|   | ||||
							
								
								
									
										16
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README
									
									
									
									
									
								
							| @@ -1,8 +1,20 @@ | ||||
| $Id$ | ||||
|  | ||||
| LATEST NEWS: | ||||
| =========== | ||||
|  | ||||
| Please look also in the file 'NEWS' for latest news. | ||||
|   | ||||
| Martin | ||||
|  | ||||
|  | ||||
| ChangeLogs: | ||||
| ========== | ||||
|  | ||||
| LibGTop has many ChangeLogs files. The following files are the the | ||||
| most important : | ||||
|  | ||||
| - ChangeLog is the main ChangeLog. | ||||
| - sysdeps/<arch>/ChangeLog is the ChangeLog for arch specific changes. | ||||
| - sysdeps/common/ChangeLog is the ChangeLog for common changes (shared | ||||
|   implementation between archs). | ||||
|  | ||||
| Benoît | ||||
|   | ||||
							
								
								
									
										146
									
								
								RELNOTES-0.25
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								RELNOTES-0.25
									
									
									
									
									
								
							| @@ -1,146 +0,0 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 0.25 STABLE | ||||
| ===================================== | ||||
|  | ||||
| OVERVIEW | ||||
| -------- | ||||
|  | ||||
| LibGTop is a library that read information about processes and the running | ||||
| systems. This information include: | ||||
|  | ||||
| General System Information | ||||
|  | ||||
| cpu		- CPU Usage | ||||
| mem		- Memory Usage | ||||
| swap		- Swap Usage (including paging activity) | ||||
| loadavg		- Load average (including nr_running, nr_tasks, last_pid) | ||||
| uptime		- Uptime and Idle time, can be calculated from CPU usage | ||||
|  | ||||
| SYS V IPC Limits: | ||||
|  | ||||
| shm_limits	- Shared Memory Limits | ||||
| msg_limits	- Message Queue Limits | ||||
| sem_limits	- Semaphore Set Limits | ||||
|  | ||||
| Process List: | ||||
|  | ||||
| proclist	- List of processes | ||||
|  | ||||
| Process information: | ||||
|  | ||||
| proc_state	- cmd, state, uid, gid | ||||
| proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp | ||||
| 		  session,tty,tpgid,priority,nice | ||||
| proc_mem	- size,vsize,resident,share,rss,rss_rlim | ||||
| proc_time	- start_time,rtime,utime,stime,cutime,cstime | ||||
| 		  timeout,it_real_value,frequency | ||||
| proc_signal	- signal,blocked,sigignore,sigcatch | ||||
| proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt | ||||
| 		  kstk_esp,kstk_eip,nwchan,wchan | ||||
| proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size | ||||
| 		  start_code,end_code,start_stack | ||||
|  | ||||
| Process maps: | ||||
|  | ||||
| proc_map	- Process map (/proc/<pid>/maps under Linux) | ||||
|  | ||||
| File system usage: | ||||
|  | ||||
| mountlist	- List of currently mounted filesystems | ||||
| fsusage		- File system usage | ||||
|  | ||||
| PORTABILITY: | ||||
| ----------- | ||||
|  | ||||
| LibGtop is designed to be as portable as possible. None of the functions | ||||
| and retrieved information should be specific to a specific operating | ||||
| system. So you only need to port the system dependent part of the library | ||||
| to a new system and all application programs can then use libgtop on this | ||||
| new system. | ||||
|  | ||||
| CLIENT/SERVER MODEL: | ||||
| ------------------- | ||||
|  | ||||
| Some systems like DEC OSF/1 or BSD require special priviledges for the calling | ||||
| proces to fetch the required information (SUID root/SGID kmem). To solve this | ||||
| problem, I designed a client/server model which makes a call to a SUID/SGID | ||||
| server which fetches the required information whenever it is required. This | ||||
| server is only called for features that really require priviledges, otherwise | ||||
| the sysdeps code is called directory (every user can get the CPU usage on | ||||
| DEC OSF/1, but only root can get information about processes other than the | ||||
| current one). | ||||
|  | ||||
| There is also some kind of daemon which can be used to fetch information from | ||||
| remote systems (still experimental). This daemon normally runs as nobody and | ||||
| calls the SUID/SGID itself when needed. | ||||
|  | ||||
| GNOME APPLETS: | ||||
| -------------- | ||||
|  | ||||
| There are some applets and applications which already use LibGTop. They can | ||||
| be found in the `libgtop-apps' module in the GNOME CVS tree: | ||||
|  | ||||
| * Applets:  cpuload, cpumemusage - they need LibGTop to get their information | ||||
|                                    on all systems other than Linux. | ||||
|  | ||||
| * Applets:  diskusage - just uses the mountlist/fsusage features of LibGTop, | ||||
|                         the one in gnome-core also works on other systems. | ||||
|  | ||||
| * Applets:  multiload - I enhanced the cpuload applet a little bit, it is | ||||
|                         now a multi applet and can display CPU, Memory and | ||||
|                         Swap usages. | ||||
|  | ||||
| GTOP: | ||||
| ---- | ||||
|  | ||||
| This cool GNOME app has been ported to use LibGTop. It can be found in | ||||
| `libgtop-apps/gtop' in the GNOME CVS tree. | ||||
|  | ||||
| You can now use nearly the full functionality of GTop on FreeBSD ! | ||||
|  | ||||
|  | ||||
| PLATTFORM SPECIFIC NOTES FOR LINUX: | ||||
| ================================== | ||||
|  | ||||
| Under Linux, LibGTop should work without problems and read everything | ||||
| from /proc. | ||||
|  | ||||
| There is also an experimental kernel interface to read this information | ||||
| directly from the kernel with a system call - but this is still experimental | ||||
| and not well tested while I made this release. | ||||
|  | ||||
| PLATTFORM SPECIFIC NOTES FOR FREEBSD: | ||||
| ==================================== | ||||
|  | ||||
| LibGTop should now work under FreeBSD and give you the full functionality | ||||
| of GTop. | ||||
|  | ||||
| There are a few caveats: | ||||
|  | ||||
| * You need to manually make the `$(prefix)/bin/libgtop_server' SGID to kmem | ||||
|   after installation and mount the /proc filesystem of FreeBSD | ||||
|   (/proc/<pid>/mem is used withing kvm_uread ()). | ||||
|  | ||||
| * To get the filenames of the process maps displayed in GTop, you need to | ||||
|   configure with the `--with-libgtop-inodedb' option (you need GDBM for this | ||||
|   to work). | ||||
|  | ||||
| * You have then to create an inode database which is used to look up to | ||||
|   filenames. This is done using the `mkinodedb' program which comes along | ||||
|   with libgtop. | ||||
|  | ||||
|   See the file src/inodedb/README for details: | ||||
|  | ||||
|   The `mkinodedb' program which is build in this directory takes two | ||||
|   command line arguments: the full pathname of the database to be created | ||||
|   and the name of a configuration file consisting of directory and file names | ||||
|   each on a line by itself - see `/etc/ld.so.conf' for an example. | ||||
|  | ||||
|   Putting a directory name in this file means all regular files found in this | ||||
|   directory are included in the database, but it will not recursively descend | ||||
|   into subdirectories (for instance, we want everythink in `/usr/lib' but not | ||||
|   every single file in `/usr/lib/sgml'). You can also use filenames to include | ||||
|   a single file. | ||||
|  | ||||
| Have fun, | ||||
|  | ||||
| Martin <martin@home-of-linux.org> | ||||
							
								
								
									
										163
									
								
								RELNOTES-1.0
									
									
									
									
									
								
							
							
						
						
									
										163
									
								
								RELNOTES-1.0
									
									
									
									
									
								
							| @@ -1,163 +0,0 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 1.0 STABLE | ||||
| ==================================== | ||||
|  | ||||
| OVERVIEW | ||||
| -------- | ||||
|  | ||||
| LibGTop is a library that read information about processes and the | ||||
| running systems. This information include: | ||||
|  | ||||
| General System Information: | ||||
|  | ||||
| cpu		- CPU Usage | ||||
| mem		- Memory Usage | ||||
| swap		- Swap Usage (including paging activity) | ||||
| loadavg		- Load average (including nr_running, nr_tasks, last_pid) | ||||
| uptime		- Uptime and Idle time, can be calculated from CPU usage | ||||
|  | ||||
| SYS V IPC Limits: | ||||
|  | ||||
| shm_limits	- Shared Memory Limits | ||||
| msg_limits	- Message Queue Limits | ||||
| sem_limits	- Semaphore Set Limits | ||||
|  | ||||
| Network: | ||||
|  | ||||
| netload		- Network load | ||||
| ppp		- PPP statistics | ||||
|  | ||||
| Process List: | ||||
|  | ||||
| proclist	- List of processes | ||||
|  | ||||
| Process information: | ||||
|  | ||||
| proc_state	- cmd, state, uid, gid | ||||
| proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp | ||||
| 		  session,tty,tpgid,priority,nice | ||||
| proc_mem	- size,vsize,resident,share,rss,rss_rlim | ||||
| proc_time	- start_time,rtime,utime,stime,cutime,cstime | ||||
| 		  timeout,it_real_value,frequency | ||||
| proc_signal	- signal,blocked,sigignore,sigcatch | ||||
| proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt | ||||
| 		  kstk_esp,kstk_eip,nwchan,wchan | ||||
| proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size | ||||
| 		  start_code,end_code,start_stack | ||||
|  | ||||
| Process maps: | ||||
|  | ||||
| proc_args	- Command line arguments | ||||
| proc_map	- Process map (/proc/<pid>/maps under Linux) | ||||
|  | ||||
| File system usage: | ||||
|  | ||||
| mountlist	- List of currently mounted filesystems | ||||
| fsusage		- File system usage | ||||
|  | ||||
| PORTABILITY: | ||||
| ----------- | ||||
|  | ||||
| LibGTop is designed to be as portable as possible. None of the | ||||
| functions and retrieved information should be specific to a specific | ||||
| operating system. So you only need to port the system dependent part | ||||
| of the library to a new system and all application programs can then | ||||
| use libgtop on this new system. | ||||
|  | ||||
| CLIENT/SERVER MODEL: | ||||
| ------------------- | ||||
|  | ||||
| Some systems like DEC OSF/1 or BSD require special privileges for the | ||||
| calling process to fetch the required information (SUID root/SGID | ||||
| kmem). To solve this problem, I designed a client/server model which | ||||
| makes a call to a SUID/SGID server which fetches the required | ||||
| information whenever it is required. This server is only called for | ||||
| features that really require privileges, otherwise the sysdeps code | ||||
| is called directory (every user can get the CPU usage on DEC OSF/1, | ||||
| but only root can get information about processes other than the | ||||
| current one). | ||||
|  | ||||
| There is also some kind of daemon which can be used to fetch | ||||
| information from remote systems (still experimental). This daemon | ||||
| normally runs as nobody and calls the SUID/SGID itself when needed. | ||||
|  | ||||
| LIBGTOP AND GNOME: | ||||
| ----------------- | ||||
|  | ||||
| LibGTop is currently used in various places in the GNOME Project, | ||||
| for instance in some of the applets in gnome-core and - of cause - | ||||
| this ultra-cool application called GTop ... | ||||
|  | ||||
| Although LibGTop is not specific to GNOME and under GPL license, I | ||||
| spent most my time during the last months to work in the GNOME project | ||||
| so this is the primary use for LibGTop (and currently the only one). | ||||
|  | ||||
| However, you can also give its configure.in script the `--without-gnome' | ||||
| parameter and then use it fully without GNOME in your own applications. | ||||
|  | ||||
| LIBGTOP AND GNOME - PART II: | ||||
| --------------------------- | ||||
|  | ||||
| LibGTop was tested with FreeBSD 3.0 but it should also work with | ||||
| FreeBSD 2.2.7, NetBSD and OpenBSD. | ||||
|  | ||||
| Currently my primary aim is to help the GNOME people with our 1.0 release | ||||
| so I won't have much time to test it with any other system than Linux. | ||||
|  | ||||
| However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for | ||||
| LibGTop and whenever I get bug reports I will do my best to fix them as | ||||
| quickly as possible. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR LINUX: | ||||
| ================================== | ||||
|  | ||||
| Under Linux, LibGTop should work without problems and read everything | ||||
| from /proc. | ||||
|  | ||||
| LibGTop 0.25 also had an experimental kernel interface to read this | ||||
| information directly from the kernel with a system call - but I have | ||||
| currently dropped support for this as I am too busy with GNOME | ||||
| development to keep current with kernel hacking. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR SOLARIS: | ||||
| ==================================== | ||||
|  | ||||
| Since so many people were asking me about this: | ||||
|  | ||||
| LibGTop currently does not have any support for Solaris, and it will | ||||
| never have until some volunteer writes the code for it. I can't do this | ||||
| myself since I do not have any machine to test it on. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR BSD: | ||||
| ================================= | ||||
|  | ||||
| There are a few caveats: | ||||
|  | ||||
| * You need to manually make the `$(prefix)/bin/libgtop_server' SGID to | ||||
|   kmem after installation and mount the /proc file system of FreeBSD | ||||
|   (/proc/<pid>/mem is used within kvm_uread ()). | ||||
|  | ||||
| * To get the filenames of the process maps displayed in GTop, you need | ||||
|   to configure with the `--with-libgtop-inodedb' option (you need GDBM | ||||
|   for this to work). | ||||
|  | ||||
|   You have then to create an inode database which is used to look up | ||||
|   filenames. This is done using the `mkinodedb' program which comes | ||||
|   along with libgtop. | ||||
|  | ||||
|   See the file src/inodedb/README for details: | ||||
|  | ||||
|   The `mkinodedb' program which is build in this directory takes two | ||||
|   command line arguments: the full pathname of the database to be | ||||
|   created and the name of a configuration file consisting of directory | ||||
|   and file names each on a line by itself - see `/etc/ld.so.conf' for | ||||
|   an example. | ||||
|  | ||||
|   Putting a directory name in this file means all regular files found | ||||
|   in this directory are included in the database, but it will not | ||||
|   recursively descend into subdirectories (for instance, we want | ||||
|   everything in `/usr/lib' but not every single file in `/usr/lib/sgml'). | ||||
|   You can also use filenames to include a single file. | ||||
|  | ||||
| Have fun, | ||||
|  | ||||
| Martin <martin@home-of-linux.org> | ||||
							
								
								
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
								
							| @@ -1,172 +0,0 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 1.0.7 | ||||
| =============================== | ||||
|  | ||||
| OVERVIEW | ||||
| -------- | ||||
|  | ||||
| LibGTop is a library that read information about processes and the | ||||
| running systems. This information include: | ||||
|  | ||||
| General System Information: | ||||
|  | ||||
| cpu		- CPU Usage | ||||
| mem		- Memory Usage | ||||
| swap		- Swap Usage (including paging activity) | ||||
| loadavg		- Load average (including nr_running, nr_tasks, last_pid) | ||||
| uptime		- Uptime and Idle time, can be calculated from CPU usage | ||||
|  | ||||
| SYS V IPC Limits: | ||||
|  | ||||
| shm_limits	- Shared Memory Limits | ||||
| msg_limits	- Message Queue Limits | ||||
| sem_limits	- Semaphore Set Limits | ||||
|  | ||||
| Network: | ||||
|  | ||||
| netload		- Network load | ||||
| ppp		- PPP statistics | ||||
|  | ||||
| Process List: | ||||
|  | ||||
| proclist	- List of processes | ||||
|  | ||||
| Process information: | ||||
|  | ||||
| proc_state	- cmd, state, uid, gid | ||||
| proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp | ||||
| 		  session,tty,tpgid,priority,nice | ||||
| proc_mem	- size,vsize,resident,share,rss,rss_rlim | ||||
| proc_time	- start_time,rtime,utime,stime,cutime,cstime | ||||
| 		  timeout,it_real_value,frequency | ||||
| proc_signal	- signal,blocked,sigignore,sigcatch | ||||
| proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt | ||||
| 		  kstk_esp,kstk_eip,nwchan,wchan | ||||
| proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size | ||||
| 		  start_code,end_code,start_stack | ||||
|  | ||||
| Process maps: | ||||
|  | ||||
| proc_args	- Command line arguments | ||||
| proc_map	- Process map (/proc/<pid>/maps under Linux) | ||||
|  | ||||
| File system usage: | ||||
|  | ||||
| mountlist	- List of currently mounted filesystems | ||||
| fsusage		- File system usage | ||||
|  | ||||
| PORTABILITY: | ||||
| ----------- | ||||
|  | ||||
| LibGTop is designed to be as portable as possible. None of the | ||||
| functions and retrieved information should be specific to a specific | ||||
| operating system. So you only need to port the system dependent part | ||||
| of the library to a new system and all application programs can then | ||||
| use libgtop on this new system. | ||||
|  | ||||
| CLIENT/SERVER MODEL: | ||||
| ------------------- | ||||
|  | ||||
| Some systems like DEC OSF/1 or BSD require special privileges for the | ||||
| calling process to fetch the required information (SUID root/SGID | ||||
| kmem). To solve this problem, I designed a client/server model which | ||||
| makes a call to a SUID/SGID server which fetches the required | ||||
| information whenever it is required. This server is only called for | ||||
| features that really require privileges, otherwise the sysdeps code | ||||
| is called directory (every user can get the CPU usage on DEC OSF/1, | ||||
| but only root can get information about processes other than the | ||||
| current one). | ||||
|  | ||||
| There is also some kind of daemon which can be used to fetch | ||||
| information from remote systems (still experimental). This daemon | ||||
| normally runs as nobody and calls the SUID/SGID itself when needed. | ||||
|  | ||||
| LIBGTOP AND GNOME: | ||||
| ----------------- | ||||
|  | ||||
| Although LibGTop is part of the GNOME desktop environment, its main | ||||
| interface is totally independent from any particular desktop environment, | ||||
| so you can also use it as a standalone library in any piece of GPLed | ||||
| software which makes it also a valuable part of the GNU project. | ||||
|  | ||||
| LibGTop is currently used in various places in the GNOME Project, | ||||
| for instance in some of the applets in gnome-core and - of cause - | ||||
| this ultra-cool application called GTop ... | ||||
|  | ||||
| However, you need to give the configure.in script the `--without-gnome' | ||||
| parameter when you want to use LibGTop without GNOME (this is because, | ||||
| if you want to use it with GNOME, you need to compile it after the main | ||||
| GNOME libraries and I wanted to avoid getting unnecessary bug reports | ||||
| about this). | ||||
|  | ||||
| LIBGTOP AND GNOME - PART II: | ||||
| --------------------------- | ||||
|  | ||||
| LibGTop was tested with FreeBSD 3.0 but it should also work with | ||||
| FreeBSD 2.2.7, NetBSD and OpenBSD. | ||||
|  | ||||
| Unfortunately, I don't have the power and disk space to install all | ||||
| possible operating systems out there on my machine and test things myself, | ||||
| so I depend on people telling me whether it works and sending me bug | ||||
| reports and patches if not. | ||||
|  | ||||
| However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for | ||||
| LibGTop and whenever I get bug reports I will do my best to fix them as | ||||
| quickly as possible. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR LINUX: | ||||
| ================================== | ||||
|  | ||||
| [I am speaking of the Linux kernel here.] | ||||
|  | ||||
| Under Linux, LibGTop should work without problems and read everything | ||||
| from /proc. | ||||
|  | ||||
| LibGTop 0.25 also had an experimental kernel interface to read this | ||||
| information directly from the kernel with a system call - but I have | ||||
| currently dropped support for this as I am too busy with GNOME | ||||
| development to keep current with kernel hacking. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR SOLARIS: | ||||
| ==================================== | ||||
|  | ||||
| The development branch of LibGTop (the 1.1.x series) has a first version | ||||
| of the Solaris port which works at least on Solaris 7. | ||||
|  | ||||
| If you are on a Solaris system and want to give it a try, just fetch the | ||||
| latest 1.1.x tarball from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/ | ||||
| and try it out. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR BSD: | ||||
| ================================= | ||||
|  | ||||
| There are a few caveats: | ||||
|  | ||||
| * You need to manually make the `$(prefix)/bin/libgtop_server' SGID to | ||||
|   kmem after installation and mount the /proc file system of FreeBSD | ||||
|   (/proc/<pid>/mem is used within kvm_uread ()). | ||||
|  | ||||
| * To get the filenames of the process maps displayed in GTop, you need | ||||
|   to configure with the `--with-libgtop-inodedb' option (you need GDBM | ||||
|   for this to work). | ||||
|  | ||||
|   You have then to create an inode database which is used to look up | ||||
|   filenames. This is done using the `mkinodedb' program which comes | ||||
|   along with libgtop. | ||||
|  | ||||
|   See the file src/inodedb/README for details: | ||||
|  | ||||
|   The `mkinodedb' program which is build in this directory takes two | ||||
|   command line arguments: the full pathname of the database to be | ||||
|   created and the name of a configuration file consisting of directory | ||||
|   and file names each on a line by itself - see `/etc/ld.so.conf' for | ||||
|   an example. | ||||
|  | ||||
|   Putting a directory name in this file means all regular files found | ||||
|   in this directory are included in the database, but it will not | ||||
|   recursively descend into subdirectories (for instance, we want | ||||
|   everything in `/usr/lib' but not every single file in `/usr/lib/sgml'). | ||||
|   You can also use filenames to include a single file. | ||||
|  | ||||
| Have fun, | ||||
|  | ||||
| Martin <martin@home-of-linux.org> | ||||
| @@ -1,50 +0,0 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 1.1.2 | ||||
| =============================== | ||||
|  | ||||
| This is a snapshot release for Solaris users of October GNOME. It contains | ||||
| a first version of the Solaris port of LibGTop which works at least on | ||||
| Solaris 7. | ||||
|  | ||||
| Please use LibGTop 1.0.x if you're not on a Solaris system | ||||
| (look at the README file for details). | ||||
|  | ||||
| IMPORTANT CHANGES SINCE 1.0: | ||||
| ---------------------------- | ||||
|  | ||||
| * All `glibtop_get_<feature>_* ()' and all `glibtop_init_<feature>_* ()' | ||||
|   functions now have an `int' return value and return 0 on success and -1 | ||||
|   on failure. | ||||
|  | ||||
| * glibtop_cpu: Added `xcpu_flags' | ||||
|  | ||||
| * glibtop_proc_state: Changed `state' from char to unsigned and added | ||||
|     GLIBTOP_PROCESS_RUNNING, GLIBTOP_PROCESS_INTERRUPTIBLE, | ||||
|     GLIBTOP_PROCESS_UNINTERRUPTIBLE,  GLIBTOP_PROCESS_ZOMBIE, | ||||
|     GLIBTOP_PROCESS_STOPPED, GLIBTOP_PROCESS_SWAPPING constants for it. | ||||
|  | ||||
| * `GLIBTOP_MOUNTENTRY_LEN' and `GLIBTOP_MAX_GROUPS' are now defined in | ||||
|   <glibtop/limits.h> | ||||
|  | ||||
| * Removed the `GLIBTOP_SYSDEPS_FEATURES' and `GLIBTOP_SYSDEPS_POINTER_SIZE' | ||||
|   constants from <glibtop/sysdeps.h> and let numbering start at zero for | ||||
|   `GLIBTOP_SYSDEPS_CPU'. | ||||
|  | ||||
| OTHER CHANGES SINCE 1.0: | ||||
| ----------------------- | ||||
|  | ||||
| * Use G_GNUC_UNUSED in <glibtop/error.h> to avoid compiler warnings. | ||||
|  | ||||
| * The `libgtop-config' script now accepts `--cflags', `--libs' and | ||||
|   `--extra-libs' parameter. | ||||
|  | ||||
| * The libraries are now called -lgtop-1.1 etc. so you can use 1.0.x and | ||||
|   1.1.x in parallel. | ||||
|  | ||||
| CHANGES SINCE 1.0 MAINLY INTERESTING FOR DEVELOPERS: | ||||
| --------------------------------------------------- | ||||
|  | ||||
| * We create a `glibtop-config.h' now which gets included from <glibtop.h> | ||||
|   when we're _IN_LIBGTOP. It contains things such as `u_int64_t' etc. | ||||
|  | ||||
| October 1999 | ||||
| Martin Baulig | ||||
							
								
								
									
										170
									
								
								acconfig.h
									
									
									
									
									
								
							
							
						
						
									
										170
									
								
								acconfig.h
									
									
									
									
									
								
							| @@ -1,170 +0,0 @@ | ||||
|  | ||||
| /* Define if gethostname () must be declared. */ | ||||
| #undef NEED_DECLARATION_GETHOSTNAME | ||||
|  | ||||
| /* Define if setreuid () must be declared. */ | ||||
| #undef NEED_DECLARATION_SETREUID | ||||
|  | ||||
| /* Define if setregid () must be declared. */ | ||||
| #undef NEED_DECLARATION_SETREGID | ||||
|  | ||||
| /* Define if getpagesize () must be declared. */ | ||||
| #undef NEED_DECLARATION_GETPAGESIZE | ||||
|  | ||||
| /* Define if program_invocation_name must be declared. */ | ||||
| #undef NEED_DECLARATION_PROGRAM_INVOCATION_NAME | ||||
|  | ||||
| @TOP@ | ||||
|  | ||||
| #undef ENABLE_NLS | ||||
| #undef HAVE_CATGETS | ||||
| #undef GETTEXT_PACKAGE | ||||
| #undef HAVE_GETTEXT | ||||
| #undef HAVE_LC_MESSAGES | ||||
| #undef HAVE_STPCPY | ||||
| #undef HAVE_STRUCT_OSOCKADDR | ||||
| #undef PACKAGE | ||||
| #undef VERSION | ||||
| #undef HAVE_LIBSM | ||||
| #undef HAVE_LIBINTL_H | ||||
| #undef HAVE_GTK_SIGNAL_HANDLER_PENDING | ||||
|  | ||||
| /* Do not remove this comments and the empty lines; they are needed */ | ||||
| #undef HAVE_PROGRAM_INVOCATION_SHORT_NAME | ||||
| /* Define if you have the Andrew File System.  */ | ||||
| #undef AFS | ||||
|  | ||||
| /* Define one of the following to indicate how a program can | ||||
|    get a list of mounted filesystems.  */ | ||||
|  | ||||
| /* Define if there is no specific function for reading the list of | ||||
|    mounted filesystems.  fread will be used to read /etc/mnttab.  [SVR2]  */ | ||||
| #undef MOUNTED_FREAD | ||||
|  | ||||
| /* Define if (like SVR2) there is no specific function for reading the | ||||
|    list of mounted filesystems, and your system has these header files: | ||||
|    <sys/fstyp.h> and <sys/statfs.h>.  [SVR3]  */ | ||||
| #undef MOUNTED_FREAD_FSTYP | ||||
|  | ||||
| /* Define if there is a function named getfsstat for reading the list | ||||
|    of mounted filesystems.  [DEC Alpha running OSF/1]  */ | ||||
| #undef MOUNTED_GETFSSTAT | ||||
|  | ||||
| /* Define if there is a function named getmnt for reading the list of | ||||
|    mounted filesystems.  [Ultrix]  */ | ||||
| #undef MOUNTED_GETMNT | ||||
|  | ||||
| /* Define if there is a function named getmntent for reading the list | ||||
|    of mounted filesystems, and that function takes a single argument. | ||||
|    [4.3BSD, SunOS, HP-UX, Dynix, Irix]  */ | ||||
| #undef MOUNTED_GETMNTENT1 | ||||
|  | ||||
| /* Define if there is a function named getmntent for reading the list of | ||||
|    mounted filesystems, and that function takes two arguments.  [SVR4]  */ | ||||
| #undef MOUNTED_GETMNTENT2 | ||||
|  | ||||
| /* Define if there is a function named getmntinfo for reading the list | ||||
|    of mounted filesystems.  [4.4BSD]  */ | ||||
| #undef MOUNTED_GETMNTINFO | ||||
|  | ||||
| /* Define if there is a function named listmntent that can be used to | ||||
|    list all mounted filesystems. [UNICOS] */ | ||||
| #undef MOUNTED_LISTMNTENT | ||||
|  | ||||
| /* Define if there is a function named mntctl that can be used to read | ||||
|    the list of mounted filesystems, and there is a system header file | ||||
|    that declares `struct vmount.'  [AIX]  */ | ||||
| #undef MOUNTED_VMOUNT | ||||
|  | ||||
| /* Define one of the following to indicate how a program can obtain | ||||
|    filesystems usage information.  */ | ||||
|  | ||||
| /*  Define if  statfs takes 3 args.  [DEC Alpha running OSF/1]  */ | ||||
| #undef STAT_STATFS3_OSF1 | ||||
|  | ||||
| /* Define if there is no specific function for reading filesystems usage | ||||
|    information and you have the <sys/filsys.h> header file.  [SVR2]  */ | ||||
| #undef STAT_READ_FILSYS | ||||
|  | ||||
| /* Define if statfs takes 2 args and struct statfs has a field named f_bsize. | ||||
|    [4.3BSD, SunOS 4, HP-UX, AIX PS/2]  */ | ||||
| #undef STAT_STATFS2_BSIZE | ||||
|  | ||||
| /* Define if statfs takes 2 args and struct statfs has a field named f_fsize. | ||||
|    [4.4BSD, NetBSD]  */ | ||||
| #undef STAT_STATFS2_FSIZE | ||||
|  | ||||
| /* Define if statfs takes 2 args and the second argument has | ||||
|    type struct fs_data.  [Ultrix]  */ | ||||
| #undef STAT_STATFS2_FS_DATA | ||||
|  | ||||
| /* Define if statfs takes 4 args.  [SVR3, Dynix, Irix, Dolphin]  */ | ||||
| #undef STAT_STATFS4 | ||||
|  | ||||
| /* Define if there is a function named statvfs.  [SVR4]  */ | ||||
| #undef STAT_STATVFS | ||||
|  | ||||
| /* Define if the block counts reported by statfs may be truncated to 2GB | ||||
|    and the correct values may be stored in the f_spare array. | ||||
|    [SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. | ||||
|    SunOS 4.1.1 seems not to be affected.]  */ | ||||
| #undef STATFS_TRUNCATES_BLOCK_COUNTS | ||||
|  | ||||
|  | ||||
| /* to fix a bug in autoheader on DEC OSF1. */ | ||||
| #undef HAVE_PROGRAM_INVOCATION_NAME | ||||
|  | ||||
| #undef HAVE_SOCKETS | ||||
| #undef HAVE_SOCKADDR_SUN_LEN | ||||
|  | ||||
| #undef HAVE_LIBJPEG | ||||
| #undef HAVE_LIBGIF | ||||
| #undef HAVE_LIBTIFF | ||||
| #undef HAVE_LIBZ | ||||
| #undef HAVE_LIBPNG | ||||
| #undef HAVE_GMP2_INCLUDE_DIR | ||||
| #undef HAVE_GUILE | ||||
|  | ||||
| #undef ssize_t | ||||
| #undef u_int64_t | ||||
| #undef int64_t | ||||
|  | ||||
| #undef HAVE_GLIBTOP_MACHINE_H | ||||
|  | ||||
| #undef GLIBTOP_NAMES | ||||
| #undef GLIBTOP_GUILE | ||||
| #undef GLIBTOP_GUILE_NAMES | ||||
| #undef GLIBTOP_EXAMPLES | ||||
| #undef GLIBTOP_INODEDB | ||||
|  | ||||
| #undef NEED_LIBGTOP | ||||
|  | ||||
| #undef HAVE_LINUX_TABLE | ||||
| #undef HAVE_LIBGTOP_SMP | ||||
|  | ||||
| #undef HAVE_XAUTH | ||||
|  | ||||
| /* Define if your have the I4B package. */ | ||||
| #undef HAVE_I4B | ||||
| #undef HAVE_I4B_ACCT | ||||
|  | ||||
| /* Define to enable debugging. */ | ||||
| #undef LIBGTOP_ENABLE_DEBUG | ||||
| #undef LIBGTOP_FATAL_WARNINGS | ||||
|  | ||||
| /* Same as LINUX_VERSION_CODE either from <linux/version.h> or from | ||||
|  * the running kernel (if we don't have configured kernel sources). | ||||
|  */ | ||||
| #undef GLIBTOP_LINUX_VERSION_CODE | ||||
|  | ||||
| /* Solaris release code (eg. 251 for Solaris 2.5.1). */ | ||||
| #undef GLIBTOP_SOLARIS_RELEASE | ||||
|  | ||||
| /* Define if you want to use LibGTop without GNOME. */ | ||||
| #undef WITHOUT_GNOME | ||||
|  | ||||
| /* Define if you have the <procfs.h> header file */ | ||||
| #undef HAVE_PROCFS_H | ||||
|  | ||||
| /* Define if you have the <sys/procfs.h> header file */ | ||||
| #undef HAVE_SYS_PROCFS_H | ||||
							
								
								
									
										433
									
								
								acinclude.m4
									
									
									
									
									
								
							
							
						
						
									
										433
									
								
								acinclude.m4
									
									
									
									
									
								
							| @@ -30,7 +30,7 @@ changequote([,]), [#include <sys/types.h> | ||||
| ], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl | ||||
| AC_MSG_RESULT($ac_cv_type_$1) | ||||
| if test $ac_cv_type_$1 = no; then | ||||
|   AC_DEFINE($1, $2) | ||||
|   AC_DEFINE($1, $2, [Define to $2 if <sys/types.h> does not define.]) | ||||
| fi | ||||
| ]) | ||||
|  | ||||
| @@ -43,8 +43,6 @@ dnl | ||||
| AC_DEFUN([GNOME_LIBGTOP_TYPES], | ||||
| [ | ||||
|         AC_CHECK_HEADERS(sys/bitypes.h) | ||||
|         AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int) | ||||
|         AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int) | ||||
| ]) | ||||
|  | ||||
| dnl See whether we need a declaration for a function. | ||||
| @@ -74,7 +72,7 @@ if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then | ||||
|   AC_MSG_RESULT(yes) | ||||
|   gcc_need_declarations="$gcc_need_declarations $1" | ||||
|   gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|   AC_DEFINE_UNQUOTED($gcc_tr_decl) | ||||
|   AC_DEFINE_UNQUOTED($gcc_tr_decl, 1, [Define if $1 () must be declared.]) | ||||
| else | ||||
|   AC_MSG_RESULT(no) | ||||
| fi | ||||
| @@ -159,7 +157,8 @@ yes | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent) | ||||
| if test $fu_cv_sys_mounted_cray_listmntent = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_LISTMNTENT) | ||||
| AC_DEFINE(MOUNTED_LISTMNTENT, 1, | ||||
|           [Define if there is a function named listmntent that can be used to list all mounted filesystems. [UNICOS]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -178,7 +177,8 @@ AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) | ||||
| if test $fu_cv_sys_mounted_getmntent1 = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTENT1) | ||||
| AC_DEFINE(MOUNTED_GETMNTENT1, 1, | ||||
|           [Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes a single argument. [4.3BSD, SunOS, HP-UX, Dynix, Irix]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -192,7 +192,8 @@ fu_cv_sys_mounted_getmntent2=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) | ||||
| if test $fu_cv_sys_mounted_getmntent2 = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTENT2) | ||||
| AC_DEFINE(MOUNTED_GETMNTENT2, 1, | ||||
|           [Define if there is a function named getmntent for reading the list of mounted filesystems, and that function takes two arguments.  [SVR4]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -217,7 +218,8 @@ fu_cv_sys_mounted_getsstat=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) | ||||
| if test $fu_cv_sys_mounted_getsstat = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETFSSTAT) | ||||
| AC_DEFINE(MOUNTED_GETFSSTAT, 1, | ||||
|           [Define if there is a function named getfsstat for reading the list of mounted filesystems.  [DEC Alpha running OSF/1]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -231,7 +233,8 @@ fu_cv_sys_mounted_vmount=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_vmount) | ||||
| if test $fu_cv_sys_mounted_vmount = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_VMOUNT) | ||||
| AC_DEFINE(MOUNTED_VMOUNT, 1, | ||||
|           [Define if there is a function named mntctl that can be used to read the list of mounted filesystems, and there is a system header file that declares `struct vmount.'  [AIX]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -248,7 +251,8 @@ fu_cv_sys_mounted_fread_fstyp=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) | ||||
| if test $fu_cv_sys_mounted_fread_fstyp = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_FREAD_FSTYP) | ||||
| AC_DEFINE(MOUNTED_FREAD_FSTYP, 1, | ||||
|           [Define if (like SVR2) there is no specific function for reading the list of mounted filesystems, and your system has these header files: <sys/fstyp.h> and <sys/statfs.h>.  [SVR3]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -269,7 +273,8 @@ test -n "$ok" \ | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) | ||||
| if test $fu_cv_sys_mounted_getmntinfo = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTINFO) | ||||
| AC_DEFINE(MOUNTED_GETMNTINFO, 1, | ||||
|           [Define if there is a function named getmntinfo for reading the list of mounted filesystems.  [4.4BSD]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -287,7 +292,8 @@ fu_cv_sys_mounted_getmnt=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) | ||||
| if test $fu_cv_sys_mounted_getmnt = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNT) | ||||
| AC_DEFINE(MOUNTED_GETMNT, 1, | ||||
|           [Define if there is a function named getmnt for reading the list of mounted filesystems.  [Ultrix]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -301,7 +307,8 @@ fu_cv_sys_mounted_fread=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_fread) | ||||
| if test $fu_cv_sys_mounted_fread = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_FREAD) | ||||
| AC_DEFINE(MOUNTED_FREAD, 1, | ||||
|           [Define if there is no specific function for reading the list of mounted filesystems.  fread will be used to read /etc/mnttab.  [SVR2]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -330,7 +337,8 @@ fu_cv_sys_stat_statvfs=yes, | ||||
| fu_cv_sys_stat_statvfs=no)]) | ||||
| if test $fu_cv_sys_stat_statvfs = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATVFS) | ||||
| AC_DEFINE(STAT_STATVFS, 1, | ||||
|           [Define if there is a function named statvfs.  [SVR4]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -354,7 +362,8 @@ fu_cv_sys_stat_statfs3_osf1=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) | ||||
| if test $fu_cv_sys_stat_statfs3_osf1 = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS3_OSF1) | ||||
| AC_DEFINE(STAT_STATFS3_OSF1, 1, | ||||
|           [Define if  statfs takes 3 args.  [DEC Alpha running OSF/1]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -385,7 +394,8 @@ fu_cv_sys_stat_statfs2_bsize=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) | ||||
| if test $fu_cv_sys_stat_statfs2_bsize = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_BSIZE) | ||||
| AC_DEFINE(STAT_STATFS2_BSIZE, 1, | ||||
|           [Define if statfs takes 2 args and struct statfs has a field named f_bsize. [4.3BSD, SunOS 4, HP-UX, AIX PS/2]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -406,7 +416,8 @@ fu_cv_sys_stat_statfs4=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs4) | ||||
| if test $fu_cv_sys_stat_statfs4 = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS4) | ||||
| AC_DEFINE(STAT_STATFS4, 1, | ||||
|           [Define if statfs takes 4 args.  [SVR3, Dynix, Irix, Dolphin]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -434,7 +445,8 @@ fu_cv_sys_stat_statfs2_fsize=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) | ||||
| if test $fu_cv_sys_stat_statfs2_fsize = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_FSIZE) | ||||
| AC_DEFINE(STAT_STATFS2_FSIZE, 1, | ||||
|           [Define if statfs takes 2 args and struct statfs has a field named f_fsize. [4.4BSD, NetBSD]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| @@ -465,14 +477,17 @@ fu_cv_sys_stat_fs_data=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_fs_data) | ||||
| if test $fu_cv_sys_stat_fs_data = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_FS_DATA) | ||||
| AC_DEFINE(STAT_STATFS2_FS_DATA, 1, | ||||
|           [Define if statfs takes 2 args and the second argument has type struct fs_data.  [Ultrix]]) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # SVR2 | ||||
| AC_TRY_CPP([#include <sys/filsys.h>], | ||||
| AC_DEFINE(STAT_READ_FILSYS) space=yes) | ||||
| AC_DEFINE(STAT_READ_FILSYS, 1, | ||||
|           [Define if there is no specific function for reading filesystems usage information and you have the <sys/filsys.h> header file.  [SVR2]]) | ||||
| space=yes) | ||||
| fi | ||||
|  | ||||
| if test -n "$list_mounted_fs" && test $space != no; then | ||||
| @@ -497,384 +512,14 @@ fu_cv_sys_truncating_statfs=yes, | ||||
| fu_cv_sys_truncating_statfs=no, | ||||
| )]) | ||||
| if test $fu_cv_sys_truncating_statfs = yes; then | ||||
| AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS) | ||||
| AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1, | ||||
|           [Define if the block counts reported by statfs may be truncated to 2GB and the correct values may be stored in the f_spare array. [SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be affected.]]) | ||||
| fi | ||||
| AC_MSG_RESULT($fu_cv_sys_truncating_statfs) | ||||
|  | ||||
| AC_CHECKING(for AFS) | ||||
| test -d /afs && AC_DEFINE(AFS) | ||||
| ]) | ||||
|  | ||||
| dnl GNOME_SUPPORT_CHECKS | ||||
| dnl    Check for various support functions needed by the standard | ||||
| dnl    Gnome libraries.  Sets LIBOBJS, might define some macros. | ||||
| dnl    This should only be used when building the Gnome libs;  | ||||
| dnl    Gnome clients should not need this macro. | ||||
| AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|   # we need an `awk' to build `gnomesupport.h' | ||||
|   AC_REQUIRE([AC_PROG_AWK]) | ||||
|  | ||||
|   # this should go away soon | ||||
|   need_gnome_support=yes | ||||
|  | ||||
|   AC_CHECK_FUNCS(getopt_long,, | ||||
|    [AC_LIBOBJ(getopt) | ||||
|     AC_LIBOBJ(getopt1)]) | ||||
|  | ||||
|   # for `scandir' | ||||
|   AC_HEADER_DIRENT | ||||
|  | ||||
|   # copied from `configure.in' of `libiberty' | ||||
|   vars="program_invocation_short_name program_invocation_name sys_errlist" | ||||
|   for v in $vars; do | ||||
|     AC_MSG_CHECKING([for $v]) | ||||
|     AC_CACHE_VAL(gnome_cv_var_$v, | ||||
|       [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], | ||||
| 		   [eval "gnome_cv_var_$v=yes"], | ||||
| 		   [eval "gnome_cv_var_$v=no"])]) | ||||
|     if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then | ||||
|       AC_MSG_RESULT(yes) | ||||
|       n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|       AC_DEFINE_UNQUOTED($n) | ||||
|     else | ||||
|       AC_MSG_RESULT(no) | ||||
|     fi | ||||
|   done | ||||
|  | ||||
|   AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) | ||||
|   AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) | ||||
|  | ||||
|   AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize)) | ||||
|  | ||||
|   # to include `error.c' error.c has some HAVE_* checks | ||||
|   AC_CHECK_FUNCS(vprintf doprnt strerror_r) | ||||
|   # stolen from am_func_error_at_line | ||||
|   AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, | ||||
|   [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], | ||||
|               am_cv_lib_error_at_line=yes, | ||||
|               am_cv_lib_error_at_line=no)]) | ||||
|   if test $am_cv_lib_error_at_line = no; then | ||||
|     AC_LIBOBJ(error) | ||||
|   fi | ||||
|    | ||||
|   # This is required if we declare setreuid () and setregid (). | ||||
|   AC_TYPE_UID_T | ||||
|  | ||||
|   # see if we need to declare some functions.  Solaris is notorious for | ||||
|   # putting functions into the `libc' but not listing them in the headers | ||||
|   AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) | ||||
|   GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) | ||||
|   GCC_NEED_DECLARATION(scandir,[ | ||||
| #ifdef HAVE_DIRENT_H | ||||
| #include <dirent.h> | ||||
| #endif | ||||
| ]) | ||||
|  | ||||
|   AC_SUBST(need_gnome_support) | ||||
|  | ||||
|   AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) | ||||
| test -d /afs && AC_DEFINE(AFS, 1, [Define if you have the Andrew File System.]) | ||||
| ]) | ||||
|  | ||||
|  | ||||
| dnl This file is intended for use both internally in libgtop and in every program | ||||
| dnl that wants to use it. | ||||
| dnl | ||||
| dnl It defines the following variables: | ||||
| dnl | ||||
| dnl * 'libgtop_sysdeps_dir'    - sysdeps dir for libgtop. | ||||
| dnl * 'libgtop_use_machine_h'  - some of system dependend parts of libgtop provide | ||||
| dnl                              their own header file. In this case we need to | ||||
| dnl                              define 'HAVE_GLIBTOP_MACHINE_H'. | ||||
| dnl * 'libgtop_need_server'    - is the server really needed? Defines 'NEED_LIBGTOP' | ||||
| dnl                              if true; defines conditional 'NEED_LIBGTOP'. | ||||
|  | ||||
| AC_DEFUN([LIBGTOP_HACKER_TESTS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_ARG_WITH(linux-table, | ||||
|       [  --with-linux-table      Use the table () function from Martin Baulig], | ||||
| 	[linux_table="$withval"],[linux_table=auto]) | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no) | ||||
| 	  elif test $linux_table = auto ; then | ||||
| 	    AC_MSG_CHECKING(for table function in Linux Kernel) | ||||
| 	    AC_TRY_RUN([ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
| #include <linux/unistd.h> | ||||
| #include <linux/table.h> | ||||
|  | ||||
| #include <syscall.h> | ||||
|  | ||||
| static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param); | ||||
|  | ||||
| int | ||||
| main (void) | ||||
| { | ||||
| 	union table tbl; | ||||
| 	int ret; | ||||
|  | ||||
| 	ret = table (TABLE_VERSION, NULL, NULL); | ||||
|  | ||||
| 	if (ret == -1) | ||||
| 		exit (-errno); | ||||
|  | ||||
| 	exit (ret < 1 ? ret : 0); | ||||
| } | ||||
| ], linux_table=yes, linux_table=no, linux_table=no) | ||||
| 	    AC_MSG_RESULT($linux_table) | ||||
| 	  fi | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_DEFINE(HAVE_LINUX_TABLE) | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	esac | ||||
| ]) | ||||
|  | ||||
| AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_SUBST(libgtop_sysdeps_dir) | ||||
| 	AC_SUBST(libgtop_use_machine_h) | ||||
| 	AC_SUBST(libgtop_need_server) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-examples, | ||||
| 	[  --with-libgtop-examples Build the libgtop examples (default=no)],[ | ||||
| 	build_examples="$withval"], [build_examples=no]) | ||||
|  | ||||
| 	AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes) | ||||
|  | ||||
| 	AC_ARG_ENABLE(hacker-mode, | ||||
| 	[  --enable-hacker-mode    Enable building of unstable sysdeps], | ||||
| 	[hacker_mode="$enableval"], [hacker_mode=no]) | ||||
|  | ||||
| 	AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes) | ||||
|  | ||||
| 	linux_table=auto | ||||
| 	if test x$hacker_mode = xyes ; then | ||||
| 	  LIBGTOP_HACKER_TESTS | ||||
| 	fi | ||||
| 	AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-smp, | ||||
| 	[  --with-libgtop-smp      Enable SMP support (default-auto)],[ | ||||
| 	libgtop_smp="$withval"],[libgtop_smp=auto]) | ||||
|  | ||||
| 	if test $libgtop_smp = auto ; then | ||||
| 	  AC_MSG_CHECKING(whether to enable SMP support) | ||||
| 	  case "$host_os" in | ||||
| 	  linux*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  aix*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  *) | ||||
| 	    libgtop_smp=no | ||||
| 	    ;; | ||||
| 	  esac | ||||
| 	  AC_MSG_RESULT($libgtop_smp) | ||||
| 	fi | ||||
|  | ||||
| 	if test $libgtop_smp = yes ; then | ||||
| 	  AC_DEFINE(HAVE_LIBGTOP_SMP) | ||||
| 	fi | ||||
|  | ||||
| 	AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes) | ||||
|  | ||||
| 	AC_MSG_CHECKING(for libgtop sysdeps directory) | ||||
|  | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  if test x$linux_table = xyes ; then | ||||
| 	    libgtop_sysdeps_dir=kernel | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	  else | ||||
| 	    libgtop_sysdeps_dir=linux | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	    libgtop_have_sysinfo=yes | ||||
| 	  fi | ||||
| 	  libgtop_need_server=no | ||||
| 	  ;; | ||||
| 	freebsd*|netbsd*|openbsd*|bsdi*) | ||||
| 	  libgtop_sysdeps_dir=freebsd | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
| 	solaris*) | ||||
| 	  libgtop_sysdeps_dir=solaris | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
|         aix*) | ||||
| 	  libgtop_sysdeps_dir=aix | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_have_sysinfo=yes | ||||
| 	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2' | ||||
|           ;; | ||||
| 	*) | ||||
| 	  if test x$hacker_mode = xyes ; then | ||||
| 	    case "$host_os" in | ||||
| 	    sunos4*) | ||||
| 	      #Please note that this port is obsolete and not working at | ||||
| 	      #all. It is only useful for people who want to fix it ... :-) | ||||
| 	      libgtop_sysdeps_dir=sun4 | ||||
| 	      libgtop_use_machine_h=yes | ||||
| 	      libgtop_need_server=yes | ||||
| 	      ;; | ||||
| 	    osf*) | ||||
| 	      libgtop_sysdeps_dir=osf1 | ||||
| 	      libgtop_use_machine_h=yes | ||||
| 	      libgtop_need_server=yes | ||||
| 	      ;; | ||||
| 	    *) | ||||
| 	      libgtop_sysdeps_dir=stub | ||||
| 	      libgtop_use_machine_h=no | ||||
| 	      libgtop_need_server=no | ||||
| 	      ;; | ||||
| 	    esac | ||||
| 	  else | ||||
| 	    libgtop_sysdeps_dir=stub | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	    libgtop_need_server=no | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	esac | ||||
|  | ||||
| 	test -z "$libgtop_postinstall" && libgtop_postinstall=: | ||||
|  | ||||
| 	AC_MSG_RESULT($libgtop_sysdeps_dir) | ||||
|  | ||||
| 	AC_SUBST(libgtop_sysdeps_dir) | ||||
| 	AC_SUBST(libgtop_postinstall) | ||||
| 	AC_SUBST(libgtop_have_sysinfo) | ||||
|  | ||||
| 	case "$host_os" in | ||||
| 	*bsd*) | ||||
| 	  AC_CHECK_HEADERS(net/if_var.h) | ||||
| 	  AC_MSG_CHECKING([for I4B]) | ||||
| 	  AC_TRY_COMPILE([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
|  | ||||
| #ifdef HAVE_NET_IF_VAR_H | ||||
| #include <net/if_var.h> | ||||
| #endif | ||||
|  | ||||
| #include <net/netisr.h> | ||||
| #include <net/route.h> | ||||
|  | ||||
| #if defined(__FreeBSD__) || defined(__NetBSD__) | ||||
| #include <net/if_sppp.h> | ||||
| #else | ||||
| #include <i4b/sppp/if_sppp.h> | ||||
| #endif | ||||
| ],[ | ||||
| 	size_t size = sizeof (struct sppp); | ||||
| ], have_i4b=yes, have_i4b=no) | ||||
| 	  AC_MSG_RESULT($have_i4b) | ||||
| 	  if test x$have_i4b = xyes; then | ||||
| 	    AC_DEFINE(HAVE_I4B) | ||||
| 	    AC_MSG_CHECKING([for I4B accounting]) | ||||
| 	    AC_TRY_COMPILE([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
|  | ||||
| #ifdef HAVE_NET_IF_VAR_H | ||||
| #include <net/if_var.h> | ||||
| #endif | ||||
|  | ||||
| #include <net/netisr.h> | ||||
| #include <net/route.h> | ||||
|  | ||||
| #if defined(__FreeBSD__) || defined(__NetBSD__) | ||||
| #include <net/if_sppp.h> | ||||
| #else | ||||
| #include <i4b/sppp/if_sppp.h> | ||||
| #endif | ||||
|  | ||||
| #include <machine/i4b_acct.h> | ||||
| ],[ | ||||
| 	size_t size = sizeof (struct i4bisppp_softc); | ||||
| ], have_i4b_acct=yes, have_i4b_acct=no) | ||||
| 	    AC_MSG_RESULT($have_i4b_acct) | ||||
| 	    if test x$have_i4b_acct = xyes ; then | ||||
| 	      AC_DEFINE(HAVE_I4B_ACCT) | ||||
| 	    else | ||||
| 	      AC_WARN([ | ||||
| *** I4B accounting disabled - you won't get any PPP statistics. | ||||
| *** Read "misc/i4b_acct.txt" in the LibGTop source directory | ||||
| *** to see how to enable it.]) | ||||
| 	    fi | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	linux*) | ||||
| 	  os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` | ||||
| 	  os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` | ||||
| 	  os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` | ||||
| 	  os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q" | ||||
|  | ||||
| 	  AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes, | ||||
| 	    have_linux_version_h=no) | ||||
|  | ||||
| 	  if test x$have_linux_version_h = xyes ; then | ||||
| 	    version_code=`cat /usr/include/linux/version.h | \ | ||||
| 	      grep \#define | grep LINUX_VERSION_CODE` | ||||
| 	    os_version_code=`echo $version_code | \ | ||||
| 	      sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'` | ||||
| 	  else | ||||
| 	    os_version_code=`echo "$os_version_expr" | dc` | ||||
| 	  fi | ||||
|  | ||||
| 	  AC_MSG_CHECKING(for Linux kernel version code) | ||||
| 	  AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code) | ||||
| 	  AC_MSG_RESULT($os_version_code) | ||||
| 	  ;; | ||||
| 	solaris*) | ||||
| 	  os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'` | ||||
| 	  os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'` | ||||
| 	  os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'` | ||||
| 	  test -z "$os_micro_version" && os_micro_version=0 | ||||
| 	  os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q" | ||||
| 	  os_version_code=`echo "$os_version_expr" | dc` | ||||
|  | ||||
| 	  AC_MSG_CHECKING(for Solaris release code) | ||||
| 	  AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code) | ||||
| 	  AC_MSG_RESULT($os_version_code) | ||||
| 	  ;; | ||||
| 	esac | ||||
|  | ||||
| 	AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir) | ||||
| 	AC_MSG_RESULT($libgtop_use_machine_h) | ||||
|  | ||||
| 	AC_MSG_CHECKING(whether we need libgtop) | ||||
| 	AC_MSG_RESULT($libgtop_need_server) | ||||
|  | ||||
| 	if test x$libgtop_need_server = xyes ; then | ||||
| 	  AC_DEFINE(NEED_LIBGTOP) | ||||
| 	fi | ||||
|  | ||||
| 	if test x$libgtop_use_machine_h = xyes ; then | ||||
| 	  AC_DEFINE(HAVE_GLIBTOP_MACHINE_H) | ||||
| 	fi | ||||
|  | ||||
| 	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes) | ||||
| ]) | ||||
|  | ||||
|    | ||||
| m4_include([libgtop-sysdeps.m4]) | ||||
|   | ||||
| @@ -6,7 +6,7 @@ test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| PKG_NAME="Gnome Top Library" | ||||
|  | ||||
| (test -f $srcdir/configure.in \ | ||||
| (test -f $srcdir/configure.ac \ | ||||
|   && test -f $srcdir/copyright.txt \ | ||||
|   && test -d $srcdir/sysdeps) || { | ||||
|     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" | ||||
| @@ -18,4 +18,5 @@ which gnome-autogen.sh || { | ||||
|     echo "You need to install gnome-common from the GNOME CVS" | ||||
|     exit 1 | ||||
| } | ||||
| USE_GNOME2_MACROS=1 . gnome-autogen.sh | ||||
| REQUIRED_AUTOMAKE_VERSION=1.9 | ||||
| . gnome-autogen.sh | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| @@ -1,15 +0,0 @@ | ||||
| if NEED_LIBGTOP | ||||
| server_dir	= server | ||||
| else | ||||
| server_dir	= | ||||
| endif | ||||
|  | ||||
| if HAVE_SYSDEPS | ||||
| sysdeps_dir	= sysdeps | ||||
| else | ||||
| sysdeps_dir	= | ||||
| endif | ||||
|  | ||||
| SUBDIRS		= $(server_dir) $(sysdeps_dir) common | ||||
|  | ||||
| DIST_SUBDIRS	= server sysdeps common | ||||
| @@ -1,7 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| @@ -1,42 +0,0 @@ | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop-backend-private.h: Removed. | ||||
|  | ||||
| 	* backend-common.h: New files. | ||||
|  | ||||
| 	* backend-common.c (_open_common): Don't overwrite | ||||
| 	`backend->_priv'. | ||||
|  | ||||
| 2000-11-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Link libgtop_backend_common.la against | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_common.la and | ||||
| 	$(top_builddir)/lib/libgtop_server.la. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Common' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR). | ||||
|  | ||||
| 	* libgtop-common.backend: New file. | ||||
|  | ||||
| 	* backend-common.c (glibtop_backend_common): Renamed to | ||||
| 	`LibGTopBackendInfo'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-common" backend. | ||||
|  | ||||
| 	* backend-common.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
|  | ||||
| @@ -1,47 +0,0 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| if LIBGTOP_USE_GMODULE | ||||
| backendlibdir	= $(backenddir) | ||||
| else | ||||
| backendlibdir	= $(libdir) | ||||
| endif | ||||
|  | ||||
| dynamic_ldflags	= @libgtop_dynamic_ldflags@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-common.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	backend-common.h | ||||
|  | ||||
| backendlib_LTLIBRARIES = \ | ||||
| 	libgtop_backend_common.la | ||||
|  | ||||
| libgtop_backend_common_la_SOURCES = \ | ||||
| 	backend-common.c		\ | ||||
| 	marshal.c | ||||
|  | ||||
| libgtop_backend_common_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) $(dynamic_ldflags) | ||||
|  | ||||
| libgtop_backend_common_la_LIBADD = \ | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_common.la	\ | ||||
| 	$(top_builddir)/lib/libgtop_server.la | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl	\ | ||||
| 	libgtop-common.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| @@ -1,61 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-common.h> | ||||
|  | ||||
| static int | ||||
| _open_common (glibtop_server *, glibtop_backend *, u_int64_t, 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, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_common (glibtop_server *server, glibtop_backend *backend, | ||||
| 	       void *closure) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-common</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -1,175 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 1; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* marshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `marshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <backend-common.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/call-vector.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|  | ||||
|     return unless $orig =~ /^@/; | ||||
|  | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $first_param_name = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n             " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); | ||||
|     } else { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); | ||||
|     } | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   if ($feature =~ /^@/) { | ||||
|     $feature =~ s/^@//; | ||||
|  | ||||
|     $call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } | ||||
| } | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_common_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| @@ -1,10 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| demarshal.c | ||||
| libgtop_server | ||||
| command.h | ||||
| @@ -1,85 +0,0 @@ | ||||
| 2000-11-27  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-server.c (backend_server_quark): New global variable. | ||||
| 	(_open_server, _close_server): Use the quark. | ||||
| 	* commands.c: Likewise. | ||||
|  | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-server.h: New file. | ||||
| 	(backend_server_private): New struct, formerly known | ||||
| 	as glibtop_backend_private. | ||||
|  | ||||
| 	* glibtop-backend-private.h: Removed. | ||||
|  | ||||
| 	* backend-server.c: (_open_server): Use g_object_set_data() | ||||
| 	to set add the backend_server_private data to the glibtop_backend, | ||||
| 	don't override `backend->_priv'. | ||||
| 	(_close_server): Use g_object_get_data() to get the data. | ||||
| 	[FIXME: Use quarks directly.] | ||||
|  | ||||
| 	* read.c: (glibtop_read_i): Replaced the glibtop_server and | ||||
| 	glibtop_backend arguments with backend_server_private. | ||||
| 	* read_data.c: (glibtop_read_data_i): Likewise. | ||||
| 	* write.c: (glibtop_write_i): Likewise. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Server' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* demarshal.pl: Only emit code for functions which are | ||||
| 	really suid/sgid. | ||||
|  | ||||
| 2000-01-13  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* write.c (glibtop_write_i): The buffer which we write is | ||||
| 	now a `const'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything except the server binary | ||||
| 	in $(LIBGTOP_BACKEND_DIR). | ||||
|  | ||||
| 	* libgtop-server.backend: New file. | ||||
|  | ||||
| 	* backend-server.c (glibtop_backend_server): Renamed to | ||||
| 	`LibGTopBackendInfo'. | ||||
|  | ||||
| 2000-01-08  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* command.h.in (glibtop_response): New structure. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* command.pl: New file. Creates `command.h' from `command.h.in'. | ||||
| 	* command.h.in: New file. Template file for `command.h'. | ||||
|  | ||||
| 	* io.c, version.c: New files. Copied here from `src/daemon'. | ||||
|  | ||||
| 	* demarshal.pl: New file. Automatically creates `demarshal.c'. | ||||
| 	* demarshal.c: This automatically created file handles the | ||||
| 	demarshalling in the libgtop_server. | ||||
|  | ||||
| 	* Makefile.am: Build the `libgtop_server' here. | ||||
| 	* server.c, server.h: New files. Copied here from `src/daemon'. | ||||
|  | ||||
| 2000-01-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-server" backend. | ||||
|  | ||||
| 	* command.c, read.c, read_data.c, write.c: New files. Moved here | ||||
| 	from the `lib' directory. | ||||
|  | ||||
| 	* backend-server.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
|  | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
|  | ||||
| @@ -1,85 +0,0 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ -D_BSD \ | ||||
| 		  -DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \ | ||||
| 		  -DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \ | ||||
| 		  -DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\" | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| if LIBGTOP_USE_GMODULE | ||||
| backendlibdir	= $(backenddir) | ||||
| else | ||||
| backendlibdir	= $(libdir) | ||||
| endif | ||||
|  | ||||
| dynamic_ldflags	= @libgtop_dynamic_ldflags@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-server.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	backend-server.h | ||||
|  | ||||
| backendlib_LTLIBRARIES = \ | ||||
| 	libgtop_backend_server.la | ||||
|  | ||||
| bin_PROGRAMS = \ | ||||
| 	@server_programs@ | ||||
|  | ||||
| EXTRA_PROGRAMS = \ | ||||
| 	libgtop_server | ||||
|  | ||||
| libgtop_backend_server_la_SOURCES = \ | ||||
| 	backend-server.c		\ | ||||
| 	marshal.c			\ | ||||
| 	command.c			\ | ||||
| 	read.c				\ | ||||
| 	read_data.c			\ | ||||
| 	write.c | ||||
|  | ||||
| libgtop_backend_server_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) $(dynamic_ldflags) | ||||
|  | ||||
| libgtop_server_SOURCES = \ | ||||
| 	server.c		\ | ||||
| 	server.h		\ | ||||
| 	demarshal.c		\ | ||||
| 	version.c		\ | ||||
| 	io.c | ||||
|  | ||||
| libgtop_server_LDADD = \ | ||||
| 	$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \ | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_suid_common.la \ | ||||
| 	@LIBSUPPORT@ | ||||
|  | ||||
| if ENABLE_STATIC | ||||
| libgtop_server_LDFLAGS = -static | ||||
| endif | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c		\ | ||||
| 	demarshal.c		\ | ||||
| 	command.h | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl		\ | ||||
| 	demarshal.pl		\ | ||||
| 	command.pl		\ | ||||
| 	command.h.in		\ | ||||
| 	libgtop-server.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t demarshal.c | ||||
|  | ||||
| command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t | ||||
| 	mv tmp-t command.h | ||||
|  | ||||
| @@ -1,113 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| static int | ||||
| _open_server (glibtop_server *, glibtop_backend *, u_int64_t, 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, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     backend_server_private *priv; | ||||
|  | ||||
|     priv = glibtop_calloc_r (server, 1, sizeof (backend_server_private)); | ||||
|  | ||||
|     glibtop_backend_set_closure_data (backend, priv); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv); | ||||
|  | ||||
|     fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER); | ||||
| #endif | ||||
|  | ||||
|     if (pipe (priv->input) || pipe (priv->output)) { | ||||
| 	glibtop_warn_io_r (server, "cannot make a pipe"); | ||||
| 	return -1; | ||||
|     } | ||||
|  | ||||
|     priv->pid  = fork (); | ||||
|  | ||||
|     if (priv->pid < 0) { | ||||
| 	glibtop_warn_io_r (server, "fork failed"); | ||||
| 	return -1; | ||||
|     } else if (priv->pid == 0) { | ||||
| 	close (0); close (1); | ||||
| 	close (priv->input [0]); | ||||
| 	close (priv->output [1]); | ||||
| 	dup2 (priv->input [1], 1); | ||||
| 	dup2 (priv->output [0], 0); | ||||
| 	execl (LIBGTOP_SERVER, "libgtop-server", NULL); | ||||
| 	glibtop_error_io_r (server, "execl (%s)", | ||||
| 			    LIBGTOP_SERVER); | ||||
| 	_exit (2); | ||||
|     } | ||||
|  | ||||
|     close (priv->input [1]); | ||||
|     close (priv->output [0]); | ||||
|  | ||||
|     glibtop_server_ref (server); | ||||
|     priv->server = server; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_server (glibtop_server *server, glibtop_backend *backend, | ||||
| 	       void *closure) | ||||
| { | ||||
|     backend_server_private *priv = closure; | ||||
|  | ||||
|     kill (priv->pid, SIGKILL); | ||||
|     close (priv->input [0]); | ||||
|     close (priv->output [1]); | ||||
|  | ||||
|     glibtop_server_unref (priv->server); | ||||
|  | ||||
|     priv->pid = 0; | ||||
|  | ||||
|     g_free (priv); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1,66 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_BACKEND_COMMON_H__ | ||||
| #define __GLIBTOP_BACKEND_COMMON_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| typedef struct _backend_server_private backend_server_private; | ||||
|  | ||||
| struct _backend_server_private | ||||
| { | ||||
|     u_int64_t flags; | ||||
|     int input [2];		/* Pipe client <- server */ | ||||
|     int output [2];		/* Pipe client -> server */ | ||||
|     pid_t pid;			/* PID of the server */ | ||||
|  | ||||
|     glibtop_server *server; | ||||
| }; | ||||
|  | ||||
| void * | ||||
| glibtop_call_i (glibtop_server *server, backend_server_private *priv, | ||||
| 		unsigned command, size_t send_size, const void *send_ptr, | ||||
| 		size_t data_size, const void *data_ptr, | ||||
| 		size_t recv_size, void *recv_ptr, | ||||
| 		int *retval_ptr); | ||||
|  | ||||
| void | ||||
| glibtop_read_i (backend_server_private *priv, size_t size, void *buf); | ||||
|  | ||||
| void * | ||||
| glibtop_read_data_i (backend_server_private *priv); | ||||
|  | ||||
| void | ||||
| glibtop_write_i (backend_server_private *priv, size_t size, const void *buf); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| @@ -1,100 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| #include "command.h" | ||||
|  | ||||
| void * | ||||
| glibtop_call_i (glibtop_server *server, backend_server_private *priv, | ||||
| 		unsigned command, size_t send_size, const void *send_buf, | ||||
| 		size_t data_size, const void *data_buf, | ||||
| 		size_t recv_size, void *recv_ptr, | ||||
| 		int *retval_ptr) | ||||
| { | ||||
|     glibtop_command cmnd; | ||||
|     glibtop_response resp; | ||||
| #if 0 | ||||
|     int retval; | ||||
| #endif | ||||
|  | ||||
|     memset (&cmnd, 0, sizeof (glibtop_command)); | ||||
|     memset (&resp, 0, sizeof (glibtop_response)); | ||||
|  | ||||
|     cmnd.command = command; | ||||
|  | ||||
|     /* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we | ||||
|      * send it together with command, so we only need one system call instead | ||||
|      * of two. */ | ||||
|  | ||||
|     if (send_size <= _GLIBTOP_PARAM_SIZE) { | ||||
| 	memcpy (cmnd.parameter, send_buf, send_size); | ||||
| 	cmnd.param_size = send_size; | ||||
|     } else { | ||||
| 	cmnd.send_size = send_size; | ||||
|     } | ||||
|  | ||||
|     cmnd.data_size = data_size; | ||||
| 	 | ||||
|     glibtop_write_i (priv, sizeof (glibtop_command), &cmnd); | ||||
|  | ||||
|     if (data_size) { | ||||
| #ifdef SLAVE_DEBUG | ||||
| 	fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size); | ||||
| #endif | ||||
| 	glibtop_write_i (priv, data_size, data_buf); | ||||
|     } | ||||
|  | ||||
|     glibtop_read_i (priv, sizeof (glibtop_response), &resp); | ||||
|  | ||||
| #ifdef SLAVE_DEBUG | ||||
|     fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n", | ||||
| 	     resp.retval, resp.glibtop_errno, | ||||
| 	     (long) resp.recv_size, (long) resp.data_size, | ||||
| 	     recv_ptr, (long) recv_size); | ||||
| #endif | ||||
|      | ||||
|     if (retval_ptr) | ||||
| 	*retval_ptr = resp.glibtop_errno; | ||||
|  | ||||
|     if (resp.recv_size != recv_size) { | ||||
| 	glibtop_warn_r (server, "Expected %ld bytes, but got %ld.", | ||||
| 			(long) recv_size, (long) resp.recv_size); | ||||
| 	return NULL; | ||||
|     } | ||||
|  | ||||
|     if (recv_ptr) | ||||
| 	glibtop_read_i (priv, recv_size, recv_ptr); | ||||
|  | ||||
|     if (resp.data_size) { | ||||
| 	void *ptr = glibtop_malloc_r (server, resp.data_size); | ||||
|  | ||||
| 	glibtop_read_i (priv, resp.data_size, ptr); | ||||
|  | ||||
| 	return ptr; | ||||
|     } | ||||
|  | ||||
|     return NULL; | ||||
| } | ||||
| @@ -1,59 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| @@AUTOGEN_COMMENT@@ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_COMMAND_H__ | ||||
| #define __GLIBTOP_COMMAND_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| @@GLIBTOP_COMMAND_CONSTANTS@@ | ||||
|  | ||||
| #define _GLIBTOP_PARAM_SIZE		16 | ||||
|  | ||||
| typedef struct _glibtop_command		glibtop_command; | ||||
| typedef struct _glibtop_response	glibtop_response; | ||||
|  | ||||
| struct _glibtop_command | ||||
| { | ||||
|     u_int64_t	command; | ||||
|     u_int64_t	param_size, send_size, data_size; | ||||
|     char	parameter [_GLIBTOP_PARAM_SIZE]; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_response | ||||
| { | ||||
|     int retval; | ||||
|     int glibtop_errno; | ||||
|     u_int64_t recv_size, data_size; | ||||
| }; | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,76 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| die "Usage: $0 features.def command.h.in" unless $#ARGV == 1; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| $constants_decl_code = ''; | ||||
|  | ||||
| open FEATURESDEF, $ARGV[1] or | ||||
|   die "open ($ARGV[1]): $!"; | ||||
|  | ||||
| while (<FEATURESDEF>) { | ||||
|   chop;				# strip record separator | ||||
|    | ||||
|   if (/^[^\#]/) { | ||||
|     &parse_features_def ($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| close FEATURESDEF; | ||||
|  | ||||
| sub parse_features_def { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $retval = $line_fields[1]; | ||||
|   $element_def = $line_fields[3]; | ||||
|   $feature = $line_fields[2]; | ||||
|   $param_def = $line_fields[4]; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|   $space = $feature; | ||||
|   $space =~ s/./ /g; | ||||
|  | ||||
|   $constants_decl_code .= sprintf | ||||
|     (qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature), | ||||
|      ++$feature_count); | ||||
|  | ||||
|   $features{$feature_count} = $feature; | ||||
| } | ||||
|  | ||||
| chop $constants_decl_code; | ||||
|  | ||||
| $auto_gen_comment = sprintf | ||||
|   (qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]); | ||||
|  | ||||
| open COMMAND, $ARGV[2] or | ||||
|   die "open ($ARGV[2]): $!"; | ||||
|  | ||||
| while (<COMMAND>) { | ||||
|   chop; | ||||
|  | ||||
|   s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/; | ||||
|  | ||||
|   s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; | ||||
| } continue { | ||||
|   print $_; | ||||
| } | ||||
|  | ||||
| close COMMAND; | ||||
| @@ -1,386 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 0; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* demarshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `demarshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <glibtop.h>'; | ||||
| print '#include <glibtop/open.h>'; | ||||
| print '#include <glibtop/xmalloc.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/backend.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop-backend-private.h>'; | ||||
| print '#include "server.h"'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|   chop;	# strip record separator | ||||
|  | ||||
|   if (/^[^\#]/) { | ||||
|     &output($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $retval = $line_fields[1]; | ||||
|   $element_def = $line_fields[3]; | ||||
|   $feature = $line_fields[2]; | ||||
|   $param_def = $line_fields[4]; | ||||
|  | ||||
|   return if $feature =~ /^@/; | ||||
|   $name = 'glibtop_'.$feature; | ||||
|    | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|   $space = $feature; | ||||
|   $space =~ s/./ /g; | ||||
|    | ||||
|   $features{++$feature_count} = $feature; | ||||
|  | ||||
|   $orig_retval = $retval; | ||||
|    | ||||
|   if ($retval eq 'retval') { | ||||
|     $retval_param = '&retval'; | ||||
|     $call_prefix = ''; | ||||
|     $call_prefix_space = ''; | ||||
|     $prefix = 'retval = '; | ||||
|     $prefix_space = '         '; | ||||
|     $retval = 'int'; | ||||
|   } elsif ($retval !~ /^void$/) { | ||||
|     $retval_param = 'NULL'; | ||||
|     $prefix = 'retval = '; | ||||
|     $prefix_space = '         '; | ||||
|     $call_prefix = 'retval = '; | ||||
|     $call_prefix_space = '         '; | ||||
|   } else { | ||||
|     $retval_param = 'NULL'; | ||||
|     $call_prefix = ''; | ||||
|     $call_prefix_space = ''; | ||||
|     $prefix = ''; | ||||
|     $prefix_space = ''; | ||||
|   } | ||||
|    | ||||
|   if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|     $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|   } | ||||
|    | ||||
|   $need_temp_storage = $always_use_temp_storage; | ||||
|   $first_param_name = ''; | ||||
|   $size_code = "\t/* send size */\n"; | ||||
|   $size_code .= "\t_LIBGTOP_SEND_len = 0;\n"; | ||||
|    | ||||
|   $local_var_decl_code = ''; | ||||
|   $local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n"; | ||||
|   $local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n"; | ||||
|   $local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n"; | ||||
|   $local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n"; | ||||
|   $local_var_decl_code .= sprintf | ||||
|     (qq[\tglibtop_%s %s;\n], $feature, $feature); | ||||
|   if ($retval !~ /^void$/) { | ||||
|     $local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n", | ||||
| 				     $retval, $retval); | ||||
|   } | ||||
|  | ||||
|   $init_local_var_code = "\t/* variable initialization */\n"; | ||||
|   $init_local_var_code .= sprintf | ||||
|     (qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature); | ||||
|   $init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; | ||||
|   $init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
|     "(char *) send_ptr;\n"; | ||||
|  | ||||
|   $demarshal_code = ''; | ||||
|  | ||||
|   $call_param = ''; | ||||
|   $param_decl = ''; | ||||
|   $need_temp_len = 0; | ||||
|   $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|   for ($param = 1; $param <= $nr_params; $param++) { | ||||
|     $list = $params[$param]; | ||||
|     $type = $params[$param]; | ||||
|     $type =~ s/\(.*//; | ||||
|     $list =~ s/^.*\(//; | ||||
|     $list =~ s/\)$//; | ||||
|     $count = (@fields = split(/,/, $list, 9999)); | ||||
|     for ($field = 1; $field <= $count; $field++) { | ||||
|       my $c_type = $typeinfo->{$type}->[1]; | ||||
|        | ||||
|       if ($first_param_name eq '') { | ||||
| 	$first_param_name = $fields[$field]; | ||||
|       } | ||||
|        | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$need_temp_storage = 1; | ||||
|       } | ||||
|        | ||||
|       if ($param_decl eq '') { | ||||
| 	$param_decl = ",\n            " . $space . '    '; | ||||
|       } else { | ||||
| 	$param_decl = $param_decl . ', '; | ||||
|       } | ||||
|       $param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
|       $call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field]; | ||||
|  | ||||
|       $size_code .= "\t_LIBGTOP_SEND_len += "; | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$size_code .= sprintf ("sizeof (size_t)"); | ||||
|       } else { | ||||
| 	$size_code .= sprintf ("sizeof (%s)", $c_type); | ||||
|       } | ||||
|       $size_code .= ";\n"; | ||||
|  | ||||
|       $local_var_decl_code .= sprintf | ||||
| 	(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]); | ||||
|       $init_local_var_code .= sprintf | ||||
| 	(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n], | ||||
| 	 $fields[$field], $c_type); | ||||
|  | ||||
|       $demarshal_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	"(char *) send_ptr + _LIBGTOP_SEND_offset;\n"; | ||||
|  | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n"); | ||||
| 	$demarshal_code .= sprintf | ||||
| 	  (qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]); | ||||
| 	$demarshal_code .= sprintf | ||||
| 	  (qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]); | ||||
| 	$demarshal_code .= sprintf | ||||
| 	  (qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]); | ||||
|       } | ||||
|  | ||||
|       if (defined $demarshal_funcs->{$type}) { | ||||
| 	$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t"); | ||||
|       } else { | ||||
| 	$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n", | ||||
| 				    $fields[$field], "sizeof ($c_type)"); | ||||
|       } | ||||
|  | ||||
|       $demarshal_code .= "\t_LIBGTOP_SEND_offset += "; | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$demarshal_code .= sprintf ("sizeof (size_t)"); | ||||
|       } else { | ||||
| 	$demarshal_code .= sprintf ("sizeof (%s)", $c_type); | ||||
|       } | ||||
|       $demarshal_code .= ";\n"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!($demarshal_code eq '')) { | ||||
|     $demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n], | ||||
| 			       $demarshal_code); | ||||
|   } | ||||
|  | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server%s);\n", | ||||
|        $feature, $call_param); | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server, &array%s);\n", | ||||
|        $feature, $call_param); | ||||
|     $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n", | ||||
|        $feature, $feature, $call_param); | ||||
|     $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]); | ||||
|   } else { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server, &%s%s);\n", | ||||
|        $feature, $feature, $call_param); | ||||
|   } | ||||
|  | ||||
|   if ($orig_retval eq 'retval') { | ||||
|     $call_code .= sprintf | ||||
|       (qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]); | ||||
|   } else { | ||||
|     $call_code .= sprintf | ||||
|       (qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]); | ||||
|   } | ||||
|  | ||||
|   $size_code .= sprintf | ||||
|     (qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]); | ||||
|  | ||||
|   $size_code .= "\t/* recv size */\n"; | ||||
|   $size_code .= "\t_LIBGTOP_RECV_len = 0;\n"; | ||||
|   if ($line_fields[3] eq '') { | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n"; | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n"; | ||||
|     $size_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature); | ||||
|   } else { | ||||
|     $size_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature); | ||||
|   } | ||||
|   $size_code .= "\n"; | ||||
|  | ||||
|   $size_code .= "\t/* recv buffer */\n"; | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n"; | ||||
|   } else { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_buf = glibtop_malloc_r (server, _LIBGTOP_RECV_len);\n"; | ||||
|   } | ||||
|   $size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n"; | ||||
|  | ||||
|   $recv_buf_code = ''; | ||||
|   if ($line_fields[3] eq '') { | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $recv_buf_code = "\t/* write recv buffer */\n"; | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $recv_buf_code = "\t/* write recv buffer */\n"; | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n], | ||||
|        $feature, $feature); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature); | ||||
|   } else { | ||||
|     $recv_buf_code = "\t/* write recv buffer */\n"; | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n], | ||||
|        $feature, $feature); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature); | ||||
|   } | ||||
|  | ||||
|   $recv_buf_code .= "\n"; | ||||
|   $recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n"; | ||||
|   $recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n"; | ||||
|  | ||||
|   if ($orig_retval eq 'pointer(string)') { | ||||
|     $need_temp_storage = 1; | ||||
|     $local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n"; | ||||
|     $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n"; | ||||
|     $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n"; | ||||
|     $local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n"; | ||||
|     $local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|  | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n"; | ||||
|     $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n"; | ||||
|     $recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_base = glibtop_malloc_r (server, _LIBGTOP_TEMP_len);"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n"; | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n"; | ||||
|     $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n"; | ||||
|     $recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n"; | ||||
|     $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; | ||||
|     $recv_buf_code .= "\t}\n\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|     $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n"; | ||||
|     $recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n"; | ||||
|     $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; | ||||
|     $recv_buf_code .= "\t}\n\n"; | ||||
|     $recv_buf_code .= "\tif (recv_data_ptr) {\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n"; | ||||
|     $recv_buf_code .= "\t}\n"; | ||||
|  | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\tif (recv_data_ptr) {\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_ptr = retval;\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n"; | ||||
|     $recv_buf_code .= "\t}\n"; | ||||
|   } | ||||
|  | ||||
|   if ($need_temp_storage) { | ||||
|     $local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n"; | ||||
|     $local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n"; | ||||
|     $local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n"; | ||||
|     $local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n"; | ||||
|  | ||||
|     $init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n"; | ||||
|     $init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n"; | ||||
|     $init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ". | ||||
|       "(char *) data_ptr;\n"; | ||||
|   } | ||||
|  | ||||
|   $func_decl_code = sprintf | ||||
|     (qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature); | ||||
|  | ||||
|   if (!($call_code eq '')) { | ||||
|     $call_code .= "\n"; | ||||
|   } | ||||
|    | ||||
|   $func_body_code = sprintf | ||||
|     (qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code); | ||||
|    | ||||
|   $total_code = sprintf | ||||
|     (qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n], | ||||
|      $func_decl_code, $local_var_decl_code, $init_local_var_code, | ||||
|      $func_body_code); | ||||
|    | ||||
|   $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", | ||||
| 			 &toupper($feature), $total_code, | ||||
| 			 &toupper($feature)); | ||||
|  | ||||
|   print $total_code; | ||||
| } | ||||
|  | ||||
| $func_decl_code = sprintf | ||||
|   (qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]); | ||||
|  | ||||
| $switch_body_code = ''; | ||||
|  | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   $switch_body_code .= sprintf | ||||
|     (qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n], | ||||
|      &toupper ($feature), &toupper ($feature), $feature, &toupper ($feature)); | ||||
| } | ||||
|  | ||||
| $switch_code = sprintf | ||||
|   (qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code); | ||||
|  | ||||
| $total_code = sprintf | ||||
|   (qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code); | ||||
|  | ||||
| print $total_code; | ||||
|  | ||||
| 1; | ||||
| @@ -1,114 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include "server.h" | ||||
|  | ||||
| void | ||||
| do_output (int s, glibtop_response *resp, const void *recv_ptr, | ||||
| 	   const void *data_ptr) | ||||
| { | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "Really writing %d bytes.\n", | ||||
| 	     sizeof (glibtop_response)); | ||||
| #endif | ||||
|  | ||||
|     if (s == 0) { | ||||
| 	if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0) | ||||
| 	    glibtop_warn_io ("write"); | ||||
|     } else { | ||||
| 	if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0) | ||||
| 	    glibtop_warn_io ("send"); | ||||
|     } | ||||
|  | ||||
|     if (resp->recv_size) { | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Writing %ld bytes of data.\n", | ||||
| 		 (long) resp->recv_size); | ||||
| #endif | ||||
|  | ||||
| 	if (s == 0) { | ||||
| 	    if (write (1, recv_ptr, resp->recv_size) < 0) | ||||
| 		glibtop_warn_io ("write"); | ||||
| 	} else { | ||||
| 	    if (send (s, recv_ptr, resp->recv_size, 0) < 0) | ||||
| 		glibtop_warn_io ("send"); | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|     if (resp->data_size) { | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Writing %ld bytes of extra data.\n", | ||||
| 		 (long) resp->data_size); | ||||
| #endif | ||||
|  | ||||
| 	if (s == 0) { | ||||
| 	    if (write (1, data_ptr, resp->data_size) < 0) | ||||
| 		glibtop_warn_io ("write"); | ||||
| 	} else { | ||||
| 	    if (send (s, data_ptr, resp->data_size, 0) < 0) | ||||
| 		glibtop_warn_io ("send"); | ||||
| 	} | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| int | ||||
| do_read (int s, void *ptr, size_t total_size) | ||||
| { | ||||
|     int nread; | ||||
|     char *tmp_ptr; | ||||
|     size_t already_read = 0, remaining = total_size; | ||||
|  | ||||
|     while (already_read < total_size) { | ||||
| 	if (s) | ||||
| 	    nread = recv (s, ptr, remaining, 0); | ||||
| 	else | ||||
| 	    nread = read (0, ptr, remaining); | ||||
|  | ||||
| 	if ((already_read == 0) && (nread == 0)) { | ||||
| 	    glibtop_warn ("pid %d received eof.", getpid ()); | ||||
| 	    return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (nread <= 0) { | ||||
| 	    glibtop_warn_io ("recv"); | ||||
| 	    return 0; | ||||
| 	} | ||||
|  | ||||
| 	already_read += nread; | ||||
| 	remaining -= nread; | ||||
| 	/* (char *) ptr += nread; */ | ||||
| 	tmp_ptr = ptr; | ||||
| 	tmp_ptr += nread; | ||||
| 	ptr = tmp_ptr; | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "READ (%d): %d - %d - %d\n", | ||||
| 		 nread, already_read, remaining, total_size); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     return already_read; | ||||
| } | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-server</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -1,305 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 1; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* marshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `marshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <backend-server.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include "command.h"'; | ||||
| print '#include <glibtop/call-vector.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|     return if $orig =~ /^@/; | ||||
|  | ||||
|     $orig_retval = $retval; | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $local_var_init_code = "\t/* variable initialization */\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; | ||||
|     $local_var_init_code  .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	  "(char *) _LIBGTOP_SEND_buf;\n"; | ||||
|     $marshal_code = "\t/* marshal start */\n"; | ||||
|     $marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n"; | ||||
|     $first_param_name = ''; | ||||
|     $size_code = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n            " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|  | ||||
| 	$size_code .= "\t_LIBGTOP_SEND_len += "; | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $size_code .= sprintf ("sizeof (size_t)"); | ||||
| 	} else { | ||||
| 	  $size_code .= sprintf ("sizeof (%s)", $c_type); | ||||
| 	} | ||||
| 	$size_code .= ";\n"; | ||||
|  | ||||
| 	if (defined $sizeof_funcs->{$type}) { | ||||
| 	  $size_code .= "\t_LIBGTOP_DATA_len += "; | ||||
| 	  $size_code .= $sizeof_funcs->{$type}->($fields[$field]); | ||||
| 	  $size_code .= ";\n"; | ||||
| 	} | ||||
|  | ||||
| 	$marshal_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	  "(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n"; | ||||
|  | ||||
| 	if (defined $marshal_funcs->{$type}) { | ||||
| 	  $marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t"); | ||||
| 	} else { | ||||
| 	  $marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n", | ||||
| 				    '&'.$fields[$field], "sizeof ($c_type)"); | ||||
| 	} | ||||
|  | ||||
| 	$marshal_code .= "\t_LIBGTOP_SEND_offset += "; | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $marshal_code .= sprintf ("sizeof (size_t)"); | ||||
| 	} else { | ||||
| 	  $marshal_code .= sprintf ("sizeof (%s)", $c_type); | ||||
| 	} | ||||
| 	$marshal_code .= ";\n"; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $local_var_code = ""; | ||||
|     $local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n"; | ||||
|     $local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n"; | ||||
|     if ($need_temp_len) { | ||||
|       $local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n"; | ||||
|     } | ||||
|     $local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n"; | ||||
|     $local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n"; | ||||
|     if ($retval !~ /^void$/) { | ||||
|       $local_var_code .= sprintf ("\t%s retval = (%s) 0;\n", | ||||
| 				  $retval, $retval); | ||||
|     } | ||||
|  | ||||
|     $total_code = ''; | ||||
|  | ||||
|     $send_buf_code = "\t/* send buffer */\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_SEND_buf = "; | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)"; | ||||
|     } else { | ||||
|       $send_buf_code .= '(void *) &'.$first_param_name; | ||||
|     } | ||||
|     $send_buf_code .= ";\n\n"; | ||||
|  | ||||
|     $send_buf_code .= "\t/* data buffer */\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_DATA_buf = "; | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)"; | ||||
|     } else { | ||||
|       $send_buf_code .= 'NULL'; | ||||
|     } | ||||
|     $send_buf_code .= ";\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n"; | ||||
|  | ||||
|     $call_code = ''; | ||||
|     $call_code .= sprintf ("\t%sglibtop_call_i (server, 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 = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n"; | ||||
|       $send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n"; | ||||
|     } else { | ||||
|       $send_buf_free_code = ""; | ||||
|     } | ||||
|  | ||||
|     if (!($size_code eq '')) { | ||||
|       $size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code); | ||||
|     } | ||||
|  | ||||
|     if ($orig_retval eq 'pointer(string)') { | ||||
|       $call_code .= "\n"; | ||||
|       $local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n"; | ||||
|       $local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|       $local_var_code .= "\tint i;\n"; | ||||
|       $call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n"; | ||||
|       $call_code .= "\tfor (i = 0; i < array->number; i++)\n"; | ||||
|       $call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n"; | ||||
|       $call_code .= "\tptrlist [array->number] = NULL;\n\n"; | ||||
|       $call_code .= "\tglibtop_free_r (server, retval);\n"; | ||||
|       $call_code .= "\tretval = ptrlist;\n"; | ||||
|     } | ||||
|  | ||||
|     $total_code .= sprintf ("%s%s\n%s\n%s\n%s\n", | ||||
| 			    $size_code, $send_buf_code, $marshal_code, | ||||
| 			    $call_code, $send_buf_free_code); | ||||
|  | ||||
|     $return_code = ''; | ||||
|     if ($retval !~ /^void$/) { | ||||
|       $return_code .= "\treturn retval;\n"; | ||||
|     } else { | ||||
|       $return_code .= "\treturn;\n"; | ||||
|     } | ||||
|  | ||||
|     $total_code .= $return_code; | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl, | ||||
| 			   $local_var_code, $local_var_init_code, | ||||
| 			   $total_code); | ||||
|  | ||||
|  | ||||
|     $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", | ||||
| 			   &toupper($feature), $total_code, | ||||
| 			   &toupper($feature)); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|  | ||||
|   if ($orig =~ /^@/) { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf | ||||
|       (qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
| } | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_server_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| @@ -1,46 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| void | ||||
| glibtop_read_i (backend_server_private *priv, size_t size, void *buf) | ||||
| { | ||||
|     int ret = 0; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n", | ||||
| 	     size, priv->input [0]); | ||||
| #endif | ||||
|  | ||||
|     ret = read (priv->input [0], buf, size); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: read %d bytes.\n", ret); | ||||
| #endif | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read %d bytes", size); | ||||
| } | ||||
| @@ -1,58 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| void * | ||||
| glibtop_read_data_i (backend_server_private *priv) | ||||
| { | ||||
|     size_t size; | ||||
|     void *ptr; | ||||
|     int ret; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t)); | ||||
| #endif | ||||
|  | ||||
|     ret = read (priv->input [0], (void *)&size, sizeof (size_t)); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read data size"); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret); | ||||
| #endif | ||||
|  | ||||
|     if (!size) return NULL;	 | ||||
|  | ||||
|     ptr = glibtop_malloc_r (priv->server, size); | ||||
| 	 | ||||
|     ret = read (priv->input [0], ptr, size); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read data %d bytes"); | ||||
|  | ||||
|     return ptr; | ||||
| } | ||||
| @@ -1,190 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include "server.h" | ||||
|  | ||||
| static glibtop _glibtop_global_server; | ||||
| glibtop *glibtop_global_server = &_glibtop_global_server; | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <sys/utsname.h> | ||||
|  | ||||
| const unsigned long glibtop_server_features = | ||||
| GLIBTOP_SUID_CPU + | ||||
| GLIBTOP_SUID_MEM + | ||||
| GLIBTOP_SUID_SWAP + | ||||
| GLIBTOP_SUID_UPTIME + | ||||
| GLIBTOP_SUID_LOADAVG + | ||||
| GLIBTOP_SUID_SHM_LIMITS + | ||||
| GLIBTOP_SUID_MSG_LIMITS + | ||||
| GLIBTOP_SUID_SEM_LIMITS + | ||||
| GLIBTOP_SUID_PROCLIST + | ||||
| GLIBTOP_SUID_PROC_STATE + | ||||
| GLIBTOP_SUID_PROC_UID + | ||||
| GLIBTOP_SUID_PROC_MEM + | ||||
| GLIBTOP_SUID_PROC_TIME + | ||||
| GLIBTOP_SUID_PROC_SIGNAL + | ||||
| GLIBTOP_SUID_PROC_KERNEL + | ||||
| GLIBTOP_SUID_PROC_SEGMENT + | ||||
| GLIBTOP_SUID_PROC_ARGS + | ||||
| GLIBTOP_SUID_PROC_MAP + | ||||
| GLIBTOP_SUID_NETINFO + | ||||
| GLIBTOP_SUID_NETLOAD + | ||||
| GLIBTOP_SUID_INTERFACE_NAMES + | ||||
| GLIBTOP_SUID_PPP; | ||||
|  | ||||
| #include <fcntl.h> | ||||
| #include <locale.h> | ||||
|  | ||||
| int | ||||
| main(int argc, char *argv[]) | ||||
| { | ||||
|     struct utsname uts; | ||||
|     int uid, euid, gid, egid; | ||||
|     glibtop *server; | ||||
|  | ||||
|     /* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */ | ||||
|  | ||||
|     uid = getuid (); euid = geteuid (); | ||||
|     gid = getgid (); egid = getegid (); | ||||
|  | ||||
|     if (uname (&uts) < 0) _exit (1); | ||||
|  | ||||
|     if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) || | ||||
| 	strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) || | ||||
| 	strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) { | ||||
| 	fprintf (stderr, "Can only run on %s %s %s\n", | ||||
| 		 LIBGTOP_COMPILE_SYSTEM, | ||||
| 		 LIBGTOP_COMPILE_RELEASE, | ||||
| 		 LIBGTOP_COMPILE_MACHINE); | ||||
| 	_exit (1); | ||||
|     } | ||||
|  | ||||
|     server = glibtop_global_server; | ||||
| 	 | ||||
|     if (!server->_priv) | ||||
| 	server->_priv = glibtop_calloc_r | ||||
| 	    (server, 1, sizeof (glibtop_server_private)); | ||||
|  | ||||
|     glibtop_init_p (server, 0, 0); | ||||
|  | ||||
|     if (setreuid (euid, uid)) _exit (1); | ||||
|  | ||||
|     if (setregid (egid, gid)) _exit (1); | ||||
|  | ||||
|     /* !!! END OF SUID ROOT PART !!! */ | ||||
|  | ||||
|     handle_slave_connection (0, 0); | ||||
|  | ||||
|     _exit (0); | ||||
| } | ||||
|  | ||||
| void | ||||
| handle_slave_connection (int input, int output) | ||||
| { | ||||
|     glibtop_command _cmnd, *cmnd = &_cmnd; | ||||
|     glibtop *server = glibtop_global_server; | ||||
|  | ||||
|     // glibtop_send_version_i (glibtop_global_server, output); | ||||
|  | ||||
|     while (do_read (input, cmnd, sizeof (glibtop_command))) { | ||||
| 	size_t recv_size = 0, send_size = 0, recv_data_size = 0; | ||||
| 	void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL; | ||||
| 	char parameter [BUFSIZ]; | ||||
| 	int retval, func_retval; | ||||
| 	glibtop_response resp; | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Slave %d received command " | ||||
| 		 "%ld from client.\n", getpid (), (long) cmnd->command); | ||||
| #endif | ||||
|  | ||||
| 	if (cmnd->send_size >= BUFSIZ) | ||||
| 	    glibtop_error ("Client sent %d bytes, but buffer is %d", | ||||
| 			   cmnd->send_size, BUFSIZ); | ||||
| 	else if (cmnd->param_size >= BUFSIZ) | ||||
| 	    glibtop_error ("Client sent %d bytes, but buffer is %d", | ||||
| 			   cmnd->param_size, BUFSIZ); | ||||
|  | ||||
| 	memset (parameter, 0, sizeof (parameter)); | ||||
|  | ||||
| 	if (cmnd->send_size) { | ||||
| #ifdef DEBUG | ||||
| 	    fprintf (stderr, "Client has %d bytes of data.\n", | ||||
| 		     cmnd->send_size); | ||||
| #endif | ||||
|  | ||||
| 	    send_size = cmnd->send_size; | ||||
| 	    do_read (input, parameter, send_size); | ||||
| 	} else if (cmnd->param_size) { | ||||
| #ifdef DEBUG | ||||
| 	    fprintf (stderr, "Client has %d bytes of parameter data.\n", | ||||
| 		     cmnd->param_size); | ||||
| #endif | ||||
| 	    send_size = cmnd->param_size; | ||||
| 	    memcpy (parameter, cmnd->parameter, send_size); | ||||
| 	} | ||||
|  | ||||
| 	if (cmnd->data_size) { | ||||
| #ifdef DEBUG | ||||
| 	    fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n", | ||||
| 		     cmnd->data_size); | ||||
| #endif | ||||
|  | ||||
| 	    data_ptr = glibtop_malloc_r (server, cmnd->data_size); | ||||
| 	    do_read (input, data_ptr, cmnd->data_size); | ||||
| 	} | ||||
|  | ||||
| 	retval = glibtop_demarshal_func_i (server, NULL, | ||||
| 					   cmnd->command, | ||||
| 					   parameter, send_size, | ||||
| 					   data_ptr, cmnd->data_size, | ||||
| 					   &recv_ptr, &recv_size, | ||||
| 					   &recv_data_ptr, &recv_data_size, | ||||
| 					   &func_retval); | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Retval %d / %d - %p - %d\n", | ||||
| 		 retval, func_retval, recv_ptr, recv_size); | ||||
|  | ||||
| 	if (recv_data_size) { | ||||
| 	    fprintf (stderr, "Returning %d bytes of data from %p.\n", | ||||
| 		     recv_data_size, recv_data_ptr); | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	memset (&resp, 0, sizeof (glibtop_response)); | ||||
|  | ||||
| 	resp.retval = retval; | ||||
| 	resp.glibtop_errno = func_retval; | ||||
| 	resp.recv_size = recv_size; | ||||
| 	resp.data_size = recv_data_size; | ||||
|  | ||||
| 	do_output (output, &resp, recv_ptr, recv_data_ptr); | ||||
|     }		 | ||||
| } | ||||
| @@ -1,85 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 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/xmalloc.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" | ||||
|  | ||||
| BEGIN_LIBGTOP_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; | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,62 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include "server.h" | ||||
|  | ||||
| void | ||||
| glibtop_send_version_i (glibtop *server, int fd) | ||||
| { | ||||
|     char buffer [BUFSIZ]; | ||||
|     size_t size; | ||||
|  | ||||
|     sprintf (buffer, LIBGTOP_VERSION_STRING, | ||||
| 	     LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION, | ||||
| 	     sizeof (glibtop_command), | ||||
| 	     sizeof (glibtop_response), | ||||
| 	     sizeof (glibtop_union), | ||||
| 	     sizeof (glibtop_sysdeps)); | ||||
| 	 | ||||
|     size = strlen (buffer) + 1; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "SERVER ID: |%s|\n", buffer); | ||||
| #endif | ||||
|  | ||||
|     if (fd == 0) { | ||||
| 	if (write (1, (const void *) &size, sizeof (size)) < 0) | ||||
| 	    glibtop_warn_io_r (server, "write"); | ||||
|     } else { | ||||
| 	if (send (fd, (const void *) &size, sizeof (size), 0) < 0) | ||||
| 	    glibtop_warn_io_r (server, "send"); | ||||
|     } | ||||
|  | ||||
|     if (fd == 0) { | ||||
| 	if (write (1, (const void *) buffer, size) < 0) | ||||
| 	    glibtop_warn_io_r (server, "write"); | ||||
|     } else { | ||||
| 	if (send (fd, (const void *) buffer, size, 0) < 0) | ||||
| 	    glibtop_warn_io_r (server, "send"); | ||||
|     } | ||||
| } | ||||
| @@ -1,43 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| void | ||||
| glibtop_write_i (backend_server_private *priv, size_t size, const void *buf) | ||||
| { | ||||
|     int ret; | ||||
|  | ||||
|     if (size == 0) return; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size); | ||||
| #endif | ||||
|  | ||||
|     ret = write (priv->output [1], buf, size); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "write %d bytes", size); | ||||
| } | ||||
| @@ -1,7 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| @@ -1,60 +0,0 @@ | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop-backend-private.h: Removed. | ||||
|  | ||||
| 	* backend-sysdeps.h: New files. | ||||
|  | ||||
| 	* backend-sysdeps.c (_open_sysdeps): Don't overwrite | ||||
| 	`backend->_priv'. | ||||
|  | ||||
| 2000-11-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Link libgtop_backend_sysdeps.la against | ||||
| 	$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and | ||||
| 	$(top_builddir)/lib/libgtop_server.la. | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: Removed the ExtraLibs section. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Sysdeps' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: Added "ExtraLibs" section to | ||||
| 	load `-lgtop_sysdeps'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR). | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: New file. | ||||
|  | ||||
| 	* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to | ||||
| 	`LibGTopBackendInfo'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* marshal.pl: Create the `_glibtop_init_hook_s' as well. | ||||
|  | ||||
| 	* marshal.pl: Don't create code for things which are now | ||||
| 	in the new `glibtop-backend-common' backend. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
| 	* call-vector.c: Removed. | ||||
|  | ||||
| 2000-01-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-sysdeps" backend. | ||||
|  | ||||
| 	* backend-sysdeps.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
|  | ||||
| @@ -1,47 +0,0 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| if LIBGTOP_USE_GMODULE | ||||
| backendlibdir	= $(backenddir) | ||||
| else | ||||
| backendlibdir	= $(libdir) | ||||
| endif | ||||
|  | ||||
| dynamic_ldflags	= @libgtop_dynamic_ldflags@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-sysdeps.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	backend-sysdeps.h | ||||
|  | ||||
| backendlib_LTLIBRARIES = \ | ||||
| 	libgtop_backend_sysdeps.la | ||||
|  | ||||
| libgtop_backend_sysdeps_la_SOURCES = \ | ||||
| 	backend-sysdeps.c		\ | ||||
| 	marshal.c | ||||
|  | ||||
| libgtop_backend_sysdeps_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) $(dynamic_ldflags) | ||||
|  | ||||
| libgtop_backend_sysdeps_la_LIBADD = \ | ||||
| 	$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la | ||||
| 	$(top_builddir)/lib/libgtop_server.la | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl	\ | ||||
| 	libgtop-sysdeps.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| @@ -1,76 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-sysdeps.h> | ||||
|  | ||||
| static int | ||||
| _open_sysdeps (glibtop_server *, glibtop_backend *, u_int64_t, 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, | ||||
| 	       u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     glibtop_init_func_t *init_fkt; | ||||
|  | ||||
|     /* Do the initialization, but only if not already initialized. */ | ||||
|  | ||||
|     if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) { | ||||
| 	glibtop_open_s (server, "glibtop", features, 0); | ||||
|  | ||||
| 	for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++) | ||||
| 	    (*init_fkt) (server); | ||||
|  | ||||
| 	server->info->sysdeps.pointer_size = sizeof (void*)*8; | ||||
| 		 | ||||
| 	server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS; | ||||
|     } | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_sysdeps (glibtop_server *server, glibtop_backend *backend, | ||||
| 		void *closure) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-sysdeps</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -1,195 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 1; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* marshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `marshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <backend-sysdeps.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/call-vector.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|  | ||||
|     return if $orig =~ /^@/; | ||||
|  | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $first_param_name = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n             " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); | ||||
|     } else { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); | ||||
|     } | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); | ||||
|  | ||||
|     $total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n", | ||||
| 			   &toupper($feature), $total_code, | ||||
| 			   &toupper($feature)); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $init_hook_code = ''; | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   if ($feature =~ /^@/) { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf | ||||
|       (qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
|  | ||||
|   if (!($feature =~ /^@/)) { | ||||
|     $init_hook_code .= sprintf | ||||
|       (qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
| } | ||||
| $init_hook_code .= sprintf (qq[\tNULL\n]); | ||||
|  | ||||
| chop $init_hook_code; | ||||
| chop $call_vector_code; | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| print 'glibtop_init_func_t _glibtop_init_hook_s [] = {'; | ||||
| print $init_hook_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
							
								
								
									
										388
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										388
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,388 @@ | ||||
| dnl | ||||
| dnl Configure script for the Gnome library | ||||
| dnl | ||||
|  | ||||
| m4_define([libgtop_major_version], [2]) | ||||
| m4_define([libgtop_minor_version], [31]) | ||||
| m4_define([libgtop_micro_version], [90]) | ||||
| m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version]) | ||||
|  | ||||
| dnl  increment if the interface has additions, changes, removals. | ||||
| m4_define([libgtop_current], [10]) | ||||
|  | ||||
| dnl  increment any time the source changes; set to | ||||
| dnl  0 if you increment CURRENT | ||||
| m4_define([libgtop_revision], [0]) | ||||
|  | ||||
| dnl  increment if any interfaces have been added; set to 0 | ||||
| dnl  if any interfaces have been removed. removal has | ||||
| dnl  precedence over adding, so set to 0 if both happened. | ||||
| m4_define([libgtop_age], [0]) | ||||
|  | ||||
| # Increase each time you change the client/server protocol. | ||||
| m4_define([libgtop_server_version], [5]) | ||||
|  | ||||
| # Version code calculation | ||||
| m4_define([libgtop_version_code], [m4_eval(libgtop_major_version * 1000000 + libgtop_minor_version * 1000 + libgtop_micro_version)]) | ||||
|  | ||||
| AC_PREREQ(2.62) | ||||
| AC_INIT([libgtop], [libgtop_version], | ||||
|         [http://bugzilla.gnome.org/enter_bug.cgi?product=libgtop]) | ||||
| AC_CONFIG_SRCDIR(copyright.txt) | ||||
| AC_CONFIG_HEADERS(config.h) | ||||
|  | ||||
| AC_CANONICAL_HOST | ||||
|  | ||||
| AM_INIT_AUTOMAKE([-Wno-portability tar-ustar no-dist-gzip dist-xz]) | ||||
| AM_SILENT_RULES([yes]) | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
| GOBJECT_INTROSPECTION_CHECK([0.6.7]) | ||||
|  | ||||
| AC_SUBST(ACLOCAL_AMFLAGS, [\${ACLOCAL_FLAGS}]) | ||||
|  | ||||
| AC_SUBST(LIBGTOP_MAJOR_VERSION, [libgtop_major_version]) | ||||
| AC_SUBST(LIBGTOP_MINOR_VERSION, [libgtop_minor_version]) | ||||
| AC_SUBST(LIBGTOP_MICRO_VERSION, [libgtop_micro_version]) | ||||
| AC_SUBST(LIBGTOP_SERVER_VERSION, [libgtop_server_version]) | ||||
| AC_SUBST(LIBGTOP_VERSION, [libgtop_version]) | ||||
| AC_SUBST(LIBGTOP_VERSION_CODE, [libgtop_version_code]) | ||||
|  | ||||
| # libtool versioning | ||||
| AC_SUBST(LT_VERSION_INFO, | ||||
|          ["-version-info libgtop_current:libgtop_revision:libgtop_age"]) | ||||
|  | ||||
| ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ." | ||||
|  | ||||
| AC_ISC_POSIX | ||||
| AC_PROG_CC | ||||
| AC_STDC_HEADERS | ||||
| 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 does not work for libgtop. | ||||
| AC_CHECK_PROGS(AWK, gawk awk, ) | ||||
| 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(RANLIB,ranlib) | ||||
| AC_CHECK_TOOL(AS,as) | ||||
| AC_CHECK_TOOL(AR,ar) | ||||
|  | ||||
| export CC CXX RANLIB LD AS AR | ||||
|  | ||||
| AC_PROG_INSTALL | ||||
| AC_PROG_LN_S | ||||
| AC_PROG_MAKE_SET | ||||
|  | ||||
| export cross_compiling | ||||
|  | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) | ||||
|  | ||||
| GNOME_LIBGTOP_SYSDEPS | ||||
| GNOME_LIBGTOP_TYPES | ||||
|  | ||||
| GLIB_REQUIRED=2.6.0 | ||||
| GOBJECT_REQUIRED=2.26.0 | ||||
|  | ||||
| PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED gobject-2.0 >= $GOBJECT_REQUIRED) | ||||
| AC_SUBST(GLIB_CFLAGS) | ||||
| AC_SUBST(GLIB_LIBS) | ||||
|  | ||||
| AC_CHECK_HEADER(ifaddrs.h, [HAVE_IFADDRS_H=yes], [HAVE_IFADDRS_H=no]) | ||||
| if test x$HAVE_IFADDRS_H = xyes ; then | ||||
| 	AC_DEFINE(HAVE_IFADDRS_H, 1, [defined if you have ifaddrs.h]) | ||||
| fi | ||||
|  | ||||
| dnl Checks for typedefs, structures, and compiler characteristics. | ||||
| AC_C_CONST | ||||
| AC_C_INLINE | ||||
| AC_TYPE_OFF_T | ||||
| AC_TYPE_PID_T | ||||
| AC_TYPE_SIZE_T | ||||
| AC_STRUCT_ST_RDEV | ||||
| AC_HEADER_TIME | ||||
| AC_STRUCT_TM | ||||
| AC_TYPE_UID_T | ||||
|  | ||||
| dnl For SunOS | ||||
| AC_CHECK_TYPE(ssize_t, int) | ||||
| AC_CHECK_HEADERS(memory.h) | ||||
| AC_CHECK_HEADERS(string.h strings.h, break) | ||||
| AC_REPLACE_FUNCS(strerror) | ||||
|  | ||||
| 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 | ||||
| AC_CHECK_LIB(perfstat, vmgetinfo, | ||||
|     AC_DEFINE(HAVE_VMGETINFO, 1, | ||||
|         [Define to 1 if you have the 'vmgetinfo' function in libperfstat])) | ||||
|  | ||||
| dnl Solaris | ||||
| case "$host_os" in | ||||
|      solaris*) | ||||
|      AC_CHECK_LIB(kstat, kstat_open) | ||||
|      AC_CHECK_FUNCS(getloadavg swapctl) | ||||
|      AC_CHECK_HEADERS(procfs.h sys/procfs.h, break) | ||||
|  | ||||
|  | ||||
|     dnl Some versions of Solaris require -lelf for -lkvm | ||||
|     case $host_os in | ||||
|     solaris[[8-9]] | solaris2.[[0-9]].*) | ||||
|     AC_CHECK_LIB(kvm, kvm_open,[ | ||||
|       LIBS="-lkvm $LIBS" | ||||
|     ],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf) | ||||
|        AC_CACHE_VAL(ac_cv_lib_kvm_with_elf, | ||||
|        [ac_save_LIBS="$LIBS" | ||||
|         LIBS="-lkvm -lelf $LIBS" | ||||
|         AC_TRY_LINK([char kvm_open();], [kvm_open()], | ||||
|                     ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no) | ||||
|         LIBS="$ac_save_LIBS" | ||||
|        ]) | ||||
|        if test "$ac_cv_lib_kvm_with_elf" = "yes"; then | ||||
|          AC_MSG_RESULT(yes) | ||||
|          LIBS="-lkvm -lelf $LIBS" | ||||
|        else | ||||
|          AC_MSG_RESULT(no) | ||||
|        fi | ||||
|     ]) | ||||
|      ;; | ||||
|      esac | ||||
|      ;; | ||||
| esac | ||||
|  | ||||
| dnl For DEC OSF1 | ||||
| AC_CHECK_LIB(mach, vm_statistics) | ||||
|  | ||||
| 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_HEADER(netinet/in.h, | ||||
|    [AC_CHECK_HEADER(arpa/inet.h, [ | ||||
|   AC_DEFINE(HAVE_SOCKETS, 1, [Define if BSD sockets are supported]) | ||||
|       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un") | ||||
|       AC_TRY_LINK([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/un.h> | ||||
|       ], | ||||
|       [static struct sockaddr_un x; x.sun_len = 1;], | ||||
|       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un has a sun_len member])], | ||||
|       [AC_MSG_RESULT(no)])])])]) | ||||
|  | ||||
| dnl Checks for library functions. | ||||
| AC_FUNC_ALLOCA | ||||
| AC_FUNC_MMAP | ||||
| AC_TYPE_SIGNAL | ||||
| AC_FUNC_STRFTIME | ||||
| AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) | ||||
|  | ||||
| IT_PROG_INTLTOOL([0.35.0]) | ||||
|  | ||||
| GETTEXT_PACKAGE=libgtop-2.0 | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", | ||||
|                    [Define to the gettext package used by the library]) | ||||
|  | ||||
| AM_GLIB_GNU_GETTEXT | ||||
| GLIB_DEFINE_LOCALEDIR([GTOPLOCALEDIR]) | ||||
|  | ||||
| AC_PATH_XTRA | ||||
|  | ||||
| dnl For Solaris | ||||
| dnl Please don't move this before AC_PATH_XTRA | ||||
| AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)]) | ||||
| AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)]) | ||||
| AC_CHECK_FUNC(inet_aton,,[AC_CHECK_LIB(resolv,inet_aton)]) | ||||
|  | ||||
| dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n | ||||
| dnl So we use the following instead. | ||||
| dnl XE_SPACE(var, words) | ||||
| define([XE_SPACE],[ | ||||
| T="" | ||||
| for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done | ||||
| $1="$T" | ||||
| ])dnl | ||||
|  | ||||
| dnl Autodetect Xauth | ||||
| dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs | ||||
| saved_CPPFLAGS="$CPPFLAGS" | ||||
| CPPFLAGS="$CPPFLAGS $X_CFLAGS" | ||||
| test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) } | ||||
| test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) } | ||||
| test -z "$with_xauth" && with_xauth=yes | ||||
| if test "$with_xauth" = "yes"; then | ||||
|   AC_DEFINE(HAVE_XAUTH, 1, [Define if Xauth is supported]) | ||||
|   XE_SPACE(libs_xauth, $X_LIBS -lXau) | ||||
| fi | ||||
| CPPFLAGS="$saved_CPPFLAGS" | ||||
| AC_SUBST(libs_xauth) | ||||
|  | ||||
| dnl For diskusage stuff | ||||
| GNOME_FILEUTILS_CHECKS | ||||
|  | ||||
| dnl Debugging | ||||
| AC_ARG_ENABLE(debug, | ||||
|               AS_HELP_STRING([--enable-debug], | ||||
|                              [Turn on debugging @<:@default=no@:>@]), | ||||
|               AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 1, [Define to enable debugging]), | ||||
|               AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 0, [Define to disable debugging])) | ||||
| AC_ARG_ENABLE(fatal-warnings, | ||||
|               AS_HELP_STRING([--enable-fatal-warnings], | ||||
|                              [Make all warnings fatal @<:@debug=no@:>@]), | ||||
|               AC_DEFINE(LIBGTOP_FATAL_WARNINGS, 1, | ||||
|                         [Define to enable fatal warnings])) | ||||
|  | ||||
| dnl These definitions are expanded in make. | ||||
| LIBGTOP_LIBS='-L$(libdir)' | ||||
| LIBGTOP_INCS='-I$(includedir)/libgtop-2.0' | ||||
|  | ||||
| if test x$libgtop_have_sysinfo = xyes ; then | ||||
|   LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO" | ||||
| fi | ||||
|  | ||||
| LIBGTOP_INCS="$LIBGTOP_INCS $GLIB_CFLAGS" | ||||
|  | ||||
| libgtop_save_prefix="$prefix" | ||||
| libgtop_save_exec_prefix="$exec_prefix" | ||||
| test "x$prefix" = xNONE && prefix=$ac_default_prefix | ||||
| test "x$exec_prefix" = xNONE && exec_prefix=$prefix | ||||
| LIBGTOP_BINDIR=`eval echo "${bindir}"` | ||||
| LIBGTOP_SERVER=`eval echo "${bindir}/libgtop_server2"` | ||||
| prefix="$libgtop_save_prefix" | ||||
| exec_prefix="$libgtop_save_exec_prefix" | ||||
|  | ||||
| sysdeps_dir="$libgtop_sysdeps_dir" | ||||
| AC_SUBST(sysdeps_dir) | ||||
|  | ||||
| if test -z "$LIBGTOP_EXTRA_LIBS" ; then | ||||
|   LIBGTOP_EXTRA_LIBS="$libs_xauth" | ||||
| else | ||||
|   LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth" | ||||
| fi | ||||
|  | ||||
| LIBGTOP_EXTRA_LIBS="$GLIB_LIBS $LIBGTOP_EXTRA_LIBS" | ||||
|  | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS" | ||||
|  | ||||
| if test "$GCC" = "yes" ; then | ||||
|         CFLAGS="\ | ||||
| 	-Winline \ | ||||
| 	-Wall \ | ||||
| 	-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \ | ||||
| 	-Wnested-externs -Wpointer-arith \ | ||||
| 	-Wcast-align -Wsign-compare \ | ||||
| 	$CFLAGS" | ||||
| fi | ||||
|  | ||||
| AM_CPPFLAGS="-I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $X_CFLAGS" | ||||
|  | ||||
| # Add various defines to the config.h file ... | ||||
| AH_VERBATIM([_GNU_SOURCE], | ||||
| [/* Enable GNU extensions on systems that have them.  */ | ||||
| #ifndef _GNU_SOURCE | ||||
| #  define _GNU_SOURCE | ||||
| #endif]) | ||||
| AC_DEFINE([_IN_LIBGTOP], 1, | ||||
|           [Note that we are building libgtop rather than using it]) | ||||
| AC_DEFINE([LIBGTOP_VERSION], ["libgtop_version"], | ||||
|           [The libgtop version number]) | ||||
| AC_DEFINE([LIBGTOP_SERVER_VERSION], ["libgtop_server_version"], | ||||
|           [The libgtop server version]) | ||||
| AC_DEFINE([LIBGTOP_VERSION_CODE], [libgtop_version_code], | ||||
|           [The libgtop version number as an integer]) | ||||
| AC_DEFINE_UNQUOTED([LIBGTOP_SERVER], ["$LIBGTOP_SERVER"], | ||||
|                    [The path to the libgtop server]) | ||||
|  | ||||
| AC_SUBST(AM_CPPFLAGS) | ||||
|  | ||||
| AC_SUBST(LIBGTOP_EXTRA_LIBS) | ||||
| AC_SUBST(GLIB_LIBS) | ||||
| AC_SUBST(LIBGTOP_LIBS) | ||||
| AC_SUBST(LIBGTOP_INCS) | ||||
| AC_SUBST(LIBGTOP_BINDIR) | ||||
| AC_SUBST(LIBGTOP_SERVER) | ||||
|  | ||||
| if test x$libgtop_need_server = xyes ; then | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la" | ||||
|    server_programs='libgtop_server2' | ||||
| else | ||||
|    sysdeps_suid_lib= | ||||
|    server_programs= | ||||
| fi | ||||
| AC_SUBST(sysdeps_suid_lib) | ||||
| AC_SUBST(server_programs) | ||||
|  | ||||
| GTK_DOC_CHECK(1.4) | ||||
|  | ||||
| AC_CONFIG_FILES([ | ||||
| Makefile | ||||
| libgtop.spec | ||||
| po/Makefile.in | ||||
| misc/Makefile | ||||
| include/Makefile | ||||
| include/glibtop/Makefile | ||||
| sysdeps/Makefile | ||||
| sysdeps/common/Makefile | ||||
| sysdeps/stub/Makefile | ||||
| sysdeps/stub_suid/Makefile | ||||
| sysdeps/sun4/Makefile | ||||
| sysdeps/osf1/Makefile | ||||
| sysdeps/linux/Makefile | ||||
| sysdeps/freebsd/Makefile | ||||
| sysdeps/solaris/Makefile | ||||
| sysdeps/aix/Makefile | ||||
| sysdeps/bsd/Makefile | ||||
| sysdeps/darwin/Makefile | ||||
| sysdeps/cygwin/Makefile | ||||
| sysdeps/openbsd/Makefile | ||||
| src/Makefile | ||||
| src/daemon/Makefile | ||||
| lib/Makefile | ||||
| examples/Makefile | ||||
| doc/Makefile | ||||
| doc/reference/Makefile | ||||
| doc/reference/version.xml | ||||
| libgtop-2.0.pc | ||||
| libgtopconfig.h | ||||
| ]) | ||||
|  | ||||
| AC_OUTPUT | ||||
							
								
								
									
										483
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										483
									
								
								configure.in
									
									
									
									
									
								
							| @@ -1,483 +0,0 @@ | ||||
| dnl | ||||
| dnl Configure script for the Gnome library | ||||
| dnl | ||||
|  | ||||
| AC_INIT(copyright.txt) | ||||
| AM_CONFIG_HEADER(config.h) | ||||
| AC_CANONICAL_SYSTEM | ||||
|  | ||||
| LIBGTOP_MAJOR_VERSION=2 | ||||
| LIBGTOP_MINOR_VERSION=0 | ||||
| LIBGTOP_MICRO_VERSION=5 | ||||
| LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION | ||||
| AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION) | ||||
| LIBGTOP_INTERFACE_AGE=5 | ||||
| LIBGTOP_BINARY_AGE=5 | ||||
|  | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| LIBGTOP_VERSION_SUFFIX= | ||||
|  | ||||
| # Increase each time you change the client/server protocol. | ||||
| LIBGTOP_SERVER_VERSION=5 | ||||
|  | ||||
| # Version code calculation | ||||
| LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION` | ||||
|  | ||||
| AC_SUBST(LIBGTOP_MAJOR_VERSION) | ||||
| AC_SUBST(LIBGTOP_MINOR_VERSION) | ||||
| AC_SUBST(LIBGTOP_MICRO_VERSION) | ||||
| AC_SUBST(LIBGTOP_INTERFACE_AGE) | ||||
| AC_SUBST(LIBGTOP_BINARY_AGE) | ||||
| AC_SUBST(LIBGTOP_SERVER_VERSION) | ||||
| AC_SUBST(LIBGTOP_VERSION) | ||||
| AC_SUBST(LIBGTOP_VERSION_CODE) | ||||
| AC_SUBST(LIBGTOP_VERSION_SUFFIX) | ||||
|  | ||||
| # libtool versioning | ||||
| LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION | ||||
| LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE` | ||||
| LT_REVISION=$LIBGTOP_INTERFACE_AGE | ||||
| LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE` | ||||
| LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}' | ||||
| AC_SUBST(LT_VERSION_INFO) | ||||
| AC_SUBST(LT_RELEASE) | ||||
| AC_SUBST(LT_CURRENT) | ||||
| AC_SUBST(LT_REVISION) | ||||
| AC_SUBST(LT_AGE) | ||||
|  | ||||
| ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ." | ||||
|  | ||||
| AC_ISC_POSIX | ||||
| AC_PROG_CC | ||||
| AC_STDC_HEADERS | ||||
| 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 does not work for libgtop. | ||||
| AC_CHECK_PROGS(AWK, gawk awk, ) | ||||
| 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(RANLIB,ranlib) | ||||
| AC_CHECK_TOOL(AS,as) | ||||
| AC_CHECK_TOOL(AR,ar) | ||||
|  | ||||
| export CC CXX RANLIB LD AS AR | ||||
|  | ||||
| AC_PROG_INSTALL | ||||
| AC_PROG_LN_S | ||||
| AC_PROG_MAKE_SET | ||||
|  | ||||
| export cross_compiling | ||||
|  | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| dnl Let the user enable compiler warnings | ||||
| dnl GNOME_COMPILE_WARNINGS | ||||
|  | ||||
| dnl GNOME_INIT_HOOK(gnome_found=yes) | ||||
|  | ||||
| dnl if test "x$gnome_found" != xyes; then | ||||
| dnl   if test "x$want_gnome" != xno ; then | ||||
| dnl     AC_MSG_ERROR([ | ||||
| dnl *** GNOME was not found on this system. *** | ||||
| dnl  | ||||
| dnl *** If you want to use LibGTop without GNOME, you need | ||||
| dnl *** to give configure the --without-gnome parameter. | ||||
| dnl ]) | ||||
| dnl   else | ||||
| dnl     AC_DEFINE(WITHOUT_GNOME) | ||||
| dnl   fi | ||||
| dnl   GNOME_SUPPORT_CHECKS | ||||
| dnl else | ||||
| dnl   if test "x$want_gnome" != xno ; then | ||||
| dnl     AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
| dnl   else | ||||
| dnl     GNOME_SUPPORT_CHECKS | ||||
| dnl   fi | ||||
| dnl fi | ||||
|  | ||||
| AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
|  | ||||
| AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) | ||||
|  | ||||
| GNOME_LIBGTOP_SYSDEPS | ||||
| GNOME_LIBGTOP_TYPES | ||||
|  | ||||
| dnl AC_ARG_WITH(libgtop-guile, | ||||
| dnl [  --with-libgtop-guile    Build the libgtop guile interface (default=no)], | ||||
| dnl [build_guile="$withval"], [build_guile=yes]) | ||||
|  | ||||
| dnl if test x$build_guile != xno ; then | ||||
| dnl  GNOME_CHECK_GUILE | ||||
| dnl fi | ||||
|  | ||||
| AC_ARG_WITH(libgtop-inodedb, | ||||
| [  --with-libgtop-inodedb  Build the inodedb stuff (default=no)], | ||||
| [build_inodedb="$withval"], [build_inodedb=no]) | ||||
|  | ||||
| LIBGTOP_EXTRA_LIBS= | ||||
|  | ||||
| if test x$build_inodedb = xyes ; then | ||||
|   AC_CHECK_LIB(gdbm, gdbm_open, LIBGTOP_EXTRA_LIBS='-lgdbm', build_inodedb=no) | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(INODEDB, test x$build_inodedb = xyes) | ||||
|  | ||||
| if test x$build_inodedb = xyes ; then | ||||
|   AC_DEFINE(GLIBTOP_INODEDB) | ||||
| fi | ||||
|  | ||||
| AC_DEFINE(GLIBTOP_NAMES) | ||||
|  | ||||
| if test x$ac_cv_guile_found = xyes ; then | ||||
|   AC_DEFINE(GLIBTOP_GUILE) | ||||
|   AC_DEFINE(GLIBTOP_GUILE_NAMES) | ||||
|   libgtop_guile_found=yes | ||||
|   guile_examples='third' | ||||
|   guile_static_examples='third_static' | ||||
|   guile_subdirs='guile' | ||||
| else | ||||
|   libgtop_guile_found=no | ||||
|   guile_examples= | ||||
|   guile_static_examples= | ||||
|   guile_subdirs= | ||||
| fi | ||||
|  | ||||
| if test x$libgtop_smp = xyes ; then | ||||
|   smp_examples='smp' | ||||
|   smp_static_examples='smp_static' | ||||
| else | ||||
|   smp_examples= | ||||
|   smp_static_examples= | ||||
| fi | ||||
|  | ||||
| if test "x$enable_static" != xno; then | ||||
|   static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $guile_static_examples $smp_static_examples" | ||||
| else | ||||
|   static_targets="" | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes) | ||||
| AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes) | ||||
|  | ||||
| AC_SUBST(static_targets) | ||||
| AC_SUBST(smp_examples) | ||||
| AC_SUBST(guile_examples) | ||||
| AC_SUBST(guile_subdirs) | ||||
|  | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| GLIB_REQUIRED=2.0.0 | ||||
|  | ||||
| PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED) | ||||
| AC_SUBST(GLIB_CFLAGS) | ||||
| AC_SUBST(GLIB_LIBS) | ||||
|  | ||||
| dnl (1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop)) | ||||
|  | ||||
| dnl You need to uncomment the following line if you want to use | ||||
| dnl libGTop without Gnome. | ||||
| GNOME_SUPPORT_CHECKS | ||||
|  | ||||
| dnl Checks for typedefs, structures, and compiler characteristics. | ||||
| AC_C_CONST | ||||
| AC_C_INLINE | ||||
| AC_TYPE_OFF_T | ||||
| AC_TYPE_PID_T | ||||
| AC_TYPE_SIZE_T | ||||
| AC_STRUCT_ST_RDEV | ||||
| AC_HEADER_TIME | ||||
| AC_STRUCT_TM | ||||
| AC_TYPE_UID_T | ||||
|  | ||||
| dnl For SunOS | ||||
| AC_CHECK_TYPE(ssize_t, int) | ||||
| AC_CHECK_HEADERS(memory.h) | ||||
| AC_CHECK_HEADERS(string.h strings.h, break) | ||||
| AC_REPLACE_FUNCS(strerror) | ||||
|  | ||||
| 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 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 | ||||
| AC_CHECK_LIB(mach, vm_statistics) | ||||
|  | ||||
| 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_HEADER(netinet/in.h, | ||||
|    [AC_CHECK_HEADER(arpa/inet.h, [ | ||||
|   AC_DEFINE(HAVE_SOCKETS) | ||||
|       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un") | ||||
|       AC_TRY_LINK([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/un.h> | ||||
|       ], | ||||
|       [static struct sockaddr_un x; x.sun_len = 1;], | ||||
|       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)], | ||||
|       [AC_MSG_RESULT(no)])])])]) | ||||
|  | ||||
| dnl Checks for library functions. | ||||
| AC_FUNC_ALLOCA | ||||
| AC_FUNC_MMAP | ||||
| AC_TYPE_SIGNAL | ||||
| AC_FUNC_STRFTIME | ||||
| AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) | ||||
|  | ||||
| ALL_LINGUAS="am ar az be bg bn ca cs cy da de el es et fa fi fr ga gl he hi hu id it ja ko lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW" | ||||
|  | ||||
| GETTEXT_PACKAGE=libgtop-2.0 | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE") | ||||
|  | ||||
| AM_GLIB_GNU_GETTEXT | ||||
|  | ||||
| AC_PATH_XTRA | ||||
|  | ||||
| dnl For Solaris | ||||
| dnl Please don't move this before AC_PATH_XTRA | ||||
| AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)]) | ||||
| AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)]) | ||||
| AC_CHECK_FUNC(inet_aton,,[AC_CHECK_LIB(resolv,inet_aton)]) | ||||
|  | ||||
| dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n | ||||
| dnl So we use the following instead. | ||||
| dnl XE_SPACE(var, words) | ||||
| define([XE_SPACE],[ | ||||
| T="" | ||||
| for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done | ||||
| $1="$T" | ||||
| ])dnl | ||||
|  | ||||
| dnl Autodetect Xauth | ||||
| dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs | ||||
| saved_CPPFLAGS="$CPPFLAGS" | ||||
| CPPFLAGS="$CPPFLAGS $X_CFLAGS" | ||||
| test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) } | ||||
| test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) } | ||||
| test -z "$with_xauth" && with_xauth=yes | ||||
| if test "$with_xauth" = "yes"; then | ||||
|   AC_DEFINE(HAVE_XAUTH) | ||||
|   XE_SPACE(libs_xauth, $X_LIBS -lXau) | ||||
| fi | ||||
| CPPFLAGS="$saved_CPPFLAGS" | ||||
| AC_SUBST(libs_xauth) | ||||
|  | ||||
| dnl For diskusage stuff | ||||
| GNOME_FILEUTILS_CHECKS | ||||
|  | ||||
| dnl Debugging | ||||
| AC_ARG_ENABLE(debug, [  --enable-debug          turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),) | ||||
| AC_ARG_ENABLE(fatal-warnings, [  --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),) | ||||
|  | ||||
| if test "x$gnome_found" = xyes ; then | ||||
|   LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport" | ||||
|   SUPPORTINCS="$GNOME_INCLUDEDIR" | ||||
| else | ||||
|   LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la' | ||||
|   SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support' | ||||
| fi | ||||
|  | ||||
| dnl Some ugly hack; if '-lgnomesupport' is part of $GNOME_LIBS, | ||||
| dnl we include it here. | ||||
| case "$GNOME_LIBS" in | ||||
| 	'*-lgnomesupport*' )  | ||||
| 	  LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport" | ||||
|           SUPPORTINCS="$GNOME_INCLUDEDIR" ;; | ||||
| esac | ||||
| AC_SUBST(LIBSUPPORT) | ||||
| AC_SUBST(SUPPORTINCS) | ||||
|  | ||||
| dnl These definitions are expanded in make. | ||||
| LIBGTOP_LIBS='-L$(libdir)' | ||||
| LIBGTOP_INCS='-I$(includedir)/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 | ||||
|   LIBGTOP_INCS="$LIBGTOP_INCS -DGLIBTOP_INODEDB" | ||||
| fi | ||||
|  | ||||
| if test x$libgtop_smp = xyes ; then | ||||
|   LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP" | ||||
| fi | ||||
|  | ||||
| if test x$libgtop_have_sysinfo = xyes ; then | ||||
|   LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO" | ||||
| fi | ||||
|  | ||||
| LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS" | ||||
|  | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS" | ||||
| LIBGTOP_GUILE_INCS="$LIBGTOP_INCS" | ||||
| LIBGTOP_BINDIR='$(bindir)' | ||||
| LIBGTOP_SERVER='$(bindir)/libgtop_server2' | ||||
|  | ||||
| sysdeps_dir="$libgtop_sysdeps_dir" | ||||
| AC_SUBST(sysdeps_dir) | ||||
|  | ||||
| if test x$ac_cv_guile_found = xyes ; then | ||||
|   LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0" | ||||
|   libgtop_guile_found=yes | ||||
| else | ||||
|   libgtop_guile_found=no | ||||
| fi | ||||
|  | ||||
| AC_SUBST(libgtop_guile_found) | ||||
|  | ||||
| if test -z "$LIBGTOP_EXTRA_LIBS" ; then | ||||
|   LIBGTOP_EXTRA_LIBS="$libs_xauth" | ||||
| else | ||||
|   LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth" | ||||
| fi | ||||
|  | ||||
| LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS" | ||||
|  | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0" | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0" | ||||
|  | ||||
| LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names-2.0" | ||||
| LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names-2.0 -lgtop_names-2.0" | ||||
|  | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS"  | ||||
| LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS" | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS" | ||||
| LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS" | ||||
|  | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS" | ||||
| LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE" | ||||
|  | ||||
| LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES" | ||||
| LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES" | ||||
| LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES" | ||||
|  | ||||
| machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir" | ||||
|  | ||||
| AC_SUBST(machine_incs) | ||||
|  | ||||
| if test x$libgtop_guile_found = xyes ; then | ||||
|   guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS " | ||||
| else | ||||
|   guile_def="" | ||||
| 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 $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"' | ||||
|  | ||||
| AC_SUBST(INCLUDES) | ||||
|  | ||||
| AC_SUBST(LIBGTOP_EXTRA_LIBS) | ||||
| AC_SUBST(GLIB_LIBS) | ||||
| AC_SUBST(LIBGTOP_LIBS) | ||||
| AC_SUBST(LIBGTOP_INCS) | ||||
| AC_SUBST(LIBGTOP_NAMES_LIBS) | ||||
| AC_SUBST(LIBGTOP_NAMES_INCS) | ||||
| AC_SUBST(LIBGTOP_GUILE_LIBS) | ||||
| AC_SUBST(LIBGTOP_GUILE_INCS) | ||||
| AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS) | ||||
| AC_SUBST(LIBGTOP_GUILE_NAMES_INCS) | ||||
| AC_SUBST(LIBGTOP_BINDIR) | ||||
| AC_SUBST(LIBGTOP_SERVER) | ||||
|  | ||||
| if test x$libgtop_need_server = xyes ; then | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la" | ||||
|    server_programs='libgtop_server2' | ||||
| else | ||||
|    sysdeps_suid_lib= | ||||
|    server_programs= | ||||
| fi | ||||
| AC_SUBST(sysdeps_suid_lib) | ||||
| AC_SUBST(server_programs) | ||||
|  | ||||
| AC_OUTPUT([ | ||||
| Makefile | ||||
| libgtop.spec | ||||
| po/Makefile.in | ||||
| misc/Makefile | ||||
| include/Makefile | ||||
| include/glibtop/Makefile | ||||
| sysdeps/Makefile | ||||
| sysdeps/common/Makefile | ||||
| sysdeps/names/Makefile | ||||
| sysdeps/guile/Makefile | ||||
| sysdeps/guile/names/Makefile | ||||
| sysdeps/stub/Makefile | ||||
| sysdeps/stub_suid/Makefile | ||||
| sysdeps/sun4/Makefile | ||||
| sysdeps/osf1/Makefile | ||||
| sysdeps/linux/Makefile | ||||
| sysdeps/kernel/Makefile | ||||
| sysdeps/freebsd/Makefile | ||||
| sysdeps/solaris/Makefile | ||||
| sysdeps/aix/Makefile | ||||
| src/Makefile | ||||
| src/daemon/Makefile | ||||
| src/inodedb/Makefile | ||||
| lib/Makefile | ||||
| examples/Makefile | ||||
| doc/Makefile | ||||
| support/Makefile | ||||
| libgtop-2.0.pc | ||||
| ]) | ||||
| @@ -1,10 +1,9 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|    This file is part of LibGTop 2.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    Contributed by Benoît Dejean <TazForEver@dlfp.org>, 2004. | ||||
|     | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
| @@ -17,7 +16,7 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
|   | ||||
							
								
								
									
										9
									
								
								debian/.cvsignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								debian/.cvsignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| control | ||||
| rules | ||||
| build | ||||
| tmp | ||||
| *.postinst | ||||
| *.debhelper | ||||
| *.files | ||||
| files | ||||
| substvars | ||||
							
								
								
									
										3
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
								
							| @@ -1,17 +1,14 @@ | ||||
| @PREFIX@/lib/libgtop.a | ||||
| @PREFIX@/lib/libgtop_common.a | ||||
| @PREFIX@/lib/libgtop_names.a | ||||
| @PREFIX@/lib/libgtop_suid_common.a | ||||
| @PREFIX@/lib/libgtop_sysdeps.a | ||||
| @PREFIX@/lib/libgtop.la | ||||
| @PREFIX@/lib/libgtop_common.la | ||||
| @PREFIX@/lib/libgtop_names.la | ||||
| @PREFIX@/lib/libgtop_suid_common.la | ||||
| @PREFIX@/lib/libgtop_sysdeps.la | ||||
| @PREFIX@/lib/libgtopConf.sh | ||||
| @PREFIX@/lib/libgtop.so | ||||
| @PREFIX@/lib/libgtop_common.so | ||||
| @PREFIX@/lib/libgtop_names.so | ||||
| @PREFIX@/lib/libgtop_suid_common.so | ||||
| @PREFIX@/lib/libgtop_sysdeps.so | ||||
| @PREFIX@/lib/libgtop-features.def | ||||
|   | ||||
							
								
								
									
										2
									
								
								debian/rules.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/rules.in
									
									
									
									
										vendored
									
									
								
							| @@ -10,7 +10,7 @@ | ||||
| i=$(shell pwd)/debian/tmp | ||||
| b=$(shell pwd)/debian/build | ||||
|  | ||||
| configure: configure.in | ||||
| configure: configure.ac | ||||
| 	@echo "--- Making configure script and configuring" | ||||
| 	chmod +x autogen.sh | ||||
| 	./autogen.sh --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \ | ||||
|   | ||||
| @@ -1,10 +0,0 @@ | ||||
| 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 | ||||
| @@ -1,3 +1,44 @@ | ||||
| 2007-02-15  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* reference/Makefile.am: | ||||
| 	 | ||||
| 	Fixed distcheck. | ||||
|  | ||||
| 2006-02-21  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* reference.texi: Fixed glibtop_get_proc_state doc. | ||||
| 	Patch by Emil Nowak <emil5@go2.pl>. | ||||
|  | ||||
| 2005-01-03  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* reference.texi: Updated. | ||||
|  | ||||
| 2004-12-04  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* reference.texi: Updated. | ||||
|  | ||||
| 2004-08-03  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* reference.texi: Updated. | ||||
|  | ||||
| 2004-07-07  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* reference.texi: updated. | ||||
| 	Added glibtop_get_proc_argv. | ||||
| 	Added glibtop_fsusage.block_size. | ||||
|  | ||||
| 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 | ||||
|   | ||||
| @@ -1,45 +1,8 @@ | ||||
| SUBDIRS = reference | ||||
|  | ||||
| info_TEXINFOS		= libgtop2.texi | ||||
|  | ||||
| libgtop2_TEXINFOS	= libgtop2.texi about.texi reference.texi \ | ||||
| 			  auto-macros.texi version.texi main.texi \ | ||||
| 			  white-paper.texi | ||||
| 			  version.texi main.texi white-paper.texi | ||||
|  | ||||
| MAKEINFO		= @MAKEINFO@ -I @libgtop_top_builddir@/doc | ||||
|  | ||||
| EXTRA_DIST		= auto-macros.texi.in | ||||
|  | ||||
| auto-macros.texi: auto-macros.texi.in Makefile | ||||
| ## Use sed and then mv to avoid problems if the user interrupts. | ||||
| 	sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \ | ||||
| 	  -e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_LIBS\%#$(LIBGTOP_GUILE_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_INCS\%#$(LIBGTOP_GUILE_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_NAMES_LIBS\%#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_NAMES_INCS\%#$(LIBGTOP_GUILE_NAMES_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_BINDIR\%#$(LIBGTOP_BINDIR)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_SERVER\%#$(LIBGTOP_SERVER)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \ | ||||
| 	  -e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \ | ||||
| 	  -e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \ | ||||
| 	  -e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \ | ||||
| 	  -e 's#\%libgtop_guile_found\%#$(libgtop_guile_found)#g' \ | ||||
| 	  -e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \ | ||||
| 	      < $(srcdir)/auto-macros.texi.in > auto-macros.tmp | ||||
| 	echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp | ||||
| 	if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \ | ||||
| 	  echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \ | ||||
| 	else \ | ||||
| 	  echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \ | ||||
| 	fi | ||||
| 	mv auto-macros.tmp auto-macros.texi | ||||
| AM_MAKEINFOFLAGS	= -I $(libgtop_top_builddir)/doc | ||||
|   | ||||
| @@ -1,12 +0,0 @@ | ||||
| @c LibGTop major, minor and micro version. | ||||
| @set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION% | ||||
| @set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION% | ||||
| @set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION% | ||||
|  | ||||
| @c LibGTop version and numerical version code ("1.234.567" -> 1234567). | ||||
| @set LIBGTOP_VERSION "%LIBGTOP_VERSION%" | ||||
| @set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE% | ||||
|  | ||||
| @c LibGTop server version, increased each time the protocol changes. | ||||
| @set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION% | ||||
|  | ||||
| @@ -5,7 +5,6 @@ | ||||
| @setchapternewpage odd | ||||
| @c %**end of header | ||||
|  | ||||
| @include auto-macros.texi | ||||
| @include version.texi | ||||
|  | ||||
| @ifinfo | ||||
|   | ||||
| @@ -50,24 +50,25 @@ typedef struct _glibtop_cpu     glibtop_cpu; | ||||
|  | ||||
| struct _glibtop_cpu | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         total, | ||||
|         user, | ||||
|         nice, | ||||
|         sys, | ||||
|         idle, | ||||
|         iowait, | ||||
|         irq, | ||||
|         softirq, | ||||
|         frequency, | ||||
|         xcpu_total [GLIBTOP_NCPU], | ||||
|         xcpu_user [GLIBTOP_NCPU], | ||||
|         xcpu_nice [GLIBTOP_NCPU], | ||||
|         xcpu_sys  [GLIBTOP_NCPU], | ||||
| @ifset LIBGTOP-1-1 | ||||
|         xcpu_idle [GLIBTOP_NCPU], | ||||
|         xcpu_iowait [GLIBTOP_NCPU], | ||||
|         xcpu_irq [GLIBTOP_NCPU], | ||||
|         xcpu_softirq [GLIBTOP_NCPU], | ||||
|         xcpu_flags; | ||||
| @end ifset | ||||
| @ifclear LIBGTOP-1-1 | ||||
|         xcpu_idle [GLIBTOP_NCPU]; | ||||
| @end ifclear | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
| @@ -92,25 +93,33 @@ Number of clock ticks the system spent in system mode. | ||||
| @item idle | ||||
| Number of clock ticks the system spent in the idle task. | ||||
|  | ||||
| @item iowait | ||||
| Number of clock ticks the system spent waiting for I/O to complete. | ||||
|  | ||||
| @item irq | ||||
| Number of clock ticks the system spent servicing interrupts. | ||||
|  | ||||
| @item softirq | ||||
| Number of clock ticks the system spent servicing softirqs. | ||||
|  | ||||
| @item frequency | ||||
| Tick frequency (default is 100). | ||||
|  | ||||
| @end table | ||||
|  | ||||
| The @samp{xcpu_} values are for SMP systems - they are the same than | ||||
| @code{total}, @code{user}, @code{nice}, @code{sys} and @code{idle} | ||||
| @code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle}, | ||||
| @code{iowait}, @code{irq} and @code{softirq} | ||||
| except that they are arrays of @code{GLIBTOP_NCPU} (defined in | ||||
| @file{<glibtop/limits.h>}) elements and contain one value for each CPU | ||||
| @file{<glibtop/cpu.h>}) elements and contain one value for each CPU | ||||
| in the system. | ||||
|  | ||||
| @ifset LIBGTOP-1-1 | ||||
| @table @code | ||||
| @item xcpu_flags | ||||
| This is interpreted as a bit-field: on systems like Solaris, not all CPUs | ||||
| need to be running all the time, so we set the corresponding bit for each | ||||
| CPU that is currently running. | ||||
| @end table | ||||
| @end ifset | ||||
|  | ||||
| Please note that all of the cpu values are absolute values measured in | ||||
| certain units (to get seconds, divide them by @code{frequency}) since system | ||||
| @@ -139,7 +148,7 @@ typedef struct _glibtop_mem     glibtop_mem; | ||||
|  | ||||
| struct _glibtop_mem | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         total, | ||||
|         used, | ||||
|         free, | ||||
| @@ -207,7 +216,7 @@ typedef struct _glibtop_swap    glibtop_swap; | ||||
|  | ||||
| struct _glibtop_swap | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         total, | ||||
|         used, | ||||
|         free, | ||||
| @@ -266,10 +275,10 @@ typedef struct _glibtop_uptime  glibtop_uptime; | ||||
|  | ||||
| struct _glibtop_uptime | ||||
| @{ | ||||
|     u_int64_t flags; | ||||
|     guint64 flags; | ||||
|     double uptime, | ||||
|         idletime; | ||||
|     u_int64_t boot_time; | ||||
|     guint64 boot_time; | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
| @@ -318,9 +327,9 @@ typedef struct _glibtop_loadavg glibtop_loadavg; | ||||
|  | ||||
| struct _glibtop_loadavg | ||||
| @{ | ||||
|     u_int64_t flags; | ||||
|     guint64 flags; | ||||
|     double loadavg [3]; | ||||
|     u_int64_t nr_running, | ||||
|     guint64 nr_running, | ||||
|         nr_tasks, | ||||
|         last_pid; | ||||
| @}; | ||||
| @@ -359,11 +368,11 @@ Library function @code{glibtop_get_proclist}: | ||||
| @cartouche | ||||
| unsigned * | ||||
| glibtop_get_proclist (glibtop_proclist *buf, | ||||
|                       int64_t which, int64_t arg); | ||||
|                       gint64 which, gint64 arg); | ||||
|  | ||||
| unsigned * | ||||
| glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf, | ||||
|                         int64_t which, int64_t arg); | ||||
|                         gint64 which, gint64 arg); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @@ -395,7 +404,7 @@ typedef struct _glibtop_proclist        glibtop_proclist; | ||||
|  | ||||
| struct _glibtop_proclist | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         number, | ||||
|         total, | ||||
|         size; | ||||
| @@ -464,8 +473,8 @@ Size of a single entry in the returned list | ||||
| (this equals @code{sizeof (unsigned)}). | ||||
| @end table | ||||
|  | ||||
| The returned list is allocated using @code{glibtop_malloc} and must be freed | ||||
| using @code{glibtop_free} to avoid a memory leak. | ||||
| The returned list is allocated using @code{g_malloc} and must be freed | ||||
| using @code{g_free} to avoid a memory leak. | ||||
|  | ||||
| @page | ||||
| @node glibtop_proc_state, glibtop_proc_uid, glibtop_proclist, System Dependent | ||||
| @@ -484,7 +493,7 @@ glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf, | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| Declaration of @code{glibtop_proc_state} in @file{<glibtop/proc_state.h>}: | ||||
| Declaration of @code{glibtop_proc_state} in @file{<glibtop/procstate.h>}: | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| @@ -492,7 +501,7 @@ typedef struct _glibtop_proc_state      glibtop_proc_state; | ||||
|  | ||||
| struct _glibtop_proc_state | ||||
| @{ | ||||
|     u_int64_t flags; | ||||
|     guint64 flags; | ||||
|     char cmd[40]; | ||||
| @ifset LIBGTOP-1-1 | ||||
|     unsigned state; | ||||
| @@ -572,6 +581,7 @@ There are some constants for the @code{state} field: | ||||
| #define GLIBTOP_PROCESS_ZOMBIE                  8 | ||||
| #define GLIBTOP_PROCESS_STOPPED                 16 | ||||
| #define GLIBTOP_PROCESS_SWAPPING                32 | ||||
| #define GLIBTOP_PROCESS_DEAD                    64 | ||||
| @end cartouche | ||||
| @end example | ||||
| @end ifset | ||||
| @@ -618,7 +628,7 @@ typedef struct _glibtop_proc_uid        glibtop_proc_uid; | ||||
|  | ||||
| struct _glibtop_proc_uid | ||||
| @{ | ||||
|     u_int64_t flags; | ||||
|     guint64 flags; | ||||
|     int uid, | ||||
|         euid, | ||||
|         gid, | ||||
| @@ -670,7 +680,7 @@ Standard unix nice level of process. | ||||
| Number of additional process groups. | ||||
| @item groups | ||||
| Array of additional process groups@* | ||||
| (@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/limits.h>}). | ||||
| (@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/procuid.h>}). | ||||
| @end table | ||||
|  | ||||
| @page | ||||
| @@ -698,7 +708,7 @@ typedef struct _glibtop_proc_mem        glibtop_proc_mem; | ||||
|  | ||||
| struct _glibtop_proc_mem | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         size, | ||||
|         vsize, | ||||
|         resident, | ||||
| @@ -717,7 +727,7 @@ Number of pages of virtual memory. | ||||
| @item resident | ||||
| Number of residnet set (non-swapped) pages. | ||||
| @item share | ||||
| Number of pages of shared (mmap'd) memory. | ||||
| Number of pages of shared (mmap\'d) memory. | ||||
| @item rss | ||||
| Number of pages the process has in real memory, minus 3 for administrative | ||||
| purposes. | ||||
| @@ -733,7 +743,7 @@ The description above is taken from the manual page of the @file{/proc} | ||||
| filesystem under Linux and is a little bit confusing, so I make this clear | ||||
| here.  | ||||
|  | ||||
| @strong{Note for people porting LibGTop to other systems:} | ||||
| @strong{A word for people porting LibGTop to other systems:} | ||||
| Every operating system has its own idea about the memory usage of a process | ||||
| and also system utilities like @code{ps} show different things on different | ||||
| systems. | ||||
| @@ -813,7 +823,7 @@ typedef struct _glibtop_proc_time       glibtop_proc_time; | ||||
|  | ||||
| struct _glibtop_proc_time | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         start_time, | ||||
|         rtime, | ||||
|         utime, | ||||
| @@ -830,6 +840,7 @@ struct _glibtop_proc_time | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
|  | ||||
| @table @code | ||||
| @item start_time | ||||
| Start time of process in seconds since the epoch | ||||
| @@ -856,6 +867,18 @@ SMP user-mode CPU time accumulated by process | ||||
| SMP kernel-mode CPU time accumulated by process | ||||
| @end table | ||||
|  | ||||
|  | ||||
| Please note that under Linux, @code{start_time} value may be strange. | ||||
| Linux kernel defines @code{INITIAL_JIFFIES} which implies a time | ||||
| shift. Because @code{INITIAL_JIFFIES} is not user-space defined, we | ||||
| cannot use it to compute accurate @code{start_time}. On Linux2.6, | ||||
| @code{INITIAL_JIFFIES} is 300 so @code{start_time} is always 3s | ||||
| different from real start time of the given process. You may also get | ||||
| shift results if your system clock is not synchronised with your | ||||
| hardware clock. See @samp{man hwclock}. | ||||
|  | ||||
|  | ||||
|  | ||||
| @page | ||||
| @node glibtop_proc_signal, glibtop_proc_kernel, glibtop_proc_time, System Dependent | ||||
| @subsection Process Signal information | ||||
| @@ -881,7 +904,7 @@ typedef struct _glibtop_proc_signal     glibtop_proc_signal; | ||||
|  | ||||
| struct _glibtop_proc_signal | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         signal [2], | ||||
|         blocked [2], | ||||
|         sigignore [2], | ||||
| @@ -902,7 +925,7 @@ Mask of caught signals | ||||
| @end table | ||||
|  | ||||
| All signal masks are interpreted as bit mask; it is an array of two | ||||
| @code{u_int64_t}'s so we can save 128 signals there. | ||||
| @code{guint64}'s so we can save 128 signals there. | ||||
|  | ||||
| @page | ||||
| @node glibtop_proc_kernel, glibtop_proc_segment, glibtop_proc_signal, System Dependent | ||||
| @@ -929,8 +952,8 @@ typedef struct _glibtop_proc_kernel     glibtop_proc_kernel; | ||||
|  | ||||
| struct _glibtop_proc_kernel | ||||
| @{ | ||||
|     u_int64_t flags; | ||||
|     u_int64_t k_flags, | ||||
|     guint64 flags; | ||||
|     guint64 k_flags, | ||||
|         min_flt, | ||||
|         maj_flt, | ||||
|         cmin_flt, | ||||
| @@ -1029,7 +1052,7 @@ typedef struct _glibtop_proc_segment    glibtop_proc_segment; | ||||
|  | ||||
| struct _glibtop_proc_segment | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         text_rss, | ||||
|         shlib_rss, | ||||
|         data_rss, | ||||
| @@ -1037,16 +1060,7 @@ struct _glibtop_proc_segment | ||||
|         dirty_size, | ||||
|         start_code, | ||||
|         end_code, | ||||
|         start_data, | ||||
|         end_data, | ||||
|         start_brk, | ||||
|         end_brk, | ||||
|         start_stack, | ||||
|         start_mmap, | ||||
|         arg_start, | ||||
|         arg_end, | ||||
|         env_start, | ||||
|         env_end; | ||||
|         start_stack; | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
| @@ -1079,7 +1093,7 @@ Library function @code{glibtop_get_proc_args}: | ||||
| @example | ||||
| @cartouche | ||||
| char * | ||||
| glibtop_get_proc_args_l (glibtop_proc_args *buf, pid_t pid, | ||||
| glibtop_get_proc_args(glibtop_proc_args *buf, pid_t pid, | ||||
|                          unsigned max_len); | ||||
|  | ||||
| char * | ||||
| @@ -1096,7 +1110,7 @@ typedef struct _glibtop_proc_args       glibtop_proc_args; | ||||
|  | ||||
| struct _glibtop_proc_args | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         size; | ||||
| @}; | ||||
| @end cartouche | ||||
| @@ -1108,7 +1122,31 @@ Returns a string with all command line arguments of process @code{pid} | ||||
| The command line arguments in the returned string are separated by zero bytes; | ||||
| the lenght of this string is returned in the @code{size} field. | ||||
|  | ||||
| Remember to @code{glibtop_free} the returned string to avoid a memory leak. | ||||
| Remember to @code{g_free} the returned string to avoid a memory leak. | ||||
|  | ||||
| @strong{New functions} | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| char ** | ||||
| glibtop_get_proc_argv(glibtop_proc_args *buf, pid_t pid, | ||||
|                          unsigned max_len); | ||||
|  | ||||
| char ** | ||||
| glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf, | ||||
|                          pid_t pid, unsigned max_len); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| Returns a NULL-terminated array of strings with all arguments of | ||||
| process @code{pid} (up to @code{max_len} characters, use zero to get | ||||
| all arguments). @code{glibtop_get_proc_argv()} and | ||||
| @code{glibtop_get_proc_argv_l()} are wrappers to | ||||
| @code{glibtop_get_proc_args()} and @code{glibtop_get_proc_args_l()} | ||||
| that return process' arguments like the C @code{argv}. | ||||
|  | ||||
| Remember to @code{g_strfreev} the returned array to avoid a memory | ||||
| leak. | ||||
|  | ||||
| @page | ||||
| @node glibtop_proc_map, glibtop_netload, glibtop_proc_args, System Dependent | ||||
| @@ -1135,7 +1173,7 @@ typedef struct _glibtop_proc_map        glibtop_proc_map; | ||||
|  | ||||
| struct _glibtop_proc_map | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         number, | ||||
|         total, | ||||
|         size; | ||||
| @@ -1144,7 +1182,7 @@ struct _glibtop_proc_map | ||||
| @end example | ||||
|  | ||||
| Returns a @code{glibtop_map_entry *} list (which needs to be freed with | ||||
| @code{glibtop_free}) of memory maps of process @code{pid}. | ||||
| @code{g_free}) of memory maps of process @code{pid}. | ||||
|  | ||||
| @table @code | ||||
| @item number | ||||
| @@ -1164,7 +1202,7 @@ typedef struct _glibtop_map_entry       glibtop_map_entry; | ||||
|  | ||||
| struct _glibtop_map_entry | ||||
| @{ | ||||
|     u_int64_t flags, start, end, offset, perm, inode, device; | ||||
|     guint64 flags, start, end, offset, perm, inode, device; | ||||
|     char filename [GLIBTOP_MAP_FILENAME_LEN+1]; | ||||
| @}; | ||||
| @end cartouche | ||||
| @@ -1175,13 +1213,13 @@ fields are valid: | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| #define GLIBTOP_MAP_ENTRY_START         1 | ||||
| #define GLIBTOP_MAP_ENTRY_END           2 | ||||
| #define GLIBTOP_MAP_ENTRY_OFFSET        3 | ||||
| #define GLIBTOP_MAP_ENTRY_PERM          4 | ||||
| #define GLIBTOP_MAP_ENTRY_INODE         5 | ||||
| #define GLIBTOP_MAP_ENTRY_DEVICE        6 | ||||
| #define GLIBTOP_MAP_ENTRY_FILENAME      7 | ||||
| #define GLIBTOP_MAP_ENTRY_START         0 | ||||
| #define GLIBTOP_MAP_ENTRY_END           1 | ||||
| #define GLIBTOP_MAP_ENTRY_OFFSET        2 | ||||
| #define GLIBTOP_MAP_ENTRY_PERM          3 | ||||
| #define GLIBTOP_MAP_ENTRY_INODE         4 | ||||
| #define GLIBTOP_MAP_ENTRY_DEVICE        5 | ||||
| #define GLIBTOP_MAP_ENTRY_FILENAME      6 | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @@ -1222,7 +1260,7 @@ typedef struct _glibtop_netload glibtop_netload; | ||||
|  | ||||
| struct _glibtop_netload | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         if_flags, | ||||
|         mtu, | ||||
|         subnet, | ||||
| @@ -1329,7 +1367,7 @@ typedef struct _glibtop_ppp     glibtop_ppp; | ||||
|  | ||||
| struct _glibtop_ppp | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         state, | ||||
|         bytes_in, | ||||
|         bytes_out; | ||||
| @@ -1409,7 +1447,7 @@ typedef struct _glibtop_mountlist       glibtop_mountlist; | ||||
|  | ||||
| struct _glibtop_mountlist | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         number, | ||||
|         total, | ||||
|         size; | ||||
| @@ -1418,7 +1456,7 @@ struct _glibtop_mountlist | ||||
| @end example | ||||
|  | ||||
| Returns a @code{glibtop_mountentry *} list (which needs to be freed with | ||||
| @code{glibtop_free}) of mounted filesystems. | ||||
| @code{g_free}) of mounted filesystems. | ||||
|  | ||||
| @table @code | ||||
| @item number | ||||
| @@ -1438,7 +1476,7 @@ typedef struct _glibtop_mountentry      glibtop_mountentry; | ||||
|  | ||||
| struct _glibtop_mountentry | ||||
| @{ | ||||
|     u_int64_t dev; | ||||
|     guint64 dev; | ||||
|     char devname [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
|     char mountdir [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
|     char type [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
| @@ -1446,13 +1484,7 @@ struct _glibtop_mountentry | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @ifset LIBGTOP-1-1 | ||||
| @code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop/limits.h>}. | ||||
| @end ifset | ||||
| @ifclear LIBGTOP-1-1 | ||||
| @code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>} | ||||
| (this was moved to @file{<glibtop/limits.h>} in LibGTop 1.1.0). | ||||
| @end ifclear | ||||
| @code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}. | ||||
|  | ||||
| @table @code | ||||
| @item devname | ||||
| @@ -1488,12 +1520,15 @@ typedef struct _glibtop_fsusage         glibtop_fsusage; | ||||
|  | ||||
| struct _glibtop_fsusage | ||||
| @{ | ||||
|     u_int64_t   flags, | ||||
|     guint64   flags, | ||||
|         blocks, | ||||
|         bfree, | ||||
|         bavail, | ||||
|         files, | ||||
|         ffree; | ||||
|     guint32   block_size; | ||||
|     guint64 read, | ||||
|         write; | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
| @@ -1509,10 +1544,14 @@ Free blocks available to ordinary users. | ||||
| Total file nodes. | ||||
| @item ffree | ||||
| Free file nodes. | ||||
| @item block_size | ||||
| Block size in bytes. | ||||
| @item read | ||||
| Total blocks read. | ||||
| @item write | ||||
| Total blocks written. | ||||
| @end table | ||||
|  | ||||
| Blocks are usually 512 bytes. | ||||
|  | ||||
| @page | ||||
| @node Library Functions,  , Common Functions, Reference Manual | ||||
| @section Library Functions | ||||
| @@ -1639,7 +1678,7 @@ typedef struct _glibtop_sysdeps         glibtop_sysdeps; | ||||
|  | ||||
| struct _glibtop_sysdeps | ||||
| @{ | ||||
|     u_int64_t flags, | ||||
|     guint64 flags, | ||||
|         features, | ||||
|         pointer_size, | ||||
|         cpu, | ||||
|   | ||||
							
								
								
									
										59
									
								
								doc/reference/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								doc/reference/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| AUTOMAKE_OPTIONS = 1.6 | ||||
| ## Process this file with automake to produce Makefile.in | ||||
| # The name of the module, e.g. 'glib'. | ||||
| DOC_MODULE=libgtop | ||||
|  | ||||
| # The top-level SGML file. You can change this if you want to. | ||||
| DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml | ||||
|  | ||||
| # Extra options to pass to gtkdoc-scangobj. Not normally needed. | ||||
| # SCANGOBJ_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-scan. | ||||
| # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"  | ||||
| SCAN_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkdb. | ||||
| # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml | ||||
| MKDB_OPTIONS=--sgml-mode --output-format=xml --source-dir=$(top_srcdir)/sysdeps/common | ||||
|  | ||||
| # The directory containing the source code. Relative to $(srcdir). | ||||
| # gtk-doc will search all .c & .h files beneath here for inline comments | ||||
| # documenting the functions and macros. | ||||
| # e.g. DOC_SOURCE_DIR=../../../gtk | ||||
| DOC_SOURCE_DIR=$(top_srcdir)/include/glibtop | ||||
|  | ||||
| # Used for dependencies. The docs will be rebuilt if any of these change. | ||||
| # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h | ||||
| # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c | ||||
| HFILE_GLOB=$(top_srcdir)/include/glibtop/*.h | ||||
| CFILE_GLOB=$(top_srcdir)/sysdeps/common/*.c | ||||
|  | ||||
| # Header files to ignore when scanning. | ||||
| # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h | ||||
| IGNORE_HFILES=error.h global.h gnuserv.h init_hooks.h write.h read.h read_data.h config.h libgtopconfig.h | ||||
|  | ||||
| EXTRA_HFILES=$(top_srcdir)/glibtop.h | ||||
|  | ||||
| # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). | ||||
| # e.g. content_files=running.sgml building.sgml changes-2.0.sgml | ||||
| content_files=version.xml | ||||
|  | ||||
| # Images to copy into HTML directory. | ||||
| # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png | ||||
| HTML_IMAGES= | ||||
|  | ||||
| # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. | ||||
| # Only needed if you are using gtkdoc-scangobj to dynamically query widget | ||||
| # signals and properties. | ||||
| # e.g. AM_CPPFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) | ||||
| # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) | ||||
| AM_CPPFLAGS= | ||||
| GTKDOC_LIBS= | ||||
|  | ||||
| # This includes the standard gtk-doc make rules, copied by gtkdocize. | ||||
| include $(top_srcdir)/gtk-doc.make | ||||
|  | ||||
| # Other files to distribute | ||||
| # e.g. EXTRA_DIST += version.xml.in | ||||
| EXTRA_DIST += version.xml.in | ||||
							
								
								
									
										206
									
								
								doc/reference/libgtop-docs.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								doc/reference/libgtop-docs.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,206 @@ | ||||
| <?xml version="1.0"?> | ||||
| <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"  | ||||
|                "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> | ||||
| <book id="index" xmlns:xi="http://www.w3.org/2003/XInclude"> | ||||
|   <bookinfo> | ||||
|     <title>Libgtop Reference Manual</title> | ||||
|     <releaseinfo>for libgtop <xi:include href="version.xml"/></releaseinfo> | ||||
|     <authorgroup> | ||||
|       <author> | ||||
| 	<firstname>Martin </firstname> | ||||
| 	<surname>Baulig</surname> | ||||
| 	<affiliation> | ||||
| 	  <address> | ||||
| 	    <email>martin@home-of-linux.org</email> | ||||
| 	  </address> | ||||
| 	</affiliation> | ||||
|       </author> | ||||
|       <author> | ||||
| 	<firstname>Germán</firstname> | ||||
| 	<surname>Poó-Caamaño</surname> | ||||
| 	<affiliation> | ||||
| 	  <address> | ||||
| 	    <email>gpoo@ubiobio.cl</email> | ||||
| 	  </address> | ||||
| 	</affiliation> | ||||
|       </author> | ||||
|     </authorgroup> | ||||
|  | ||||
|     <legalnotice> | ||||
|       <para>Permission is granted to copy, distribute and/or modify | ||||
|       this document under the terms of the <citetitle>GNU Free | ||||
|       Documentation License</citetitle>, Version 1.1 or any later | ||||
|       version published by the Free Software Foundation with no | ||||
|       Invariant Sections, no Front-Cover Texts, and no Back-Cover | ||||
|       Texts. You may obtain a copy of the <citetitle>GNU Free | ||||
|       Documentation License</citetitle> from the Free Software | ||||
|       Foundation by visiting <ulink type="http" | ||||
|       url="http://www.fsf.org">their Web site</ulink> or by writing | ||||
|       to: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|       Boston, MA 02110-1301, USA.</para> | ||||
|  | ||||
|       <para>Many of the names used by companies to distinguish their | ||||
|       products and services are claimed as trademarks. Where those | ||||
|       names appear in any GNOME documentation, and those trademarks | ||||
|       are made aware to the members of the GNOME Documentation | ||||
|       Project, the names have been printed in caps or initial | ||||
|       caps.</para> | ||||
|     </legalnotice> | ||||
|  | ||||
|     <abstract> | ||||
|       <para> | ||||
|       LibGTop is a library to get system specific data such as CPU and  | ||||
|       Memory Usage and information about running Processes.</para> | ||||
|  | ||||
|       <para>On Systems like Solaris or Digital Unix where you need special | ||||
|       privileges to get those data, it uses a setuid/setgid server to do  | ||||
|       so.</para> | ||||
|  | ||||
|       <para>Even if LibGTop is a part of the GNOME desktop environment | ||||
|       (@uref{http://www.gnome.org}), the main interface of LibGTop is totally | ||||
|       independent from any particular desktop environment, so you can also | ||||
|       use it as a standalone library in any piece of GPLed software.</para> | ||||
|  | ||||
|       <para>This manual documents the interfaces of the libgtop | ||||
|       library and has some short notes to help get you up to speed | ||||
|       with using the library.</para> | ||||
|     </abstract> | ||||
|   </bookinfo> | ||||
|  | ||||
|   <!--FIXME: It is missing the rest of about.texi --> | ||||
|  | ||||
|   <chapter id="libgtop-white-paper"> | ||||
|     <title>White paper</title> | ||||
|  | ||||
|     <sect1 id="libgtop-white-paper-introduction"> | ||||
|       <title>Introduction</title> | ||||
|       <para>Many modern UNIX systems like Solaris, BSD or Digitial Unix  | ||||
|       only allow priviledged processes to read information like CPU and  | ||||
|       Memory Usage or information about running processes.</para> | ||||
|  | ||||
|       <itemizedlist> | ||||
|       <listitem><para> | ||||
|       BSD, for instance, doesn't have any other way to get those data than reading | ||||
|       directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to | ||||
|       be able to read this.</para></listitem> | ||||
|  | ||||
|       <listitem><para> | ||||
|       Other systems, like Digital Unix, allow all users to get things like CPU and | ||||
|       Memory statistics, but only root may read information about any process other | ||||
|       than the current one (you may not even get information about your own processes | ||||
|       if you're not root).</para></listitem> | ||||
|  | ||||
|       <listitem><para> | ||||
|       Linux has a very nice @file{/proc} filesystem, but reading and parsing | ||||
|       @file{/proc} is very slow and inefficient.</para></listitem> | ||||
|  | ||||
|       <listitem><para> | ||||
|       Solaris is a bit better, but you still need to be in the @code{sys} group or | ||||
|       even root to get some data.</para></listitem> | ||||
|       </itemizedlist> | ||||
|  | ||||
|       <para> | ||||
|       Because of this system utilities like @code{ps}, @code{uptime} or @code{top} | ||||
|       often are setgid kmem or setuid root. Usually, they're also very specific to | ||||
|       the system they're written for and not easily portable to other systems without | ||||
|       a lot of work.</para> | ||||
|  | ||||
|       <para> | ||||
|       This, of cause, becomes a problem for graphical tools like @code{gtop} - making | ||||
|       a GTK+ program setgid or even setuid would be a security hole as big as you can | ||||
|       drive the entire X11 source code through. For the GNOME project, we also needed | ||||
|       some kind of library which provides all the required information in a portable | ||||
|       since there's more than just one single program that wants to use them - for | ||||
|       instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and | ||||
|       @code{netload} panel applets.</para> | ||||
|  | ||||
|     </sect1> | ||||
|  | ||||
|     <sect1 id="libgtop-white-paper-overview"> | ||||
|       <title>Overview</title> | ||||
|       <para>This section should give you a short overview on how LibGTop | ||||
|       was developed, which things needed to be considered and how it  | ||||
|       works.</para> | ||||
|  | ||||
|       <sect2 id="libgtop-white-paper-overview-design"> | ||||
|       <title>Interface Design: Things that need to be considered</title> | ||||
|       <para> | ||||
| At the very beginning, it was necessary to collect all the data the library part | ||||
| should provide and put them into some C structures. This was not that easiy as it | ||||
| might sound since LibGTop should be portable to any modern UNIX system with a common | ||||
| library part on all those systems, but the data that should be returned vary from | ||||
| system to system. For instance some systems support shared memory, but some others | ||||
| may not.</para> | ||||
|  | ||||
|       <para> | ||||
| The header files where we define these C structures (which are system-independent) are | ||||
| shared between client and server. This way we can call the system dependent code | ||||
| directly where we do not need any special privileges to do so.</para> | ||||
|  | ||||
|       <para> | ||||
| All of those structures contain a @code{flags} member which is interpreted as a bit | ||||
| mask and tells the caller of the library functions which of the fields in the returned | ||||
| structure are valid and which are not.</para> | ||||
|       </sect2> | ||||
|  | ||||
|       <sect2 id="libgtop-white-paper-overview-server"> | ||||
|       <title>Server Implementation: The LibGTop "server"</title> | ||||
|       <para> | ||||
| The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system | ||||
| dependent code which needs special privileges. It is only build if it's required | ||||
| on the current system (for instance, the Linux kernel provides all the required | ||||
| data via its @file{/proc} filesystem so we do not need the server at all) and it | ||||
| only contains the @dfn{features} which need privileges.</para> | ||||
|  | ||||
|       <para> | ||||
| Whenever we do not need any privileges to get all the data for some of the requested | ||||
| structures (here called @dfn{features}) the library calls the sysdeps code directly | ||||
| rather than using the server.</para> | ||||
|       </sect2> | ||||
|     </sect1> | ||||
|  | ||||
|   </chapter> | ||||
|  | ||||
|   <chapter id="libgtop-lib"> | ||||
|     <title>Libgtop Library Reference</title> | ||||
|  | ||||
|     <para>This section contains the API reference for libgtop.  All | ||||
|     the public interfaces are documented here.</para> | ||||
|  | ||||
|     <xi:include href="xml/glibtop.xml"/> | ||||
|     <xi:include href="xml/close.xml"/> | ||||
|     <xi:include href="xml/command.xml"/> | ||||
|     <xi:include href="xml/glibtop-server.xml"/> | ||||
|     <xi:include href="xml/netload.xml"/> | ||||
|     <xi:include href="xml/ppp.xml"/> | ||||
|     <xi:include href="xml/shm_limits.xml"/> | ||||
|     <xi:include href="xml/uptime.xml"/> | ||||
|     <xi:include href="xml/netlist.xml"/> | ||||
|     <xi:include href="xml/open.xml"/> | ||||
|     <xi:include href="xml/parameter.xml"/> | ||||
|     <xi:include href="xml/procargs.xml"/> | ||||
|     <xi:include href="xml/procmem.xml"/> | ||||
|     <xi:include href="xml/procopenfiles.xml"/> | ||||
|     <xi:include href="xml/procsegment.xml"/> | ||||
|     <xi:include href="xml/procsignal.xml"/> | ||||
|     <xi:include href="xml/sysdeps.xml"/> | ||||
|     <xi:include href="xml/procstate.xml"/> | ||||
|     <xi:include href="xml/procuid.xml"/> | ||||
|     <xi:include href="xml/proctime.xml"/> | ||||
|     <xi:include href="xml/signal.xml"/> | ||||
|     <xi:include href="xml/procmap.xml"/> | ||||
|     <xi:include href="xml/sysinfo.xml"/> | ||||
|     <xi:include href="xml/union.xml"/> | ||||
|     <xi:include href="xml/version.xml"/> | ||||
|     <xi:include href="xml/proclist.xml"/> | ||||
|     <xi:include href="xml/sem_limits.xml"/> | ||||
|     <xi:include href="xml/prockernel.xml"/> | ||||
|     <xi:include href="xml/fsusage.xml"/> | ||||
|     <xi:include href="xml/loadavg.xml"/> | ||||
|     <xi:include href="xml/mem.xml"/> | ||||
|     <xi:include href="xml/mountlist.xml"/> | ||||
|     <xi:include href="xml/msg_limits.xml"/> | ||||
|     <xi:include href="xml/cpu.xml"/> | ||||
|     <xi:include href="xml/swap.xml"/> | ||||
|   </chapter> | ||||
| </book> | ||||
							
								
								
									
										0
									
								
								doc/reference/libgtop-overrides.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								doc/reference/libgtop-overrides.txt
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										699
									
								
								doc/reference/libgtop-sections.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										699
									
								
								doc/reference/libgtop-sections.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,699 @@ | ||||
| <INCLUDE>glibtop.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>glibtop</FILE> | ||||
| <TITLE>GlibTop</TITLE> | ||||
| GLIBTOP_MOUNTENTRY_LEN | ||||
| LIBGTOP_CHECK_VERSION | ||||
| glibtop | ||||
| glibtop_global_server | ||||
| glibtop_init | ||||
| glibtop_init_r | ||||
| glibtop_init_s | ||||
| glibtop_server_features | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/close.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>close</FILE> | ||||
| <TITLE>Close</TITLE> | ||||
| glibtop_close | ||||
| glibtop_close_r | ||||
| glibtop_close_s | ||||
| glibtop_close_p | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/command.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>command</FILE> | ||||
| <TITLE>Command</TITLE> | ||||
| GLIBTOP_CMND_QUIT | ||||
| GLIBTOP_CMND_SYSDEPS | ||||
| GLIBTOP_CMND_CPU | ||||
| GLIBTOP_CMND_MEM | ||||
| GLIBTOP_CMND_SWAP | ||||
| GLIBTOP_CMND_UPTIME | ||||
| GLIBTOP_CMND_LOADAVG | ||||
| GLIBTOP_CMND_SHM_LIMITS | ||||
| GLIBTOP_CMND_MSG_LIMITS | ||||
| GLIBTOP_CMND_SEM_LIMITS | ||||
| GLIBTOP_CMND_PROCLIST | ||||
| GLIBTOP_CMND_PROC_STATE | ||||
| GLIBTOP_CMND_PROC_UID | ||||
| GLIBTOP_CMND_PROC_MEM | ||||
| GLIBTOP_CMND_PROC_TIME | ||||
| GLIBTOP_CMND_PROC_SIGNAL | ||||
| GLIBTOP_CMND_PROC_KERNEL | ||||
| GLIBTOP_CMND_PROC_SEGMENT | ||||
| GLIBTOP_CMND_PROC_ARGS | ||||
| GLIBTOP_CMND_PROC_MAP | ||||
| GLIBTOP_CMND_MOUNTLIST | ||||
| GLIBTOP_CMND_FSUSAGE | ||||
| GLIBTOP_CMND_NETLOAD | ||||
| GLIBTOP_CMND_PPP | ||||
| GLIBTOP_CMND_NETLIST | ||||
| GLIBTOP_CMND_PROC_OPEN_FILES | ||||
| GLIBTOP_MAX_CMND | ||||
| glibtop_command | ||||
| glibtop_response | ||||
| glibtop_response_union | ||||
| glibtop_call | ||||
| glibtop_call_l | ||||
| glibtop_call_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/glibtop-server.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>glibtop-server</FILE> | ||||
| <TITLE>GlibTop Server</TITLE> | ||||
| glibtop_server | ||||
| glibtop_server_info | ||||
| glibtop_closure | ||||
| glibtop_server_new | ||||
| glibtop_server_ref | ||||
| glibtop_server_unref | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/netload.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>netload</FILE> | ||||
| <TITLE>Net Load</TITLE> | ||||
| GLIBTOP_NETLOAD_IF_FLAGS | ||||
| GLIBTOP_NETLOAD_MTU | ||||
| GLIBTOP_NETLOAD_SUBNET | ||||
| GLIBTOP_NETLOAD_ADDRESS | ||||
| GLIBTOP_NETLOAD_PACKETS_IN | ||||
| GLIBTOP_NETLOAD_PACKETS_OUT | ||||
| GLIBTOP_NETLOAD_PACKETS_TOTAL | ||||
| GLIBTOP_NETLOAD_BYTES_IN | ||||
| GLIBTOP_NETLOAD_BYTES_OUT | ||||
| GLIBTOP_NETLOAD_BYTES_TOTAL | ||||
| GLIBTOP_NETLOAD_ERRORS_IN | ||||
| GLIBTOP_NETLOAD_ERRORS_OUT | ||||
| GLIBTOP_NETLOAD_ERRORS_TOTAL | ||||
| GLIBTOP_NETLOAD_COLLISIONS | ||||
| GLIBTOP_NETLOAD_ADDRESS6 | ||||
| GLIBTOP_NETLOAD_PREFIX6 | ||||
| GLIBTOP_NETLOAD_SCOPE6 | ||||
| GLIBTOP_NETLOAD_HWADDRESS | ||||
| GLIBTOP_MAX_NETLOAD | ||||
| glibtop_netload | ||||
| glibtop_get_netload | ||||
| glibtop_get_netload_r | ||||
| glibtop_get_netload_l | ||||
| glibtop_init_netload_p | ||||
| glibtop_get_netload_p | ||||
| glibtop_init_netload_s | ||||
| glibtop_get_netload_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/ppp.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>ppp</FILE> | ||||
| <TITLE>PPP</TITLE> | ||||
| GLIBTOP_PPP_STATE | ||||
| GLIBTOP_PPP_BYTES_IN | ||||
| GLIBTOP_PPP_BYTES_OUT | ||||
| GLIBTOP_MAX_PPP | ||||
| glibtop_ppp | ||||
| glibtop_get_ppp | ||||
| glibtop_get_ppp_r | ||||
| glibtop_get_ppp_l | ||||
| glibtop_init_ppp_p | ||||
| glibtop_get_ppp_p | ||||
| glibtop_init_ppp_s | ||||
| glibtop_get_ppp_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/shm_limits.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>shm_limits</FILE> | ||||
| <TITLE>Shared Memory Limits</TITLE> | ||||
| GLIBTOP_IPC_SHMMAX | ||||
| GLIBTOP_IPC_SHMMIN | ||||
| GLIBTOP_IPC_SHMMNI | ||||
| GLIBTOP_IPC_SHMSEG | ||||
| GLIBTOP_IPC_SHMALL | ||||
| GLIBTOP_MAX_SHM_LIMITS | ||||
| glibtop_shm_limits | ||||
| glibtop_get_shm_limits | ||||
| glibtop_get_shm_limits_r | ||||
| glibtop_get_shm_limits_l | ||||
| glibtop_init_shm_limits_p | ||||
| glibtop_get_shm_limits_p | ||||
| glibtop_init_shm_limits_s | ||||
| glibtop_get_shm_limits_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/uptime.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>uptime</FILE> | ||||
| <TITLE>Uptime</TITLE> | ||||
| GLIBTOP_UPTIME_UPTIME | ||||
| GLIBTOP_UPTIME_IDLETIME | ||||
| GLIBTOP_UPTIME_BOOT_TIME | ||||
| GLIBTOP_MAX_UPTIME | ||||
| glibtop_uptime | ||||
| glibtop_get_uptime | ||||
| glibtop_get_uptime_r | ||||
| glibtop_get_uptime_l | ||||
| glibtop_init_uptime_p | ||||
| glibtop_get_uptime_p | ||||
| glibtop_init_uptime_s | ||||
| glibtop_get_uptime_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/netlist.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>netlist</FILE> | ||||
| <TITLE>Net List</TITLE> | ||||
| GLIBTOP_NETLIST_NUMBER | ||||
| GLIBTOP_MAX_NETLIST | ||||
| glibtop_netlist | ||||
| glibtop_get_netlist | ||||
| glibtop_get_netlist_r | ||||
| glibtop_get_netlist_l | ||||
| glibtop_init_netlist_p | ||||
| glibtop_get_netlist_p | ||||
| glibtop_init_netlist_s | ||||
| glibtop_get_netlist_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/open.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>open</FILE> | ||||
| GLIBTOP_INIT_NO_OPEN | ||||
| GLIBTOP_INIT_NO_INIT | ||||
| GLIBTOP_FEATURES_NO_SERVER | ||||
| GLIBTOP_FEATURES_EXCEPT | ||||
| GLIBTOP_METHOD_DIRECT | ||||
| GLIBTOP_METHOD_PIPE | ||||
| GLIBTOP_METHOD_INET | ||||
| GLIBTOP_METHOD_UNIX | ||||
| GLIBTOP_ERROR_METHOD_IGNORE | ||||
| GLIBTOP_ERROR_METHOD_WARN_ONCE | ||||
| GLIBTOP_ERROR_METHOD_WARN | ||||
| GLIBTOP_ERROR_METHOD_ABORT | ||||
| GLIBTOP_ERROR_METHOD_DEFAULT | ||||
| glibtop_open_l | ||||
| glibtop_init_p | ||||
| glibtop_open_p | ||||
| glibtop_open_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/parameter.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>parameter</FILE> | ||||
| GLIBTOP_PARAM_METHOD | ||||
| GLIBTOP_PARAM_FEATURES | ||||
| GLIBTOP_PARAM_COMMAND | ||||
| GLIBTOP_PARAM_HOST | ||||
| GLIBTOP_PARAM_PORT | ||||
| GLIBTOP_PARAM_ERROR_METHOD | ||||
| GLIBTOP_PARAM_REQUIRED | ||||
| glibtop_get_parameter | ||||
| glibtop_set_parameter | ||||
| glibtop_get_parameter_l | ||||
| glibtop_set_parameter_l | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procargs.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procargs</FILE> | ||||
| glibtop_proc_args | ||||
| glibtop_get_proc_args | ||||
| glibtop_get_proc_argv | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procmem.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procmem</FILE> | ||||
| GLIBTOP_PROC_MEM_SIZE | ||||
| GLIBTOP_PROC_MEM_VSIZE | ||||
| GLIBTOP_PROC_MEM_RESIDENT | ||||
| GLIBTOP_PROC_MEM_SHARE | ||||
| GLIBTOP_PROC_MEM_RSS | ||||
| GLIBTOP_PROC_MEM_RSS_RLIM | ||||
| GLIBTOP_MAX_PROC_MEM | ||||
| glibtop_proc_mem | ||||
| glibtop_get_proc_mem | ||||
| glibtop_get_proc_mem_r | ||||
| glibtop_get_proc_mem_l | ||||
| glibtop_init_proc_mem_p | ||||
| glibtop_get_proc_mem_p | ||||
| glibtop_init_proc_mem_s | ||||
| glibtop_get_proc_mem_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procopenfiles.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procopenfiles</FILE> | ||||
| GLIBTOP_PROC_OPEN_FILES_NUMBER | ||||
| GLIBTOP_PROC_OPEN_FILES_TOTAL | ||||
| GLIBTOP_PROC_OPEN_FILES_SIZE | ||||
| GLIBTOP_MAX_PROC_OPEN_FILES | ||||
| GLIBTOP_FILE_ENTRY_FD | ||||
| GLIBTOP_FILE_ENTRY_NAME | ||||
| GLIBTOP_FILE_ENTRY_TYPE | ||||
| GLIBTOP_FILE_ENTRY_INETSOCKET_DST_HOST | ||||
| GLIBTOP_FILE_ENTRY_INETSOCKET_DST_PORT | ||||
| GLIBTOP_MAX_OPEN_FILE_ENTRY | ||||
| GLIBTOP_OPEN_FILENAME_LEN | ||||
| GLIBTOP_OPEN_DEST_HOST_LEN | ||||
| glibtop_open_files_entry | ||||
| glibtop_proc_open_files | ||||
| glibtop_get_proc_open_files | ||||
| glibtop_get_proc_open_files_r | ||||
| glibtop_get_proc_open_files_l | ||||
| glibtop_init_proc_open_files_p | ||||
| glibtop_get_proc_open_files_p | ||||
| glibtop_init_proc_open_files_s | ||||
| glibtop_get_proc_open_files_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procsegment.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procsegment</FILE> | ||||
| GLIBTOP_PROC_SEGMENT_TEXT_RSS | ||||
| GLIBTOP_PROC_SEGMENT_SHLIB_RSS | ||||
| GLIBTOP_PROC_SEGMENT_DATA_RSS | ||||
| GLIBTOP_PROC_SEGMENT_STACK_RSS | ||||
| GLIBTOP_PROC_SEGMENT_DIRTY_SIZE | ||||
| GLIBTOP_PROC_SEGMENT_START_CODE | ||||
| GLIBTOP_PROC_SEGMENT_END_CODE | ||||
| GLIBTOP_PROC_SEGMENT_START_STACK | ||||
| GLIBTOP_MAX_PROC_SEGMENT | ||||
| glibtop_proc_segment | ||||
| glibtop_get_proc_segment | ||||
| glibtop_get_proc_segment_r | ||||
| glibtop_get_proc_segment_l | ||||
| glibtop_init_proc_segment_p | ||||
| glibtop_get_proc_segment_p | ||||
| glibtop_init_proc_segment_s | ||||
| glibtop_get_proc_segment_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procsignal.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procsignal</FILE> | ||||
| GLIBTOP_PROC_SIGNAL_SIGNAL | ||||
| GLIBTOP_PROC_SIGNAL_BLOCKED | ||||
| GLIBTOP_PROC_SIGNAL_SIGIGNORE | ||||
| GLIBTOP_PROC_SIGNAL_SIGCATCH | ||||
| GLIBTOP_MAX_PROC_SIGNAL | ||||
| glibtop_proc_signal | ||||
| glibtop_get_proc_signal | ||||
| glibtop_get_proc_signal_r | ||||
| glibtop_get_proc_signal_l | ||||
| glibtop_init_proc_signal_p | ||||
| glibtop_get_proc_signal_p | ||||
| glibtop_init_proc_signal_s | ||||
| glibtop_get_proc_signal_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/sysdeps.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>sysdeps</FILE> | ||||
| GLIBTOP_SYSDEPS_FEATURES | ||||
| GLIBTOP_SYSDEPS_CPU | ||||
| GLIBTOP_SYSDEPS_MEM | ||||
| GLIBTOP_SYSDEPS_SWAP | ||||
| GLIBTOP_SYSDEPS_UPTIME | ||||
| GLIBTOP_SYSDEPS_LOADAVG | ||||
| GLIBTOP_SYSDEPS_SHM_LIMITS | ||||
| GLIBTOP_SYSDEPS_MSG_LIMITS | ||||
| GLIBTOP_SYSDEPS_SEM_LIMITS | ||||
| GLIBTOP_SYSDEPS_PROCLIST | ||||
| GLIBTOP_SYSDEPS_PROC_STATE | ||||
| GLIBTOP_SYSDEPS_PROC_UID | ||||
| GLIBTOP_SYSDEPS_PROC_MEM | ||||
| GLIBTOP_SYSDEPS_PROC_TIME | ||||
| GLIBTOP_SYSDEPS_PROC_SIGNAL | ||||
| GLIBTOP_SYSDEPS_PROC_KERNEL | ||||
| GLIBTOP_SYSDEPS_PROC_SEGMENT | ||||
| GLIBTOP_SYSDEPS_PROC_ARGS | ||||
| GLIBTOP_SYSDEPS_PROC_MAP | ||||
| GLIBTOP_SYSDEPS_MOUNTLIST | ||||
| GLIBTOP_SYSDEPS_FSUSAGE | ||||
| GLIBTOP_SYSDEPS_NETLOAD | ||||
| GLIBTOP_SYSDEPS_PPP | ||||
| GLIBTOP_SYSDEPS_NETLIST | ||||
| GLIBTOP_SYSDEPS_PROC_OPEN_FILES | ||||
| GLIBTOP_MAX_SYSDEPS | ||||
| GLIBTOP_SYSDEPS_ALL | ||||
| glibtop_sysdeps | ||||
| glibtop_get_sysdeps | ||||
| glibtop_get_sysdeps_r | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procstate.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procstate</FILE> | ||||
| GLIBTOP_PROC_STATE_CMD | ||||
| GLIBTOP_PROC_STATE_STATE | ||||
| GLIBTOP_PROC_STATE_UID | ||||
| GLIBTOP_PROC_STATE_GID | ||||
| GLIBTOP_PROC_STATE_RUID | ||||
| GLIBTOP_PROC_STATE_RGID | ||||
| GLIBTOP_PROC_STATE_HAS_CPU | ||||
| GLIBTOP_PROC_STATE_PROCESSOR | ||||
| GLIBTOP_PROC_STATE_LAST_PROCESSOR | ||||
| GLIBTOP_MAX_PROC_STATE | ||||
| GLIBTOP_PROCESS_RUNNING | ||||
| GLIBTOP_PROCESS_INTERRUPTIBLE | ||||
| GLIBTOP_PROCESS_UNINTERRUPTIBLE | ||||
| GLIBTOP_PROCESS_ZOMBIE | ||||
| GLIBTOP_PROCESS_STOPPED | ||||
| GLIBTOP_PROCESS_SWAPPING | ||||
| GLIBTOP_PROCESS_DEAD | ||||
| glibtop_proc_state | ||||
| glibtop_get_proc_state | ||||
| glibtop_get_proc_state_r | ||||
| glibtop_get_proc_state_l | ||||
| glibtop_init_proc_state_p | ||||
| glibtop_get_proc_state_p | ||||
| glibtop_init_proc_state_s | ||||
| glibtop_get_proc_state_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procuid.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procuid</FILE> | ||||
| GLIBTOP_PROC_UID_UID | ||||
| GLIBTOP_PROC_UID_EUID | ||||
| GLIBTOP_PROC_UID_GID | ||||
| GLIBTOP_PROC_UID_EGID | ||||
| GLIBTOP_PROC_UID_SUID | ||||
| GLIBTOP_PROC_UID_SGID | ||||
| GLIBTOP_PROC_UID_FSUID | ||||
| GLIBTOP_PROC_UID_FSGID | ||||
| GLIBTOP_PROC_UID_PID | ||||
| GLIBTOP_PROC_UID_PPID | ||||
| GLIBTOP_PROC_UID_PGRP | ||||
| GLIBTOP_PROC_UID_SESSION | ||||
| GLIBTOP_PROC_UID_TTY | ||||
| GLIBTOP_PROC_UID_TPGID | ||||
| GLIBTOP_PROC_UID_PRIORITY | ||||
| GLIBTOP_PROC_UID_NICE | ||||
| GLIBTOP_PROC_UID_NGROUPS | ||||
| GLIBTOP_PROC_UID_GROUPS | ||||
| GLIBTOP_MAX_PROC_UID | ||||
| glibtop_proc_uid | ||||
| GLIBTOP_MAX_GROUPS | ||||
| glibtop_get_proc_uid | ||||
| glibtop_get_proc_uid_r | ||||
| glibtop_get_proc_uid_l | ||||
| glibtop_init_proc_uid_p | ||||
| glibtop_get_proc_uid_p | ||||
| glibtop_init_proc_uid_s | ||||
| glibtop_get_proc_uid_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/proctime.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>proctime</FILE> | ||||
| glibtop_proc_time | ||||
| glibtop_get_proc_time | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/signal.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>signal</FILE> | ||||
| glibtop_signame | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/procmap.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>procmap</FILE> | ||||
| GLIBTOP_PROC_MAP_NUMBER | ||||
| GLIBTOP_PROC_MAP_TOTAL | ||||
| GLIBTOP_PROC_MAP_SIZE | ||||
| GLIBTOP_MAX_PROC_MAP | ||||
| GLIBTOP_MAP_ENTRY_START | ||||
| GLIBTOP_MAP_ENTRY_END | ||||
| GLIBTOP_MAP_ENTRY_OFFSET | ||||
| GLIBTOP_MAP_ENTRY_PERM | ||||
| GLIBTOP_MAP_ENTRY_INODE | ||||
| GLIBTOP_MAP_ENTRY_DEVICE | ||||
| GLIBTOP_MAP_ENTRY_FILENAME | ||||
| GLIBTOP_MAP_ENTRY_SIZE | ||||
| GLIBTOP_MAP_ENTRY_RSS | ||||
| GLIBTOP_MAP_ENTRY_SHARED_CLEAN | ||||
| GLIBTOP_MAP_ENTRY_SHARED_DIRTY | ||||
| GLIBTOP_MAP_ENTRY_PRIVATE_CLEAN | ||||
| GLIBTOP_MAP_ENTRY_PRIVATE_DIRTY | ||||
| GLIBTOP_MAX_MAP_ENTRY | ||||
| GLIBTOP_MAP_FILENAME_LEN | ||||
| GLIBTOP_MAP_PERM_READ | ||||
| GLIBTOP_MAP_PERM_WRITE | ||||
| GLIBTOP_MAP_PERM_EXECUTE | ||||
| GLIBTOP_MAP_PERM_SHARED | ||||
| GLIBTOP_MAP_PERM_PRIVATE | ||||
| glibtop_map_entry | ||||
| glibtop_proc_map | ||||
| glibtop_get_proc_map | ||||
| glibtop_get_proc_map_r | ||||
| glibtop_get_proc_map_l | ||||
| glibtop_init_proc_map_p | ||||
| glibtop_get_proc_map_p | ||||
| glibtop_init_proc_map_s | ||||
| glibtop_get_proc_map_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/sysinfo.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>sysinfo</FILE> | ||||
| GLIBTOP_SYSINFO_NCPU | ||||
| GLIBTOP_SYSINFO_CPUINFO | ||||
| GLIBTOP_MAX_SYSINFO | ||||
| glibtop_sysinfo | ||||
| glibtop_entry | ||||
| glibtop_get_sysinfo_r | ||||
| glibtop_get_sysinfo_s | ||||
| glibtop_get_sysinfo | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/union.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>union</FILE> | ||||
| glibtop_union | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/version.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>version</FILE> | ||||
| LIBGTOP_VERSION_STRING | ||||
| glibtop_send_version | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/proclist.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>proclist</FILE> | ||||
| GLIBTOP_KERN_PROC_ALL | ||||
| GLIBTOP_KERN_PROC_PID | ||||
| GLIBTOP_KERN_PROC_PGRP | ||||
| GLIBTOP_KERN_PROC_SESSION | ||||
| GLIBTOP_KERN_PROC_TTY | ||||
| GLIBTOP_KERN_PROC_UID | ||||
| GLIBTOP_KERN_PROC_RUID | ||||
| GLIBTOP_KERN_PROC_MASK | ||||
| GLIBTOP_EXCLUDE_IDLE | ||||
| GLIBTOP_EXCLUDE_SYSTEM | ||||
| GLIBTOP_EXCLUDE_NOTTY | ||||
| glibtop_proclist | ||||
| glibtop_get_proclist | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/sem_limits.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>sem_limits</FILE> | ||||
| GLIBTOP_IPC_SEMMAP | ||||
| GLIBTOP_IPC_SEMMNI | ||||
| GLIBTOP_IPC_SEMMNS | ||||
| GLIBTOP_IPC_SEMMNU | ||||
| GLIBTOP_IPC_SEMMSL | ||||
| GLIBTOP_IPC_SEMOPM | ||||
| GLIBTOP_IPC_SEMUME | ||||
| GLIBTOP_IPC_SEMUSZ | ||||
| GLIBTOP_IPC_SEMVMX | ||||
| GLIBTOP_IPC_SEMAEM | ||||
| GLIBTOP_MAX_SEM_LIMITS | ||||
| glibtop_sem_limits | ||||
| glibtop_get_sem_limits | ||||
| glibtop_get_sem_limits_r | ||||
| glibtop_get_sem_limits_l | ||||
| glibtop_init_sem_limits_p | ||||
| glibtop_get_sem_limits_p | ||||
| glibtop_init_sem_limits_s | ||||
| glibtop_get_sem_limits_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/prockernel.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>prockernel</FILE> | ||||
| GLIBTOP_PROC_KERNEL_K_FLAGS | ||||
| GLIBTOP_PROC_KERNEL_MIN_FLT | ||||
| GLIBTOP_PROC_KERNEL_MAJ_FLT | ||||
| GLIBTOP_PROC_KERNEL_CMIN_FLT | ||||
| GLIBTOP_PROC_KERNEL_CMAJ_FLT | ||||
| GLIBTOP_PROC_KERNEL_KSTK_ESP | ||||
| GLIBTOP_PROC_KERNEL_KSTK_EIP | ||||
| GLIBTOP_PROC_KERNEL_NWCHAN | ||||
| GLIBTOP_PROC_KERNEL_WCHAN | ||||
| GLIBTOP_MAX_PROC_KERNEL | ||||
| glibtop_proc_kernel | ||||
| glibtop_get_proc_kernel | ||||
| glibtop_get_proc_kernel_r | ||||
| glibtop_get_proc_kernel_l | ||||
| glibtop_init_proc_kernel_p | ||||
| glibtop_get_proc_kernel_p | ||||
| glibtop_init_proc_kernel_s | ||||
| glibtop_get_proc_kernel_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/fsusage.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>fsusage</FILE> | ||||
| GLIBTOP_FSUSAGE_BLOCKS | ||||
| GLIBTOP_FSUSAGE_BFREE | ||||
| GLIBTOP_FSUSAGE_BAVAIL | ||||
| GLIBTOP_FSUSAGE_FILES | ||||
| GLIBTOP_FSUSAGE_FFREE | ||||
| GLIBTOP_FSUSAGE_BLOCK_SIZE | ||||
| GLIBTOP_FSUSAGE_READ | ||||
| GLIBTOP_FSUSAGE_WRITE | ||||
| GLIBTOP_MAX_FSUSAGE | ||||
| glibtop_fsusage | ||||
| glibtop_get_fsusage | ||||
| glibtop_get_fsusage_r | ||||
| glibtop_get_fsusage_l | ||||
| glibtop_get_fsusage_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/loadavg.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>loadavg</FILE> | ||||
| GLIBTOP_LOADAVG_LOADAVG | ||||
| GLIBTOP_LOADAVG_NR_RUNNING | ||||
| GLIBTOP_LOADAVG_NR_TASKS | ||||
| GLIBTOP_LOADAVG_LAST_PID | ||||
| GLIBTOP_MAX_LOADAVG | ||||
| glibtop_loadavg | ||||
| glibtop_get_loadavg | ||||
| glibtop_get_loadavg_r | ||||
| glibtop_get_loadavg_l | ||||
| glibtop_init_loadavg_p | ||||
| glibtop_get_loadavg_p | ||||
| glibtop_init_loadavg_s | ||||
| glibtop_get_loadavg_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/mem.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>mem</FILE> | ||||
| GLIBTOP_MEM_TOTAL | ||||
| GLIBTOP_MEM_USED | ||||
| GLIBTOP_MEM_FREE | ||||
| GLIBTOP_MEM_SHARED | ||||
| GLIBTOP_MEM_BUFFER | ||||
| GLIBTOP_MEM_CACHED | ||||
| GLIBTOP_MEM_USER | ||||
| GLIBTOP_MEM_LOCKED | ||||
| GLIBTOP_MAX_MEM | ||||
| glibtop_mem | ||||
| glibtop_get_mem | ||||
| glibtop_get_mem_r | ||||
| glibtop_get_mem_l | ||||
| glibtop_init_mem_p | ||||
| glibtop_get_mem_p | ||||
| glibtop_init_mem_s | ||||
| glibtop_get_mem_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/mountlist.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>mountlist</FILE> | ||||
| GLIBTOP_MOUNTLIST_NUMBER | ||||
| GLIBTOP_MOUNTLIST_TOTAL | ||||
| GLIBTOP_MOUNTLIST_SIZE | ||||
| GLIBTOP_MAX_MOUNTLIST | ||||
| glibtop_mountentry | ||||
| glibtop_mountlist | ||||
| glibtop_get_mountlist | ||||
| glibtop_get_mountlist_r | ||||
| glibtop_get_mountlist_l | ||||
| glibtop_get_mountlist_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/msg_limits.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>msg_limits</FILE> | ||||
| GLIBTOP_IPC_MSGPOOL | ||||
| GLIBTOP_IPC_MSGMAP | ||||
| GLIBTOP_IPC_MSGMAX | ||||
| GLIBTOP_IPC_MSGMNB | ||||
| GLIBTOP_IPC_MSGMNI | ||||
| GLIBTOP_IPC_MSGSSZ | ||||
| GLIBTOP_IPC_MSGTQL | ||||
| GLIBTOP_MAX_MSG_LIMITS | ||||
| glibtop_msg_limits | ||||
| glibtop_get_msg_limits | ||||
| glibtop_get_msg_limits_r | ||||
| glibtop_get_msg_limits_l | ||||
| glibtop_init_msg_limits_p | ||||
| glibtop_get_msg_limits_p | ||||
| glibtop_init_msg_limits_s | ||||
| glibtop_get_msg_limits_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/cpu.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>cpu</FILE> | ||||
| GLIBTOP_CPU_TOTAL | ||||
| GLIBTOP_CPU_USER | ||||
| GLIBTOP_CPU_NICE | ||||
| GLIBTOP_CPU_SYS | ||||
| GLIBTOP_CPU_IDLE | ||||
| GLIBTOP_CPU_FREQUENCY | ||||
| GLIBTOP_XCPU_TOTAL | ||||
| GLIBTOP_XCPU_USER | ||||
| GLIBTOP_XCPU_NICE | ||||
| GLIBTOP_XCPU_SYS | ||||
| GLIBTOP_XCPU_IDLE | ||||
| GLIBTOP_XCPU_FLAGS | ||||
| GLIBTOP_CPU_IOWAIT | ||||
| GLIBTOP_CPU_IRQ | ||||
| GLIBTOP_CPU_SOFTIRQ | ||||
| GLIBTOP_XCPU_IOWAIT | ||||
| GLIBTOP_XCPU_IRQ | ||||
| GLIBTOP_XCPU_SOFTIRQ | ||||
| GLIBTOP_MAX_CPU | ||||
| GLIBTOP_NCPU | ||||
| glibtop_cpu | ||||
| glibtop_get_cpu | ||||
| glibtop_get_cpu_r | ||||
| glibtop_get_cpu_l | ||||
| glibtop_init_cpu_p | ||||
| glibtop_get_cpu_p | ||||
| glibtop_init_cpu_s | ||||
| glibtop_get_cpu_s | ||||
| </SECTION> | ||||
|  | ||||
| <INCLUDE>glibtop/swap.h</INCLUDE> | ||||
| <SECTION> | ||||
| <FILE>swap</FILE> | ||||
| GLIBTOP_SWAP_TOTAL | ||||
| GLIBTOP_SWAP_USED | ||||
| GLIBTOP_SWAP_FREE | ||||
| GLIBTOP_SWAP_PAGEIN | ||||
| GLIBTOP_SWAP_PAGEOUT | ||||
| GLIBTOP_MAX_SWAP | ||||
| glibtop_swap | ||||
| glibtop_get_swap | ||||
| glibtop_get_swap_r | ||||
| glibtop_get_swap_l | ||||
| glibtop_init_swap_p | ||||
| glibtop_get_swap_p | ||||
| glibtop_init_swap_s | ||||
| glibtop_get_swap_s | ||||
| </SECTION> | ||||
|  | ||||
							
								
								
									
										4
									
								
								doc/reference/version.xml.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								doc/reference/version.xml.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| <?xml version="1.0" standalone="no"?> | ||||
| <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||||
|     "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> | ||||
| <phrase>@PACKAGE_VERSION@</phrase> | ||||
| @@ -1,2 +0,0 @@ | ||||
| Makefile.in | ||||
| Makefile | ||||
| @@ -1,9 +0,0 @@ | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| backend_DATA	= \ | ||||
| 	libgtop-backends.dtd	\ | ||||
| 	libgtop-backend-info.dtd | ||||
|  | ||||
| EXTRA_DIST	= | | ||||
| 	$(backend_DATA) | ||||
|  | ||||
| @@ -1,23 +0,0 @@ | ||||
| <!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)> | ||||
| <!ELEMENT name (short_name,long_name?)> | ||||
| <!ELEMENT short_name (#PCDATA)> | ||||
| <!ELEMENT long_name (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT description (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT authors (author)+> | ||||
| <!ELEMENT author (author_name,author_email?)> | ||||
| <!ELEMENT author_name (#PCDATA)> | ||||
| <!ELEMENT author_email (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT legalnotice (license,copyright?)> | ||||
| <!ELEMENT license (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT copyright (holder)+> | ||||
| <!ELEMENT holder (holder_year?,holder_name,holder_email?)> | ||||
| <!ELEMENT holder_year (#PCDATA)> | ||||
| <!ELEMENT holder_name (#PCDATA)> | ||||
| <!ELEMENT holder_email (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT comments (comment)+> | ||||
| <!ELEMENT comment (#PCDATA)> | ||||
| @@ -1,11 +0,0 @@ | ||||
| <!ELEMENT Backends (Backend)+> | ||||
|  | ||||
| <!ELEMENT Backend (Name,Location)> | ||||
| <!ELEMENT Name (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)> | ||||
| <!ELEMENT LibtoolName (#PCDATA)> | ||||
| <!ELEMENT ShlibName (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT ExtraLibs (ExtraLib)+> | ||||
| <!ELEMENT ExtraLib (LibtoolName?,ShlibName)> | ||||
| @@ -1,16 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| first | ||||
| first_linux | ||||
| first_static | ||||
| second | ||||
| third | ||||
| third_linux | ||||
| third_static | ||||
| second_static | ||||
| second_linux | ||||
| smp_static sysdeps_static netload_static procmap_static mountlist_static | ||||
| smp sysdeps netload procmap mountlist | ||||
| timings timings_static | ||||
| @@ -1,3 +1,152 @@ | ||||
| 2007-05-19  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* Makefile.am: | ||||
| 	* mem.c: (main): | ||||
| 	* wd.c: (main): | ||||
|  | ||||
| 	Fixed wd and new simple mem example. | ||||
|  | ||||
| 2006-02-27  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_proc_mem), (main): | ||||
|  | ||||
| 	Added proc_mem example. | ||||
|  | ||||
| 2005-12-15  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* proclist.c: (print_pids), (main): | ||||
| 	 | ||||
| 	Improved example. | ||||
|  | ||||
| 2005-12-12  Benoît Dejean  <benoit@placenet.org> | ||||
|  | ||||
| 	* .cvsignore: | ||||
| 	* Makefile.am: | ||||
| 	* proclist.c: (main): | ||||
| 	* procmap.c: (main): | ||||
|  | ||||
| 	Added quick example for glibtop_get_proclist() | ||||
| 	and updated procmap example to display smap. | ||||
|  | ||||
| 2005-08-02  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_cpu), (pprint_get_loadavg), | ||||
| 	(pprint_get_mem), (pprint_get_msg_limits), (pprint_get_netlist), | ||||
| 	(pprint_get_swap), (pprint_get_uptime), (pprint_get_proc_kernel), | ||||
| 	(main): | ||||
|  | ||||
| 	Added pprint_get_proc_kernel(pid). | ||||
| 	Fixed prototypes. | ||||
|  | ||||
| 2005-01-22  Benoît Dejean  <TazForEver@dlfp.org> | ||||
|  | ||||
| 	* openfiles.c: (show_open_files): Updated. | ||||
|  | ||||
| 2004-12-23  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* netload.c: (main): | ||||
| 	* procmap.c: (main): s/glibtop_error/g_error/g | ||||
|  | ||||
| 2004-11-15  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* netload.c: (hwaddress_format_for_display), (main): Updated. | ||||
|  | ||||
| 2004-11-13  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_fsusage), (pprint_get_mountlist), | ||||
| 	(pprint_get_netload), (pprint_get_netlist), (main): Updated. | ||||
|  | ||||
| 2004-09-25  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (main): Re-added pprint_get_msg_limits() | ||||
|  | ||||
| i2004-09-25  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* df.c: (main): | ||||
| 	* pprint.c: (main): | ||||
| 	* procargs.c: (main): Added missing call to glibgtop_init() / glibtop_close() | ||||
|  | ||||
| 2004-09-24  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* .cvsignore: | ||||
| 	* Makefile.am: | ||||
| 	* ../configure.in | ||||
| 	* df.c: (print_fsusage), (main): Added new example, just like 'df'. | ||||
|  | ||||
| 2004-09-22  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (main): Disable pprint_get_msg_limits() because it can fail. | ||||
|  | ||||
| 2004-09-21  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_swap), (main): Updated. | ||||
|  | ||||
| 2004-09-21  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* procargs.c: (show_args), (main): Updated. | ||||
|  | ||||
| 2004-09-21  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_mountlist), (pprint_get_netload), | ||||
| 	(pprint_get_uptime), (main): Updated. | ||||
|  | ||||
| 2004-09-21  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* pprint.c: (pprint_get_mountlist): Updated. | ||||
|  | ||||
| 2004-09-21  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* procargs.c: (show_args), (main): Updated. | ||||
|  | ||||
| 2004-09-20  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* .cvsignore: | ||||
| 	* Makefile.am: | ||||
| 	* pprint.c: (pprint_get_cpu), (pprint_get_fsusage), | ||||
| 	(pprint_get_loadavg), (pprint_get_mem), (pprint_get_mountlist), | ||||
| 	(pprint_get_msg_limits), (main): Added new example : pretty prints | ||||
| 	the result of glibtop_*. Work in progress. | ||||
| 	 | ||||
| 	Now builds procargs. | ||||
| 	 | ||||
| 	* ../configure.in: Added to static list. | ||||
|  | ||||
| 2004-07-07  Benoît Dejean  <tazforever@dlfp.org> | ||||
|  | ||||
| 	* procargs.c: Added glibtop_get_proc_argv demo. | ||||
|  | ||||
| 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. | ||||
| @@ -18,7 +167,7 @@ | ||||
|  | ||||
| Fri Apr  9 00:14:52 1999 Timur Bakeyev  <timur@gnu.org> | ||||
|  | ||||
| 	* timings.c: Added timersub defenition, to make code compilable on  | ||||
| 	* timings.c: Added timersub defenition, to make code compilable on | ||||
| 	BSDI. | ||||
|  | ||||
| 1999-03-24  Martin Baulig  <martin@home-of-linux.org> | ||||
| @@ -84,11 +233,11 @@ Fri Apr  9 00:14:52 1999 Timur Bakeyev  <timur@gnu.org> | ||||
| 1998-06-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* test.scm: New file. | ||||
| 	 | ||||
|  | ||||
| 1998-06-07  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am (CFLAGS): Disable optimize. | ||||
| 	 | ||||
|  | ||||
| 	* first.c (PROFILE_COUNT): Number of times each function | ||||
| 	should be called. Defaults to 1; to profile the code, you | ||||
| 	can increase this when compiling. | ||||
|   | ||||
| @@ -1,121 +1,58 @@ | ||||
| ## Process this file with automake to produce Makefile.in | ||||
|  | ||||
| LINK			= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
| AM_LDFLAGS			= $(LIBGTOP_EXTRA_LIBS) | ||||
|  | ||||
| INCLUDES		= @INCLUDES@ | ||||
|  | ||||
| DEFS			= @DEFS@ | ||||
|  | ||||
| # We install it in `libexec' since this will make it more easy | ||||
| # to put the examples into an extra RPM package. | ||||
|  | ||||
| libgtopdir		= $(libexecdir)/libgtop | ||||
|  | ||||
| libgtop_PROGRAMS	= first second\ | ||||
| noinst_PROGRAMS	= 	first second pprint procargs df netlist \ | ||||
| 			  mountlist procmap netload sysdeps timings \ | ||||
| 			  @static_targets@ @guile_examples@ @smp_examples@ | ||||
|  | ||||
| EXTRA_PROGRAMS		= first_static second_static \ | ||||
| 			  mountlist_static procmap_static \ | ||||
| 			  third third_static smp smp_static \ | ||||
| 			  netload_static sysdeps_static \ | ||||
| 			  timings_static | ||||
| 			  openfiles smp proclist free wd affinity | ||||
|  | ||||
| first_SOURCES		= first.c | ||||
| first_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| first_static_SOURCES	= $(first_SOURCES) | ||||
| first_static_LDADD	= $(first_LDADD) | ||||
| first_static_LDFLAGS	= -static | ||||
| first_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| second_SOURCES		= second.c | ||||
| second_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| second_static_SOURCES	= $(second_SOURCES) | ||||
| second_static_LDADD	= $(second_LDADD) | ||||
| second_static_LDFLAGS	= -static | ||||
| second_LDADD		= $(top_builddir)/lib/libgtop-2.0.la -lm | ||||
|  | ||||
| procmap_SOURCES		= procmap.c | ||||
| procmap_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
|  | ||||
|  | ||||
| procmap_static_SOURCES	= $(procmap_SOURCES) | ||||
| procmap_static_LDADD	= $(procmap_LDADD) | ||||
| procmap_static_LDFLAGS	= -static | ||||
| procmap_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| netload_SOURCES		= netload.c | ||||
| netload_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| netload_static_SOURCES	= $(netload_SOURCES) | ||||
| netload_static_LDADD	= $(netload_LDADD) | ||||
| netload_static_LDFLAGS	= -static | ||||
| netload_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| sysdeps_SOURCES		= sysdeps.c | ||||
| sysdeps_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| sysdeps_static_SOURCES	= $(sysdeps_SOURCES) | ||||
| sysdeps_static_LDADD	= $(sysdeps_LDADD) | ||||
| sysdeps_static_LDFLAGS	= -static | ||||
|  | ||||
| third_guile_names_LIBS	= $(top_builddir)/sysdeps/guile/names/libgtop_guile_names-2.0.la | ||||
| third_names_LIBS	= $(top_builddir)/sysdeps/names/libgtop_names-2.0.la | ||||
|  | ||||
| third_SOURCES		= third.c | ||||
| third_LDADD		= $(top_builddir)/sysdeps/guile/libgtop_guile-2.0.la \ | ||||
| 			  $(third_guile_names_LIBS) $(third_names_LIBS) \ | ||||
| 			  $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| third_static_SOURCES	= $(third_SOURCES) | ||||
| third_static_LDADD	= $(third_LDADD) | ||||
| third_static_LDFLAGS	= -static | ||||
| sysdeps_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| mountlist_SOURCES	= mountlist.c | ||||
| mountlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| mountlist_static_SOURCES= $(mountlist_SOURCES) | ||||
| mountlist_static_LDADD	= $(mountlist_LDADD) | ||||
| mountlist_static_LDFLAGS= -static | ||||
|  | ||||
| mountlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| smp_SOURCES		= smp.c | ||||
| smp_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| smp_static_SOURCES	= $(smp_SOURCES) | ||||
| smp_static_LDADD	= $(smp_LDADD) | ||||
| smp_static_LDFLAGS	= -static | ||||
| smp_LDADD		= $(top_builddir)/lib/libgtop-2.0.la -lm | ||||
|  | ||||
| timings_SOURCES		= timings.c | ||||
| timings_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
| timings_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| timings_static_SOURCES	= $(timings_SOURCES) | ||||
| timings_static_LDADD	= $(timings_LDADD) | ||||
| timings_static_LDFLAGS	= -static | ||||
| pprint_SOURCES	        = pprint.c | ||||
| pprint_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| procargs_SOURCES	  = procargs.c | ||||
| procargs_LDADD		  = $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| df_SOURCES	  = df.c | ||||
| df_LDADD		  = $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| netlist_SOURCES		= netlist.c | ||||
| netlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| openfiles_SOURCES	= openfiles.c | ||||
| openfiles_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| proclist_SOURCES	= proclist.c | ||||
| proclist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| wd_SOURCES	= wd.c | ||||
| wd_LDADD	= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| free_SOURCE	= mem.c | ||||
| free_LDADD	= $(top_builddir)/lib/libgtop-2.0.la | ||||
|  | ||||
| affinity_SOURCES	= affinity.c | ||||
| affinity_LDADD	= $(top_builddir)/lib/libgtop-2.0.la | ||||
|   | ||||
							
								
								
									
										34
									
								
								examples/affinity.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								examples/affinity.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/procaffinity.h> | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
| 	pid_t pid; | ||||
| 	glibtop_proc_affinity buf; | ||||
| 	guint16 *cpus; | ||||
| 	size_t i; | ||||
|  | ||||
| 	if (argc < 2 || !(pid = strtoul(argv[1], NULL, 0))) | ||||
| 		pid = getpid(); | ||||
|  | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	cpus = glibtop_get_proc_affinity(&buf, pid); | ||||
|  | ||||
| 	g_print("Process %u:\n" | ||||
| 		" - all: %d\n", | ||||
| 		(unsigned)pid, buf.all); | ||||
|  | ||||
| 	for (i = 0; i != buf.number; ++i) | ||||
| 		g_print(" - CPU#%u is set\n", cpus[i]); | ||||
|  | ||||
| 	g_free(cpus); | ||||
|  | ||||
| 	glibtop_close(); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										76
									
								
								examples/df.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								examples/df.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
| #include <glibtop.h> | ||||
|  | ||||
| #include <glibtop/fsusage.h> | ||||
| #include <glibtop/mountlist.h> | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
|  | ||||
| static void print_fsusage(const char *mountpoint) | ||||
| { | ||||
|   glibtop_fsusage buf; | ||||
|  | ||||
|   enum { SIZE, USED, FREE, AVAIL, READ, WRITE, MAX }; | ||||
|   char **a = g_new0(char*, MAX); | ||||
|  | ||||
|   glibtop_get_fsusage(&buf, mountpoint); | ||||
|  | ||||
|  | ||||
| #define I(X) a[(X)] | ||||
|   I(SIZE)  = g_format_size_full(buf.blocks * buf.block_size, G_FORMAT_SIZE_IEC_UNITS); | ||||
|   I(USED)  = g_format_size_full((buf.blocks - buf.bavail)  * buf.block_size, G_FORMAT_SIZE_IEC_UNITS); | ||||
|   I(FREE)  = g_format_size_full(buf.bfree * buf.block_size, G_FORMAT_SIZE_IEC_UNITS); | ||||
|   I(AVAIL) = g_format_size_full(buf.bavail * buf.block_size, G_FORMAT_SIZE_IEC_UNITS); | ||||
|   I(READ)  = g_format_size_full(buf.read, G_FORMAT_SIZE_IEC_UNITS); | ||||
|   I(WRITE) = g_format_size_full(buf.write, G_FORMAT_SIZE_IEC_UNITS); | ||||
|  | ||||
|   printf("%#7x %10s %10s %10s %10s %5.1f%% %10s %10s %8lu %8lu %s\n", | ||||
|     (unsigned)buf.flags, | ||||
|     I(SIZE), | ||||
|     I(USED), | ||||
|     I(FREE), | ||||
|     I(AVAIL), | ||||
|     (buf.blocks - buf.bavail) * 100.0 / (buf.blocks ? buf.blocks : 1.0), | ||||
|     I(READ), | ||||
|     I(WRITE), | ||||
|     (unsigned long)buf.files, | ||||
|     (unsigned long)buf.ffree, | ||||
|     mountpoint | ||||
|     ); | ||||
|  | ||||
|   g_strfreev(a); | ||||
| } | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
|   glibtop_mountlist buf; | ||||
|  | ||||
|   glibtop_init(); | ||||
|  | ||||
|   printf("%-6s %10s %10s %10s %10s %5s %10s %10s %10s %10s %s\n", | ||||
| 	 "(flags)", "Size", "Used", "Free", "Avail", "Use%", "Read", "Write", "Files", "Files Free", "Mountpoint"); | ||||
|  | ||||
|   if (argc > 1) { | ||||
|     while (*++argv) | ||||
|       print_fsusage(*argv); | ||||
|   } else { | ||||
|     glibtop_mountentry *entries; | ||||
|     size_t i; | ||||
|  | ||||
|     entries = glibtop_get_mountlist(&buf, TRUE); | ||||
|  | ||||
|     for(i = 0; i < buf.number; ++i) | ||||
|       { | ||||
| 	print_fsusage(entries[i].mountdir); | ||||
|       } | ||||
|  | ||||
|     g_free(entries); | ||||
|   } | ||||
|  | ||||
|   glibtop_close(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,16 +15,21 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <libintl.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| @@ -44,9 +47,9 @@ main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_union data; | ||||
| 	glibtop_sysdeps sysdeps; | ||||
| 	unsigned c, method, count, port, i, *ptr; | ||||
| 	unsigned c, method, count, port, i; | ||||
| 	char buffer [BUFSIZ]; | ||||
| 	pid_t pid, ppid; | ||||
| 	pid_t pid, ppid, *ptr; | ||||
| 	char *args; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
| @@ -54,7 +57,7 @@ main (int argc, char *argv []) | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method)); | ||||
| @@ -134,7 +137,7 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_shm_limits (&data.shm_limits); | ||||
| 	 | ||||
|  | ||||
| 	printf ("Shm Limits   (0x%08lx): %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.shm_limits.flags, | ||||
| 		(unsigned long) data.shm_limits.shmmax, | ||||
| @@ -158,7 +161,7 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_sem_limits (&data.sem_limits); | ||||
| 	 | ||||
|  | ||||
| 	printf ("Sem Limits   (0x%08lx): " | ||||
| 		"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.sem_limits.flags, | ||||
| @@ -216,7 +219,7 @@ main (int argc, char *argv []) | ||||
| 		(unsigned long) sysdeps.ppp); | ||||
|  | ||||
| 	printf ("\n"); | ||||
| 	 | ||||
|  | ||||
| 	ptr = glibtop_get_proclist (&data.proclist, 0, 0); | ||||
|  | ||||
| 	printf ("Proclist     (0x%08lx): %lu, %lu, %lu\n", | ||||
| @@ -232,7 +235,7 @@ main (int argc, char *argv []) | ||||
| 		printf ("\n"); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (ptr); | ||||
| 	g_free (ptr); | ||||
|  | ||||
| 	pid = getpid (); | ||||
| 	ppid = getppid (); | ||||
| @@ -307,7 +310,7 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_signal (&data.proc_signal, pid); | ||||
| 	 | ||||
|  | ||||
| 	printf ("Proc_Signal  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_signal.flags, | ||||
| @@ -346,7 +349,7 @@ main (int argc, char *argv []) | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
| 	g_free (args); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| @@ -456,7 +459,7 @@ main (int argc, char *argv []) | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
| 	g_free (args); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| @@ -567,7 +570,7 @@ main (int argc, char *argv []) | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
| 	g_free (args); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
|   | ||||
							
								
								
									
										44
									
								
								examples/free.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								examples/free.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/mem.h> | ||||
| #include <glibtop/swap.h> | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| static unsigned mb(guint64 n) | ||||
| { | ||||
|         return n >> 20; | ||||
| } | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
|         glibtop_mem mem; | ||||
|         glibtop_swap swap; | ||||
|  | ||||
| 	glibtop_init(); | ||||
|  | ||||
|         glibtop_get_mem(&mem); | ||||
|         glibtop_get_swap(&swap); | ||||
|  | ||||
|         printf("              total        used        free      shared  buff/cache   available\n"); | ||||
|  | ||||
|         printf("%-7s %11u %11u %11u %11u %11u %11u\n", | ||||
|                "Mem:", | ||||
|                 mb(mem.total), | ||||
|                 mb(mem.used - mem.buffer - mem.cached), | ||||
|                 mb(mem.free), | ||||
|                 mb(mem.shared), | ||||
|                 mb(mem.buffer + mem.cached), | ||||
|                 mb(mem.total - mem.user)); | ||||
|  | ||||
|         printf("%-7s %11u %11u %11u\n", | ||||
|                "Swap:", | ||||
|                 mb(swap.total), | ||||
|                 mb(swap.used), | ||||
|                 mb(swap.free)); | ||||
|  | ||||
| 	glibtop_close(); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,16 +15,21 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <libintl.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| @@ -49,11 +52,11 @@ main (int argc, char *argv []) | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method)); | ||||
| 	 | ||||
|  | ||||
| 	printf ("Method = %d\n", method); | ||||
|  | ||||
| 	count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ); | ||||
| @@ -73,7 +76,7 @@ main (int argc, char *argv []) | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) { | ||||
| 		mount_entries = glibtop_get_mountlist (&mount_list, 1); | ||||
|  | ||||
| 		glibtop_free (mount_entries); | ||||
| 		g_free (mount_entries); | ||||
| 	} | ||||
|  | ||||
| 	printf ("sbrk (0) = %p\n\n", sbrk (0)); | ||||
| @@ -89,21 +92,21 @@ main (int argc, char *argv []) | ||||
| 			mount_entries [index].type, | ||||
| 			mount_entries [index].devname); | ||||
|  | ||||
| 	printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n", | ||||
| 		"", "Blocks", "Free", "Avail", "Files", "Free"); | ||||
| 	printf ("\n\n%-16s %9s %9s %9s %9s %9s %9s\n", | ||||
| 		"Mount", "Blocks", "Free", "Avail", "Files", "Free", "BlockSz"); | ||||
|  | ||||
| 	for (index = 0; index < mount_list.number; index++) { | ||||
| 		glibtop_get_fsusage (&fsusage, | ||||
| 				     mount_entries [index].mountdir); | ||||
|  | ||||
| 		printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n", | ||||
| 		printf ("%-16s %9Lu %9Lu %9Lu %9Lu %9Lu %9d\n", | ||||
| 			mount_entries [index].mountdir, | ||||
| 			fsusage.blocks, fsusage.bfree, | ||||
| 			fsusage.bavail, fsusage.files, | ||||
| 			fsusage.ffree); | ||||
| 			fsusage.ffree, fsusage.block_size); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (mount_entries); | ||||
| 	g_free (mount_entries); | ||||
|  | ||||
| 	printf ("\nsbrk (0) = %p\n\n", sbrk (0)); | ||||
|  | ||||
|   | ||||
| @@ -1,11 +1,6 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
| /* Copyright (C) 2004 Benoît Dejean
 | ||||
|    This file is part of LibGTop 2.0. | ||||
| 
 | ||||
| /* $Id$ */ | ||||
| 
 | ||||
| /* Copyright (C) 1998-99 Martin Baulig
 | ||||
|    This file is part of LibGTop 1.0. | ||||
| 
 | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
| 
 | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
| @@ -19,19 +14,37 @@ | ||||
| 
 | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
| 
 | ||||
| #ifndef __GLIBTOP_BACKEND_COMMON_H__ | ||||
| #define __GLIBTOP_BACKEND_COMMON_H__ | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/netlist.h> | ||||
| 
 | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
| 
 | ||||
| #endif | ||||
| int main(int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_netlist buf; | ||||
| 	char **devices; | ||||
| 	guint32 i; | ||||
| 
 | ||||
| 	glibtop_init(); | ||||
| 
 | ||||
| 	devices = glibtop_get_netlist(&buf); | ||||
| 
 | ||||
| 	for(i = 0; i < buf.number; ++i) | ||||
| 	{ | ||||
| 		printf("net device '%s'\n", devices[i]); | ||||
| 	} | ||||
| 
 | ||||
| 	g_strfreev(devices); | ||||
| 
 | ||||
| 	glibtop_close(); | ||||
| 	return 0; | ||||
| } | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,16 +15,21 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <libintl.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| @@ -39,6 +42,24 @@ | ||||
| #define PROFILE_COUNT	1 | ||||
| #endif | ||||
|  | ||||
|  | ||||
| static char* hwaddress_format_for_display(glibtop_netload *buf) | ||||
| { | ||||
| 	unsigned i; | ||||
| 	GString *repr = g_string_new(""); | ||||
| 	char *str; | ||||
|  | ||||
| 	for(i = 0; i < sizeof buf->hwaddress; ++i) | ||||
| 		g_string_append_printf(repr, "%02X:", | ||||
| 				       ((unsigned char*)buf->hwaddress)[i]); | ||||
|  | ||||
| 	repr->str [ repr->len - 1] = ' '; | ||||
| 	str = g_string_free(repr, FALSE); | ||||
| 	g_strstrip(str); | ||||
| 	return str; | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| @@ -46,6 +67,8 @@ main (int argc, char *argv []) | ||||
| 	unsigned method, count, port; | ||||
| 	struct in_addr addr, subnet; | ||||
| 	char *address_string, *subnet_string; | ||||
| 	char address6_string[INET6_ADDRSTRLEN], prefix6_string[INET6_ADDRSTRLEN]; | ||||
| 	char *hwaddress_string; | ||||
| 	char buffer [BUFSIZ]; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
| @@ -53,7 +76,7 @@ main (int argc, char *argv []) | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method)); | ||||
| @@ -75,49 +98,63 @@ main (int argc, char *argv []) | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	if (argc != 2) | ||||
| 		glibtop_error ("Usage: %s interface", argv [0]); | ||||
| 	 | ||||
| 		g_error ("Usage: %s interface", argv [0]); | ||||
|  | ||||
| 	glibtop_get_netload (&netload, argv [1]); | ||||
|  | ||||
| 	addr.s_addr = netload.address; | ||||
| 	subnet.s_addr = netload.subnet; | ||||
|  | ||||
| 	address_string = glibtop_strdup (inet_ntoa (addr)); | ||||
| 	subnet_string  = glibtop_strdup (inet_ntoa (subnet)); | ||||
| 	address_string = g_strdup (inet_ntoa (addr)); | ||||
| 	subnet_string  = g_strdup (inet_ntoa (subnet)); | ||||
|  | ||||
| 	printf ("Network Load (0x%08lx):\n\n" | ||||
| 		"\tInterface Flags:\t0x%08lx\n" | ||||
| 		"\tAddress:\t\t0x%08lx - %s\n" | ||||
| 		"\tSubnet:\t\t\t0x%08lx - %s\n\n" | ||||
| 		"\tMTU:\t\t\t%ld\n" | ||||
| 		"\tCollisions:\t\t%ld\n\n" | ||||
| 		"\tPackets In:\t\t%ld\n" | ||||
| 		"\tPackets Out:\t\t%ld\n" | ||||
| 		"\tPackets Total:\t\t%ld\n\n" | ||||
| 		"\tBytes In:\t\t%ld\n" | ||||
| 		"\tBytes Out:\t\t%ld\n" | ||||
| 		"\tBytes Total:\t\t%ld\n\n" | ||||
| 		"\tErrors In:\t\t%ld\n" | ||||
| 		"\tErrors Out:\t\t%ld\n" | ||||
| 		"\tErrors Total:\t\t%ld\n\n", | ||||
| 		(unsigned long) netload.flags, | ||||
| 		(unsigned long) netload.if_flags, | ||||
| 		(unsigned long) netload.address, address_string, | ||||
| 		(unsigned long) netload.subnet,  subnet_string, | ||||
| 		(unsigned long) netload.mtu, | ||||
| 		(unsigned long) netload.collisions, | ||||
| 		(unsigned long) netload.packets_in, | ||||
| 		(unsigned long) netload.packets_out, | ||||
| 		(unsigned long) netload.packets_total, | ||||
| 		(unsigned long) netload.bytes_in, | ||||
| 		(unsigned long) netload.bytes_out, | ||||
| 		(unsigned long) netload.bytes_total, | ||||
| 		(unsigned long) netload.errors_in, | ||||
| 		(unsigned long) netload.errors_out, | ||||
| 		(unsigned long) netload.errors_total); | ||||
| 	inet_ntop (AF_INET6, netload.address6, address6_string, INET6_ADDRSTRLEN); | ||||
| 	inet_ntop (AF_INET6, netload.prefix6,  prefix6_string,  INET6_ADDRSTRLEN); | ||||
|  | ||||
| 	glibtop_free (address_string); | ||||
| 	glibtop_free (subnet_string); | ||||
| 	hwaddress_string = hwaddress_format_for_display(&netload); | ||||
|  | ||||
| 	printf ("Network Load (0x%016llx):\n\n" | ||||
| 		"\tInterface Flags:\t0x%016llx\n" | ||||
| 		"\tAddress:\t\t0x%08x - %s\n" | ||||
| 		"\tSubnet:\t\t\t0x%08x - %s\n\n" | ||||
| 		"\tMTU:\t\t\t%d\n" | ||||
| 		"\tCollisions:\t\t%llu\n\n" | ||||
| 		"\tPackets In:\t\t%llu\n" | ||||
| 		"\tPackets Out:\t\t%llu\n" | ||||
| 		"\tPackets Total:\t\t%llu\n\n" | ||||
| 		"\tBytes In:\t\t%llu\n" | ||||
| 		"\tBytes Out:\t\t%llu\n" | ||||
| 		"\tBytes Total:\t\t%llu\n\n" | ||||
| 		"\tErrors In:\t\t%llu\n" | ||||
| 		"\tErrors Out:\t\t%llu\n" | ||||
| 		"\tErrors Total:\t\t%llu\n\n" | ||||
| 		"\tAddress6:\t\t%s\n" | ||||
| 		"\tPrefix6:\t\t%s\n" | ||||
| 		"\tScope6:\t\t\t%#03x\n\n" | ||||
| 		"\tHarware Address:\t%s\n\n", | ||||
| 		netload.flags, | ||||
| 		netload.if_flags, | ||||
| 		(guint32) netload.address, address_string, | ||||
| 		(guint32) netload.subnet,  subnet_string, | ||||
| 		netload.mtu, | ||||
| 		netload.collisions, | ||||
| 		netload.packets_in, | ||||
| 		netload.packets_out, | ||||
| 		netload.packets_total, | ||||
| 		netload.bytes_in, | ||||
| 		netload.bytes_out, | ||||
| 		netload.bytes_total, | ||||
| 		netload.errors_in, | ||||
| 		netload.errors_out, | ||||
| 		netload.errors_total, | ||||
| 		address6_string, | ||||
| 		prefix6_string, | ||||
| 		(int) netload.scope6, | ||||
| 		hwaddress_string); | ||||
|  | ||||
|  | ||||
| 	g_free (address_string); | ||||
| 	g_free (subnet_string); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
|   | ||||
							
								
								
									
										75
									
								
								examples/openfiles.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								examples/openfiles.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/procopenfiles.h> | ||||
|  | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
|  | ||||
| static void show_open_files(pid_t pid) | ||||
| { | ||||
|   glibtop_proc_open_files buf; | ||||
|   glibtop_open_files_entry *files; | ||||
|   unsigned i; | ||||
|  | ||||
|   files = glibtop_get_proc_open_files(&buf, pid); | ||||
|  | ||||
|   printf("<%ld>\n", (long)pid); | ||||
|  | ||||
|   for(i = 0; i < buf.number; ++i) | ||||
|   { | ||||
| 	  printf("\tfd = %d\t", files[i].fd); | ||||
|  | ||||
| 	  switch(files[i].type) | ||||
| 	  { | ||||
| 	  case GLIBTOP_FILE_TYPE_FILE: | ||||
| 		  printf("file \"%s\"\n", files[i].info.file.name); | ||||
| 		  break; | ||||
|  | ||||
| 	  case GLIBTOP_FILE_TYPE_PIPE: | ||||
| 		  printf("pipe\n"); | ||||
| 		  break; | ||||
|  | ||||
| 	  case GLIBTOP_FILE_TYPE_INETSOCKET: | ||||
| 		  printf("socket %s:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port); | ||||
| 		  break; | ||||
|  | ||||
| 	  case GLIBTOP_FILE_TYPE_INET6SOCKET: | ||||
| 		  printf("socket [%s]:%d\n", files[i].info.sock.dest_host, files[i].info.sock.dest_port); | ||||
| 		  break; | ||||
|  | ||||
| 	  case GLIBTOP_FILE_TYPE_LOCALSOCKET: | ||||
| 		  printf("localsocket %s\n", files[i].info.localsock.name); | ||||
| 		  break; | ||||
|  | ||||
| 	  default: | ||||
| 		  printf("unknown type\n"); | ||||
| 	  } | ||||
|   } | ||||
|  | ||||
|   putchar('\n'); | ||||
|  | ||||
|   g_free(files); | ||||
| } | ||||
|  | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
|   glibtop_init(); | ||||
|  | ||||
|   show_open_files(getpid()); | ||||
|  | ||||
|   while(*++argv) | ||||
|     { | ||||
|       pid_t pid = strtol(*argv, NULL, 10); | ||||
|       show_open_files(pid); | ||||
|     } | ||||
|  | ||||
|   glibtop_close(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										390
									
								
								examples/pprint.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										390
									
								
								examples/pprint.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,390 @@ | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/sysinfo.h> | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stddef.h> | ||||
|  | ||||
|  | ||||
| #define buf_offsetof(MEMBER) ((ptrdiff_t)&(buf.MEMBER) - (ptrdiff_t)&buf) | ||||
|  | ||||
| #define HEADER_PPRINT(FUNC) printf("### " #FUNC " ###\nsizeof *buf = %lu B\n", \ | ||||
| (unsigned long) sizeof buf) | ||||
|  | ||||
| #define PPRINT(DATA, FORMAT) printf("\t%4lu B %3lu " #DATA " = " FORMAT "\n", \ | ||||
| (unsigned long) sizeof buf.DATA, (unsigned long) buf_offsetof(DATA), buf.DATA) | ||||
|  | ||||
| #define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do {				\ | ||||
|     size_t i;								\ | ||||
|     printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ",			\ | ||||
| 	   (unsigned long) sizeof buf.ARRAY,				\ | ||||
| 	   (unsigned long) buf_offsetof(ARRAY),				\ | ||||
| 	   (unsigned long) G_N_ELEMENTS(buf.ARRAY));			\ | ||||
|     for (i = 0; i < (SIZE); ++i) {					\ | ||||
|       printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]);			\ | ||||
|       if (!buf.ARRAY[i] && i < (SIZE - 1) && !buf.ARRAY[i + 1]) {	\ | ||||
| 	do { i++; } while (i < SIZE && !buf.ARRAY[i]);			\ | ||||
| 	printf("..., ");						\ | ||||
|       }									\ | ||||
|     }									\ | ||||
|     printf("}\n");							\ | ||||
|   } while(0) | ||||
|  | ||||
| #define PPRINT_ENTRY_ARRAY(ARRAY, SIZE) do { \ | ||||
| size_t i; \ | ||||
| printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \ | ||||
| (unsigned long) sizeof buf->ARRAY, 0,\ | ||||
| (unsigned long) G_N_ELEMENTS(buf->ARRAY)); \ | ||||
| for(i = 0; i < SIZE; ++i) { \ | ||||
|   if (buf->ARRAY[i].values) {			\ | ||||
|     printf ("[ ");				\ | ||||
|     PPRINT_HASHTABLE(buf->ARRAY[i].values);	\ | ||||
|     printf ("]\n");				\ | ||||
|   }						\ | ||||
| } \ | ||||
| printf("} "); \ | ||||
| } while(0) | ||||
|  | ||||
| #define PPRINT_HASHTABLE(HASHTABLE) do { \ | ||||
| g_hash_table_foreach (HASHTABLE, (GHFunc)pprint_hashtable_item, NULL); \ | ||||
| } while(0) | ||||
|  | ||||
| #define FOOTER_PPRINT() putchar('\n'); | ||||
|  | ||||
| static void pprint_hashtable_item(gchar* key, gchar* value, gpointer user_data)  | ||||
| { | ||||
|   printf ("'%s': '%s', ", key, value); | ||||
| } | ||||
| static void pprint_get_sysinfo(void) | ||||
| { | ||||
|   const glibtop_sysinfo *buf; | ||||
|  | ||||
|   buf = glibtop_get_sysinfo(); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_sysinfo); | ||||
|   //PPRINT(flags, "%#llx"); | ||||
|   //PPRINT(ncpu, "%llu"); | ||||
|   PPRINT_ENTRY_ARRAY(cpuinfo, 4); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
| static void pprint_get_cpu(void) | ||||
| { | ||||
|   glibtop_cpu buf; | ||||
|  | ||||
|   glibtop_get_cpu(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_cpu); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(total, "%llu"); | ||||
|   PPRINT(user, "%llu"); | ||||
|   PPRINT(nice, "%llu"); | ||||
|   PPRINT(sys, "%llu"); | ||||
|   PPRINT(idle, "%llu"); | ||||
|   PPRINT(iowait, "%llu"); | ||||
|   PPRINT(irq, "%llu"); | ||||
|   PPRINT(softirq, "%llu"); | ||||
|   PPRINT(frequency, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_total, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_user, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_nice, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_sys, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_idle, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_iowait, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_irq, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT_ARRAY(xcpu_softirq, GLIBTOP_NCPU, "%llu"); | ||||
|   PPRINT(xcpu_flags, "%llx"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_fsusage(const char *mountpoint) | ||||
| { | ||||
|   glibtop_fsusage buf; | ||||
|  | ||||
|   glibtop_get_fsusage(&buf, mountpoint); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_fsusage); | ||||
|   printf("pprint_get_fsusage (mountpoint = \"%s\"\n", mountpoint); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(blocks, "%llu"); | ||||
|   PPRINT(bfree, "%llu"); | ||||
|   PPRINT(bavail, "%llu"); | ||||
|   PPRINT(files, "%llu"); | ||||
|   PPRINT(ffree, "%llu"); | ||||
|   PPRINT(block_size, "%u"); | ||||
|   PPRINT(read, "%llu"); | ||||
|   PPRINT(write, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_loadavg(void) | ||||
| { | ||||
|   glibtop_loadavg buf; | ||||
|  | ||||
|   glibtop_get_loadavg(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_loadavg); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT_ARRAY(loadavg, 3, "%f"); | ||||
|   PPRINT(nr_running, "%llu"); | ||||
|   PPRINT(nr_tasks, "%llu"); | ||||
|   PPRINT(last_pid, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_mem(void) | ||||
| { | ||||
|   glibtop_mem buf; | ||||
|  | ||||
|   glibtop_get_mem(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_mem); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(total, "%llu"); | ||||
|   PPRINT(used, "%llu"); | ||||
|   PPRINT(free, "%llu"); | ||||
|   PPRINT(shared, "%llu"); | ||||
|   PPRINT(buffer, "%llu"); | ||||
|   PPRINT(cached, "%llu"); | ||||
|   PPRINT(user, "%llu"); | ||||
|   PPRINT(locked, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_mountlist(gboolean allfs) | ||||
| { | ||||
|   glibtop_mountlist buf; | ||||
|   glibtop_mountentry *entries; | ||||
|   size_t i; | ||||
|  | ||||
|   entries = glibtop_get_mountlist(&buf, allfs); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_mountlist); | ||||
|   printf("glibtop_get_mountlist (allfs = %d)\n", allfs); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(number, "%llu"); | ||||
|   PPRINT(total, "%llu"); | ||||
|   PPRINT(size, "%llu"); | ||||
|  | ||||
|   printf("\t%4llu B entries[%llu] = \n\t\t{\n", buf.total, buf.number); | ||||
|  | ||||
|   for(i = 0; i < buf.number; ++i) | ||||
|     { | ||||
|       printf("\t\t .%lu = { .dev = %#llx," | ||||
| 	     " .devname = \"%s\"," | ||||
| 	     " .mountir = \"%s\"," | ||||
| 	     " .type = \"%s\" }\n", | ||||
| 	     (unsigned long) i, entries[i].dev, | ||||
| 	     entries[i].devname, | ||||
| 	     entries[i].mountdir, | ||||
| 	     entries[i].type); | ||||
|     } | ||||
|  | ||||
|   printf("\t\t}\n"); | ||||
|   FOOTER_PPRINT(); | ||||
|  | ||||
|   g_free(entries); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_msg_limits(void) | ||||
| { | ||||
|   glibtop_msg_limits buf; | ||||
|  | ||||
|   glibtop_get_msg_limits(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_msg_limits); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(msgpool, "%llu"); | ||||
|   PPRINT(msgmap, "%llu"); | ||||
|   PPRINT(msgmax, "%llu"); | ||||
|   PPRINT(msgmnb, "%llu"); | ||||
|   PPRINT(msgmni, "%llu"); | ||||
|   PPRINT(msgssz, "%llu"); | ||||
|   PPRINT(msgtql, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_netload(const char *iface) | ||||
| { | ||||
|   glibtop_netload buf; | ||||
|  | ||||
|   glibtop_get_netload(&buf, iface); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_netload); | ||||
|   printf("glibtop_get_netload (iface = \"%s\")\n", iface); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
| static void pprint_get_netlist(void) | ||||
| { | ||||
|   glibtop_netlist buf; | ||||
|   char **devices; | ||||
|   guint32 i; | ||||
|  | ||||
|   devices = glibtop_get_netlist(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_netlist); | ||||
|  | ||||
|   for(i = 0; i < buf.number; ++i) | ||||
|   { | ||||
| 	  printf("\t%s\n", devices[i]); | ||||
|   } | ||||
|  | ||||
|   FOOTER_PPRINT(); | ||||
|  | ||||
|   g_strfreev(devices); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_swap(void) | ||||
| { | ||||
|   glibtop_swap buf; | ||||
|  | ||||
|   glibtop_get_swap(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_swap); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(total, "%llu"); | ||||
|   PPRINT(used, "%llu"); | ||||
|   PPRINT(free, "%llu"); | ||||
|   PPRINT(pagein, "%llu"); | ||||
|   PPRINT(pageout, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_uptime(void) | ||||
| { | ||||
|   glibtop_uptime buf; | ||||
|  | ||||
|   glibtop_get_uptime(&buf); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_uptime); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(uptime, "%f"); | ||||
|   PPRINT(idletime, "%f"); | ||||
|   PPRINT(boot_time, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| static void pprint_get_proc_kernel(pid_t pid) | ||||
| { | ||||
|   glibtop_proc_kernel buf; | ||||
|  | ||||
|   glibtop_get_proc_kernel(&buf, pid); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_proc_kernel); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(k_flags, "%llu"); | ||||
|   PPRINT(min_flt, "%llu"); | ||||
|   PPRINT(maj_flt, "%llu"); | ||||
|   PPRINT(cmin_flt, "%llu"); | ||||
|   PPRINT(cmaj_flt, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
| static void pprint_get_proc_mem(pid_t pid) | ||||
| { | ||||
|   glibtop_proc_mem buf; | ||||
|  | ||||
|   glibtop_get_proc_mem(&buf, pid); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_proc_mem); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(size, "%llu"); | ||||
|   PPRINT(vsize, "%llu"); | ||||
|   PPRINT(resident, "%llu"); | ||||
|   PPRINT(share, "%llu"); | ||||
|   PPRINT(rss, "%llu"); | ||||
|   PPRINT(rss_rlim, "%llu"); | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
| static void pprint_get_proc_affinity(pid_t pid) | ||||
| { | ||||
|   glibtop_proc_affinity buf; | ||||
|   guint32 i; | ||||
|   guint16* cpus; | ||||
|  | ||||
|   cpus = glibtop_get_proc_affinity(&buf, pid); | ||||
|  | ||||
|   HEADER_PPRINT(glibtop_get_proc_affinity); | ||||
|   PPRINT(flags, "%#llx"); | ||||
|   PPRINT(number, "%u"); | ||||
|   PPRINT(all, "%d"); | ||||
|  | ||||
|   printf("\taffinity="); | ||||
|   for (i = 0; i < buf.number; i++) { | ||||
|     printf("%d, ", cpus[i]); | ||||
|   } | ||||
|   putchar('\n'); | ||||
|  | ||||
|   FOOTER_PPRINT(); | ||||
| } | ||||
|  | ||||
|  | ||||
| int main() | ||||
| { | ||||
|   glibtop_init(); | ||||
|  | ||||
|   pprint_get_sysinfo(); | ||||
|   pprint_get_cpu(); | ||||
|  | ||||
|   pprint_get_fsusage("/"); | ||||
|  | ||||
|   pprint_get_loadavg(); | ||||
|  | ||||
|   pprint_get_mem(); | ||||
|  | ||||
|   pprint_get_mountlist(TRUE); | ||||
|   pprint_get_mountlist(FALSE); | ||||
|  | ||||
|   pprint_get_msg_limits(); | ||||
|  | ||||
|   pprint_get_swap(); | ||||
|  | ||||
|   pprint_get_netlist(); | ||||
|  | ||||
|   pprint_get_netload("eth0"); | ||||
|   pprint_get_netload("ppp0"); | ||||
|   pprint_get_netload("<unknown>"); | ||||
| /* pprint_get_sysinfo(); */ | ||||
|  | ||||
|   pprint_get_uptime(); | ||||
|  | ||||
|   pprint_get_proc_kernel(getpid()); | ||||
|   pprint_get_proc_mem(getpid()); | ||||
|   pprint_get_proc_affinity(getpid()); | ||||
|  | ||||
|   glibtop_close(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
							
								
								
									
										51
									
								
								examples/procargs.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								examples/procargs.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/procargs.h> | ||||
|  | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
|  | ||||
| static void show_args(pid_t pid, unsigned max_len) | ||||
| { | ||||
|   glibtop_proc_args buf; | ||||
|   char ** const pargv = glibtop_get_proc_argv(&buf, pid, max_len); | ||||
|  | ||||
|   char **parg = pargv; | ||||
|  | ||||
|   printf("<%ld>\t", (long)pid); | ||||
|  | ||||
|   while(*parg) | ||||
|     { | ||||
|       printf("\"%s\" ", *parg); | ||||
|       parg++; | ||||
|     } | ||||
|  | ||||
|   putchar('\n'); | ||||
|  | ||||
|   g_strfreev(pargv); | ||||
| } | ||||
|  | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
|   glibtop_init(); | ||||
|  | ||||
|   show_args(getpid(), 0); | ||||
|   show_args(getpid(), 15); | ||||
|  | ||||
|   while(*++argv) | ||||
|     { | ||||
|       pid_t pid = strtol(*argv, NULL, 10); | ||||
|       show_args(pid, 0); | ||||
|       show_args(pid, 15); | ||||
|     } | ||||
|  | ||||
|   glibtop_close(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										59
									
								
								examples/proclist.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								examples/proclist.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/proclist.h> | ||||
| #include <glibtop/procstate.h> | ||||
| #include <glibtop/proctime.h> | ||||
| #include <glibtop/procuid.h> | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
| #include <sys/types.h> | ||||
|  | ||||
|  | ||||
| static void print_pids(guint64 which, guint64 arg) | ||||
| { | ||||
| 	pid_t *pids; | ||||
| 	unsigned i; | ||||
| 	glibtop_proclist buf; | ||||
|  | ||||
| 	pids = glibtop_get_proclist(&buf, which, arg); | ||||
|  | ||||
| 	for (i = 0; i < buf.number; ++i) { | ||||
| 		glibtop_proc_time ptime; | ||||
| 		glibtop_proc_uid puid; | ||||
| 		glibtop_proc_state pstate; | ||||
|  | ||||
| 		pid_t p = pids[i]; | ||||
|  | ||||
| 		glibtop_get_proc_time(&ptime, p); | ||||
| 		glibtop_get_proc_uid(&puid, p); | ||||
| 		glibtop_get_proc_state(&pstate, p); | ||||
|  | ||||
| 		/* almost equivalent to ps -x -o user,pid,time,usertime,systime,start,command */ | ||||
| 		printf("%u pid=%u real=%.2f user=%.2f sys=%.2f start=%lu %s (%lx)\n", | ||||
| 		       puid.uid, | ||||
| 		       p, | ||||
| 		       (double)ptime.rtime / ptime.frequency, | ||||
| 		       (double)ptime.utime / ptime.frequency, | ||||
| 		       (double)ptime.stime / ptime.frequency, | ||||
| 		       (unsigned long)ptime.start_time, | ||||
| 		       pstate.cmd, | ||||
| 		       (long)ptime.flags); | ||||
| 	} | ||||
|  | ||||
| 	g_free(pids); | ||||
| } | ||||
|  | ||||
|  | ||||
| int main() | ||||
| { | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	print_pids(GLIBTOP_KERN_PROC_UID, getuid()); | ||||
|  | ||||
| 	glibtop_close(); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,38 +15,63 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <libintl.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/procmap.h> | ||||
|  | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| #include <glibtop/inodedb.h> | ||||
| #endif | ||||
|  | ||||
| #include <sys/resource.h> | ||||
| #include <sys/mman.h> | ||||
|  | ||||
| #include <fcntl.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT	1 | ||||
| #endif | ||||
|  | ||||
| static void | ||||
| try_mmap(const char *path) | ||||
| { | ||||
| 	struct stat buf; | ||||
| 	int fd; | ||||
|  | ||||
| 	if ((fd = open(path, O_RDONLY)) < 0) | ||||
| 		goto out; | ||||
|  | ||||
| 	if (fstat(fd, &buf) < 0) | ||||
| 		goto out; | ||||
|  | ||||
| 	if (mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fd, 0) == MAP_FAILED) | ||||
| 		goto out; | ||||
|  | ||||
| 	close(fd); | ||||
|  | ||||
| 	return; | ||||
|  | ||||
| out: | ||||
| 	fprintf(stderr, "Failed to test mmap with '%s'\n", path); | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| 	glibtop_inodedb *inodedb; | ||||
| #endif | ||||
| 	glibtop_proc_map procmap; | ||||
| 	glibtop_map_entry *maps; | ||||
| 	unsigned method, count, port, i; | ||||
| @@ -60,7 +83,7 @@ main (int argc, char *argv []) | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method)); | ||||
| @@ -81,12 +104,18 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1)) | ||||
| 		glibtop_error ("Usage: %s pid", argv [0]); | ||||
| 	if (argc == 1) { | ||||
| 		pid = getpid(); | ||||
| 	} | ||||
| 	else if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1)) | ||||
| 		g_error ("Usage: %s [pid]", argv [0]); | ||||
|  | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| 	inodedb = glibtop_inodedb_open (0, 0); | ||||
| #endif | ||||
| 	if (pid == getpid()) { | ||||
| 		/* let's map something for a try */ | ||||
| 		try_mmap("/etc/passwd"); | ||||
| 		try_mmap("/etc/resolv.conf"); | ||||
| 		try_mmap(argv[0]); | ||||
| 	} | ||||
|  | ||||
| 	fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid); | ||||
|  | ||||
| @@ -94,18 +123,13 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	for (i = 0; i < procmap.number; i++) { | ||||
| 		const char *filename = NULL; | ||||
| 		char * format; | ||||
| 		unsigned device, device_major, device_minor; | ||||
| 		char perm [5]; | ||||
| 		 | ||||
|  | ||||
| 		if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME)) | ||||
| 			filename = maps [i].filename; | ||||
|  | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| 		if (inodedb && !filename) | ||||
| 			filename = glibtop_inodedb_lookup | ||||
| 				(inodedb, maps [i].device, maps [i].inode); | ||||
| #endif | ||||
|  | ||||
| 		perm [0] = (maps [i].perm & GLIBTOP_MAP_PERM_READ) ? 'r' : '-'; | ||||
| 		perm [1] = (maps [i].perm & GLIBTOP_MAP_PERM_WRITE) ? 'w' : '-'; | ||||
| 		perm [2] = (maps [i].perm & GLIBTOP_MAP_PERM_EXECUTE) ? 'x' : '-'; | ||||
| @@ -116,47 +140,44 @@ main (int argc, char *argv []) | ||||
| 		device_minor = (device & 255); | ||||
| 		device_major = ((device >> 8) & 255); | ||||
|  | ||||
| 		if (sizeof (void*) == 8) | ||||
| 			format = "%016lx-%016lx +%016lx (%8lu bytes mapped) - " | ||||
| 				 "%02x:%02x % 8lu - %.*s"; | ||||
| 		else | ||||
| 			format = "%08lx-%08lx +%08lx (%8lu bytes mapped) - " | ||||
| 				 "%02x:%02x % 8lu - %.*s"; | ||||
|  | ||||
| 		fprintf (stderr, format, | ||||
| 			 (unsigned long) maps [i].start, | ||||
| 			 (unsigned long) maps [i].end, | ||||
| 			 (unsigned long) maps [i].offset, | ||||
| 			 (unsigned long) (maps [i].end - (maps [i].start + maps [i].offset)), | ||||
| 			 device_major, device_minor, | ||||
| 			 (unsigned long) maps [i].inode, | ||||
| 			 sizeof perm, perm); | ||||
|  | ||||
| 		if (filename) { | ||||
| 			char *format; | ||||
|  | ||||
| 			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].end, | ||||
| 				 (unsigned long) maps [i].offset, | ||||
| 				 device_major, device_minor, | ||||
| 				 (unsigned long) maps [i].inode, | ||||
| 				 perm, filename); | ||||
| 		} else { | ||||
| 			char * format; | ||||
|  | ||||
| 			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].end, | ||||
| 				 (unsigned long) maps [i].offset, | ||||
| 				 device_major, device_minor, | ||||
| 				 (unsigned long) maps [i].inode, | ||||
| 				 perm); | ||||
| 			fprintf(stderr, " - %s", filename); | ||||
| 		} | ||||
|  | ||||
| 		fputc('\n', stderr); | ||||
|  | ||||
| 		g_print("smaps flags:%#llx size:%lluKiB rss:%lluKiB " | ||||
| 			"shared_clean:%lluKib shared_dirty:%lluKiB " | ||||
| 			"private_clean:%lluKiB private_dirty: %lluKiB\n", | ||||
| 			maps[i].flags, | ||||
| 			maps[i].size >> 10, | ||||
| 			maps[i].rss >> 10, | ||||
| 			maps[i].shared_clean >> 10, | ||||
| 			maps[i].shared_dirty >> 10, | ||||
| 			maps[i].private_clean >> 10, | ||||
| 			maps[i].private_dirty >> 10); | ||||
|  | ||||
| 		if (filename && (filename != maps [i].filename)) | ||||
| 			glibtop_free (filename); | ||||
| 			g_free ((void*)filename); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (maps); | ||||
| 	g_free (maps); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,17 +15,22 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
| #include <stdio.h> | ||||
| #include <libintl.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
| @@ -39,17 +42,15 @@ output (pid_t pid) | ||||
| 	char *args; | ||||
| 	unsigned i; | ||||
|  | ||||
| #if HAVE_LIBGTOP_SMP | ||||
| 	unsigned long total; | ||||
| 	double p_total, p_utime, p_stime; | ||||
| 	double b_total, b_utime, b_stime; | ||||
| 	double s_total, s_utime, s_stime; | ||||
| 	double my_utime, my_stime; | ||||
| 	int ncpu; | ||||
| #endif | ||||
| 	unsigned int ncpu; | ||||
|  | ||||
| 	printf ("\n"); | ||||
| 		 | ||||
|  | ||||
| 	glibtop_get_proc_state (&data.proc_state, pid); | ||||
|  | ||||
| 	printf ("Proc_State   PID  %5d (0x%08lx): " | ||||
| @@ -58,9 +59,9 @@ output (pid_t pid) | ||||
| 		data.proc_state.cmd, data.proc_state.state, | ||||
| 		(unsigned long) data.proc_state.uid, | ||||
| 		(unsigned long) data.proc_state.gid); | ||||
| 		 | ||||
|  | ||||
| 	glibtop_get_proc_uid (&data.proc_uid, pid); | ||||
| 	 | ||||
|  | ||||
| 	printf ("Proc_Uid     PID  %5d (0x%08lx): " | ||||
| 		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid, | ||||
| 		(unsigned long) data.proc_uid.flags, | ||||
| @@ -72,7 +73,7 @@ output (pid_t pid) | ||||
| 		data.proc_uid.priority, data.proc_uid.nice); | ||||
|  | ||||
| 	glibtop_get_proc_mem (&data.proc_mem, pid); | ||||
| 		 | ||||
|  | ||||
| 	printf ("Proc_Mem     PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_mem.flags, | ||||
| @@ -82,7 +83,7 @@ output (pid_t pid) | ||||
| 		(unsigned long) data.proc_mem.share, | ||||
| 		(unsigned long) data.proc_mem.rss, | ||||
| 		(unsigned long) data.proc_mem.rss_rlim); | ||||
| 		 | ||||
|  | ||||
| 	glibtop_get_proc_segment (&data.proc_segment, pid); | ||||
|  | ||||
| 	printf ("Proc_Segment PID  %5d (0x%08lx): " | ||||
| @@ -98,7 +99,7 @@ output (pid_t pid) | ||||
| 		(unsigned long) data.proc_segment.start_stack); | ||||
|  | ||||
| 	glibtop_get_proc_time (&data.proc_time, pid); | ||||
| 		 | ||||
|  | ||||
| 	printf ("Proc_Time    PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_time.flags, | ||||
| @@ -113,7 +114,7 @@ output (pid_t pid) | ||||
| 		(unsigned long) data.proc_time.frequency); | ||||
|  | ||||
| 	glibtop_get_proc_signal (&data.proc_signal, pid); | ||||
| 	 | ||||
|  | ||||
| 	printf ("Proc_Signal  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_signal.flags, | ||||
| @@ -151,15 +152,14 @@ output (pid_t pid) | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
| 	g_free (args); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| #if HAVE_LIBGTOP_SMP | ||||
| 	ncpu = glibtop_global_server->ncpu; | ||||
|  | ||||
| 	glibtop_get_proc_time (&data.proc_time, pid); | ||||
| 		 | ||||
|  | ||||
| 	total = (unsigned long) data.proc_time.utime + | ||||
| 		(unsigned long) data.proc_time.stime; | ||||
|  | ||||
| @@ -228,7 +228,6 @@ output (pid_t pid) | ||||
| 		s_utime * 100.0 / my_utime, s_stime * 100.0 / my_stime); | ||||
|  | ||||
| 	printf ("\n"); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| int | ||||
| @@ -236,12 +235,13 @@ main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_proclist proclist; | ||||
| 	glibtop_sysdeps sysdeps; | ||||
| 	unsigned *ptr, pid, i; | ||||
| 	unsigned i; | ||||
| 	pid_t *ptr, pid; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
|  | ||||
| 	glibtop_init (); | ||||
|  | ||||
| 	glibtop_get_sysdeps (&sysdeps); | ||||
| @@ -287,11 +287,11 @@ main (int argc, char *argv []) | ||||
| 	for (i = 0; i < proclist.number; i++) { | ||||
|  | ||||
| 		pid = ptr [i]; | ||||
| 		 | ||||
|  | ||||
| 		output (pid); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (ptr); | ||||
| 	g_free (ptr); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,16 +15,19 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <libintl.h> | ||||
| #include <math.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/cpu.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| @@ -39,10 +40,6 @@ main (int argc, char *argv []) | ||||
| 	char separator [BUFSIZ], buffer [BUFSIZ]; | ||||
| 	int ncpu, i; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	glibtop_get_cpu (&cpu); | ||||
| @@ -68,16 +65,16 @@ main (int argc, char *argv []) | ||||
| 	memset (separator, '-', 91); | ||||
| 	separator [92] = '\0'; | ||||
|  | ||||
| 	sprintf (buffer, _("Ticks (%ld per second):"), frequency); | ||||
| 	sprintf (buffer, "Ticks (%ld per second):", frequency); | ||||
|  | ||||
| 	printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer, | ||||
| 		_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator); | ||||
| 		"Total", "User", "Nice", "Sys", "Idle", separator); | ||||
|  | ||||
| 	printf (_("CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"), | ||||
| 	printf ("CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n", | ||||
| 		(unsigned long) cpu.flags, total, user, nice, sys, idle); | ||||
|  | ||||
| 	for (i = 0; i < glibtop_global_server->ncpu; i++) { | ||||
| 		printf (_("CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i, | ||||
| 		printf ("CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n", i, | ||||
| 			(unsigned long) cpu.flags, | ||||
| 			(unsigned long) cpu.xcpu_total [i], | ||||
| 			(unsigned long) cpu.xcpu_user  [i], | ||||
| @@ -94,11 +91,11 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	printf ("%s\n\n\n", separator); | ||||
|  | ||||
| 	printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"), | ||||
| 		_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"), | ||||
| 		_("Idle (%)"), separator); | ||||
| 	 | ||||
| 	printf (_("CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"), | ||||
| 	printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", "Percent:", | ||||
| 		"Total (%)", "User (%)", "Nice (%)", "Sys (%)", | ||||
| 		"Idle (%)", separator); | ||||
|  | ||||
| 	printf ("CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", | ||||
| 		(unsigned long) cpu.flags, (double) total * 100.0 / total, | ||||
| 		(double) user  * 100.0 / total, | ||||
| 		(double) nice  * 100.0 / total, | ||||
| @@ -114,13 +111,13 @@ main (int argc, char *argv []) | ||||
| 		p_sys   = ((double) cpu.xcpu_sys   [i]) * 100.0 / sys; | ||||
| 		p_idle  = ((double) cpu.xcpu_idle  [i]) * 100.0 / idle; | ||||
|  | ||||
| 		printf (_("CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"), | ||||
| 		printf ("CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n", | ||||
| 			i, (unsigned long) cpu.flags, p_total, p_user, p_nice, | ||||
| 			p_sys, p_idle); | ||||
| 	} | ||||
|  | ||||
| 	printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator, | ||||
| 		_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user, | ||||
| 		"Spin:", s_total * 100.0 / total, s_user * 100.0 / user, | ||||
| 		s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle); | ||||
|  | ||||
| 	exit (0); | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,16 +15,22 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <libintl.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| @@ -46,7 +50,7 @@ main (int argc, char *argv []) | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method)); | ||||
| @@ -69,7 +73,7 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	glibtop_get_sysdeps (&sysdeps); | ||||
|  | ||||
| #define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0) | ||||
| #define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f)) ? 1 : 0) | ||||
|  | ||||
| 	printf ("Sysdeps (0x%08lx):\n\n" | ||||
| 		"\tfeatures:\t\t0x%08lx\n\n" | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,16 +15,21 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #  include <config.h> | ||||
| #endif | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <stdio.h> | ||||
| #include <libintl.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| @@ -41,7 +44,7 @@ | ||||
| #endif | ||||
|  | ||||
| #ifndef PROFILE_COUNT_EXPENSIVE | ||||
| #define PROFILE_COUNT_EXPENSIVE		10000L | ||||
| #define PROFILE_COUNT_EXPENSIVE		(PROFILE_COUNT / 10) | ||||
| #endif | ||||
|  | ||||
| #define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 +	(unsigned long) elapsed_utime.tv_usec) | ||||
| @@ -66,28 +69,46 @@ | ||||
| 		}							\ | ||||
| 	} while (0) | ||||
|  | ||||
|  | ||||
| static void display_self_times(void) | ||||
| { | ||||
| 	printf("-- Overview using `ps` --------------------" | ||||
| 	       "---------------\n"); | ||||
| 	printf("-- this client is %8u ----------------" | ||||
| 	       "---------------\n", (unsigned)getpid()); | ||||
| 	printf("-- this server is %8u ----------------" | ||||
| 	       "---------------\n", (unsigned)glibtop_global_server->pid); | ||||
| 	system("ps xjf | egrep 'timings|libgtop_server'"); | ||||
| 	printf("-------------------------------------------" | ||||
| 	       "---------------\n"); | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_union data; | ||||
| 	unsigned c, count, *ptr; | ||||
| 	unsigned c; | ||||
| 	struct rusage total_start, total_end; | ||||
| 	struct rusage rusage_start, rusage_end; | ||||
| 	struct timeval elapsed_utime, elapsed_stime; | ||||
| 	pid_t pid; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
| 	pid = getpid (); | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
|  | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	display_self_times(); | ||||
|  | ||||
| 	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); | ||||
|  | ||||
| @@ -181,13 +202,11 @@ main (int argc, char *argv []) | ||||
| 		(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); | ||||
| 		glibtop_free (ptr); | ||||
| 		pid_t* ptr = glibtop_get_proclist (&data.proclist, 0, 0); | ||||
| 		g_free (ptr); | ||||
| 	} | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
| @@ -204,9 +223,26 @@ main (int argc, char *argv []) | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	pid = getpid (); | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	printf ("\n"); | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) { | ||||
| 		char** ptr = glibtop_get_netlist (&data.netlist); | ||||
| 		g_strfreev (ptr); | ||||
| 	} | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Netlist      (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proclist.flags, | ||||
| 		PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| @@ -264,6 +300,27 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) { | ||||
| 		glibtop_map_entry* entries; | ||||
| 		entries = glibtop_get_proc_map (&data.proc_map, pid); | ||||
| 		g_free (entries); | ||||
| 	} | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Map     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_map.flags, PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_segment (&data.proc_segment, pid); | ||||
|  | ||||
| @@ -282,6 +339,27 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) { | ||||
| 		char** argv; | ||||
| 		argv = glibtop_get_proc_argv (&data.proc_args, pid, 0); | ||||
| 		g_strfreev(argv); | ||||
| 	} | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Args    (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_args.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_time (&data.proc_time, pid); | ||||
|  | ||||
| @@ -302,7 +380,7 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	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, | ||||
| @@ -333,7 +411,7 @@ main (int argc, char *argv []) | ||||
| 		(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, | ||||
| @@ -351,6 +429,8 @@ main (int argc, char *argv []) | ||||
| 	printf ("All timings are in clock ticks " | ||||
| 		"(1000000 ticks per second).\n\n"); | ||||
|  | ||||
| 	display_self_times(); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
|   | ||||
							
								
								
									
										35
									
								
								examples/wd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								examples/wd.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/procwd.h> | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
| 	pid_t pid; | ||||
| 	glibtop_proc_wd buf; | ||||
| 	char **dirs, **dir; | ||||
|  | ||||
| 	if (argc < 2 || !(pid = strtoul(argv[1], NULL, 0))) | ||||
| 		pid = getpid(); | ||||
|  | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	dirs = glibtop_get_proc_wd(&buf, pid); | ||||
|  | ||||
| 	g_print("Process %u:\n" | ||||
| 		" - root: '%s'\n" | ||||
| 		" - exe: '%s'\n" | ||||
| 		" - working directories:\n", | ||||
| 		(unsigned)pid, buf.root, buf.exe); | ||||
|  | ||||
| 	for (dir = dirs; *dir; ++dir) | ||||
| 		g_print("   - '%s'\n", *dir); | ||||
|  | ||||
| 	g_strfreev(dirs); | ||||
|  | ||||
| 	glibtop_close(); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										49
									
								
								features.def
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								features.def
									
									
									
									
									
								
							| @@ -1,22 +1,27 @@ | ||||
| void|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4]) | ||||
| void|mem|ulong(total,used,free,shared,buffer,cached,user,locked) | ||||
| void|swap|ulong(total,used,free,pagein,pageout) | ||||
| void|uptime|double(uptime,idletime) | ||||
| void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid) | ||||
| void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall) | ||||
| void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql) | ||||
| void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem) | ||||
| unsigned *|proclist|ulong(number,size,total)|long(which,arg) | ||||
| void|proc_state|str(cmd):char(state):ulong(uid,gid)|pid_t(pid) | ||||
| void|proc_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid) | ||||
| void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid) | ||||
| void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[4],xcpu_stime[4])|pid_t(pid) | ||||
| void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid) | ||||
| void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):str(wchan)|pid_t(pid) | ||||
| void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_stack)|pid_t(pid) | ||||
| char *|proc_args|ulong(size)|pid_t(pid):unsigned(max_len) | ||||
| glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid) | ||||
| glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs) | ||||
| void|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string|mount_dir | ||||
| void|netload|ulong(if_flags,mtu,subnet,address,packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string|interface | ||||
| void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device) | ||||
| void|cpu | ||||
| void|mem | ||||
| void|swap | ||||
| void|uptime | ||||
| void|loadavg | ||||
| void|shm_limits | ||||
| void|msg_limits | ||||
| void|sem_limits | ||||
| pid_t*|proclist|long(which,arg) | ||||
| void|proc_state|pid_t(pid) | ||||
| void|proc_uid|pid_t(pid) | ||||
| void|proc_mem|pid_t(pid) | ||||
| void|proc_time|pid_t(pid) | ||||
| void|proc_signal|pid_t(pid) | ||||
| void|proc_kernel|pid_t(pid) | ||||
| void|proc_segment|pid_t(pid) | ||||
| char *|proc_args|pid_t(pid):unsigned(max_len) | ||||
| glibtop_map_entry *|proc_map|pid_t(pid) | ||||
| glibtop_open_files_entry *|proc_open_files|pid_t(pid) | ||||
| glibtop_mountentry *|@mountlist|int(all_fs) | ||||
| void|@fsusage|string|mount_dir | ||||
| void|netload|string|interface | ||||
| void|ppp|ushort(device) | ||||
| char **|netlist | ||||
| char **|proc_wd|pid_t(pid) | ||||
| guint16*|proc_affinity|pid_t(pid) | ||||
|  | ||||
|   | ||||
							
								
								
									
										106
									
								
								glibtop.h
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								glibtop.h
									
									
									
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,42 +15,71 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_H__ | ||||
| #define __GLIBTOP_H__ | ||||
|  | ||||
| /* for pid_t, uid_t, gid_t */ | ||||
| #include <sys/types.h> | ||||
|  | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <glib-object.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| typedef struct _glibtop		glibtop; | ||||
| typedef struct _glibtop_machine	glibtop_machine; | ||||
|  | ||||
| /** | ||||
|  *  LIBGTOP_CHECK_VERSION | ||||
|  *  @major: Major version number | ||||
|  *  @minor: Minor version number | ||||
|  *  @micro: Micro version number | ||||
|  * | ||||
|  *  Checks if the version given is compatable with this version of the | ||||
|  *  library.  For example, LIBGTOP_CHECK_VERSION(1.2.3) would return TRUE | ||||
|  *  if the version is 1.2.5, and FALSE if 1.1.0.  This can be used in | ||||
|  *  build tests. | ||||
|  * | ||||
|  **/ | ||||
|  | ||||
| #include <libgtopconfig.h> | ||||
|  | ||||
| #define LIBGTOP_CHECK_VERSION(major, minor, micro)    \ | ||||
| (LIBGTOP_MAJOR_VERSION > (major) || \ | ||||
| (LIBGTOP_MAJOR_VERSION == (major) && LIBGTOP_MINOR_VERSION > (minor)) || \ | ||||
| (LIBGTOP_MAJOR_VERSION == (major) && LIBGTOP_MINOR_VERSION == (minor) && \ | ||||
| LIBGTOP_MICRO_VERSION >= (micro))) | ||||
|  | ||||
|  | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop_server.h> | ||||
| #include <glibtop/types.h> | ||||
|  | ||||
| #ifdef HAVE_GLIBTOP_MACHINE_H | ||||
| #include <glibtop_machine.h> | ||||
| #endif | ||||
|  | ||||
| #ifndef GLIBTOP_MOUNTENTRY_LEN | ||||
| #define GLIBTOP_MOUNTENTRY_LEN	79 | ||||
| #endif | ||||
|  | ||||
| typedef struct _glibtop		glibtop; | ||||
|  | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <glibtop/close.h> | ||||
|  | ||||
|  | ||||
| struct _glibtop | ||||
| { | ||||
| 	unsigned flags; | ||||
| 	unsigned method;		/* Server Method */ | ||||
| 	unsigned error_method;		/* Error Method */ | ||||
| #ifdef HAVE_GLIBTOP_MACHINE_H | ||||
| 	glibtop_machine machine;	/* Machine dependent data */ | ||||
| #endif | ||||
| 	int input [2];			/* Pipe client <- server */ | ||||
| 	int output [2];			/* Pipe client -> server */ | ||||
| 	int socket;			/* Accepted connection of a socket */ | ||||
| 	int ncpu;			/* Number of CPUs, zero if single-processor */ | ||||
| 	int real_ncpu;			/* Real number of CPUs. Only ncpu are monitored */ | ||||
| 	unsigned long os_version_code;	/* Version code of the operating system */ | ||||
| 	const char *name;		/* Program name for error messages */ | ||||
| 	const char *server_command;	/* Command used to invoke server */ | ||||
| @@ -64,44 +91,57 @@ struct _glibtop | ||||
| 	glibtop_sysdeps sysdeps;	/* Detailed feature list */ | ||||
| 	glibtop_sysdeps required;	/* Required feature list */ | ||||
| 	pid_t pid;			/* PID of the server */ | ||||
|  | ||||
| 	uid_t uid; | ||||
| 	uid_t euid; | ||||
| 	gid_t gid; | ||||
| 	gid_t egid; | ||||
|  | ||||
| 	glibtop_machine *machine;	/* Machine dependent data */ | ||||
| }; | ||||
|  | ||||
| extern glibtop *glibtop_global_server; | ||||
|  | ||||
| extern const unsigned long glibtop_server_features; | ||||
|  | ||||
| #define glibtop_init()	glibtop_init_r(&glibtop_global_server, 0, 0); | ||||
| /** | ||||
|  * glibtop_init: | ||||
|  * | ||||
|  * Returns: (transfer none): | ||||
|  */ | ||||
| glibtop * | ||||
| glibtop_init (void); | ||||
|  | ||||
| #define glibtop_close()	glibtop_close_r(glibtop_global_server); | ||||
|  | ||||
| /** | ||||
|  * glibtop_init_r: | ||||
|  * @server_ptr: (out): | ||||
|  * @features: | ||||
|  * @flags: | ||||
|  * | ||||
|  * Returns: (transfer none): | ||||
|  */ | ||||
| glibtop * | ||||
| glibtop_init_r (glibtop **server_ptr, | ||||
| 		unsigned long features, | ||||
| 		unsigned flags); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * glibtop_init_s: | ||||
|  * @server_ptr: (out): | ||||
|  * @features: | ||||
|  * @flags: | ||||
|  * | ||||
|  * Returns: (transfer none): | ||||
|  */ | ||||
| glibtop * | ||||
| glibtop_init_s (glibtop **server_ptr, | ||||
| 		unsigned long features, | ||||
| 		unsigned flags); | ||||
|  | ||||
| #ifdef GLIBTOP_GUILE | ||||
| GType     glibtop_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| /* You need to link with -lgtop_guile to get this stuff here. */ | ||||
|  | ||||
| void glibtop_boot_guile (void); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_GUILE_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_guile_names to get this stuff here. */ | ||||
|  | ||||
| void glibtop_boot_guile_names (void); | ||||
|  | ||||
| #ifndef GLIBTOP_NAMES | ||||
| #define GLIBTOP_NAMES | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,2 +0,0 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| @@ -1,2 +0,0 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| @@ -3,8 +3,12 @@ glibtopdir		= $(includedir)/libgtop-2.0/glibtop | ||||
| glibtop_HEADERS		= close.h loadavg.h prockernel.h procstate.h \ | ||||
| 			  sem_limits.h uptime.h command.h mem.h proclist.h \ | ||||
| 			  proctime.h shm_limits.h version.h cpu.h msg_limits.h \ | ||||
| 			  procmem.h procuid.h swap.h write.h error.h open.h \ | ||||
| 			  procsegment.h read.h sysdeps.h xmalloc.h global.h \ | ||||
| 			  procsignal.h read_data.h union.h types.h gnuserv.h \ | ||||
| 			  procmem.h procuid.h swap.h \ | ||||
| 			  procsegment.h sysdeps.h global.h \ | ||||
| 			  procsignal.h union.h gnuserv.h \ | ||||
| 			  parameter.h mountlist.h fsusage.h procmap.h signal.h \ | ||||
| 			  inodedb.h sysinfo.h ppp.h procargs.h netload.h | ||||
| 			  sysinfo.h ppp.h procargs.h netload.h \ | ||||
| 			  procwd.h procaffinity.h \ | ||||
| 			  netlist.h procopenfiles.h open.h | ||||
|  | ||||
| noinst_HEADERS		= error.h write.h read_data.h read.h init_hooks.h machine.h | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| @@AUTOGEN_COMMENT@@ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -21,8 +19,8 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_CALL_VECTOR_H__ | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,8 +15,8 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_CLOSE_H__ | ||||
| @@ -26,13 +24,15 @@ | ||||
|  | ||||
| #include <glibtop.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| void glibtop_close (void); | ||||
|  | ||||
| void glibtop_close_r (glibtop *server); | ||||
|  | ||||
| void glibtop_close_s (glibtop *server); | ||||
| void glibtop_close_p (glibtop *server); | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,8 +15,8 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_COMMAND_H__ | ||||
| @@ -28,7 +26,7 @@ | ||||
| #include <glibtop/sysdeps.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_CMND_QUIT		0 | ||||
| #define GLIBTOP_CMND_SYSDEPS		1 | ||||
| @@ -57,8 +55,12 @@ BEGIN_LIBGTOP_DECLS | ||||
| #define GLIBTOP_CMND_FSUSAGE		21 | ||||
| #define GLIBTOP_CMND_NETLOAD		22 | ||||
| #define GLIBTOP_CMND_PPP		23 | ||||
| #define GLIBTOP_CMND_NETLIST		24 | ||||
| #define GLIBTOP_CMND_PROC_OPEN_FILES	25 | ||||
| #define GLIBTOP_CMND_PROC_WD		26 | ||||
| #define GLIBTOP_CMND_PROC_AFFINITY	27 | ||||
|  | ||||
| #define GLIBTOP_MAX_CMND		24 | ||||
| #define GLIBTOP_MAX_CMND		28 | ||||
|  | ||||
| #define _GLIBTOP_PARAM_SIZE		16 | ||||
|  | ||||
| @@ -69,8 +71,8 @@ typedef union  _glibtop_response_union	glibtop_response_union; | ||||
|  | ||||
| struct _glibtop_command | ||||
| { | ||||
| 	u_int64_t	command; | ||||
| 	u_int64_t	size, data_size; | ||||
| 	guint64	command; | ||||
| 	guint64	size, data_size; | ||||
| 	char		parameter [_GLIBTOP_PARAM_SIZE]; | ||||
| }; | ||||
|  | ||||
| @@ -82,8 +84,8 @@ union _glibtop_response_union | ||||
|  | ||||
| struct _glibtop_response | ||||
| { | ||||
| 	int64_t offset; | ||||
| 	u_int64_t size, data_size; | ||||
| 	gint64 offset; | ||||
| 	guint64 size, data_size; | ||||
| 	glibtop_response_union u; | ||||
| }; | ||||
|  | ||||
| @@ -97,6 +99,6 @@ void * | ||||
| glibtop_call_s (glibtop *server, unsigned command, size_t send_size, | ||||
| 		const void *send_buf, size_t recv_size, void *recv_buf); | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,91 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_COMPAT10_H__ | ||||
| #define __GLIBTOP_COMPAT10_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| /* glibtop_cpu */ | ||||
|  | ||||
| #define GLIBTOP_XCPU_TOTAL		GLIBTOP_CPU_XCPU_TOTAL | ||||
| #define GLIBTOP_XCPU_USER		GLIBTOP_CPU_XCPU_USER | ||||
| #define GLIBTOP_XCPU_NICE		GLIBTOP_CPU_XCPU_NICE | ||||
| #define GLIBTOP_XCPU_SYS		GLIBTOP_CPU_XCPU_SYS | ||||
| #define GLIBTOP_XCPU_IDLE		GLIBTOP_CPU_XCPU_IDLE | ||||
| #define GLIBTOP_XCPU_FLAGS		GLIBTOP_CPU_XCPU_FLAGS | ||||
|  | ||||
| /* glibtop_proclist */ | ||||
|  | ||||
| #define GLIBTOP_PROCLIST_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROCLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROCLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROCLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proclist; | ||||
|  | ||||
| /* glibtop_mountlist */ | ||||
|  | ||||
| #define GLIBTOP_MOUNTLIST_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_MOUNTLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_MOUNTLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_MOUNTLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_mountlist; | ||||
|  | ||||
| /* glibtop_proc_args */ | ||||
|  | ||||
| #define GLIBTOP_PROC_ARGS_SIZE		0 | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_ARGS		1 | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_args; | ||||
|  | ||||
| /* glibtop_proc_map */ | ||||
|  | ||||
| #define GLIBTOP_PROC_MAP_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROC_MAP_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROC_MAP_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_MAP		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_map; | ||||
|  | ||||
| /* glibtop_interface_names */ | ||||
|  | ||||
| #define GLIBTOP_INTERFACE_NAMES_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_INTERFACE_NAMES_SIZE	GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_INTERFACE_NAMES_TOTAL	GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_INTERFACE_NAMES	GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_interface_names; | ||||
|  | ||||
| #endif | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -17,8 +15,8 @@ | ||||
|  | ||||
|    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. | ||||
|    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_CPU_H__ | ||||
| @@ -27,7 +25,7 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_CPU_TOTAL	0 | ||||
| #define GLIBTOP_CPU_USER	1 | ||||
| @@ -41,31 +39,49 @@ BEGIN_LIBGTOP_DECLS | ||||
| #define GLIBTOP_XCPU_NICE	8 | ||||
| #define GLIBTOP_XCPU_SYS	9 | ||||
| #define GLIBTOP_XCPU_IDLE	10 | ||||
| #define GLIBTOP_XCPU_FLAGS	11 | ||||
|  | ||||
| #define GLIBTOP_MAX_CPU		11 | ||||
| #define GLIBTOP_CPU_IOWAIT	12 | ||||
| #define GLIBTOP_CPU_IRQ		13 | ||||
| #define GLIBTOP_CPU_SOFTIRQ	14 | ||||
| #define GLIBTOP_XCPU_IOWAIT	15 | ||||
| #define GLIBTOP_XCPU_IRQ	16 | ||||
| #define GLIBTOP_XCPU_SOFTIRQ	17 | ||||
|  | ||||
| /* Nobody should really be using more than 4 processors. */ | ||||
| #define GLIBTOP_NCPU		4 | ||||
| #define GLIBTOP_MAX_CPU		18 | ||||
|  | ||||
| /* Nobody should really be using more than 4 processors. | ||||
|    Yes we are :) | ||||
|    Nobody should really be using more than 32 processors. | ||||
| */ | ||||
| #define GLIBTOP_NCPU		1024 | ||||
|  | ||||
| typedef struct _glibtop_cpu	glibtop_cpu; | ||||
|  | ||||
| struct _glibtop_cpu | ||||
| { | ||||
| 	u_int64_t	flags, | ||||
| 		total,				/* GLIBTOP_CPU_TOTAL		*/ | ||||
| 		user,				/* GLIBTOP_CPU_USER		*/ | ||||
| 		nice,				/* GLIBTOP_CPU_NICE		*/ | ||||
| 		sys,				/* GLIBTOP_CPU_SYS		*/ | ||||
| 		idle,				/* GLIBTOP_CPU_IDLE		*/ | ||||
| 		frequency,			/* GLIBTOP_CPU_FREQUENCY	*/ | ||||
| 		xcpu_total [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_TOTAL		*/ | ||||
| 		xcpu_user [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_USER		*/ | ||||
| 		xcpu_nice [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_NICE		*/ | ||||
| 		xcpu_sys  [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_SYS		*/ | ||||
| 		xcpu_idle [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IDLE		*/ | ||||
| 	guint64	flags; | ||||
| 	guint64 total;				/* GLIBTOP_CPU_TOTAL		*/ | ||||
| 	guint64 user;				/* GLIBTOP_CPU_USER		*/ | ||||
| 	guint64 nice;				/* GLIBTOP_CPU_NICE		*/ | ||||
| 	guint64 sys;				/* GLIBTOP_CPU_SYS		*/ | ||||
| 	guint64 idle;				/* GLIBTOP_CPU_IDLE		*/ | ||||
| 	guint64 iowait;				/* GLIBTOP_CPU_IOWAIT		*/ | ||||
| 	guint64 irq;				/* GLIBTOP_CPU_IRQ		*/ | ||||
| 	guint64 softirq;			/* GLIBTOP_CPU_SOFTIRQ		*/ | ||||
| 	guint64 frequency;			/* GLIBTOP_CPU_FREQUENCY	*/ | ||||
| 	guint64 xcpu_total [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_TOTAL		*/ | ||||
| 	guint64 xcpu_user [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_USER		*/ | ||||
| 	guint64 xcpu_nice [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_NICE		*/ | ||||
| 	guint64 xcpu_sys  [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_SYS		*/ | ||||
| 	guint64 xcpu_idle [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IDLE		*/ | ||||
| 	guint64 xcpu_iowait [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IOWAIT		*/ | ||||
| 	guint64 xcpu_irq [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IRQ		*/ | ||||
| 	guint64 xcpu_softirq  [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_SOFTIRQ		*/ | ||||
| 	guint64 xcpu_flags;	                /* GLIBTOP_XCPU_IDLE		*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_cpu(cpu)	glibtop_get_cpu_l(glibtop_global_server, cpu) | ||||
| void glibtop_get_cpu(glibtop_cpu *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_CPU | ||||
| #define glibtop_get_cpu_r	glibtop_get_cpu_p | ||||
| @@ -76,24 +92,14 @@ struct _glibtop_cpu | ||||
| void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_CPU | ||||
| void glibtop_init_cpu_p (glibtop *server); | ||||
| void _glibtop_init_cpu_p (glibtop *server); | ||||
| void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf); | ||||
| #else | ||||
| void glibtop_init_cpu_s (glibtop *server); | ||||
| void _glibtop_init_cpu_s (glibtop *server); | ||||
| void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_names to get this stuff here. */ | ||||
|  | ||||
| extern const char *glibtop_names_cpu []; | ||||
| extern const unsigned glibtop_types_cpu []; | ||||
| extern const char *glibtop_labels_cpu []; | ||||
| extern const char *glibtop_descriptions_cpu []; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
| 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