Compare commits
	
		
			350 Commits
		
	
	
		
			LIBGTOP_1_
			...
			libgtop-GN
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 6115106a4d | ||
|  | 28150c6f27 | ||
|  | 409a6802e2 | ||
|  | 337e79db2b | ||
|  | 720768a40c | ||
|  | 636dc572d7 | ||
|  | cd2bc3d496 | ||
|  | 0b1d58f306 | ||
|  | 4bd4d417e1 | ||
|  | e02b1be1e2 | ||
|  | 46f8800cc8 | ||
|  | f6df4a3f07 | ||
|  | e94e56fa5c | ||
|  | d096dc3e63 | ||
|  | 528c4d6362 | ||
|  | 143c3dafe1 | ||
|  | 629d9a0392 | ||
|  | 798350fcef | ||
|  | 8eaf7b99cf | ||
|  | 194c0548b5 | ||
|  | 97167e7add | ||
|  | 6a96719e58 | ||
|  | 8181cef8e3 | ||
|  | 45b8a9a361 | ||
|  | 6794524344 | ||
|  | 9840ef9650 | ||
|  | 8f1961056a | ||
|  | 60d4f03319 | ||
|  | 31ec86124b | ||
|  | 21768e8e99 | ||
|  | ab0bfbcf3c | ||
|  | d807950ce2 | ||
|  | 68cebe2aaf | ||
|  | 36ba38cdc4 | ||
|  | 47aad7d822 | ||
|  | 82e6de4aa2 | ||
|  | ef825aa1c0 | ||
|  | 5516366d00 | ||
|  | ca0915e32c | ||
|  | 594e4f0079 | ||
|  | 7163fa842b | ||
|  | 83bf982682 | ||
|  | 95fc1fb662 | ||
|  | aafbeadcf0 | ||
|  | 5666bf9d33 | ||
|  | 3110b3d491 | ||
|  | f80e0ea5d8 | ||
|  | 2679063df2 | ||
|  | 98b04a6165 | ||
|  | 173785bf09 | ||
|  | bd721cf53d | ||
|  | 2b5bc90451 | ||
|  | 635eefba48 | ||
|  | 6da87f745d | ||
|  | ed3e3212bb | ||
|  | fb34b3bb6e | ||
|  | fce31c179d | ||
|  | 9d43d5d272 | ||
|  | f91299a487 | ||
|  | 1e3f2ba5d0 | ||
|  | 6066288d72 | ||
|  | f53e526dec | ||
|  | 84b9a1e768 | ||
|  | fcd114ff1b | ||
|  | 0fb561662e | ||
|  | beff584d14 | ||
|  | 45a31cd564 | ||
|  | bb0b77e0ae | ||
|  | 50e34421f7 | ||
|  | ab60fc3dd1 | ||
|  | 2661891d6a | ||
|  | ba096bfae2 | ||
|  | 9b56e502eb | ||
|  | 99ec1e3ff3 | ||
|  | 735102a5c1 | ||
|  | 72a46436d9 | ||
|  | 47cd681c0e | ||
|  | 1451a36a04 | ||
|  | 358b0610f5 | ||
|  | 1401fdd5bd | ||
|  | 16f6fab592 | ||
|  | c140390f1d | ||
|  | 5a681b7bea | ||
|  | cc2790545c | ||
|  | a13877776b | ||
|  | 243ed7fdd0 | ||
|  | dc8687227a | ||
|  | d627a9a601 | ||
|  | f84fe9edc7 | ||
|  | 6a53807bb8 | ||
|  | 2f2bbe236b | ||
|  | 8180a1936a | ||
|  | b1b7355ea8 | ||
|  | a105dbecdc | ||
|  | 060dd70e09 | ||
|  | 739db1b32d | ||
|  | fd525d3fa3 | ||
|  | 78add589c6 | ||
|  | c234586bfa | ||
|  | 8d25899dc6 | ||
|  | b7def65c7a | ||
|  | 9939d070b9 | ||
|  | 206c620fd6 | ||
|  | 057b16ec01 | ||
|  | ef899af6f3 | ||
|  | 730c36e1fd | ||
|  | 96f9b4f199 | ||
|  | 3dbb6f1eca | ||
|  | 52ea02ba87 | ||
|  | 1b5fe965df | ||
|  | 7b274d19e4 | ||
|  | 934c7dca93 | ||
|  | 5fe502317e | ||
|  | 0e5efea6f1 | ||
|  | b1111e2b2a | ||
|  | 64af09a8a2 | ||
|  | 77ced38c16 | ||
|  | 8963e38a7c | ||
|  | a8f4eec9e6 | ||
|  | a9e9fe07ef | ||
|  | 85b34b98af | ||
|  | ab8bd67cdf | ||
|  | 5650b49719 | ||
|  | 71426ed454 | ||
|  | 4458d6ba13 | ||
|  | 70210721e0 | ||
|  | b81f82e9a2 | ||
|  | 4df359b9d3 | ||
|  | 1c248d7e93 | ||
|  | b2368f46ca | ||
|  | 890398bbb5 | ||
|  | 84cc3242fc | ||
|  | 2456c458c2 | ||
|  | a6710fbfad | ||
|  | 6dca1e55d8 | ||
|  | 1516e5e192 | ||
|  | f659523856 | ||
|  | 6b81006d08 | ||
|  | b70be80aca | ||
|  | f8fb49a428 | ||
|  | 18356c6ae6 | ||
|  | 807d4bf6ae | ||
|  | c0350d38ae | ||
|  | d3a9e47ffb | ||
|  | c8a3e46433 | ||
|  | 222706a0d4 | ||
|  | 2168cc5f71 | ||
|  | 08808384f4 | ||
|  | 0f1306a20f | ||
|  | 84b05c0219 | ||
|  | 6916ada308 | ||
|  | 5943c96d35 | ||
|  | 909a3e6512 | ||
|  | ca94618e27 | ||
|  | a478d380f4 | ||
|  | af80d4d3d2 | ||
|  | 973dc2d37c | ||
|  | 97b32c7046 | ||
|  | fb8184afba | ||
|  | 16643866cf | ||
|  | aa9299f344 | ||
|  | 6f69cd863b | ||
|  | 7262bf39d8 | ||
|  | 9e773390cc | ||
|  | 54cbdb8158 | ||
|  | c70b11ee00 | ||
|  | 965b26c926 | ||
|  | 384cd6b2db | ||
|  | b055e3710b | ||
|  | 669c6fd670 | ||
|  | 617c4568d2 | ||
|  | 93c998cf7a | ||
|  | 46a0750736 | ||
|  | e9227d1a2e | ||
|  | 41b7120527 | ||
|  | 0ad6ae0a12 | ||
|  | 6197e3ad47 | ||
|  | e577717013 | ||
|  | 6b19a0090a | ||
|  | a515242f17 | ||
|  | a7b13c7d83 | ||
|  | 849d2da085 | ||
|  | d4b195045a | ||
|  | c269f0adb8 | ||
|  | 4f65ee018c | ||
|  | 8a8b975d08 | ||
|  | 64955004a0 | ||
|  | 4ef82847fe | ||
|  | 9da5658ba1 | ||
|  | b300842f47 | ||
|  | 9a49872026 | ||
|  | 1aa7aae2f6 | ||
|  | 70ba9e2559 | ||
|  | 13323e55ee | ||
|  | 57d96878de | ||
|  | 10de82e256 | ||
|  | 29240a5a96 | ||
|  | 1baa2ef8ff | ||
|  | 0bd5a6c082 | ||
|  | 2698263164 | ||
|  | 85d53a69cf | ||
|  | 0a42a8d018 | ||
|  | 9d772e3c07 | ||
|  | ddd9d11c71 | ||
|  | b161b5bb72 | ||
|  | 5607fefe30 | ||
|  | 9d9aed4023 | ||
|  | 62edf91314 | ||
|  | 38e55efd2d | ||
|  | 67c9c8e3e3 | ||
|  | 013ab1841d | ||
|  | 88c5d4fd61 | ||
|  | adbe42cda3 | ||
|  | 2e6e310a3e | ||
|  | 818e941413 | ||
|  | dfa868ce82 | ||
|  | dc353a4172 | ||
|  | 4da65d5d0b | ||
|  | a2043e3aaf | ||
|  | f03304a920 | ||
|  | beedc57724 | ||
|  | 3049619931 | ||
|  | ddb0c913c1 | ||
|  | c7244ba1ba | ||
|  | 146ccb2511 | ||
|  | 91c35548e4 | ||
|  | 8705ef6b65 | ||
|  | d5b27269d8 | ||
|  | 6915f098ca | ||
|  | 376613ddd4 | ||
|  | 6a9cd61fd9 | ||
|  | 18a3526ea7 | ||
|  | 333c85736c | ||
|  | df5ec3c02a | ||
|  | 368e94c8e1 | ||
|  | f5de8e4ead | ||
|  | 715975f7ed | ||
|  | f13099194c | ||
|  | 1dd8a8e8fc | ||
|  | d9fb27e57c | ||
|  | dde1a2c1aa | ||
|  | 5bff21b7b4 | ||
|  | e58c732f54 | ||
|  | 48404428a2 | ||
|  | d009071e40 | ||
|  | 33b1fcf4f9 | ||
|  | c0a9dedc4b | ||
|  | 7ab96d212d | ||
|  | bd6e248adf | ||
|  | 9abfb85080 | ||
|  | fdef2d5b38 | ||
|  | 641eb24a8b | ||
|  | 8754f434d1 | ||
|  | f656208234 | ||
|  | 0df1594f31 | ||
|  | 1ab7936ced | ||
|  | dcd43f8a15 | ||
|  | 7f7c5506f7 | ||
|  | b0a4cb2379 | ||
|  | 8c06ed1516 | ||
|  | 56154e50f2 | ||
|  | 902670623f | ||
|  | 0e5d856065 | ||
|  | 35b6acfc22 | ||
|  | 0830a0b8a7 | ||
|  | f4be080d63 | ||
|  | a599e04eb6 | ||
|  | 0dec9a7b70 | ||
|  | 75958ce2ab | ||
|  | 20bbc17f6b | ||
|  | 19ffa1419a | ||
|  | 1e568f294e | ||
|  | 7752a312e9 | ||
|  | 23c7449898 | ||
|  | 64b3db2dc0 | ||
|  | e94b4882b6 | ||
|  | 1e629c9a86 | ||
|  | 6b6e1261f1 | ||
|  | bbc872138b | ||
|  | 3555a6ca0c | ||
|  | e5928d0b13 | ||
|  | 5bb7e07e95 | ||
|  | 043f4a498f | ||
|  | 94297b8460 | ||
|  | 0f5b941b15 | ||
|  | df6d645afd | ||
|  | 9ac47c7839 | ||
|  | 8d734d1296 | ||
|  | 7fa43bba5d | ||
|  | e2e01a9405 | ||
|  | 5530697ab8 | ||
|  | 95f279d1a7 | ||
|  | 1904a463e2 | ||
|  | 7ce1f9e9d7 | ||
|  | 5221f6d4f8 | ||
|  | ac175a4cbf | ||
|  | f53d1a69bc | ||
|  | adaa9cad97 | ||
|  | 7201ec7790 | ||
|  | 113525a7d7 | ||
|  | d6e62e85d2 | ||
|  | ee153445f0 | ||
|  | 50b43a0f41 | ||
|  | 25c26a6620 | ||
|  | 0438b9d69a | ||
|  | 90c01f24fe | ||
|  | dc0f442247 | ||
|  | 017f4d20c7 | ||
|  | c021ce7851 | ||
|  | 93ab9882c3 | ||
|  | a0477c6212 | ||
|  | 6780e78a6b | ||
|  | d8871029eb | ||
|  | 6799ce187b | ||
|  | 2b6b2578be | ||
|  | 1b0a9fd291 | ||
|  | 43e070dd8b | ||
|  | b0d18119ff | ||
|  | be05f8163a | ||
|  | d6cdf95d83 | ||
|  | 2256a9127f | ||
|  | e6507a80be | ||
|  | 8411e566b4 | ||
|  | 40854f4179 | ||
|  | 41062d0262 | ||
|  | 58c882a860 | ||
|  | 789d156972 | ||
|  | 19c24da036 | ||
|  | 929a025f53 | ||
|  | 6a7c289305 | ||
|  | b65a4a7dcb | ||
|  | 39b2fffe83 | ||
|  | efb913acff | ||
|  | 79e756a2f7 | ||
|  | b08968e644 | ||
|  | dff497d2fa | ||
|  | 38de742ca4 | ||
|  | e0d3401bc4 | ||
|  | aae2b5a94d | ||
|  | a5bd38fc19 | ||
|  | 931b8f065e | ||
|  | f7885e488f | ||
|  | 8122db69ee | ||
|  | ab13d4919d | ||
|  | 1d955fbf1f | ||
|  | 8af25a2003 | ||
|  | 12eb6a25ec | ||
|  | 77ced087a1 | ||
|  | 983475d0c1 | ||
|  | 70b65c05e5 | 
							
								
								
									
										16
									
								
								.cvsignore
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								.cvsignore
									
									
									
									
									
								
							| @@ -1,7 +1,5 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| call-vector.h | ||||
| call-vector.h | ||||
| aclocal.m4 | ||||
| config.cache | ||||
| config.h | ||||
| @@ -15,8 +13,6 @@ gtopConf.sh | ||||
| i386-bsdi | ||||
| i686-pc-linux-gnu | ||||
| intl | ||||
| libgtop-1.*.*.tar.gz | ||||
| libgtop-1.*.* | ||||
| libgtop-mirror.sh.swp | ||||
| libgtopConf.sh | ||||
| libtool | ||||
| @@ -34,12 +30,6 @@ i686-pc-linux-gnu-linux | ||||
| libgtop-config | ||||
| ABOUT-NLS | ||||
| libgtop.spec | ||||
| install-sh | ||||
| mkinstalldirs | ||||
| missing | ||||
| INSTALL | ||||
| COPYING | ||||
| glibtop-config.h | ||||
| stamp-gc-h | ||||
| build-debstamp | ||||
| install-debstamp | ||||
| libgtop*.tar.gz | ||||
| *-debstamp | ||||
| libgtop*.pc | ||||
|   | ||||
							
								
								
									
										818
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										818
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,508 +1,403 @@ | ||||
| 2000-01-14  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-09-30  Laurent Dhima  <laurenti@alblinux.net> | ||||
|  | ||||
| 	Released LibGTop 1.1.4 "Earthquake". | ||||
| 	* configure.in: Added "sq" to ALL_LINGUAS. | ||||
|  | ||||
| 1999-01-13  Yuri Syrota  <rasta@renome.rovno.ua> | ||||
| 2003-09-17  Fatih Demir <kabalak@gtranslator.org> | ||||
|  | ||||
| 	* configure.in: Added Ukrainian (uk) to ALL_LINGUAS | ||||
| 	* configure.in: Added "ta" (Tamil) to the languages' list. | ||||
|  | ||||
| 2000-01-13  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-09-13  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* include/glibtop/compat_10.h: Add compatibility #defines for | ||||
| 	`GLIBTOP_XCPU_TOTAL', `GLIBTOP_XCPU_USER', `GLIBTOP_XCPU_NICE', | ||||
| 	`GLIBTOP_XCPU_SYS', `GLIBTOP_XCPU_IDLE' and `GLIBTOP_XCPU_FLAGS' | ||||
| 	* configure.in (ALL_LINGUAS):  Removed es_ES. | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.1.4, binary age 0, | ||||
| 	interface age 0 and increased LIBGTOP_SERVER_VERSION to 52. | ||||
| 2003-09-08  Kevin Vandersloot | ||||
|  | ||||
| 2000-01-13  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in: release 2.0.5 | ||||
|  | ||||
| 	* lib/sysdeps-init-freebsd.c: New file. | ||||
| 	* lib/sysdeps-init-kernel.c: New file. | ||||
| 	* lib/sysdeps-init-linux.c: New file. | ||||
| 	* lib/sysdeps-init-solaris.c: New file. | ||||
| 	* lib/sysdeps-init-stub-suid.c: New file. | ||||
| 	* lib/sysdeps-init-stub.c: New file. | ||||
| 2003-09-06  Taneem Ahmed  <taneem@bengalinux.org> | ||||
|  | ||||
| 	* lib/open.c (glibtop_open_l): Call glibtop_init_backend () and | ||||
| 	_glibtop_open_sysdeps () here. | ||||
| 	* configure.in: Added "bn" to ALL_LINGUAS. | ||||
|  | ||||
| 	* lib/init.c (glibtop_init_s): Call `_glibtop_open_sysdeps'. | ||||
| 2003-08-24  Kevin Vandersloot | ||||
|  | ||||
| 	* include/glibtop/open.h (_glibtop_open_sysdeps): Declare this | ||||
| 	when we are _IN_LIBGTOP. | ||||
| 	* configure.in: release 2.0.4 | ||||
|  | ||||
| 	* configure.in (sysdeps_name): Define and AC_SUBST this. | ||||
| 	(sysdeps_init_file): Define and AC_SUBST this to | ||||
| 	`sysdeps-init-${sysdeps_name}.c'. | ||||
| 2003-08-13  Guntupalli Karunakar  <karunakar@freedomink.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.m4 (GNOME_LIBGTOP_SYSDEPS): Define and AC_SUBST | ||||
| 	`libgtop_sysdeps_name'. | ||||
| 	* configure.in: Added "hi" (Hindi) in ALL_LINGUAS. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-08-13  Andrew Sobala  <aes@gnome.org> | ||||
|  | ||||
| 	* include/glibtop/errors.h (GLIBTOP_ERROR_NO_BACKEND_OPENED): | ||||
| 	New error constant. | ||||
| 	* configure.in: release 2.0.3 | ||||
|  | ||||
| 	* lib/lib.pl (glibtop_get_<feature>_l): Don't dump core when there | ||||
| 	is no backend opened, but return GLIBTOP_ERROR_NO_BACKEND_OPENED. | ||||
| 2003-08-09  Dafydd Harries  <daf@parnassus.ath.cx> | ||||
|  | ||||
| 	* include/glibtop/backend.h (glibtop_backend): Added `_priv_module' | ||||
| 	pointer (type glibtop_backend_module). Made the `info' field const | ||||
| 	since this now points to gmodule loaded memory | ||||
| 	(glibtop_backend_entry): Made the `info' field const since it points | ||||
| 	to gmodule loaded memory. | ||||
| 	* configure.in: Added "cy" (Welsh) to ALL_LINGUAS. | ||||
|  | ||||
| 	* lib/close.c (glibtop_close_r): Close all currently opened backends. | ||||
| 2003-08-03  Malcolm Tredinnick <malcolm@commsecure.com.au> | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* Makefile.am: Change subdirectory build order so that | ||||
| 	'distclean' target work (and other targets remain working). | ||||
| 	Fixes bug #84622. | ||||
|  | ||||
| 	* include/glibtop/backend.h (glibtop_backend_entry): New type. | ||||
| 	(glibtop_backend_module): New private type. | ||||
| 2003-06-10  Kjartan Maraas  <set EMAIL_ADDRESS environment variable> | ||||
|  | ||||
| 	* lib/backend.c (glibtop_register_backend): This now takes a | ||||
| 	`glibtop_backend_entry' argument, not a `glibtop_backend_info' one. | ||||
| 	(glibtop_backend_by_id): Return a `glibtop_backend_entry' type, | ||||
| 	not a `glibtop_backend_info' one. | ||||
| 	(glibtop_backend_by_name): Likewise. | ||||
| 	* libgtop-2.0.pc.in: Fix missing build flags. Patch from | ||||
| 	Julio Merino. Fixes bug #103086. | ||||
| 	* sysdeps/linux/mem.c: (glibtop_get_mem_s): Fix memory calculation | ||||
| 	under Linux. Patch from <rwahl@gmx.de>. Fixes bug #68626. | ||||
|  | ||||
| 	* lib/init-backends.c: If we have libxml, read all `.backend' files | ||||
| 	in $(LIBGTOP_BACKEND_DIR), XML parse them and register them via | ||||
| 	`glibtop_backend_register'. This builds a list of all currently | ||||
| 	supported backends without actually loading them into memory. | ||||
| 2003-06-10  Kjartan Maraas  <kmaraas@gnome.org> | ||||
|  | ||||
| 	* lib/open-backend.c (glibtop_open_backend_l): GModule load the | ||||
| 	backend if it's not already in memory. | ||||
| 	* sysdeps/freebsd/glibtop_machine.h: | ||||
| 	* sysdeps/kernel/glibtop_private.h: | ||||
| 	* sysdeps/solaris/glibtop_machine.h: | ||||
| 	* sysdeps/solaris/glibtop_private.h: Comment out text after | ||||
| 	#endif to make some compilers happy. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-05-11  Andrew Sobala  <aes@gnome.org> | ||||
|  | ||||
| 	* lib/init.c (glibtop_init_s): Comment out `_glibtop_init_hook_s'. | ||||
| 	* configure.in: release 2.0.2 | ||||
|  | ||||
| 	* configure.in: We now require libxml. | ||||
| 	(LIBGTOP_LIBS): Remove all backend libraries. | ||||
| 	(LIBGTOP_EXTRA_LIBS): Add $(LIBGTOP_XML_LIB) here. | ||||
| 2003-05-10  Danilo Šegan  <dsegan@gmx.net> | ||||
|  | ||||
| 	* configure.in: Don't check for -lXau any longer. | ||||
| 	* configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS. | ||||
|  | ||||
| 	* configure.in (LIBGTOP_BACKEND_DIR): Define this to be | ||||
| 	`$(datadir)/libgtop/backends' and AC_SUBST it. | ||||
| 2003-04-17  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* libgtopConf.sh.in (LIBGTOP_BACKEND_DIR): Added. | ||||
| 	* configure.in: Added "mk" to ALL_LINGUAS. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-03-13  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* xml.m4: New file to check for libxml. | ||||
| 	* configure.in: Added "ml" to ALL_LINGUAS. | ||||
|  | ||||
| 	* acconfig.h (HAVE_LIBXML): Define this if we have libxml. | ||||
| 2003-03-10  Roozbeh Pournader  <roozbeh@sharif.edu> | ||||
|  | ||||
| 	* configure.in: Call `LIBGTOP_XML_HOOK' from `xml.m4' and | ||||
| 	add libxml libraries to `LIBGTOP_EXTRA_LIBS' when found. | ||||
| 	* configure.in: Added "fa" to ALL_LINGUAS. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-03-08  Gil "Dolfin" Osher <dolfin@rpg.org.il> | ||||
|  | ||||
| 	* lib/sysdeps.c (_glibtop_init_hook_s): This has been moved | ||||
| 	into the sysdeps backend. | ||||
| 	* configure.in: Added he to ALL_LINGUAS. | ||||
|  | ||||
| 	* configure.in (LIBGTOP_LIBS): Added `-lgtop_backend_common'. | ||||
| 	* lib/init-backends.c (glibtop_init_backends): Initialize | ||||
| 	`glibtop_backend_common' backend. | ||||
| 2003-02-25  T?µivo Leedj?¤rv  <toivo@linux.ee> | ||||
|  | ||||
| 	* backends/common/: New directory. | ||||
| 	* configure.in: Added et to ALL_LINGUAS. | ||||
|  | ||||
| 2000-01-10  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-02-16  Mohammad DAMT  <mdamt@bisnisweb.com> | ||||
|  | ||||
| 	* src/daemon/: Removed everything in this directory. This has | ||||
| 	been obsoleted by the new server code in backends/server. | ||||
| 	* po/id.po: Added Indonesian translation | ||||
| 	* configure.in: Added "id" to ALL_LINGUAS | ||||
|  | ||||
| 2000-01-09  Martin Baulig  <martin@bergen.home-of-linux.org> | ||||
| 2003-01-31  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* include/glibtop/global.h: Unconditionally #include <sys/types.h>. | ||||
| 	* acinclude.m4 (GNOME_SUPPORT_CHECKS): use AC_LIBOBJ() to set | ||||
| 	LIBOBJS variable, since newer autoconf's barf on direct access. | ||||
| 	This also takes care of setting LTLIBOBJS for us. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-01-29  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* include/glibtop/errors.h | ||||
| 	(GLIBTOP_ERROR_DEMARSHAL_ERROR): New error constant. | ||||
| 	* configure.in: Added ar to ALL_LINGUAS | ||||
|  | ||||
| 	* src/Makefile.am: Disable compilation of the `daemon' directory. | ||||
| 2003-01-25  Alessio Frusciante  <algol@firenze.linux.it> | ||||
|  | ||||
| 	* include/glibtop/command.h: Removed. | ||||
| 	* include/glibtop/version.h: Removed. | ||||
| 	* configure.in: Added "it" (Italian) to ALL_LINGUAS. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-01-23  Marius Andreiana <marius galuna.ro> | ||||
|  | ||||
| 	* include/glibtop/call-vector.pl: All functions in the | ||||
| 	`glibtop_call_vector' now take an additional `glibtop_backend *' | ||||
| 	argument. | ||||
| 	* configure.in: Added "ro" to ALL_LINGUAS | ||||
|  | ||||
| 2000-01-01  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2003-01-22  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* backends/: New directory. | ||||
| 	* backends/server/: New directory. | ||||
| 	* backends/sysdeps/: New directory. | ||||
| 	* configure.in: Added "mn" to ALL_LINGUAS. | ||||
|  | ||||
| 	* include/glibtop/backend.h: New file. | ||||
| 2003-01-16  Daniel Yacob <locales@geez.org> | ||||
|  | ||||
| 	* include/glibtop/call-vector.h.in: New file. Template file | ||||
| 	for `call-vector.h'. | ||||
| 	* include/glibtop/call-vector.pl: New file. Creates 'call-vector.h' | ||||
| 	from `call-vector.h.in'. | ||||
| 	* configure.in: added am to ALL_LINGUAS | ||||
| 	 | ||||
| 2003-01-12  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* include/glibtop/errors.h | ||||
| 	(GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant. | ||||
|         (GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant. | ||||
| 	* configure.in: release 2.0.1 | ||||
|  | ||||
| 	* include/glibtop/limits.h | ||||
| 	(GLIBTOP_BACKEND_NAME_LEN): New constant. | ||||
| 2002-12-30  Bastien Nocera <hadess@hadess.net> | ||||
|  | ||||
| 	* glibtop-server-private.h (glibtop_server_private): | ||||
| 	Added `GSList *backend_list' and removed `input', `output', | ||||
| 	`socket' and `pid'. | ||||
| 	* Added sysdeps/aix directory that was missing | ||||
|  | ||||
| 	* lib/command.c: Removed. Moved to `backends/server/'. | ||||
| 	* lib/read.c: Removed. Moved to `backends/server/'. | ||||
| 	* lib/read_data.c: Removed. Moved to `backends/server/'. | ||||
| 	* lib/write.c: Removed. Moved to `backends/server/'. | ||||
| 2002-10-08  Laurent Vivier <Laurent.Vivier@bull.net> | ||||
|  | ||||
| 	* include/glibtop/read.h: Removed. | ||||
| 	* include/glibtop/read_data.h: Removed. | ||||
| 	* include/glibtop/write.h: Removed. | ||||
| 	* Framework for AIX support | ||||
|  | ||||
| 1999-12-26  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2002-08-07  Vincent Berger <Vincent.Berger@ext.bull.net>  | ||||
|  | ||||
| 	* libgtop-sysdeps.m4 (LIBGTOP_CHECK_SYSDEPS_DIR): New macro; | ||||
| 	moved check for the sysdeps directory here. | ||||
| 	(--with-sysdeps-dir): New hacker mode command line option to | ||||
| 	manually override the sysdeps dir. Use of this option is highly | ||||
| 	deprecated; I only added it to be able to do `stub_suid' hackings | ||||
| 	on my GNU/Linux machine. | ||||
| 	* support/: Add alloca management for AIX | ||||
| 	* configure.in: correct checking for nm | ||||
|  | ||||
| 1999-12-23  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2002-11-03  Dmitry G. Mastrukov  <dmitry@taurussoft.org> | ||||
|  | ||||
| 	Removed all remote communication support from LibGTop. | ||||
| 	* configure.in: Added Belarusian to ALL_LINGUAS | ||||
|  | ||||
| 	* include/glibtop/gnuserv.h: Removed. | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* sysdeps/common/gnuslib.c: Removed. | ||||
| 	* configure.in: Added cs to ALL_LINGUAS. | ||||
|  | ||||
| 	* src/daemon/Makefile.am: Don't build the `libgtop_daemon' | ||||
| 	binary any longer. | ||||
| 2002-09-26  jacob berkman  <jacob@ximian.com> | ||||
|  | ||||
| 	* src/daemon/server_config.pl: Removed. | ||||
| 	* src/daemon/server_config.h.in: Removed. | ||||
| 	* src/daemon/server_config.h: Removed. | ||||
| 	* configure.in (ALL_LINGUAS): remove cs until the file actually | ||||
| 	gets added | ||||
|  | ||||
| 1999-12-22  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* lib/errors.c (glibtop_get_errno_l): New global function | ||||
| 	to return `server->glibtop_errno'. | ||||
| 	(glibtop_clear_errno_l): New global function to return | ||||
| 	`server->glibtop_errno' and set it back to 0. | ||||
| 	* configure.in: Added cs to ALL_LINGUAS. | ||||
|  | ||||
| 	* include/glibtop/errors.h | ||||
| 	(GLIBTOP_ERROR_SERVER_COMM_FAILURE): New error constant. | ||||
| 	(GLIBTOP_ERROR_NO_SUCH_PROCESS): New error constant. | ||||
| 	(GLIBTOP_ERROR_NO_KERNEL_SUPPORT): New error constant. | ||||
| 	(GLIBTOP_ERROR_INCOMPATIBLE_KERNEL): New error constant. | ||||
| 2002-08-20  Peteris Krisjanis <peteris.krisjanis@os.lv> | ||||
|  | ||||
| 	* lib/lib.pl: For functions with a `retval' return type, set | ||||
| 	`server->glibtop_errno' to the error code on error or to zero | ||||
| 	on success. | ||||
| 	* configure.in: (ALL_LINGUAS) Added Latvian (lv). | ||||
|  | ||||
| 	* glibtop.h (glibtop): Added `glibtop_errno' field. | ||||
| 2002-06-25  Yanko Kaneti <yaneti@declera.com> | ||||
|  | ||||
| 1999-12-19  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in: (ALL_LINGUAS) Added Bulgarian (bg). | ||||
|  | ||||
| 	* include/glibtop/glib-arrays.h: New file. | ||||
| 2002-05-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* lib/glib-arrays.c: New file. | ||||
| 	(glibtop_get_proclist_as_array_l): New function. | ||||
| 	(glibtop_get_proc_args_as_array_l): New function. | ||||
| 	(glibtop_get_proc_map_as_array_l): New function. | ||||
| 	(glibtop_get_mountlist_as_array_l): New function. | ||||
| 	* configure.in: release 2.0.0 | ||||
|  | ||||
| 1999-12-19  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2002-05-28  Carlos Perello Marin <carlos@gnome-db.org> | ||||
|  | ||||
| 	* glibtop-server-private.h: New file. This is a private header | ||||
| 	file which defines `struct _glibtop_server_private'. | ||||
| 	* configure.in (ALL_LINGUAS): Removed all es_* and added only es_ES. | ||||
|  | ||||
| 	* glibtop.h (glibtop): Added `glibtop_server_private *_priv' field | ||||
| 	and moved some private fields there. | ||||
| 2002-05-08  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 1999-12-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in: Added Vietnamese (vi) to ALL_LINGUAS | ||||
|  | ||||
| 	* include/glibtop/procargs.h (glibtop_proc_args): Removed. | ||||
| 	(glibtop_get_proc_args_*): This now takes a `glibtop_array' parameter | ||||
| 	instead of a `glibtop_proc_args one and returns a `char **'. | ||||
| 2002-03-12  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 1999-12-13  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* acinclude.m4 (LIBGTOP_HEACKER_TESTS): AM_CONDITIONAL() | ||||
| 	statements can't be conditionally executed (automake compat fix). | ||||
| 	(GNOME_LIBGTOP_SYSDEPS): move the conditional here so that it is | ||||
| 	always executed. | ||||
|  | ||||
| 	* configure.in (LIBGTOP_LIBS): Put `-lgtop' after `-lgtop_common'. | ||||
| 2002-02-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 1999-12-19  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in: bump version | ||||
|  | ||||
| 	* include/glibtop/errors.h: New file. We define `GLIBTOP_ERROR_*' | ||||
| 	error constants here. | ||||
| 	* release 1.90.2 | ||||
|  | ||||
| 	* lib/errors.c: New file. | ||||
| 	(glibtop_error_strings): Array of error messages. | ||||
| 	(glibtop_get_error_string_l): Get error message. | ||||
| 2002-02-09  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* include/glibtop/parameter.h: Added `GLIBTOP_PARAM_REMOTE_USER' and | ||||
| 	`GLIBTOP_PARAM_PATH_RSH'. | ||||
| 	reviewed by: Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* lib/parameter.c (glibtop_get_parameter_l): Changed return value | ||||
| 	from `size_t' to `ssize_t' and let it return an error constant. | ||||
| 	(glibtop_get_parameter_size_l): New function. | ||||
| 	(glibtop_set_parameter_l): Changed return value from `void' to `int' | ||||
| 	and let it return an error constant on error. | ||||
| 	* configure.in: remove need for dc, and clean up | ||||
| 	* stamp-h.in, .cvsignore: remove | ||||
|  | ||||
| 	* structures.def (glibtop_sysdeps): Added. | ||||
| 2002-02-05  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 1999-12-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in (ALL_LINGUAS): zh_CN.GB2312 -> zh_CN | ||||
|  | ||||
| 	All functions which return an array now take a `glibtop_array *array' | ||||
| 	parameter instead of a `glibtop_<feature> *buf' one. | ||||
| 2001-01-14  Hasbullah bin Pit <sebol@ikhlas.com> | ||||
|  | ||||
| 	For compatibility, we typedef the corresponding `glibtop_<feature>'s | ||||
| 	to `glibtop_array' in <glibtop/compat_10.h>. | ||||
| 	* configure.in: Added ms in ALL_LINGUAS. | ||||
| 	* po/ms.po: Added Malay Translation. | ||||
| 	* po/.cvsignore: Added 'libgtop-2.0.pot'. | ||||
|  | ||||
| 	This has the advantage that scripting languages like Guile with an | ||||
| 	array implementation which stores the length of an array in the | ||||
| 	array don't need the `glibtop_array' parameter at all any longer. | ||||
| 2001-01-14  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	We'll also add convenient functions which return GPtrArray's here. | ||||
| 	* configure.in: Sync'ed ALL_LINGUAS with files in po directory, | ||||
| 	and renamed GETTEXT_PACKAGE to avoid conflict with libgtop 1.0.x. | ||||
|  | ||||
| 	* include/glibtop/proclist.h (glibtop_proclist): Removed. | ||||
| 	(glibtop_get_proclist_*): This now takes a `glibtop_array' parameter | ||||
| 	instead of a `glibtop_proclist' one. | ||||
| 2002-01-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* include/glibtop/procmap.h (glibtop_proc_map): Removed. | ||||
| 	(glibtop_get_proc_map_*): This now takes a `glibtop_array' parameter | ||||
| 	instead of a `glibtop_proc_map' one. | ||||
| 	* acininclude.m4: add back the support stuf but make it really | ||||
| 	work | ||||
|  | ||||
| 	* include/glibtop/mountlist.h (glibtop_mountlist): Removed. | ||||
| 	(glibtop_get_mountlist_*): This now takes a `glibtop_array' parameter | ||||
| 	instead of a `glibtop_mountlist' one. | ||||
| 	* configure.in: bump version number, add back GNOME_SUPPORT  | ||||
| 	check since that was causing a build failure | ||||
|  | ||||
| 	* include/glibtop/interfaces.h (glibtop_interface_names): Removed. | ||||
| 	(glibtop_get_interface_names_*): This now takes a `glibtop_array' | ||||
| 	parameter instead of a `glibtop_interface_name' one. | ||||
| 	* release 1.90.1 | ||||
|  | ||||
| 	* include/glibtop/compat_10.h: New file. Contains some typedefs and | ||||
| 	#defines to keep compatibility until the big restructurement is | ||||
| 	completely done. | ||||
| 2002-01-09  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 1999-12-12  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* acinclude.m4: remove gnome support check. Fixes the build | ||||
| 	for those with automake < 1.4p5. | ||||
|  | ||||
| 	* include/glibtop/array.h: New file. | ||||
| 	* configure.in: remove check for GNOME_SUPPORT | ||||
|  | ||||
| 1999-12-11  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2001-14-27  Miles Lane <miles@megapathdsl.net> | ||||
|  | ||||
| 	This is a larger source-incompatible commit, but it'll make it | ||||
| 	easier to write automatically generated code (for instance for | ||||
| 	scripting languages). | ||||
| 	* acconfig.h:  Added "#undef HAVE_GETTEXT" entry. | ||||
| 	* LIBGTOP_VERSION:  Removed file. | ||||
| 	* configure.in:  added glib-gettextize support and | ||||
| 	  moved in the *VERSION* stuff from LIBGTOP_VERSION. | ||||
|  | ||||
| 	Renamed all constants for the flags field to match the field names | ||||
| 	from the features.def and structures.def where this was not already | ||||
| 	the case. | ||||
| 2001-11-27  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* include/glibtop/cpu.h: s/GLIBTOP_XCPU_/GLIBTOP_CPU_XCPU_/g. | ||||
| 	* include/glibtop/shm_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SHM_LIMITS_/g. | ||||
| 	* include/glibtop/sem_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SEM_LIMITS_/g. | ||||
| 	* include/glibtop/msg_limits.h: s/GLIBTOP_IPC_/GLIBTOP_MSG_LIMITS_/g. | ||||
| 	* acinclude.m4: copy some of the macros that were formerly | ||||
| 	in gnome-macros | ||||
|  | ||||
| 1999-12-11  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in, sysdeps/Makefile.am: comment out guile | ||||
| 	support for now. | ||||
|  | ||||
| 	* features.def: Use `string' instead of `str' as type name. | ||||
| 	* release 1.90.0 | ||||
|  | ||||
| 1999-12-05  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2001-11-26  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	Moved all Guile code to the libgtop-bindings module. | ||||
| 	* src/daemon/gnuserv.c:  Apply patch fixing security issue from | ||||
|         intexxia labs - #1048-261101 | ||||
|  | ||||
| 	* sysdeps/guile/*: Removed. | ||||
| 	* sysdeps/guile/names/*: Removed. | ||||
| 2001-11-26  Abel Cheung <maddog@linux.org.hk> | ||||
|  | ||||
| 	* libgtopConf.sh.in: Removed all guile variables. | ||||
| 	* src/inodedb/file_by_inode.c: Rename to file_by_inode2.c | ||||
| 	* src/inodedb/mkinodedb.c: Rename to mkinodedb2.c | ||||
|  | ||||
| 	* configure.in: Don't check for guile any longer. | ||||
| 	* po/POTFILES.in: Reflect above change | ||||
|  | ||||
| 1999-12-05  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* */.cvsignore: Add various files | ||||
|  | ||||
| 	* lib/structures.pl: New script to create `structures.h' which will | ||||
| 	be used in language bindings code. | ||||
| 2001-11-25  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 1999-12-05  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* port stable libgtop to GNOME 2.0. Too much to detail. | ||||
| 	pkgconfig is now used. Libs are named libgtop-2.0 etc for | ||||
| 	parallel install.  | ||||
|  | ||||
| 	* features.def: Use `pointer(<type>)' as return value for functions | ||||
| 	returning an array of scalar values (such as `unsigned' etc.). | ||||
| 2001-10-17  Abel Chueng  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* features.def: Use `array(<type>)' as return value for functions | ||||
| 	returning an array of structures. | ||||
| 	* configure.in, Makefile.am, include/glibtop/Makefile.am: headers | ||||
| 	moved to $(includedir)/libgtop-1.0/glibtop. | ||||
|  | ||||
| 1999-12-05  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2001-09-16  Abel Chueng  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* includes/glibtop/interfaces.h (glibtop_get_interface_names): | ||||
| 	Return array of `glibtop_interface' structures. | ||||
| 	(glibtop_interface): New structure. | ||||
| 	* configure.in: Added "zh_TW" to ALL_LINGUAS. | ||||
|  | ||||
| 1999-12-05  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2001-02-13  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* include/glibtop/limits.h (GLIBTOP_INTERFACE_LEN): New #define. | ||||
| 	(GLIBTOP_UNLIMITED): #define this to be `(~(u_int64_t)0)'. | ||||
| 	Released LibGTop 1.0.12 "Gerolzhofen". | ||||
|  | ||||
| 	* glibtop.h (glibtop): Added `refcount' field. | ||||
| 	* lib/init.c (glibtop_server_ref, glibtop_server_unref): New | ||||
| 	functions to deal with refcounts. | ||||
| 	* NEWS: Added news entry to 1.0.12. | ||||
|  | ||||
| 	* structures.def: New file. This is used by the language bindings | ||||
| 	code to get the definitions of some of LibGTop's structures. | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.12, binary age 11, | ||||
| 	interface age 11. | ||||
|  | ||||
| 1999-11-28  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2001-02-19  Simos Xenitellis  <simos@hellug.gr> | ||||
|  | ||||
| 	* include/glibtop/netload.h (glibtop_get_netload): Added | ||||
| 	`transport' and `protocol' argument to specify transport method | ||||
| 	and protocol. | ||||
| 	* configure.in: Added "el" to ALL_LINGUAS. | ||||
|  | ||||
| 	* include/glibtop/netinfo.h (glibtop_get_netinfo): Added | ||||
| 	`transport' argument to specify the transport method. | ||||
| 2001-02-15  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 1999-11-28  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	Released LibGTop 1.0.11 "Jasmin". | ||||
|  | ||||
| 	* include/glibtop/netinfo.h (glibtop_netinfo): Added `transport' | ||||
| 	field for the transport method. | ||||
| 	* NEWS: Added news entry for 1.0.11. | ||||
|  | ||||
| 1999-11-28  Martin Baulig  <martin@home-of-linux.org> | ||||
| 2001-02-14  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Split netload into netload and netinfo. | ||||
| 	Merged from LIBGTOP_1_1_2_PATCHES. | ||||
|  | ||||
| 	* include/glibtop/netinfo.h: New file. | ||||
| 	* libgtop-sysdeps.m4 (GLIBTOP_SOLARIS_RELEASE): Define this on Solaris; | ||||
| 	we use version codes like 270 for SunOS 5.7 and 251 for SunOS 2.5.1. | ||||
|  | ||||
| 	* include/glibtop/netload.h (glibtop_netload): Moved `if_flags', | ||||
| 	`mtu', `subnet' and `address' into the new `glibtop_netinfo'. | ||||
| 	* LIBGTOP-VERSION (LIBGTOP_VERSION_SUFFIX): Added this so you can | ||||
| 	have your tarballs called `libgtop-1.x.y-snap.tar.gz' or whatever. | ||||
| 	This only affects the `VERSION' variable and thus how the resulting | ||||
| 	tarball will be called, but not `LIBGTOP_VERSION_CODE' etc. | ||||
|  | ||||
| 	* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_NETINFO): Added. | ||||
| 	(glibtop_sysdeps): Added `netinfo. | ||||
| 	* include/glibtop/union.h (glibtop_union): Added `netinfo. | ||||
| 	* include/glibtop/command.h (GLIBTOP_CMND_NETINFO): Added. | ||||
|  | ||||
| 1999-11-28  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/interfaces.h (glibtop_get_interface_names): | ||||
| 	Added `instance' argument. | ||||
|  | ||||
| 1999-11-28  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* lib/lib.pl: We now have a new, more extensible client/server | ||||
| 	communication model. Include `$(top_srcdir)/scripts/c_types.pl' here. | ||||
|  | ||||
| 1999-11-21  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Added new feature to get a list of network interface names. | ||||
|  | ||||
| 	* features.def: Added `interface_names' feature. | ||||
|  | ||||
| 	* include/glibtop/interfaces.h: New file. | ||||
|  | ||||
| 	* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_INTERFACE_NAMES): Added. | ||||
| 	(glibtop_sysdeps): Added `interface_names'. | ||||
| 	* include/glibtop/union.h (glibtop_union): Added `interface_names'. | ||||
| 	* include/glibtop/command.h (GLIBTOP_CMND_INTERFACE_NAMES): Added. | ||||
|  | ||||
| 1999-11-21  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/sysdeps.h (glibtop_init_func_t): Use `int' | ||||
| 	as return type, not `void'. | ||||
|  | ||||
| 	* include/glibtop/proclist.h (GLIBTOP_KERN_PROC_PPID): On a | ||||
| 	suggestion from Sebastian Fischmeister added a way to return | ||||
| 	all children of a given process. | ||||
|  | ||||
| 1999-11-02  Jesus Bravo Alvarez  <jba@pobox.com> | ||||
|  | ||||
| 	* configure.in: Added Galician (gl) to ALL_LINGUAS | ||||
|  | ||||
| 1999-10-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* features.def: Use `retval' for the default retval. | ||||
|  | ||||
| 	* include/glibtop/command.h (glibtop_command_h): Added | ||||
| 	`int *retval_ptr' parameter to return the retval from the | ||||
| 	sysdeps functions. | ||||
|  | ||||
| 	* include/glibtop/*.h (glibtop_get_*, glibtop_init*): Changed | ||||
| 	the return value of all `glibtop_get_<feature>_* ()' and all | ||||
|  	`glibtop_init_<feature>_* ()' functions from void to int. | ||||
|  | ||||
| 	* features.def: Reflect changes of the return values. | ||||
| 	* sysdeps/*/*.c: Reflect changes of the return values. | ||||
|  | ||||
| 1999-10-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* acconfig.h (LIBGTOP_USE_GLIB_MALLOC): Added. | ||||
| 	* configure.in (--enable-glib-malloc): New configure parameter | ||||
| 	to use glib's malloc functions. | ||||
|  | ||||
| 	* sysdeps/common/ChangeLog: New file. | ||||
|  | ||||
| 1999-10-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	The LibGTop examples have been moved into their own top-level | ||||
| 	module libgtop-examples. | ||||
|  | ||||
| 	* examples/*: Removed. | ||||
| 	* configure.in: Removed all checks for the examples. | ||||
| 	* libgtop-sysdeps.m4: Removed --with-libgtop-examples parameter. | ||||
| 	* Makefile.am: Removed examples from the subdir list. | ||||
|  | ||||
| 1999-10-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Check for <osreldate.h> on *BSD* systems. | ||||
|  | ||||
| 1999-10-19  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.1.3, binary age 0, | ||||
| 	interface age 0 and increased LIBGTOP_SERVER_VERSION to 51. | ||||
|  | ||||
|  	This implies that we can now break as much compatibility as | ||||
|  	we want. | ||||
|  | ||||
| 1999-10-19  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.1.2 "Hardangervidda". | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* RELNOTES-1.1.x: New file. We also track all changes since | ||||
| 	1.0.x here. | ||||
|  | ||||
| 	* NEWS: We start maintaining a NEWS file now :) | ||||
|  | ||||
| 	* NEWS.old: Removed obsolete file. | ||||
|  | ||||
| 	* TODO: Nuked it. We may need this file later ... | ||||
|  | ||||
| 1999-10-17  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* configure.in, acconfig.h: Added checks for <procfs.h> | ||||
| 	and <sys/procfs.h> | ||||
|  | ||||
| 	* configure.in (DL_LIB): Check for dlopen() and AC_SUBST this. | ||||
|  | ||||
| 1999-10-17  Martin Baulig  <martin@home-of-linux.org> | ||||
| 	* Makefile.am: Make `aclocal.m4' also depend on `LIBGTOP-VERSION' | ||||
| 	when in maintainer-mode. | ||||
|  | ||||
| 	* configure.in: Fixed typedef syntax for glibtop-config.h. | ||||
| 	Thanks to Drazen Kacar for pointing this out. | ||||
| 2001-02-14  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* include/glibtop/limits.h: Removed; this file doesn't exist | ||||
| 	in the stable branch. | ||||
|  | ||||
| 2001-02-13  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.11, binary age 10, | ||||
| 	interface age 10. | ||||
|  | ||||
| 2001-02-13  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz> | ||||
|  | ||||
| 	* configure.in: Added sk to ALL_LINGUAS | ||||
|  | ||||
| 2001-02-08  Gustavo Maciel Dias Vieira  <gdvieira@zaz.com.br> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): Added pt_BR to ALL_LINGUAS. | ||||
|  | ||||
| 2000-11-21  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs' | ||||
| 	parameters. | ||||
|  | ||||
| 2000-11-20  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Released LibGTop 1.0.10 "November Rain". | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.10, binary age 9, | ||||
| 	interface age 9. | ||||
|  | ||||
| 2000-05-25  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Released LibGTop 1.0.9 "Stuttgart". | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.9 binary age 8, | ||||
| 	interface age 8. | ||||
|  | ||||
| 	(LibGTop 1.0.8 "Frankfurt" was not publically released.) | ||||
|  | ||||
| 2000-02-20  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.8 binary age 7, | ||||
| 	interface age 7. | ||||
|  | ||||
| 2000-02-15  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.7 "Copenhagen". | ||||
|  | ||||
| 1999-10-19  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.7 binary age 6, | ||||
| 	interface age 6. | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.6 "October LibGTop". | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* NEWS.old: Removed obsolete file. | ||||
|  | ||||
| 	* RELNOTES-1.0.x: Added release notes for LibGTop 1.0.6. | ||||
|  | ||||
| 	* TODO: Removed obsolete file. | ||||
|  | ||||
| 	* NEWS: We start maintaining a NEWS file now :) | ||||
|  | ||||
| 1999-10-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.1.2, binary age 2, | ||||
| 	interface age 2. | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.6 binary age 5, | ||||
| 	interface age 5. | ||||
|  | ||||
| 1999-10-09  Jesus Bravo Alvarez  <jba@pobox.com> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): Added Galician (gl) | ||||
|  | ||||
| 1999-09-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.5. | ||||
|  | ||||
| 1999-09-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in (libgtop_top_builddir): AC_SUBST this. | ||||
|  | ||||
| 1999-09-27  Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br> | ||||
| 1999-09-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4, | ||||
| 	interface age 4. | ||||
|  | ||||
| 1999-09-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.4. | ||||
|  | ||||
| 	* configure.in: Added "pt_BR" to ALL_LINGUAS. | ||||
| 	 | ||||
| 1999-09-22  Kjartan Maraas  <kmaraas@online.no> | ||||
|  | ||||
| 	* configure.in: Added "da" to ALL_LINGUAS. | ||||
| @@ -514,13 +409,23 @@ | ||||
|  | ||||
| 1999-09-18  Pablo Saratxaga <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* configure.in, po/pl.po: copied pl.po from stable CVS tree | ||||
| 	* configure.in, po/*.po: merged *.po files from HEAD CVS | ||||
|  | ||||
| 1999-09-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in: Make it work if we have GNOME and the user | ||||
| 	gave use --without-gnome (fixes bug #1735). | ||||
|  | ||||
| 1999-09-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.4 binary age 3, | ||||
| 	interface age 3. | ||||
|  | ||||
| 1999-09-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Merged everything since May 31 from HEAD and released | ||||
|  	LibGTop 1.0.3. | ||||
|  | ||||
| 1999-07-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/error.h: Use G_GNUC_UNUSED. | ||||
| @@ -528,17 +433,6 @@ | ||||
| 	* configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake | ||||
| 	conditionals. | ||||
|  | ||||
| 1999-07-27  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in (LT_VERSION_INFO): Add `-release ${LT_RELEASE}'. | ||||
| 	This way you can have both 1.0.x and 1.1.x libraries under the | ||||
| 	same ${prefix}. | ||||
|  | ||||
| 1999-07-27  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.1.1 binary age 1, | ||||
| 	interface age 1. | ||||
|  | ||||
| 1999-07-11  Tomas Ogren  <stric@ing.umu.se> | ||||
|  | ||||
| 	* configure.in: Added sv to ALL_LINGUAS | ||||
| @@ -547,21 +441,14 @@ | ||||
|  | ||||
| 	* sysdeps/names/procmem.c: Fixed a tyop | ||||
|  | ||||
| 1999-06-22  Martin Baulig  <martin@home-of-linux.org> | ||||
| 1999-05-31  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in: Some versions of Solaris require -lelf for -lkvm; | ||||
| 	added appropriate check for this situation. | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2, | ||||
| 	interface age 2. | ||||
|  | ||||
| 1999-05-28  Martin Baulig  <baulig@Stud.Informatik.Uni-Trier.DE> | ||||
| 1999-05-31  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/sysdeps.h: Remove the `GLIBTOP_SYSDEPS_FEATURES' | ||||
| 	and `GLIBTOP_SYSDEPS_POINTER_SIZE' constants and let numbering | ||||
| 	start at zero for `GLIBTOP_SYSDEPS_CPU'. | ||||
|  | ||||
| 1999-05-28  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop.h (GLIBTOP_MOUNTENTRY_LEN): Move this | ||||
| 	* include/glibtop/limits.h: here. | ||||
| 	Released LibGTop 1.0.2. | ||||
|  | ||||
| 1999-05-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| @@ -572,162 +459,9 @@ | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Make the I4B check work for NetBSD. | ||||
|  | ||||
| 1999-05-15  Martin Baulig  <martin@home-of-linux.org> | ||||
| 1999-05-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Remove the `--enable-hacker-mode' requirement | ||||
| 	for the BSDI, Solaris and Digital Unix ports. | ||||
|  | ||||
| 1999-05-13  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.m4 (GLIBTOP_SOLARIS_RELEASE): Define this on Solaris; | ||||
| 	we use version codes like 270 for SunOS 5.7 and 251 for SunOS 2.5.1. | ||||
|  | ||||
| 1999-05-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop-config.h: This is a new generated file which will be | ||||
| 	included from <glibtop.h>. We define things like `u_int64_t' and | ||||
| 	LIBGTOP_*_VERSION here so we can compile LibGTop applications with | ||||
| 	`libgtop-config --cflags`. | ||||
|  | ||||
| 	* configure.in: Create glibtop-config.h. | ||||
| 	(GLIBTOP_*_INCS): Added `-I $(pkglibdir)/include'. | ||||
|  | ||||
| 	* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs' | ||||
| 	parameter so you can now use LibGTop even in no-autoconf apps. | ||||
|  | ||||
| 	* Makefile.am: Install `glibtop-config.h' in `$(pkglibdir)/include'. | ||||
|  | ||||
| 1999-05-09  Drazen Kacar  <dave@srce.hr> | ||||
|  | ||||
| 	* configure.in, acconfig.h: Added checks for <procfs.h> | ||||
| 	and <sys/procfs.h> | ||||
|  | ||||
| 1999-05-09  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* doc: One should ship the documentation of a package together with | ||||
| 	the tarball, so I added this back. | ||||
|  | ||||
| 1999-05-08  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/limits.h (GLIBTOP_MAX_GROUPS): Define this here. | ||||
| 	* include/glibtop/procuid.h (GLIBTOP_MAX_GROUPS): Moved to limits.h. | ||||
|  | ||||
| 	* features.def: We can use constants from <glibtop/limits.h> here. | ||||
|  | ||||
| 1999-05-08  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Use the setgid sys server for Solaris. | ||||
|  | ||||
| 1999-05-06  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/sysdeps.h (glibtop_sysdeps): Added `pointer_size' | ||||
| 	which is the number of bits of a `void *'. | ||||
|  | ||||
| 1999-05-03  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Set version number to 1.1.0. Also made a `LIBGTOP_STABLE_1_0' | ||||
| 	branch in CVS while development will go on here in the HEAD. | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.1.0 binary age 0, | ||||
| 	interface age 0. Set LIBGTOP_SERVER_VERSION to 50. | ||||
|  | ||||
| 1999-04-18  Tuomas J. Lukka <lukka@iki.fi> | ||||
|  | ||||
| 	* Add missing comma in sysdeps/names/proctime.c | ||||
|  | ||||
| 1999-04-18  Tuomas J. Lukka <lukka@iki.fi> | ||||
|  | ||||
| 	* Add missing comma in sysdeps/names/cpu.c | ||||
|  | ||||
| 1999-04-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Thanks to Drazen Kacar for pointing out that not all processors must | ||||
| 	be running all the time under Solaris, so we need to have some flag | ||||
| 	to find out which processors are running. | ||||
|  | ||||
| 	* (glibtop_cpu): Added `xcpu_flags' bitmask of running processors. | ||||
| 	* (glibtop_proc_time): Added `xcpu_flags'. | ||||
|  | ||||
| 1999-04-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/limits.h: New file. | ||||
| 	(GLIBTOP_NCPU): Define this here and increase it to 64. | ||||
|  | ||||
| 1999-03-30  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Added some new features. | ||||
|  | ||||
| 	* (glibtop_uptime): Added `boot_time', boot time in seconds | ||||
| 	since the epoch. | ||||
| 	 | ||||
| 	* (glibtop_proc_state): Changed `state' from char to unsigned. | ||||
| 	`uid' and `gid' are effective uid and gid; added comment. | ||||
| 	Added `ruid' and `rgid' for guaranteed-to-be-correct real uid/gid. | ||||
| 	For SMP systems: added `has_cpu', `processor' and `last_processor'. | ||||
|  | ||||
| 	* (glibtop_proc_uid): Added suid, sgid, fsuid, fsgid, ngroups, groups. | ||||
|  | ||||
| 	* (glibtop_proc_segment): Added start_data, end_data, start_brk, | ||||
| 	end_brk, start_mmap, arg_start, arg_end, env_start, env_end. | ||||
|  | ||||
| 	* include/glibtop/procstate.h: Define some constants for the `state' | ||||
| 	field of glibtop_proc_state. | ||||
|  | ||||
| 	* include/glibtop/prockernel.h: Define some constants for the | ||||
| 	`k_flags' field of glibtop_proc_kernel. | ||||
| 	 | ||||
| 1999-03-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in: Check for getloadavg () and swapctl () for | ||||
| 	Solaris. | ||||
|  | ||||
| 1999-03-23  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop.h (glibtop): Added `wanted'. Applications can set the | ||||
| 	features they are interested in here. This way we don't waste CPU | ||||
| 	getting expensive data that aren't really needed. | ||||
|  | ||||
| 	* LIBGTOP-VERSION: This breaks backward compatibility and also | ||||
| 	added new functions; set binary	age and interface age to 0. | ||||
|  | ||||
| 1999-03-21  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Added a new sysctl () interface to the Linux Kernel. | ||||
| 	 | ||||
| 	* kernel/sysctl: Imported. | ||||
| 	 | ||||
| 	* libgtop-sysdeps.m4: If `--enable-hacker-mode' is given, check | ||||
| 	for my new sysctl () interface. | ||||
|  | ||||
| 1999-03-20  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Removed all traces of my old table () Linux kernel hack. | ||||
|  | ||||
| 	* kernel: Removed. | ||||
| 	* sysdeps/kernel: Removed. | ||||
| 	* libgtop-sysdeps.m4: Don't check for table (); it does not | ||||
| 	exist any longer. | ||||
|  | ||||
| 1999-03-19  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	This is *untested* - please read "sysdeps/freebsd/ChangeLog" ! | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Use the `freebsd' sysdeps directory for | ||||
| 	BSDI as well if the `--enable-hacker-mode' parameter was given. | ||||
|  | ||||
| 1999-03-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.2 binary age 1, | ||||
| 	intergace age 1. | ||||
|  | ||||
| 1999-03-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Imported first version of my Solaris port. | ||||
|  | ||||
| 	* configure.in: Check for `kstat_open' in `-lkstat'. | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Recognize the `solaris' sysdeps directory | ||||
| 	when the `--enable-hacker-mode' parameter was given. | ||||
| 	* doc: Merged the LibGTop Manual from the HEAD. | ||||
|  | ||||
| 1999-03-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
|   | ||||
| @@ -7,19 +7,22 @@ | ||||
| # set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0. | ||||
| # | ||||
| LIBGTOP_MAJOR_VERSION=1 | ||||
| LIBGTOP_MINOR_VERSION=1 | ||||
| LIBGTOP_MICRO_VERSION=4 | ||||
| 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=52 | ||||
| LIBGTOP_SERVER_VERSION=5 | ||||
|  | ||||
| # Don't change this | ||||
| LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION | ||||
| LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc` | ||||
|  | ||||
| # For automake. | ||||
| VERSION=$LIBGTOP_VERSION | ||||
| VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX | ||||
| PACKAGE=libgtop | ||||
|   | ||||
| @@ -1,2 +0,0 @@ | ||||
| Email: martin@home-of-linux.org | ||||
| Email: dave@srce.hr | ||||
							
								
								
									
										76
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -1,33 +1,27 @@ | ||||
| ## Process this file with automake to produce Makefile.in. | ||||
|  | ||||
| if EXAMPLES | ||||
| examples_SUBDIRS = examples | ||||
| else | ||||
| examples_SUBDIRS = | ||||
| endif | ||||
|  | ||||
| if BUILD_GNOME_SUPPORT | ||||
| support = support | ||||
| endif | ||||
|  | ||||
| SUBDIRS = po intl $(support) macros misc include sysdeps backends lib \ | ||||
| 	  src doc scripts | ||||
| SUBDIRS = . po $(support) misc include sysdeps lib src \ | ||||
| 	  $(examples_SUBDIRS) doc | ||||
|  | ||||
| include_HEADERS = glibtop.h | ||||
| configincludedir = $(pkglibdir)/include | ||||
|  | ||||
| noinst_HEADERS = glibtop-server-private.h | ||||
| libgtopinclude_HEADERS = glibtop.h | ||||
| libgtopincludedir = $(includedir)/libgtop-2.0 | ||||
|  | ||||
| EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \ | ||||
| 	LIBGTOP-VERSION features.def structures.def libgtop-config.in \ | ||||
| 	RELNOTES-0.25 RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \ | ||||
| 	libgtop-mirror.sh | ||||
| 	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 | ||||
|  | ||||
| configinclude_DATA = \ | ||||
| 	glibtop-config.h | ||||
|  | ||||
| BUILT_SOURCES = stamp-gc-h #note: not glibtop-config.h | ||||
| glibtop-config.h: stamp-gc-h | ||||
| 	@: | ||||
| stamp-gc-h: config.status | ||||
| 	CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=glibtop-config.h ./config.status | ||||
| 	echo timestamp > stamp-gc-h | ||||
|  | ||||
| dist-hook: libgtop.spec | ||||
| dist-hook: | ||||
| 	cp libgtop.spec $(distdir) | ||||
|  | ||||
| release: | ||||
| @@ -35,22 +29,24 @@ release: | ||||
|  | ||||
| ## 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 \ | ||||
| 		  $(top_builddir)/libgtop-structures.def | ||||
| ## 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 | ||||
| ## 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@ 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 | ||||
| @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 | ||||
| @@ -59,14 +55,17 @@ bin_SCRIPTS = $(top_builddir)/libgtop-config | ||||
| libgtopConf.sh: libgtopConf.sh.in Makefile | ||||
| ## Use sed and then mv to avoid problems if the user interrupts. | ||||
| 	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)/libgtop-2.0#g' \ | ||||
| 	  -e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_BACKEND_DIR\@#$(LIBGTOP_BACKEND_DIR)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_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' \ | ||||
| @@ -78,18 +77,17 @@ libgtopConf.sh: libgtopConf.sh.in Makefile | ||||
| 	  -e 's#\@libgtop_sysdeps_dir\@#$(libgtop_sysdeps_dir)#g' \ | ||||
| 	  -e 's#\@libgtop_need_server\@#$(libgtop_need_server)#g' \ | ||||
| 	  -e 's#\@libgtop_use_machine_h\@#$(libgtop_use_machine_h)#g' \ | ||||
| 	  -e 's#\@libgtop_guile_found\@#$(libgtop_guile_found)#g' \ | ||||
| 	  -e 's#\@libgtop_want_examples\@#$(libgtop_want_examples)#g' \ | ||||
| 	      < $(srcdir)/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-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@ $< $@ | ||||
|  | ||||
| libgtop-structures.def: structures.def | ||||
| 	@LN_S@ $< $@ | ||||
|  | ||||
|   | ||||
							
								
								
									
										72
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,16 +1,68 @@ | ||||
| January 14, 1999: | ||||
| February 27, 2001: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.12 "Gerolzhofen". | ||||
|  | ||||
|   - fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits). | ||||
|  | ||||
|   - fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses | ||||
|     `_KERNEL' instead of `KERNEL'). Bug #51334. | ||||
|  | ||||
|   - for BSDI, comment out `subnet' field in netload; this should make | ||||
|     it compile, but there may be other problems. Bug #13345. | ||||
|  | ||||
|   This release is for GNOME 1.4 Beta2. | ||||
|  | ||||
| February 14, 2001: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.11 "Jasmin": | ||||
|  | ||||
|   [The release which was supposed to be called "Gerolzhofen".] | ||||
|  | ||||
|   - merged in the Solaris code from LIBGTOP_1_1_2_PATCHES. | ||||
|  | ||||
|   - minor OpenBSD fixes. | ||||
|  | ||||
|   - again a bunch of updated translations. | ||||
|  | ||||
|   Please test the Solaris stuff and report and bugs and | ||||
|   problems as soon as possible; I'll make a new release | ||||
|   for the 2nd beta of GNOME 1.4 if necessary. | ||||
|  | ||||
| November 20, 2000: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.10 "November Rain": | ||||
|  | ||||
|   - this release contains a bunch of updated translations. | ||||
|  | ||||
| May 25, 2000: | ||||
| ============ | ||||
|  | ||||
| * Released LibGTop 1.0.9 "Stuttgart". | ||||
|  | ||||
|   (LibGTop 1.0.8 "Frankfurt" was not publically released.) | ||||
|  | ||||
| February 15, 2000: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.7 "Copenhagen": | ||||
|  | ||||
|   - this is a bug fix release for the GUADEC CD-ROM; | ||||
|     it contains fixes in both the Linux and *BSD sysdeps | ||||
|     directory. | ||||
|  | ||||
| October 18, 1999: | ||||
| ================ | ||||
|  | ||||
| * Released LibGTop 1.1.4 "Earthquake" | ||||
| * Released LibGTop 1.0.6 "October LibGTop": | ||||
|  | ||||
|   This is the first developer's snapshot release after a | ||||
|   longer development period with a lot of interface changes. | ||||
|   - compilation fixes for FreeBSD. | ||||
|   - updated reference manual. | ||||
|  | ||||
| October 19, 1999: | ||||
| ================ | ||||
| September 29, 1999: | ||||
| ================== | ||||
|  | ||||
| * Released LibGTop 1.1.2 "Hardangervidda" | ||||
|  | ||||
|   This is a stable release from the development branch | ||||
|   of LibGTop for Solaris users of October GNOME. | ||||
| * Released LibGTop 1.0.5. | ||||
|  | ||||
|   | ||||
							
								
								
									
										36
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								README
									
									
									
									
									
								
							| @@ -1,32 +1,8 @@ | ||||
| This is the *development* branch of LibGTop. It is indended | ||||
| for people who want to help with the development of LibGTop and | ||||
| not for end-users. | ||||
| $Id$ | ||||
|  | ||||
| Please use the LIBGTOP_STABLE_1_0 branch (which is LibGTop 1.0.x) | ||||
| unless you're really a developer. | ||||
| LATEST NEWS: | ||||
| =========== | ||||
|  | ||||
| If you're using LibGTop from CVS simply do a | ||||
|  | ||||
| 	cvs update -r LIBGTOP_STABLE_1_0 | ||||
|  | ||||
| to get the latest version from the stable branch. | ||||
|  | ||||
| However, I'll periodically make snapshot releases from the development | ||||
| branch for Solaris users of LibGTop. | ||||
|  | ||||
| They can be found at | ||||
|  | ||||
| 	ftp://ftp.home-of-linux.org/pub/libgtop/1.1/ | ||||
|  | ||||
| in near future. | ||||
|  | ||||
| Using released tarballs from the development branch is a lot better than | ||||
| compiling directly from CVS since things in CVS may not always work as | ||||
| expected. | ||||
|  | ||||
| Note that releases from the developer branch are neither binary | ||||
| nor fully source compatible; you'll normally have to recompile | ||||
| everything that use them. | ||||
|  | ||||
| October 1999 | ||||
| Martin Baulig | ||||
| Please look also in the file 'NEWS' for latest news. | ||||
|   | ||||
| Martin | ||||
|   | ||||
| @@ -87,7 +87,7 @@ LibGTop is currently used in various places in the GNOME Project, | ||||
| for instance in some of the applets in gnome-core and - of cause - | ||||
| this ultra-cool application called GTop ... | ||||
|  | ||||
| Although LibGTop is not specific to GNOME and under LGPL license, I | ||||
| 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). | ||||
|  | ||||
|   | ||||
							
								
								
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | ||||
| 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 | ||||
							
								
								
									
										15
									
								
								acconfig.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								acconfig.h
									
									
									
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
|  | ||||
| /* Define if gethostname () must be declared. */ | ||||
| #undef NEED_DECLARATION_GETHOSTNAME | ||||
| @@ -20,6 +18,7 @@ | ||||
|  | ||||
| #undef ENABLE_NLS | ||||
| #undef HAVE_CATGETS | ||||
| #undef GETTEXT_PACKAGE | ||||
| #undef HAVE_GETTEXT | ||||
| #undef HAVE_LC_MESSAGES | ||||
| #undef HAVE_STPCPY | ||||
| @@ -124,6 +123,7 @@ | ||||
| #undef HAVE_LIBZ | ||||
| #undef HAVE_LIBPNG | ||||
| #undef HAVE_GMP2_INCLUDE_DIR | ||||
| #undef HAVE_GUILE | ||||
|  | ||||
| #undef ssize_t | ||||
| #undef u_int64_t | ||||
| @@ -132,12 +132,14 @@ | ||||
| #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_SYSCTL | ||||
| #undef HAVE_LINUX_TABLE | ||||
| #undef HAVE_LIBGTOP_SMP | ||||
|  | ||||
| #undef HAVE_XAUTH | ||||
| @@ -150,9 +152,6 @@ | ||||
| #undef LIBGTOP_ENABLE_DEBUG | ||||
| #undef LIBGTOP_FATAL_WARNINGS | ||||
|  | ||||
| /* Define to use glib's malloc. */ | ||||
| #undef LIBGTOP_USE_GLIB_MALLOC | ||||
|  | ||||
| /* Same as LINUX_VERSION_CODE either from <linux/version.h> or from | ||||
|  * the running kernel (if we don't have configured kernel sources). | ||||
|  */ | ||||
| @@ -169,7 +168,3 @@ | ||||
|  | ||||
| /* Define if you have the <sys/procfs.h> header file */ | ||||
| #undef HAVE_SYS_PROCFS_H | ||||
|  | ||||
| /* Define if you have the libxml library */ | ||||
| #undef HAVE_LIBXML | ||||
|  | ||||
|   | ||||
							
								
								
									
										880
									
								
								acinclude.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										880
									
								
								acinclude.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,880 @@ | ||||
| dnl This is just copied m4s from need-declaration.m4 gnome-fileutils.m4 | ||||
| dnl gnome-supprt-checks.m4 and a little from gnome-libgtop-check.m4 | ||||
| dnl and finally libgtop-sysdeps.m4 | ||||
|  | ||||
| dnl | ||||
| dnl LIBGTOP_CHECK_TYPE | ||||
| dnl | ||||
| dnl Improved version of AC_CHECK_TYPE which takes into account | ||||
| dnl that we need to #include some other header files on some | ||||
| dnl systems to get some types. | ||||
|  | ||||
| dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT) | ||||
| AC_DEFUN([AC_LIBGTOP_CHECK_TYPE], | ||||
| [AC_REQUIRE([AC_HEADER_STDC])dnl | ||||
| AC_MSG_CHECKING(for $1) | ||||
| AC_CACHE_VAL(ac_cv_type_$1, | ||||
| [AC_EGREP_CPP(dnl | ||||
| changequote(<<,>>)dnl | ||||
| <<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl | ||||
| changequote([,]), [#include <sys/types.h> | ||||
| #if STDC_HEADERS | ||||
| #include <stdlib.h> | ||||
| #include <stddef.h> | ||||
| #endif | ||||
|  | ||||
| /* For Tru64 */ | ||||
| #ifdef HAVE_SYS_BITYPES_H | ||||
| #include <sys/bitypes.h> | ||||
| #endif | ||||
| ], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl | ||||
| AC_MSG_RESULT($ac_cv_type_$1) | ||||
| if test $ac_cv_type_$1 = no; then | ||||
|   AC_DEFINE($1, $2) | ||||
| fi | ||||
| ]) | ||||
|  | ||||
| dnl | ||||
| dnl GNOME_LIBGTOP_TYPES | ||||
| dnl | ||||
| dnl some typechecks for libgtop. | ||||
| dnl | ||||
|  | ||||
| AC_DEFUN([GNOME_LIBGTOP_TYPES], | ||||
| [ | ||||
|         AC_CHECK_HEADERS(sys/bitypes.h) | ||||
|         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. | ||||
| dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES]) | ||||
| AC_DEFUN([GCC_NEED_DECLARATION], | ||||
| [AC_MSG_CHECKING([whether $1 must be declared]) | ||||
| AC_CACHE_VAL(gcc_cv_decl_needed_$1, | ||||
| [AC_TRY_COMPILE([ | ||||
| #include <stdio.h> | ||||
| #ifdef HAVE_STRING_H | ||||
| #include <string.h> | ||||
| #else | ||||
| #ifdef HAVE_STRINGS_H | ||||
| #include <strings.h> | ||||
| #endif | ||||
| #endif | ||||
| #ifdef HAVE_STDLIB_H | ||||
| #include <stdlib.h> | ||||
| #endif | ||||
| #ifdef HAVE_UNISTD_H | ||||
| #include <unistd.h> | ||||
| #endif | ||||
| $2], | ||||
| [char *(*pfn) = (char *(*)) $1], | ||||
| eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")]) | ||||
| if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then | ||||
|   AC_MSG_RESULT(yes) | ||||
|   gcc_need_declarations="$gcc_need_declarations $1" | ||||
|   gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|   AC_DEFINE_UNQUOTED($gcc_tr_decl) | ||||
| else | ||||
|   AC_MSG_RESULT(no) | ||||
| fi | ||||
| ])dnl | ||||
|  | ||||
| dnl Check multiple functions to see whether each needs a declaration. | ||||
| dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES]) | ||||
| AC_DEFUN([GCC_NEED_DECLARATIONS], | ||||
| [for ac_func in $1 | ||||
| do | ||||
| GCC_NEED_DECLARATION($ac_func, $2) | ||||
| done | ||||
| ] | ||||
| ) | ||||
|  | ||||
| dnl | ||||
| dnl GNOME_FILEUTILS_CHECKS | ||||
| dnl | ||||
| dnl checks that are needed for the diskusage applet. | ||||
| dnl | ||||
|  | ||||
| AC_DEFUN([GNOME_FILEUTILS_CHECKS], | ||||
| [ | ||||
| AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \ | ||||
| mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \ | ||||
| sys/filsys.h sys/fs_types.h sys/fs/s5param.h) | ||||
|  | ||||
| AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \ | ||||
| getcwd getmntinfo gettimeofday isascii lchown \ | ||||
| listmntent memcpy mkfifo strchr strerror strrchr vprintf) | ||||
|  | ||||
| dnl Set some defaults when cross-compiling | ||||
|  | ||||
| if test x$cross_compiling = xyes ; then | ||||
|         case "$host_os" in | ||||
|         linux*) | ||||
|           fu_cv_sys_mounted_getmntent1=yes | ||||
|           fu_cv_sys_stat_statfs2_bsize=yes | ||||
|           ;; | ||||
|         sunos*) | ||||
|           fu_cv_sys_stat_statfs4=yes | ||||
|           ;; | ||||
|         freebsd*) | ||||
|           fu_cv_sys_stat_statfs2_bsize=yes | ||||
|           ;; | ||||
|         osf*) | ||||
|           fu_cv_sys_stat_statfs3_osf1=yes | ||||
|           ;; | ||||
|         esac | ||||
| fi | ||||
|  | ||||
| # Determine how to get the list of mounted filesystems. | ||||
| list_mounted_fs= | ||||
|  | ||||
| # If the getmntent function is available but not in the standard library, | ||||
| # make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). | ||||
| AC_FUNC_GETMNTENT | ||||
|  | ||||
| # This test must precede the ones for getmntent because Unicos-9 is | ||||
| # reported to have the getmntent function, but its support is incompatible | ||||
| # with other getmntent implementations. | ||||
|  | ||||
| # NOTE: Normally, I wouldn't use a check for system type as I've done for | ||||
| # `CRAY' below since that goes against the whole autoconf philosophy.  But | ||||
| # I think there is too great a chance that some non-Cray system has a | ||||
| # function named listmntent to risk the false positive. | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # Cray UNICOS 9 | ||||
| AC_MSG_CHECKING([for listmntent of Cray/Unicos-9]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent, | ||||
| [fu_cv_sys_mounted_cray_listmntent=no | ||||
| AC_EGREP_CPP(yes, | ||||
| [#ifdef _CRAY | ||||
| yes | ||||
| #endif | ||||
| ], [test $ac_cv_func_listmntent = yes \ | ||||
| && fu_cv_sys_mounted_cray_listmntent=yes] | ||||
| ) | ||||
| ] | ||||
| ) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent) | ||||
| if test $fu_cv_sys_mounted_cray_listmntent = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_LISTMNTENT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $ac_cv_func_getmntent = yes; then | ||||
|  | ||||
| # This system has the getmntent function. | ||||
| # Determine whether it's the one-argument variant or the two-argument one. | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # 4.3BSD, SunOS, HP-UX, Dynix, Irix | ||||
| AC_MSG_CHECKING([for one-argument getmntent function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, | ||||
| [test $ac_cv_header_mntent_h = yes \ | ||||
| && fu_cv_sys_mounted_getmntent1=yes \ | ||||
| || fu_cv_sys_mounted_getmntent1=no]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) | ||||
| if test $fu_cv_sys_mounted_getmntent1 = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTENT1) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # SVR4 | ||||
| AC_MSG_CHECKING([for two-argument getmntent function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, | ||||
| [AC_EGREP_HEADER(getmntent, sys/mnttab.h, | ||||
| fu_cv_sys_mounted_getmntent2=yes, | ||||
| fu_cv_sys_mounted_getmntent2=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) | ||||
| if test $fu_cv_sys_mounted_getmntent2 = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTENT2) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) | ||||
| fi | ||||
|  | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # DEC Alpha running OSF/1. | ||||
| AC_MSG_CHECKING([for getfsstat function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, | ||||
| [AC_TRY_LINK([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/fs_types.h>], | ||||
| [struct statfs *stats; | ||||
| int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], | ||||
| fu_cv_sys_mounted_getsstat=yes, | ||||
| fu_cv_sys_mounted_getsstat=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) | ||||
| if test $fu_cv_sys_mounted_getsstat = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETFSSTAT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # AIX. | ||||
| AC_MSG_CHECKING([for mntctl function and struct vmount]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_vmount, | ||||
| [AC_TRY_CPP([#include <fshelp.h>], | ||||
| fu_cv_sys_mounted_vmount=yes, | ||||
| fu_cv_sys_mounted_vmount=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_vmount) | ||||
| if test $fu_cv_sys_mounted_vmount = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_VMOUNT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # SVR3 | ||||
| AC_MSG_CHECKING([for FIXME existence of three headers]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, | ||||
| [AC_TRY_CPP([ | ||||
| #include <sys/statfs.h> | ||||
| #include <sys/fstyp.h> | ||||
| #include <mnttab.h>], | ||||
| fu_cv_sys_mounted_fread_fstyp=yes, | ||||
| fu_cv_sys_mounted_fread_fstyp=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) | ||||
| if test $fu_cv_sys_mounted_fread_fstyp = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_FREAD_FSTYP) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # 4.4BSD and DEC OSF/1. | ||||
| AC_MSG_CHECKING([for getmntinfo function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, | ||||
| [ | ||||
| ok= | ||||
| if test $ac_cv_func_getmntinfo = yes; then | ||||
| AC_EGREP_HEADER(f_type;, sys/mount.h, | ||||
| ok=yes) | ||||
| fi | ||||
| test -n "$ok" \ | ||||
| && fu_cv_sys_mounted_getmntinfo=yes \ | ||||
| || fu_cv_sys_mounted_getmntinfo=no | ||||
| ]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) | ||||
| if test $fu_cv_sys_mounted_getmntinfo = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTINFO) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| # FIXME: add a test for netbsd-1.1 here | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # Ultrix | ||||
| AC_MSG_CHECKING([for getmnt function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, | ||||
| [AC_TRY_CPP([ | ||||
| #include <sys/fs_types.h> | ||||
| #include <sys/mount.h>], | ||||
| fu_cv_sys_mounted_getmnt=yes, | ||||
| fu_cv_sys_mounted_getmnt=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) | ||||
| if test $fu_cv_sys_mounted_getmnt = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # SVR2 | ||||
| AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_fread, | ||||
| [AC_TRY_CPP([#include <mnttab.h>], | ||||
| fu_cv_sys_mounted_fread=yes, | ||||
| fu_cv_sys_mounted_fread=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_fread) | ||||
| if test $fu_cv_sys_mounted_fread = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_FREAD) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) | ||||
| # FIXME -- no need to abort building the whole package | ||||
| # Cannot build mountlist.c or anything that needs its functions | ||||
| fi | ||||
|  | ||||
| AC_CHECKING(how to get filesystem space usage) | ||||
| space=no | ||||
|  | ||||
| # Perform only the link test since it seems there are no variants of the | ||||
| # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs) | ||||
| # because that got a false positive on SCO OSR5.  Adding the declaration | ||||
| # of a `struct statvfs' causes this test to fail (as it should) on such | ||||
| # systems.  That system is reported to work fine with STAT_STATFS4 which | ||||
| # is what it gets when this test fails. | ||||
| if test $space = no; then | ||||
| # SVR4 | ||||
| AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, | ||||
| [AC_TRY_LINK([#include <sys/types.h> | ||||
| #include <sys/statvfs.h>], | ||||
| [struct statvfs fsd; statvfs (0, &fsd);], | ||||
| fu_cv_sys_stat_statvfs=yes, | ||||
| fu_cv_sys_stat_statvfs=no)]) | ||||
| if test $fu_cv_sys_stat_statvfs = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATVFS) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # DEC Alpha running OSF/1 | ||||
| AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, | ||||
| [AC_TRY_RUN([ | ||||
| #include <sys/param.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/mount.h> | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| fsd.f_fsize = 0; | ||||
| return (statfs (".", &fsd, sizeof (struct statfs))); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs3_osf1=yes, | ||||
| fu_cv_sys_stat_statfs3_osf1=no, | ||||
| fu_cv_sys_stat_statfs3_osf1=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) | ||||
| if test $fu_cv_sys_stat_statfs3_osf1 = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS3_OSF1) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # AIX | ||||
| AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl | ||||
| member (AIX, 4.3BSD)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, | ||||
| [AC_TRY_RUN([ | ||||
| #ifdef HAVE_SYS_PARAM_H | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_MOUNT_H | ||||
| #include <sys/mount.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_VFS_H | ||||
| #include <sys/vfs.h> | ||||
| #endif | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| fsd.f_bsize = 0; | ||||
| return (statfs (".", &fsd)); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs2_bsize=yes, | ||||
| fu_cv_sys_stat_statfs2_bsize=no, | ||||
| fu_cv_sys_stat_statfs2_bsize=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) | ||||
| if test $fu_cv_sys_stat_statfs2_bsize = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_BSIZE) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # SVR3 | ||||
| AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs4, | ||||
| [AC_TRY_RUN([#include <sys/types.h> | ||||
| #include <sys/statfs.h> | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| return (statfs (".", &fsd, sizeof fsd, 0)); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs4=yes, | ||||
| fu_cv_sys_stat_statfs4=no, | ||||
| fu_cv_sys_stat_statfs4=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs4) | ||||
| if test $fu_cv_sys_stat_statfs4 = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS4) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # 4.4BSD and NetBSD | ||||
| AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl | ||||
| member (4.4BSD and NetBSD)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, | ||||
| [AC_TRY_RUN([#include <sys/types.h> | ||||
| #ifdef HAVE_SYS_PARAM_H | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_MOUNT_H | ||||
| #include <sys/mount.h> | ||||
| #endif | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| fsd.f_fsize = 0; | ||||
| return (statfs (".", &fsd)); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs2_fsize=yes, | ||||
| fu_cv_sys_stat_statfs2_fsize=no, | ||||
| fu_cv_sys_stat_statfs2_fsize=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) | ||||
| if test $fu_cv_sys_stat_statfs2_fsize = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_FSIZE) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # Ultrix | ||||
| AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_fs_data, | ||||
| [AC_TRY_RUN([#include <sys/types.h> | ||||
| #ifdef HAVE_SYS_PARAM_H | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_MOUNT_H | ||||
| #include <sys/mount.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_FS_TYPES_H | ||||
| #include <sys/fs_types.h> | ||||
| #endif | ||||
| int main () | ||||
| { | ||||
| struct fs_data fsd; | ||||
| /* Ultrix's statfs returns 1 for success, | ||||
| 0 for not mounted, -1 for failure.  */ | ||||
| return (statfs (".", &fsd) != 1); | ||||
| }], | ||||
| fu_cv_sys_stat_fs_data=yes, | ||||
| fu_cv_sys_stat_fs_data=no, | ||||
| fu_cv_sys_stat_fs_data=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_fs_data) | ||||
| if test $fu_cv_sys_stat_fs_data = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_FS_DATA) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # SVR2 | ||||
| AC_TRY_CPP([#include <sys/filsys.h>], | ||||
| AC_DEFINE(STAT_READ_FILSYS) space=yes) | ||||
| fi | ||||
|  | ||||
| if test -n "$list_mounted_fs" && test $space != no; then | ||||
| DF_PROG="df" | ||||
| # AC_LIBOBJ(fsusage) | ||||
| # AC_LIBOBJ(mountlist) | ||||
| fi | ||||
|  | ||||
| # Check for SunOS statfs brokenness wrt partitions 2GB and larger. | ||||
| # If <sys/vfs.h> exists and struct statfs has a member named f_spare, | ||||
| # enable the work-around code in fsusage.c. | ||||
| AC_MSG_CHECKING([for statfs that truncates block counts]) | ||||
| AC_CACHE_VAL(fu_cv_sys_truncating_statfs, | ||||
| [AC_TRY_COMPILE([ | ||||
| #if !defined(sun) && !defined(__sun) | ||||
| choke -- this is a workaround for a Sun-specific problem | ||||
| #endif | ||||
| #include <sys/types.h> | ||||
| #include <sys/vfs.h>], | ||||
| [struct statfs t; long c = *(t.f_spare);], | ||||
| fu_cv_sys_truncating_statfs=yes, | ||||
| fu_cv_sys_truncating_statfs=no, | ||||
| )]) | ||||
| if test $fu_cv_sys_truncating_statfs = yes; then | ||||
| AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS) | ||||
| fi | ||||
| AC_MSG_RESULT($fu_cv_sys_truncating_statfs) | ||||
|  | ||||
| AC_CHECKING(for AFS) | ||||
| test -d /afs && AC_DEFINE(AFS) | ||||
| ]) | ||||
|  | ||||
| dnl GNOME_SUPPORT_CHECKS | ||||
| dnl    Check for various support functions needed by the standard | ||||
| dnl    Gnome libraries.  Sets LIBOBJS, might define some macros. | ||||
| dnl    This should only be used when building the Gnome libs;  | ||||
| dnl    Gnome clients should not need this macro. | ||||
| AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|   # we need an `awk' to build `gnomesupport.h' | ||||
|   AC_REQUIRE([AC_PROG_AWK]) | ||||
|  | ||||
|   # this should go away soon | ||||
|   need_gnome_support=yes | ||||
|  | ||||
|   AC_CHECK_FUNCS(getopt_long,, | ||||
|    [AC_LIBOBJ(getopt) | ||||
|     AC_LIBOBJ(getopt1)]) | ||||
|  | ||||
|   # for `scandir' | ||||
|   AC_HEADER_DIRENT | ||||
|  | ||||
|   # copied from `configure.in' of `libiberty' | ||||
|   vars="program_invocation_short_name program_invocation_name sys_errlist" | ||||
|   for v in $vars; do | ||||
|     AC_MSG_CHECKING([for $v]) | ||||
|     AC_CACHE_VAL(gnome_cv_var_$v, | ||||
|       [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], | ||||
| 		   [eval "gnome_cv_var_$v=yes"], | ||||
| 		   [eval "gnome_cv_var_$v=no"])]) | ||||
|     if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then | ||||
|       AC_MSG_RESULT(yes) | ||||
|       n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|       AC_DEFINE_UNQUOTED($n) | ||||
|     else | ||||
|       AC_MSG_RESULT(no) | ||||
|     fi | ||||
|   done | ||||
|  | ||||
|   AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) | ||||
|   AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) | ||||
|  | ||||
|   AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize)) | ||||
|  | ||||
|   # to include `error.c' error.c has some HAVE_* checks | ||||
|   AC_CHECK_FUNCS(vprintf doprnt strerror_r) | ||||
|   # stolen from am_func_error_at_line | ||||
|   AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, | ||||
|   [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], | ||||
|               am_cv_lib_error_at_line=yes, | ||||
|               am_cv_lib_error_at_line=no)]) | ||||
|   if test $am_cv_lib_error_at_line = no; then | ||||
|     AC_LIBOBJ(error) | ||||
|   fi | ||||
|    | ||||
|   # This is required if we declare setreuid () and setregid (). | ||||
|   AC_TYPE_UID_T | ||||
|  | ||||
|   # see if we need to declare some functions.  Solaris is notorious for | ||||
|   # putting functions into the `libc' but not listing them in the headers | ||||
|   AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) | ||||
|   GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) | ||||
|   GCC_NEED_DECLARATION(scandir,[ | ||||
| #ifdef HAVE_DIRENT_H | ||||
| #include <dirent.h> | ||||
| #endif | ||||
| ]) | ||||
|  | ||||
|   AC_SUBST(need_gnome_support) | ||||
|  | ||||
|   AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) | ||||
| ]) | ||||
|  | ||||
|  | ||||
| dnl This file is intended for use both internally in libgtop and in every program | ||||
| dnl that wants to use it. | ||||
| dnl | ||||
| dnl It defines the following variables: | ||||
| dnl | ||||
| dnl * 'libgtop_sysdeps_dir'    - sysdeps dir for libgtop. | ||||
| dnl * 'libgtop_use_machine_h'  - some of system dependend parts of libgtop provide | ||||
| dnl                              their own header file. In this case we need to | ||||
| dnl                              define 'HAVE_GLIBTOP_MACHINE_H'. | ||||
| dnl * 'libgtop_need_server'    - is the server really needed? Defines 'NEED_LIBGTOP' | ||||
| dnl                              if true; defines conditional 'NEED_LIBGTOP'. | ||||
|  | ||||
| AC_DEFUN([LIBGTOP_HACKER_TESTS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_ARG_WITH(linux-table, | ||||
|       [  --with-linux-table      Use the table () function from Martin Baulig], | ||||
| 	[linux_table="$withval"],[linux_table=auto]) | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no) | ||||
| 	  elif test $linux_table = auto ; then | ||||
| 	    AC_MSG_CHECKING(for table function in Linux Kernel) | ||||
| 	    AC_TRY_RUN([ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
| #include <linux/unistd.h> | ||||
| #include <linux/table.h> | ||||
|  | ||||
| #include <syscall.h> | ||||
|  | ||||
| static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param); | ||||
|  | ||||
| int | ||||
| main (void) | ||||
| { | ||||
| 	union table tbl; | ||||
| 	int ret; | ||||
|  | ||||
| 	ret = table (TABLE_VERSION, NULL, NULL); | ||||
|  | ||||
| 	if (ret == -1) | ||||
| 		exit (-errno); | ||||
|  | ||||
| 	exit (ret < 1 ? ret : 0); | ||||
| } | ||||
| ], linux_table=yes, linux_table=no, linux_table=no) | ||||
| 	    AC_MSG_RESULT($linux_table) | ||||
| 	  fi | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_DEFINE(HAVE_LINUX_TABLE) | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	esac | ||||
| ]) | ||||
|  | ||||
| AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_SUBST(libgtop_sysdeps_dir) | ||||
| 	AC_SUBST(libgtop_use_machine_h) | ||||
| 	AC_SUBST(libgtop_need_server) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-examples, | ||||
| 	[  --with-libgtop-examples Build the libgtop examples (default=no)],[ | ||||
| 	build_examples="$withval"], [build_examples=no]) | ||||
|  | ||||
| 	AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes) | ||||
|  | ||||
| 	AC_ARG_ENABLE(hacker-mode, | ||||
| 	[  --enable-hacker-mode    Enable building of unstable sysdeps], | ||||
| 	[hacker_mode="$enableval"], [hacker_mode=no]) | ||||
|  | ||||
| 	AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes) | ||||
|  | ||||
| 	linux_table=auto | ||||
| 	if test x$hacker_mode = xyes ; then | ||||
| 	  LIBGTOP_HACKER_TESTS | ||||
| 	fi | ||||
| 	AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-smp, | ||||
| 	[  --with-libgtop-smp      Enable SMP support (default-auto)],[ | ||||
| 	libgtop_smp="$withval"],[libgtop_smp=auto]) | ||||
|  | ||||
| 	if test $libgtop_smp = auto ; then | ||||
| 	  AC_MSG_CHECKING(whether to enable SMP support) | ||||
| 	  case "$host_os" in | ||||
| 	  linux*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  aix*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  *) | ||||
| 	    libgtop_smp=no | ||||
| 	    ;; | ||||
| 	  esac | ||||
| 	  AC_MSG_RESULT($libgtop_smp) | ||||
| 	fi | ||||
|  | ||||
| 	if test $libgtop_smp = yes ; then | ||||
| 	  AC_DEFINE(HAVE_LIBGTOP_SMP) | ||||
| 	fi | ||||
|  | ||||
| 	AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes) | ||||
|  | ||||
| 	AC_MSG_CHECKING(for libgtop sysdeps directory) | ||||
|  | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  if test x$linux_table = xyes ; then | ||||
| 	    libgtop_sysdeps_dir=kernel | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	  else | ||||
| 	    libgtop_sysdeps_dir=linux | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	    libgtop_have_sysinfo=yes | ||||
| 	  fi | ||||
| 	  libgtop_need_server=no | ||||
| 	  ;; | ||||
| 	freebsd*|netbsd*|openbsd*|bsdi*) | ||||
| 	  libgtop_sysdeps_dir=freebsd | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
| 	solaris*) | ||||
| 	  libgtop_sysdeps_dir=solaris | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
|         aix*) | ||||
| 	  libgtop_sysdeps_dir=aix | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_have_sysinfo=yes | ||||
| 	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2' | ||||
|           ;; | ||||
| 	*) | ||||
| 	  if test x$hacker_mode = xyes ; then | ||||
| 	    case "$host_os" in | ||||
| 	    sunos4*) | ||||
| 	      #Please note that this port is obsolete and not working at | ||||
| 	      #all. It is only useful for people who want to fix it ... :-) | ||||
| 	      libgtop_sysdeps_dir=sun4 | ||||
| 	      libgtop_use_machine_h=yes | ||||
| 	      libgtop_need_server=yes | ||||
| 	      ;; | ||||
| 	    osf*) | ||||
| 	      libgtop_sysdeps_dir=osf1 | ||||
| 	      libgtop_use_machine_h=yes | ||||
| 	      libgtop_need_server=yes | ||||
| 	      ;; | ||||
| 	    *) | ||||
| 	      libgtop_sysdeps_dir=stub | ||||
| 	      libgtop_use_machine_h=no | ||||
| 	      libgtop_need_server=no | ||||
| 	      ;; | ||||
| 	    esac | ||||
| 	  else | ||||
| 	    libgtop_sysdeps_dir=stub | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	    libgtop_need_server=no | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	esac | ||||
|  | ||||
| 	test -z "$libgtop_postinstall" && libgtop_postinstall=: | ||||
|  | ||||
| 	AC_MSG_RESULT($libgtop_sysdeps_dir) | ||||
|  | ||||
| 	AC_SUBST(libgtop_sysdeps_dir) | ||||
| 	AC_SUBST(libgtop_postinstall) | ||||
| 	AC_SUBST(libgtop_have_sysinfo) | ||||
|  | ||||
| 	case "$host_os" in | ||||
| 	*bsd*) | ||||
| 	  AC_CHECK_HEADERS(net/if_var.h) | ||||
| 	  AC_MSG_CHECKING([for I4B]) | ||||
| 	  AC_TRY_COMPILE([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
|  | ||||
| #ifdef HAVE_NET_IF_VAR_H | ||||
| #include <net/if_var.h> | ||||
| #endif | ||||
|  | ||||
| #include <net/netisr.h> | ||||
| #include <net/route.h> | ||||
|  | ||||
| #if defined(__FreeBSD__) || defined(__NetBSD__) | ||||
| #include <net/if_sppp.h> | ||||
| #else | ||||
| #include <i4b/sppp/if_sppp.h> | ||||
| #endif | ||||
| ],[ | ||||
| 	size_t size = sizeof (struct sppp); | ||||
| ], have_i4b=yes, have_i4b=no) | ||||
| 	  AC_MSG_RESULT($have_i4b) | ||||
| 	  if test x$have_i4b = xyes; then | ||||
| 	    AC_DEFINE(HAVE_I4B) | ||||
| 	    AC_MSG_CHECKING([for I4B accounting]) | ||||
| 	    AC_TRY_COMPILE([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
|  | ||||
| #ifdef HAVE_NET_IF_VAR_H | ||||
| #include <net/if_var.h> | ||||
| #endif | ||||
|  | ||||
| #include <net/netisr.h> | ||||
| #include <net/route.h> | ||||
|  | ||||
| #if defined(__FreeBSD__) || defined(__NetBSD__) | ||||
| #include <net/if_sppp.h> | ||||
| #else | ||||
| #include <i4b/sppp/if_sppp.h> | ||||
| #endif | ||||
|  | ||||
| #include <machine/i4b_acct.h> | ||||
| ],[ | ||||
| 	size_t size = sizeof (struct i4bisppp_softc); | ||||
| ], have_i4b_acct=yes, have_i4b_acct=no) | ||||
| 	    AC_MSG_RESULT($have_i4b_acct) | ||||
| 	    if test x$have_i4b_acct = xyes ; then | ||||
| 	      AC_DEFINE(HAVE_I4B_ACCT) | ||||
| 	    else | ||||
| 	      AC_WARN([ | ||||
| *** I4B accounting disabled - you won't get any PPP statistics. | ||||
| *** Read "misc/i4b_acct.txt" in the LibGTop source directory | ||||
| *** to see how to enable it.]) | ||||
| 	    fi | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	linux*) | ||||
| 	  os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` | ||||
| 	  os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` | ||||
| 	  os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` | ||||
| 	  os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q" | ||||
|  | ||||
| 	  AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes, | ||||
| 	    have_linux_version_h=no) | ||||
|  | ||||
| 	  if test x$have_linux_version_h = xyes ; then | ||||
| 	    version_code=`cat /usr/include/linux/version.h | \ | ||||
| 	      grep \#define | grep LINUX_VERSION_CODE` | ||||
| 	    os_version_code=`echo $version_code | \ | ||||
| 	      sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'` | ||||
| 	  else | ||||
| 	    os_version_code=`echo "$os_version_expr" | dc` | ||||
| 	  fi | ||||
|  | ||||
| 	  AC_MSG_CHECKING(for Linux kernel version code) | ||||
| 	  AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code) | ||||
| 	  AC_MSG_RESULT($os_version_code) | ||||
| 	  ;; | ||||
| 	solaris*) | ||||
| 	  os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'` | ||||
| 	  os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'` | ||||
| 	  os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'` | ||||
| 	  test -z "$os_micro_version" && os_micro_version=0 | ||||
| 	  os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q" | ||||
| 	  os_version_code=`echo "$os_version_expr" | dc` | ||||
|  | ||||
| 	  AC_MSG_CHECKING(for Solaris release code) | ||||
| 	  AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code) | ||||
| 	  AC_MSG_RESULT($os_version_code) | ||||
| 	  ;; | ||||
| 	esac | ||||
|  | ||||
| 	AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir) | ||||
| 	AC_MSG_RESULT($libgtop_use_machine_h) | ||||
|  | ||||
| 	AC_MSG_CHECKING(whether we need libgtop) | ||||
| 	AC_MSG_RESULT($libgtop_need_server) | ||||
|  | ||||
| 	if test x$libgtop_need_server = xyes ; then | ||||
| 	  AC_DEFINE(NEED_LIBGTOP) | ||||
| 	fi | ||||
|  | ||||
| 	if test x$libgtop_use_machine_h = xyes ; then | ||||
| 	  AC_DEFINE(HAVE_GLIBTOP_MACHINE_H) | ||||
| 	fi | ||||
|  | ||||
| 	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes) | ||||
| ]) | ||||
|  | ||||
|    | ||||
							
								
								
									
										29
									
								
								autogen.sh
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								autogen.sh
									
									
									
									
									
								
							| @@ -14,27 +14,8 @@ PKG_NAME="Gnome Top Library" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| . $srcdir/macros/autogen.sh | ||||
|  | ||||
| echo "" | ||||
| echo " *** IMPORTANT *** " | ||||
| echo "" | ||||
| echo "This is a development version of LibGTop.  You should be using a stable" | ||||
| echo "version, which is available at ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/" | ||||
| echo "The version you just configured is meant for developers of LibGTop only:" | ||||
| echo "" | ||||
| echo "  * You should not base ANY software on this version of LibGTop." | ||||
| echo "" | ||||
| echo " *** You should be using LibGTop 1.0.x instead. ***" | ||||
| echo "" | ||||
| echo "If you are using this source tree from CVS, please run:" | ||||
| echo "	cvs update -r LIBGTOP_STABLE_1_0" | ||||
| echo "now." | ||||
| echo "" | ||||
| echo "If you're a Solaris user, you should try out the LibGTop 1.1.2 release." | ||||
| echo "You can get it from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/" | ||||
| echo "" | ||||
| echo "If you are using this source tree from CVS, you can use:" | ||||
| echo "	cvs update -r LIBGTOP_1_1_2_PATCHES" | ||||
| echo "to get a bug fixed release of 1.1.2." | ||||
| echo "" | ||||
| which gnome-autogen.sh || { | ||||
|     echo "You need to install gnome-common from the GNOME CVS" | ||||
|     exit 1 | ||||
| } | ||||
| USE_GNOME2_MACROS=1 . gnome-autogen.sh | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| @@ -1 +0,0 @@ | ||||
| SUBDIRS		= server sysdeps common | ||||
| @@ -1,7 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| @@ -1,17 +0,0 @@ | ||||
| 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,35 +0,0 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-common.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	glibtop-backend-private.h | ||||
|  | ||||
| backend_LTLIBRARIES = \ | ||||
| 	libgtop_backend_common.la | ||||
|  | ||||
| libgtop_backend_common_la_SOURCES = \ | ||||
| 	backend-common.c		\ | ||||
| 	marshal.c | ||||
|  | ||||
| libgtop_backend_common_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) -export-dynamic | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl	\ | ||||
| 	libgtop-common.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| @@ -1,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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/backend.h> | ||||
| #include <glibtop-backend-private.h> | ||||
|  | ||||
| static int | ||||
| _open_common (glibtop *, glibtop_backend *, u_int64_t, const char **); | ||||
|  | ||||
| static int | ||||
| _close_common (glibtop *, glibtop_backend *); | ||||
|  | ||||
| extern glibtop_call_vector glibtop_backend_common_call_vector; | ||||
|  | ||||
| glibtop_backend_info LibGTopBackendInfo = { | ||||
|     "glibtop-backend-common", _open_common, _close_common, | ||||
|     &glibtop_backend_common_call_vector | ||||
| }; | ||||
|  | ||||
| static int | ||||
| _open_common (glibtop *server, glibtop_backend *backend, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     backend->_priv = glibtop_calloc_r | ||||
| 	(server, 1, sizeof (glibtop_backend_private)); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_common (glibtop *server, glibtop_backend *backend) | ||||
| { | ||||
|     return -1; | ||||
| } | ||||
|  | ||||
| @@ -1,12 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-common</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -1,179 +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 <glibtop.h>'; | ||||
| print '#include <glibtop/open.h>'; | ||||
| print '#include <glibtop/xmalloc.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/backend.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop-backend-private.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|  | ||||
|     return unless $orig =~ /^@/; | ||||
|  | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $first_param_name = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n             " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); | ||||
|     } else { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); | ||||
|     } | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   if ($feature =~ /^@/) { | ||||
|     $feature =~ s/^@//; | ||||
|  | ||||
|     $call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } | ||||
| } | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_common_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| @@ -1,10 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| demarshal.c | ||||
| libgtop_server | ||||
| command.h | ||||
| @@ -1,45 +0,0 @@ | ||||
| 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,77 +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@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-server.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	glibtop-backend-private.h | ||||
|  | ||||
| backend_LTLIBRARIES = \ | ||||
| 	libgtop_backend_server.la | ||||
|  | ||||
| bin_PROGRAMS = \ | ||||
| 	@server_programs@ | ||||
|  | ||||
| EXTRA_PROGRAMS = \ | ||||
| 	libgtop_server | ||||
|  | ||||
| libgtop_backend_server_la_SOURCES = \ | ||||
| 	backend-server.c		\ | ||||
| 	marshal.c			\ | ||||
| 	command.c			\ | ||||
| 	read.c				\ | ||||
| 	read_data.c			\ | ||||
| 	write.c | ||||
|  | ||||
| libgtop_backend_server_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) -export-dynamic | ||||
|  | ||||
| libgtop_server_SOURCES = \ | ||||
| 	server.c		\ | ||||
| 	server.h		\ | ||||
| 	demarshal.c		\ | ||||
| 	version.c		\ | ||||
| 	io.c | ||||
|  | ||||
| libgtop_server_LDADD = \ | ||||
| 	$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \ | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_suid_common.la \ | ||||
| 	@LIBSUPPORT@ | ||||
|  | ||||
| if ENABLE_STATIC | ||||
| libgtop_server_LDFLAGS = -static | ||||
| endif | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c		\ | ||||
| 	demarshal.c		\ | ||||
| 	command.h | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl		\ | ||||
| 	demarshal.pl		\ | ||||
| 	command.pl		\ | ||||
| 	command.h.in		\ | ||||
| 	libgtop-server.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t demarshal.c | ||||
|  | ||||
| command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t | ||||
| 	mv tmp-t command.h | ||||
|  | ||||
| @@ -1,101 +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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/backend.h> | ||||
| #include <glibtop-backend-private.h> | ||||
|  | ||||
| static int | ||||
| _open_server (glibtop *, glibtop_backend *, u_int64_t, const char **); | ||||
|  | ||||
| static int | ||||
| _close_server (glibtop *, glibtop_backend *); | ||||
|  | ||||
| extern glibtop_call_vector glibtop_backend_server_call_vector; | ||||
|  | ||||
| glibtop_backend_info LibGTopBackendInfo = { | ||||
|     "glibtop-backend-server", _open_server, _close_server, | ||||
|     &glibtop_backend_server_call_vector | ||||
| }; | ||||
|  | ||||
| static int | ||||
| _open_server (glibtop *server, glibtop_backend *backend, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     backend->_priv = glibtop_calloc_r | ||||
| 	(server, 1, sizeof (glibtop_backend_private)); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, | ||||
| 	     backend->_priv); | ||||
|  | ||||
|     fprintf (stderr, "Opening pipe to server (%s).\n", | ||||
| 	     LIBGTOP_SERVER); | ||||
| #endif | ||||
|  | ||||
|     if (pipe (backend->_priv->input) || | ||||
| 	pipe (backend->_priv->output)) { | ||||
| 	glibtop_warn_io_r (server, "cannot make a pipe"); | ||||
| 	return -1; | ||||
|     } | ||||
|  | ||||
|     backend->_priv->pid  = fork (); | ||||
|  | ||||
|     if (backend->_priv->pid < 0) { | ||||
| 	glibtop_warn_io_r (server, "fork failed"); | ||||
| 	return -1; | ||||
|     } else if (backend->_priv->pid == 0) { | ||||
| 	close (0); close (1); | ||||
| 	close (backend->_priv->input [0]); | ||||
| 	close (backend->_priv->output [1]); | ||||
| 	dup2 (backend->_priv->input [1], 1); | ||||
| 	dup2 (backend->_priv->output [0], 0); | ||||
| 	execl (LIBGTOP_SERVER, "libgtop-server", NULL); | ||||
| 	glibtop_error_io_r (server, "execl (%s)", | ||||
| 			    LIBGTOP_SERVER); | ||||
| 	_exit (2); | ||||
|     } | ||||
|  | ||||
|     close (backend->_priv->input [1]); | ||||
|     close (backend->_priv->output [0]); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_server (glibtop *server, glibtop_backend *backend) | ||||
| { | ||||
|     kill (backend->_priv->pid, SIGKILL); | ||||
|     close (backend->_priv->input [0]); | ||||
|     close (backend->_priv->output [1]); | ||||
|  | ||||
|     backend->_priv->pid = 0; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1,108 +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 <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/error.h> | ||||
| #include <glibtop/backend.h> | ||||
|  | ||||
| #include <glibtop-backend-private.h> | ||||
|  | ||||
| #include "command.h" | ||||
|  | ||||
| void * | ||||
| glibtop_call_i (glibtop *server, glibtop_backend *backend, unsigned command, | ||||
| 		size_t send_size, const void *send_buf, | ||||
| 		size_t data_size, const void *data_buf, | ||||
| 		size_t recv_size, void *recv_ptr, | ||||
| 		int *retval_ptr) | ||||
| { | ||||
|     glibtop_command cmnd; | ||||
|     glibtop_response resp; | ||||
| #if 0 | ||||
|     int retval; | ||||
| #endif | ||||
|  | ||||
|     glibtop_init_r (&server, 0, 0); | ||||
|  | ||||
|     memset (&cmnd, 0, sizeof (glibtop_command)); | ||||
|     memset (&resp, 0, sizeof (glibtop_response)); | ||||
|  | ||||
|     cmnd.command = command; | ||||
|  | ||||
|     /* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we | ||||
|      * send it together with command, so we only need one system call instead | ||||
|      * of two. */ | ||||
|  | ||||
|     if (send_size <= _GLIBTOP_PARAM_SIZE) { | ||||
| 	memcpy (cmnd.parameter, send_buf, send_size); | ||||
| 	cmnd.param_size = send_size; | ||||
|     } else { | ||||
| 	cmnd.send_size = send_size; | ||||
|     } | ||||
|  | ||||
|     cmnd.data_size = data_size; | ||||
| 	 | ||||
|     glibtop_write_i (server, backend, sizeof (glibtop_command), &cmnd); | ||||
|  | ||||
|     if (data_size) { | ||||
| #ifdef SLAVE_DEBUG | ||||
| 	fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size); | ||||
| #endif | ||||
| 	glibtop_write_i (server, backend, data_size, data_buf); | ||||
|     } | ||||
|  | ||||
|     glibtop_read_i (server, backend, sizeof (glibtop_response), &resp); | ||||
|  | ||||
| #ifdef SLAVE_DEBUG | ||||
|     fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n", | ||||
| 	     resp.retval, resp.glibtop_errno, | ||||
| 	     (long) resp.recv_size, (long) resp.data_size, | ||||
| 	     recv_ptr, (long) recv_size); | ||||
| #endif | ||||
|      | ||||
|     if (retval_ptr) | ||||
| 	*retval_ptr = resp.glibtop_errno; | ||||
|  | ||||
|     if (resp.recv_size != recv_size) { | ||||
| 	glibtop_warn_r (server, "Expected %ld bytes, but got %ld.", | ||||
| 			(long) recv_size, (long) resp.recv_size); | ||||
| 	return NULL; | ||||
|     } | ||||
|  | ||||
|     if (recv_ptr) | ||||
| 	glibtop_read_i (server, backend, recv_size, recv_ptr); | ||||
|  | ||||
|     if (resp.data_size) { | ||||
| 	void *ptr = glibtop_malloc_r (server, resp.data_size); | ||||
|  | ||||
| 	glibtop_read_i (server, backend, resp.data_size, ptr); | ||||
|  | ||||
| 	return ptr; | ||||
|     } | ||||
|  | ||||
|     return NULL; | ||||
| } | ||||
| @@ -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,382 +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); | ||||
|    | ||||
|   print $total_code; | ||||
| } | ||||
|  | ||||
| $func_decl_code = sprintf | ||||
|   (qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]); | ||||
|  | ||||
| $switch_body_code = ''; | ||||
|  | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   $switch_body_code .= sprintf | ||||
|     (qq[\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n], | ||||
|      &toupper ($feature), $feature); | ||||
| } | ||||
|  | ||||
| $switch_code = sprintf | ||||
|   (qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code); | ||||
|  | ||||
| $total_code = sprintf | ||||
|   (qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code); | ||||
|  | ||||
| print $total_code; | ||||
|  | ||||
| 1; | ||||
| @@ -1,55 +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_PRIVATE_H__ | ||||
| #define __GLIBTOP_BACKEND_PRIVATE_H__ | ||||
|  | ||||
| struct _glibtop_backend_private | ||||
| { | ||||
|     u_int64_t flags; | ||||
|     int input [2];		/* Pipe client <- server */ | ||||
|     int output [2];		/* Pipe client -> server */ | ||||
|     pid_t pid;			/* PID of the server */ | ||||
| }; | ||||
|  | ||||
| void * | ||||
| glibtop_call_i (glibtop *server, glibtop_backend *backend, 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 (glibtop *server, glibtop_backend *backend, | ||||
| 		size_t size, void *buf); | ||||
|  | ||||
| void * | ||||
| glibtop_read_data_i (glibtop *server, glibtop_backend *backend); | ||||
|  | ||||
| void | ||||
| glibtop_write_i (glibtop *server, glibtop_backend *backend, | ||||
| 		 size_t size, const void *buf); | ||||
|  | ||||
| #endif | ||||
| @@ -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,12 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-server</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -1,309 +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 <glibtop.h>'; | ||||
| print '#include <glibtop/open.h>'; | ||||
| print '#include <glibtop/xmalloc.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include "command.h"'; | ||||
| print '#include <glibtop/backend.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop-backend-private.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|     return if $orig =~ /^@/; | ||||
|  | ||||
|     $orig_retval = $retval; | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $local_var_init_code = "\t/* variable initialization */\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; | ||||
|     $local_var_init_code  .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	  "(char *) _LIBGTOP_SEND_buf;\n"; | ||||
|     $marshal_code = "\t/* marshal start */\n"; | ||||
|     $marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n"; | ||||
|     $first_param_name = ''; | ||||
|     $size_code = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n            " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|  | ||||
| 	$size_code .= "\t_LIBGTOP_SEND_len += "; | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $size_code .= sprintf ("sizeof (size_t)"); | ||||
| 	} else { | ||||
| 	  $size_code .= sprintf ("sizeof (%s)", $c_type); | ||||
| 	} | ||||
| 	$size_code .= ";\n"; | ||||
|  | ||||
| 	if (defined $sizeof_funcs->{$type}) { | ||||
| 	  $size_code .= "\t_LIBGTOP_DATA_len += "; | ||||
| 	  $size_code .= $sizeof_funcs->{$type}->($fields[$field]); | ||||
| 	  $size_code .= ";\n"; | ||||
| 	} | ||||
|  | ||||
| 	$marshal_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	  "(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n"; | ||||
|  | ||||
| 	if (defined $marshal_funcs->{$type}) { | ||||
| 	  $marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t"); | ||||
| 	} else { | ||||
| 	  $marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n", | ||||
| 				    '&'.$fields[$field], "sizeof ($c_type)"); | ||||
| 	} | ||||
|  | ||||
| 	$marshal_code .= "\t_LIBGTOP_SEND_offset += "; | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $marshal_code .= sprintf ("sizeof (size_t)"); | ||||
| 	} else { | ||||
| 	  $marshal_code .= sprintf ("sizeof (%s)", $c_type); | ||||
| 	} | ||||
| 	$marshal_code .= ";\n"; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $local_var_code = ""; | ||||
|     $local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n"; | ||||
|     $local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n"; | ||||
|     if ($need_temp_len) { | ||||
|       $local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n"; | ||||
|     } | ||||
|     $local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n"; | ||||
|     $local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n"; | ||||
|     if ($retval !~ /^void$/) { | ||||
|       $local_var_code .= sprintf ("\t%s retval = (%s) 0;\n", | ||||
| 				  $retval, $retval); | ||||
|     } | ||||
|  | ||||
|     $total_code = ''; | ||||
|  | ||||
|     $send_buf_code = "\t/* send buffer */\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_SEND_buf = "; | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)"; | ||||
|     } else { | ||||
|       $send_buf_code .= '(void *) &'.$first_param_name; | ||||
|     } | ||||
|     $send_buf_code .= ";\n\n"; | ||||
|  | ||||
|     $send_buf_code .= "\t/* data buffer */\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_DATA_buf = "; | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)"; | ||||
|     } else { | ||||
|       $send_buf_code .= 'NULL'; | ||||
|     } | ||||
|     $send_buf_code .= ";\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n"; | ||||
|  | ||||
|     $call_code = ''; | ||||
|     $call_code .= sprintf ("\t%sglibtop_call_i (server, backend, GLIBTOP_CMND_%s,\n", | ||||
| 			   $call_prefix, &toupper($feature)); | ||||
|     $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space, | ||||
| 			   "_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf"); | ||||
|     $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space, | ||||
| 			   "_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf"); | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space); | ||||
|     } elsif ($line_fields[3] eq  'array') { | ||||
|       $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n", | ||||
| 			     $call_prefix_space); | ||||
|     } else { | ||||
|       $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n", | ||||
| 			     $call_prefix_space, $feature); | ||||
|     } | ||||
|     $call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param); | ||||
|  | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_free_code = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n"; | ||||
|       $send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n"; | ||||
|     } else { | ||||
|       $send_buf_free_code = ""; | ||||
|     } | ||||
|  | ||||
|     if (!($size_code eq '')) { | ||||
|       $size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code); | ||||
|     } | ||||
|  | ||||
|     if ($orig_retval eq 'pointer(string)') { | ||||
|       $call_code .= "\n"; | ||||
|       $local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n"; | ||||
|       $local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|       $local_var_code .= "\tint i;\n"; | ||||
|       $call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n"; | ||||
|       $call_code .= "\tfor (i = 0; i < array->number; i++)\n"; | ||||
|       $call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n"; | ||||
|       $call_code .= "\tptrlist [array->number] = NULL;\n\n"; | ||||
|       $call_code .= "\tglibtop_free_r (server, retval);\n"; | ||||
|       $call_code .= "\tretval = ptrlist;\n"; | ||||
|     } | ||||
|  | ||||
|     $total_code .= sprintf ("%s%s\n%s\n%s\n%s\n", | ||||
| 			    $size_code, $send_buf_code, $marshal_code, | ||||
| 			    $call_code, $send_buf_free_code); | ||||
|  | ||||
|     $return_code = ''; | ||||
|     if ($retval !~ /^void$/) { | ||||
|       $return_code .= "\treturn retval;\n"; | ||||
|     } else { | ||||
|       $return_code .= "\treturn;\n"; | ||||
|     } | ||||
|  | ||||
|     $total_code .= $return_code; | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl, | ||||
| 			   $local_var_code, $local_var_init_code, | ||||
| 			   $total_code); | ||||
|  | ||||
|  | ||||
|     $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", | ||||
| 			   &toupper($feature), $total_code, | ||||
| 			   &toupper($feature)); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|  | ||||
|   if ($orig =~ /^@/) { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf | ||||
|       (qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
| } | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_server_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| @@ -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,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,7 +0,0 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| @@ -1,28 +0,0 @@ | ||||
| 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,35 +0,0 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-sysdeps.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	glibtop-backend-private.h | ||||
|  | ||||
| backend_LTLIBRARIES = \ | ||||
| 	libgtop_backend_sysdeps.la | ||||
|  | ||||
| libgtop_backend_sysdeps_la_SOURCES = \ | ||||
| 	backend-sysdeps.c		\ | ||||
| 	marshal.c | ||||
|  | ||||
| libgtop_backend_sysdeps_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) -export-dynamic | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl	\ | ||||
| 	libgtop-sysdeps.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| @@ -1,77 +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 <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/backend.h> | ||||
| #include <glibtop-backend-private.h> | ||||
|  | ||||
| static int | ||||
| _open_sysdeps (glibtop *, glibtop_backend *, u_int64_t, const char **); | ||||
|  | ||||
| static int | ||||
| _close_sysdeps (glibtop *, glibtop_backend *); | ||||
|  | ||||
| extern glibtop_call_vector glibtop_backend_sysdeps_call_vector; | ||||
|  | ||||
| glibtop_backend_info LibGTopBackendInfo = { | ||||
|     "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps, | ||||
|     &glibtop_backend_sysdeps_call_vector | ||||
| }; | ||||
|  | ||||
| static int | ||||
| _open_sysdeps (glibtop *server, glibtop_backend *backend, | ||||
| 	       u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     glibtop_init_func_t *init_fkt; | ||||
|  | ||||
|     backend->_priv = glibtop_calloc_r | ||||
| 	(server, 1, sizeof (glibtop_backend_private)); | ||||
|  | ||||
|     /* Do the initialization, but only if not already initialized. */ | ||||
|  | ||||
|     if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) { | ||||
| 	glibtop_open_s (server, "glibtop", features, 0); | ||||
|  | ||||
| 	for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++) | ||||
| 	    (*init_fkt) (server); | ||||
|  | ||||
| 	server->sysdeps.pointer_size = sizeof (void*)*8; | ||||
| 		 | ||||
| 	server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS; | ||||
|     } | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_sysdeps (glibtop *server, glibtop_backend *backend) | ||||
| { | ||||
|     return -1; | ||||
| } | ||||
|  | ||||
| @@ -1,12 +0,0 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-sysdeps</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
| @@ -1,199 +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 <glibtop.h>'; | ||||
| print '#include <glibtop/open.h>'; | ||||
| print '#include <glibtop/xmalloc.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/backend.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop-backend-private.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|  | ||||
|     return if $orig =~ /^@/; | ||||
|  | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $first_param_name = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n             " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); | ||||
|     } else { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); | ||||
|     } | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); | ||||
|  | ||||
|     $total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n", | ||||
| 			   &toupper($feature), $total_code, | ||||
| 			   &toupper($feature)); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $init_hook_code = ''; | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   if ($feature =~ /^@/) { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf | ||||
|       (qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
|  | ||||
|   if (!($feature =~ /^@/)) { | ||||
|     $init_hook_code .= sprintf | ||||
|       (qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
| } | ||||
| $init_hook_code .= sprintf (qq[\tNULL\n]); | ||||
|  | ||||
| chop $init_hook_code; | ||||
| chop $call_vector_code; | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| print 'glibtop_init_func_t _glibtop_init_hook_s [] = {'; | ||||
| print $init_hook_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
							
								
								
									
										425
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										425
									
								
								configure.in
									
									
									
									
									
								
							| @@ -1,29 +1,28 @@ | ||||
| dnl | ||||
| dnl Configure script for LibGTop | ||||
| dnl Configure script for the Gnome library | ||||
| dnl | ||||
|  | ||||
| AC_INIT(copyright.txt) | ||||
| AM_CONFIG_HEADER(config.h) | ||||
| AC_CANONICAL_SYSTEM | ||||
|  | ||||
| dnl This is required at several places | ||||
| AC_CHECK_PROG(ac_dc_found, dc, yes, no) | ||||
| if test x$ac_dc_found != xyes ; then | ||||
| AC_MSG_ERROR([ | ||||
| *** The "dc" utility was not found on your system. | ||||
| *** | ||||
| *** When using RedHat Linux, you need to install the "bc" package. | ||||
| *** | ||||
| *** It is now part of the "bc" package, so you should look at | ||||
| *** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself. | ||||
| *** | ||||
| *** Other systems and distributions may also have it in their "bc" package, | ||||
| *** so if there's no "dc" one, please look for "bc". | ||||
| ***]) | ||||
| fi | ||||
| LIBGTOP_MAJOR_VERSION=2 | ||||
| LIBGTOP_MINOR_VERSION=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 | ||||
|  | ||||
| . $srcdir/LIBGTOP-VERSION | ||||
| AM_INIT_AUTOMAKE($PACKAGE, $VERSION) | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| LIBGTOP_VERSION_SUFFIX= | ||||
|  | ||||
| # Increase each time you change the client/server protocol. | ||||
| LIBGTOP_SERVER_VERSION=5 | ||||
|  | ||||
| # Version code calculation | ||||
| LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION` | ||||
|  | ||||
| AC_SUBST(LIBGTOP_MAJOR_VERSION) | ||||
| AC_SUBST(LIBGTOP_MINOR_VERSION) | ||||
| @@ -33,25 +32,26 @@ AC_SUBST(LIBGTOP_BINARY_AGE) | ||||
| AC_SUBST(LIBGTOP_SERVER_VERSION) | ||||
| AC_SUBST(LIBGTOP_VERSION) | ||||
| AC_SUBST(LIBGTOP_VERSION_CODE) | ||||
| AC_SUBST(LIBGTOP_VERSION_SUFFIX) | ||||
|  | ||||
| # libtool versioning | ||||
| LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION | ||||
| LT_CURRENT=`expr $LIBGTOP_MICRO_VERSION - $LIBGTOP_INTERFACE_AGE` | ||||
| LT_REVISION=$LIBGTOP_INTERFACE_AGE | ||||
| LT_AGE=`expr $LIBGTOP_BINARY_AGE - $LIBGTOP_INTERFACE_AGE` | ||||
| LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} -release ${LT_RELEASE}' | ||||
| LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}' | ||||
| AC_SUBST(LT_VERSION_INFO) | ||||
| AC_SUBST(LT_RELEASE) | ||||
| AC_SUBST(LT_CURRENT) | ||||
| AC_SUBST(LT_REVISION) | ||||
| AC_SUBST(LT_AGE) | ||||
|  | ||||
| AM_ACLOCAL_INCLUDE(. macros) | ||||
| ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ." | ||||
|  | ||||
| AC_ISC_POSIX | ||||
| AC_PROG_CC | ||||
| AC_STDC_HEADERS | ||||
| AC_ARG_PROGRAM | ||||
| dnl AC_ARG_PROGRAM | ||||
|  | ||||
| dnl We need this at some places. | ||||
| libgtop_top_builddir=`pwd` | ||||
| @@ -70,10 +70,8 @@ AC_CHECK_TOOL(CC,gcc) | ||||
| AC_CHECK_TOOL(RANLIB,ranlib) | ||||
| AC_CHECK_TOOL(AS,as) | ||||
| AC_CHECK_TOOL(AR,ar) | ||||
| AC_CHECK_TOOL(NM,nm) | ||||
|  | ||||
| NM=`which $NM` | ||||
| export CC CXX RANLIB LD AS AR NM | ||||
| export CC CXX RANLIB LD AS AR | ||||
|  | ||||
| AC_PROG_INSTALL | ||||
| AC_PROG_LN_S | ||||
| @@ -84,52 +82,51 @@ export cross_compiling | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| dnl Let the user enable compiler warnings | ||||
| GNOME_COMPILE_WARNINGS | ||||
| dnl GNOME_COMPILE_WARNINGS | ||||
|  | ||||
| GNOME_INIT_HOOK(gnome_found=yes) | ||||
| dnl GNOME_INIT_HOOK(gnome_found=yes) | ||||
|  | ||||
| if test "x$gnome_found" != xyes; then | ||||
|   if test "x$want_gnome" != xno ; then | ||||
|     AC_MSG_ERROR([ | ||||
| *** GNOME was not found on this system. *** | ||||
| 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 | ||||
|  | ||||
| *** If you want to use LibGTop without GNOME, you need | ||||
| *** to give configure the --without-gnome parameter. | ||||
| ]) | ||||
|   else | ||||
|     AC_DEFINE(WITHOUT_GNOME) | ||||
|   fi | ||||
|   GNOME_SUPPORT_CHECKS | ||||
| else | ||||
|   if test "x$want_gnome" != xno ; then | ||||
|     AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
|   else | ||||
|     GNOME_SUPPORT_CHECKS | ||||
|   fi | ||||
| fi | ||||
| AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
|  | ||||
| AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) | ||||
|  | ||||
| GNOME_LIBGTOP_SYSDEPS | ||||
| GNOME_LIBGTOP_TYPES | ||||
|  | ||||
| sysdeps_dir="$libgtop_sysdeps_dir" | ||||
| sysdeps_name="$libgtop_sysdeps_name" | ||||
| AC_SUBST(sysdeps_dir) | ||||
| AC_SUBST(sysdeps_name) | ||||
| dnl AC_ARG_WITH(libgtop-guile, | ||||
| dnl [  --with-libgtop-guile    Build the libgtop guile interface (default=no)], | ||||
| dnl [build_guile="$withval"], [build_guile=yes]) | ||||
|  | ||||
| AC_MSG_CHECKING(for sysdeps_init_file) | ||||
| sysdeps_init_file='sysdeps-init-'"$libgtop_sysdeps_name"'.c' | ||||
| AC_SUBST(sysdeps_init_file) | ||||
| AC_MSG_RESULT($sysdeps_init_file) | ||||
|  | ||||
| LIBGTOP_XML_CHECK | ||||
| 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 | ||||
| @@ -142,17 +139,55 @@ 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 | ||||
|  | ||||
| AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop), | ||||
|              [gmodule]) | ||||
| 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. | ||||
| dnl GNOME_SUPPORT_CHECKS | ||||
| GNOME_SUPPORT_CHECKS | ||||
|  | ||||
| dnl Checks for typedefs, structures, and compiler characteristics. | ||||
| AC_C_CONST | ||||
| @@ -186,6 +221,10 @@ 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) | ||||
| @@ -213,18 +252,18 @@ AC_CHECK_LIB(kvm, kvm_open,[ | ||||
| dnl For DEC OSF1 | ||||
| AC_CHECK_LIB(mach, vm_statistics) | ||||
|  | ||||
| dnl For some broken libc5 systems (Debian 1.3)                                                            | ||||
| saved_CFLAGS=$CFLAGS                                                                                      | ||||
| CFLAGS="$CFLAGS -D_GNU_SOURCE"                                                                            | ||||
| dnl For some broken libc5 systems (Debian 1.3) | ||||
| saved_CFLAGS=$CFLAGS | ||||
| CFLAGS="$CFLAGS -D_GNU_SOURCE" | ||||
| GCC_NEED_DECLARATION(program_invocation_name, [                            | ||||
| #include <errno.h>                                                                                        | ||||
| #include <stdio.h>                                                                                        | ||||
| #include <stdlib.h>                                                                                       | ||||
| #include <string.h>                                                                                       | ||||
| ])                                                                                                        | ||||
| CFLAGS=$saved_CFLAGS                                                                                      | ||||
|                                                                                                           | ||||
| dnl Check for Internet sockets. | ||||
| #include <errno.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| ]) | ||||
|  | ||||
| CFLAGS=$saved_CFLAGS | ||||
|  | ||||
| AC_CHECK_FUNC(socket, | ||||
|  [AC_CHECK_HEADER(netinet/in.h, | ||||
|    [AC_CHECK_HEADER(arpa/inet.h, [ | ||||
| @@ -246,9 +285,13 @@ AC_TYPE_SIGNAL | ||||
| AC_FUNC_STRFTIME | ||||
| AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) | ||||
|  | ||||
| dnl ## all 'es_??' are only needed for format numbers different of 'es' | ||||
| ALL_LINGUAS="da de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr gl ja ko nl no pl pt_BR sv uk" | ||||
| AM_GNOME_GETTEXT | ||||
| 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 | ||||
|  | ||||
| @@ -267,35 +310,32 @@ 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]], libgtop_enable_debug=yes, libgtop_enable_debug=no) | ||||
| AC_ARG_ENABLE(debug, [  --enable-debug          turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),) | ||||
| AC_ARG_ENABLE(fatal-warnings, [  --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),) | ||||
| AC_ARG_ENABLE(glib-malloc, [  --enable-glib-malloc    use glib's malloc [default=auto]], libgtop_enable_glib_malloc=yes,) | ||||
|  | ||||
| if test "x$libgtop_enable_glib_malloc" != xyes ; then | ||||
|   if test "x$libgtop_enable_debug" = xyes ; then | ||||
|     libgtop_enable_glib_malloc=yes | ||||
|   else | ||||
|     libgtop_enable_glib_malloc=no | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| if test "x$libgtop_enable_glib_malloc" = xyes ; then | ||||
|   AC_DEFINE(LIBGTOP_USE_GLIB_MALLOC) | ||||
| fi | ||||
|  | ||||
| if test "x$libgtop_enable_debug" = xyes ; then | ||||
|   AC_DEFINE(LIBGTOP_ENABLE_DEBUG) | ||||
| fi | ||||
|  | ||||
| if test "x$gnome_found" = xyes ; then | ||||
|   LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport" | ||||
|   SUPPORTINCS="$GNOME_INCLUDEDIR" | ||||
| else | ||||
|   LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la' | ||||
|   LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la' | ||||
|   SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support' | ||||
| fi | ||||
|  | ||||
| @@ -311,7 +351,7 @@ AC_SUBST(SUPPORTINCS) | ||||
|  | ||||
| dnl These definitions are expanded in make. | ||||
| LIBGTOP_LIBS='-L$(libdir)' | ||||
| LIBGTOP_INCS='-I$(includedir) -I$(pkglibdir)/include' | ||||
| LIBGTOP_INCS='-I$(includedir)/libgtop-2.0' | ||||
|  | ||||
| if test x$libgtop_use_machine_h = xyes ; then | ||||
|   LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H" | ||||
| @@ -331,43 +371,79 @@ 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_server' | ||||
| LIBGTOP_SERVER='$(bindir)/libgtop_server2' | ||||
|  | ||||
| LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS $LIBGTOP_XML_LIB" | ||||
| sysdeps_dir="$libgtop_sysdeps_dir" | ||||
| AC_SUBST(sysdeps_dir) | ||||
|  | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop_sysdeps -lgtop_common -lgtop" | ||||
| 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 | ||||
|  | ||||
| LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names" | ||||
| 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) | ||||
|  | ||||
| LIBGTOP_BACKEND_DIR="\$(datadir)/libgtop/backends" | ||||
| 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 -I\$(top_builddir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\" -DLIBGTOP_BACKEND_DIR=\"'"$LIBGTOP_BACKEND_DIR"'\"' | ||||
| 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(LIBGTOP_BACKEND_DIR) | ||||
|  | ||||
| AC_SUBST(GLIB_LIBS) | ||||
| AC_SUBST(LIBGTOP_LIBS) | ||||
| AC_SUBST(LIBGTOP_INCS) | ||||
| AC_SUBST(LIBGTOP_NAMES_LIBS) | ||||
| AC_SUBST(LIBGTOP_NAMES_INCS) | ||||
| AC_SUBST(LIBGTOP_GUILE_LIBS) | ||||
| AC_SUBST(LIBGTOP_GUILE_INCS) | ||||
| AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS) | ||||
| AC_SUBST(LIBGTOP_GUILE_NAMES_INCS) | ||||
| AC_SUBST(LIBGTOP_BINDIR) | ||||
| AC_SUBST(LIBGTOP_SERVER) | ||||
|  | ||||
| if test x$libgtop_need_server = xyes ; then | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la" | ||||
|    server_programs='libgtop_server' | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la" | ||||
|    server_programs='libgtop_server2' | ||||
| else | ||||
|    sysdeps_suid_lib= | ||||
|    server_programs= | ||||
| @@ -375,150 +451,18 @@ fi | ||||
| AC_SUBST(sysdeps_suid_lib) | ||||
| AC_SUBST(server_programs) | ||||
|  | ||||
|  | ||||
| dnl The following one is copied from glib/configure.in | ||||
|  | ||||
| AC_OUTPUT_COMMANDS([ | ||||
|  | ||||
| ## Generate `glibconfig.h' in two cases | ||||
| ## 1. `config.status' is run either explicitly, or via configure. | ||||
| ##     Esp. not when it is run in `Makefile' to generate makefiles and | ||||
| ##     config.h | ||||
| ## 2. CONFIG_OTHER is set explicitly | ||||
| ## | ||||
| ## Case 1 is difficult.  We know that `automake' sets one of | ||||
| ## CONFIG_FILES or CONFIG_HEADERS to empty.  This heuristic works | ||||
| ## only when AM_CONFIG_HEADER is set, however. | ||||
|  | ||||
| if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then | ||||
|   # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1 | ||||
|   CONFIG_OTHER=${CONFIG_OTHER:-glibtop-config.h} | ||||
| fi | ||||
| case "$CONFIG_OTHER" in | ||||
| *glibtop-config.h*) | ||||
| 	echo creating glibtop-config.h | ||||
| 	outfile=glibtop-config.h-tmp | ||||
| 	cat > $outfile <<\_______EOF | ||||
| /* glibtop-config.h | ||||
|  * | ||||
|  * This is a generated file.  Please modify `configure.in' | ||||
|  */ | ||||
|  | ||||
| #ifndef GLIBTOP_CONFIG_H | ||||
| #define GLIBTOP_CONFIG_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif /* __cplusplus */ | ||||
| _______EOF | ||||
|  | ||||
| 	did_typedefs=no | ||||
|  | ||||
| 	if test x$glibtop_uint64_t != xyes ; then | ||||
| 	  did_typedefs=yes | ||||
| 	  cat >> $outfile <<\_______EOF | ||||
|  | ||||
| #ifndef u_int64_t | ||||
| typedef unsigned long long int u_int64_t; | ||||
| #endif | ||||
| _______EOF | ||||
| 	fi | ||||
|  | ||||
| 	if test x$glibtop_int64_t != xyes ; then | ||||
| 	  did_typedefs=yes | ||||
| 	  cat >> $outfile <<\_______EOF | ||||
|  | ||||
| #ifndef int64_t | ||||
| typedef signed long long int int64_t; | ||||
| #endif | ||||
| _______EOF | ||||
| 	fi | ||||
|  | ||||
| 	if test x$did_typedefs = xyes ; then | ||||
| 	  cat >>$outfile <<_______EOF | ||||
|  | ||||
| /* | ||||
|  * NOTE:  If your application checks for "u_int64_t" or "int64_t" in its own | ||||
|  *        config.h, you must not include it after any of the LibGTop headers. | ||||
|  */ | ||||
| _______EOF | ||||
| 	fi | ||||
|  | ||||
| 	cat >>$outfile <<_______EOF | ||||
|  | ||||
| /* Define if we need the LibGTop server. */ | ||||
| _______EOF | ||||
|  | ||||
| 	if test x$glibtop_need_libgtop = xyes ; then | ||||
| 	  echo '#define NEED_LIBGTOP 1' >> $outfile | ||||
| 	else | ||||
| 	  echo '#undef NEED_LIBGTOP' >> $outfile | ||||
| 	fi | ||||
|  | ||||
| 	cat >>$outfile <<_______EOF | ||||
|  | ||||
| /* Define if LibGTop has support for multiple processors. */ | ||||
| _______EOF | ||||
|  | ||||
| 	if test x$glibtop_have_smp = xyes ; then | ||||
| 	  echo '#define HAVE_LIBGTOP_SMP 1' >> $outfile | ||||
| 	else | ||||
| 	  echo '#undef HAVE_LIBGTOP_SMP' >> $outfile | ||||
| 	fi | ||||
|  | ||||
| 	cat >>$outfile <<_______EOF | ||||
|  | ||||
| /* LibGTop major, minor and micro version. */ | ||||
| #define LIBGTOP_MAJOR_VERSION $libgtop_major_version | ||||
| #define LIBGTOP_MINOR_VERSION $libgtop_minor_version | ||||
| #define LIBGTOP_MICRO_VERSION $libgtop_micro_version | ||||
|  | ||||
| /* LibGTop version and numerical version code ("1.234.567" -> 1234567). */ | ||||
| #define LIBGTOP_VERSION "$libgtop_version" | ||||
| #define LIBGTOP_VERSION_CODE $libgtop_version_code | ||||
|  | ||||
| /* LibGTop server version, increased each time the protocol changes. */ | ||||
| #define LIBGTOP_SERVER_VERSION $libgtop_server_version | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif /* __cplusplus */ | ||||
|  | ||||
| #endif /* GLIBCONFIG_H */ | ||||
| _______EOF | ||||
|  | ||||
| 	if cmp -s $outfile glibtop-config.h; then | ||||
| 	  echo glibtop-config.h is unchanged | ||||
| 	  rm -f $outfile | ||||
| 	else | ||||
| 	  mv $outfile glibtop-config.h | ||||
| 	fi ;; | ||||
| esac | ||||
| ],[ | ||||
| glibtop_uint64_t=$ac_cv_type_u_int64_t | ||||
| glibtop_int64_t=$ac_cv_type_int64_t | ||||
| libgtop_major_version=$LIBGTOP_MAJOR_VERSION | ||||
| libgtop_minor_version=$LIBGTOP_MINOR_VERSION | ||||
| libgtop_micro_version=$LIBGTOP_MICRO_VERSION | ||||
| libgtop_version_code=$LIBGTOP_VERSION_CODE | ||||
| libgtop_server_version=$LIBGTOP_SERVER_VERSION | ||||
| libgtop_version=$LIBGTOP_VERSION | ||||
| glibtop_need_libgtop=$libgtop_need_server | ||||
| glibtop_have_smp=$libgtop_smp | ||||
| ]) | ||||
|  | ||||
|  | ||||
| AC_OUTPUT([ | ||||
| Makefile | ||||
| libgtop.spec | ||||
| po/Makefile.in | ||||
| intl/Makefile | ||||
| misc/Makefile | ||||
| include/Makefile | ||||
| include/glibtop/Makefile | ||||
| sysdeps/Makefile | ||||
| sysdeps/common/Makefile | ||||
| sysdeps/names/Makefile | ||||
| sysdeps/guile/Makefile | ||||
| sysdeps/guile/names/Makefile | ||||
| sysdeps/stub/Makefile | ||||
| sysdeps/stub_suid/Makefile | ||||
| sysdeps/sun4/Makefile | ||||
| @@ -527,14 +471,13 @@ sysdeps/linux/Makefile | ||||
| sysdeps/kernel/Makefile | ||||
| sysdeps/freebsd/Makefile | ||||
| sysdeps/solaris/Makefile | ||||
| sysdeps/aix/Makefile | ||||
| src/Makefile | ||||
| src/daemon/Makefile | ||||
| src/inodedb/Makefile | ||||
| scripts/Makefile | ||||
| backends/Makefile | ||||
| backends/server/Makefile | ||||
| backends/sysdeps/Makefile | ||||
| backends/common/Makefile | ||||
| lib/Makefile | ||||
| examples/Makefile | ||||
| doc/Makefile | ||||
| support/Makefile | ||||
| macros/Makefile]) | ||||
| libgtop-2.0.pc | ||||
| ]) | ||||
|   | ||||
							
								
								
									
										7
									
								
								debian/README.Debian
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								debian/README.Debian
									
									
									
									
										vendored
									
									
								
							| @@ -1,10 +1,9 @@ | ||||
| LibGTop CVS snapshots for Debian | ||||
| -------------------------------- | ||||
|  | ||||
| This is a snapshot of LibGTop from the main CVS archive, built into a | ||||
| Debian package. This package is not guaranteed to work, as it was | ||||
| built automatically. You're on your own, mister or missus! | ||||
| This is a debian package made from a stable release of LibGTop, but it | ||||
| should be considered "unofficial" since I'm not a Debian Maintainer. | ||||
|  | ||||
|  | ||||
| Martin Baulig <martin@home-of-linux.org>, Fri, 14 Jan 2000 20:20:13 +0100 | ||||
| Martin Baulig <martin@home-of-linux.org>, Wed, 16 Feb 2000 16:40:50 +0100 | ||||
|  | ||||
|   | ||||
							
								
								
									
										11
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,10 @@ | ||||
| libgtop (1.1.4-1) unstable; urgency=low | ||||
|   * New upstream source | ||||
|   * Non-maintainer upload; this is an unstable developer's snapshot from | ||||
|     the GNOME CVS tree. | ||||
| libgtop (1.0.7-1) unstable; urgency=low | ||||
|   * New upstream source (1.0.7 "Copenhagen" release) | ||||
|   * Non-maintainer upload; since I'm not a Debian maintainer, this is some | ||||
|     kind of "unofficial" debian package for LibGTop 1.0.7 - but I think it | ||||
|     can be considered stable and working. | ||||
|  | ||||
|  -- Martin Baulig <martin@home-of-linux.org>  Fri, 14 Jan 2000 15:32:48 +0100 | ||||
|  -- Martin Baulig <martin@home-of-linux.org>  Wed, 16 Feb 2000 16:40:50 +0100 | ||||
|  | ||||
| libgtop (1.0.6-1) unstable; urgency=low | ||||
|   * New upstream source | ||||
|   | ||||
							
								
								
									
										4
									
								
								debian/control.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								debian/control.in
									
									
									
									
										vendored
									
									
								
							| @@ -4,7 +4,7 @@ Section: libs | ||||
| Priority: optional | ||||
| Standards-Version: 3.0.0 | ||||
|  | ||||
| Package: libgtop2@SUFFIX@ | ||||
| Package: libgtop1@SUFFIX@ | ||||
| Architecture: any | ||||
| Section: libs | ||||
| Depends: ${shlibs:Depends} | ||||
| @@ -20,7 +20,7 @@ Description: Portable system access library (part of Gnome) | ||||
| Package: libgtop-dev@SUFFIX@ | ||||
| Architecture: any | ||||
| Section: devel | ||||
| Depends: libgtop2@SUFFIX@ (= ${Source-Version}) | ||||
| Depends: libgtop1@SUFFIX@ (= ${Source-Version}) | ||||
| Description: Dev libraries for the portable system access library (part of Gnome) | ||||
|  Gnome is the "GNU Network Object Model Environment" | ||||
|  . | ||||
|   | ||||
							
								
								
									
										2
									
								
								debian/debconfigure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/debconfigure
									
									
									
									
										vendored
									
									
								
							| @@ -93,7 +93,7 @@ do | ||||
|        sed "s,%$debtype>,," | sed '/^%/d' > $tofile | ||||
| done | ||||
|  | ||||
| for postinst in libgtop2$pkgsuffix | ||||
| for postinst in libgtop1$pkgsuffix | ||||
| do | ||||
|  | ||||
| cat > $postinst.postinst <<EOF | ||||
|   | ||||
							
								
								
									
										1
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
								
							| @@ -15,7 +15,6 @@ | ||||
| @PREFIX@/lib/libgtop_suid_common.so | ||||
| @PREFIX@/lib/libgtop_sysdeps.so | ||||
| @PREFIX@/lib/libgtop-features.def | ||||
| @PREFIX@/lib/libgtop-structures.def | ||||
| @PREFIX@/lib/libgtop/include/*.h | ||||
| @PREFIX@/include/glibtop/*.h | ||||
| @PREFIX@/include/glibtop.h | ||||
|   | ||||
| @@ -2,4 +2,4 @@ | ||||
| The Debian package of libgtop, a GNOME library. | ||||
| 
 | ||||
| --  | ||||
| Ian Lynagh <ian@lynagh.demon.co.uk> | ||||
| Martin Baulig <martin@home-of-linux.org> | ||||
							
								
								
									
										4
									
								
								debian/libgtop2.docs → debian/libgtop1.docs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								debian/libgtop2.docs → debian/libgtop1.docs
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,5 @@ | ||||
| RELNOTES-0.25 | ||||
| RELNOTES-1.0 | ||||
| RELNOTES-1.1.x | ||||
| RELNOTES-1.0.x | ||||
| NEWS | ||||
| AUTHORS | ||||
| TODO | ||||
| debian/changelog | ||||
							
								
								
									
										4
									
								
								debian/libgtop1.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								debian/libgtop1.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| @PREFIX@/lib/libgtop*.so.[0-9].[0-9][0-9].[0-9] | ||||
| @PREFIX@/lib/libgtop*.so.[0-9].[0-9].[0-9] | ||||
| @PREFIX@/lib/libgtop*.so.[0-9] | ||||
| @PREFIX@/share/locale/*/*/libgtop.mo | ||||
							
								
								
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | ||||
| @PREFIX@/lib/libgtop*-1.1.so.*.* | ||||
| @PREFIX@/lib/libgtop*-1.1.so.* | ||||
							
								
								
									
										8
									
								
								debian/rules.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								debian/rules.in
									
									
									
									
										vendored
									
									
								
							| @@ -66,14 +66,14 @@ install-saved: | ||||
| binary-indep: build install | ||||
|  | ||||
| binary-arch: build install \ | ||||
| 		libgtop2@SUFFIX@ \ | ||||
| 		libgtop1@SUFFIX@ \ | ||||
| 		libgtop-dev@SUFFIX@ | ||||
|  | ||||
| # | ||||
| # libgtop2@SUFFIX@ | ||||
| # libgtop1@SUFFIX@ | ||||
| # | ||||
|  | ||||
| libgtop2@SUFFIX@: install | ||||
| libgtop1@SUFFIX@: install | ||||
| 	@echo "--- Building: $@" | ||||
| 	dh_installdocs       -p$@ -P$(b)/$@ README NEWS AUTHORS | ||||
| 	dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog | ||||
| @@ -95,7 +95,7 @@ libgtop2@SUFFIX@: install | ||||
| libgtop-dev@SUFFIX@: install | ||||
| 	@echo "--- Building: $@" | ||||
| 	mkdir -p $(b)/$@/usr/doc | ||||
| 	cd $(b)/$@/usr/doc; ln -s libgtop2@SUFFIX@ $@	 | ||||
| 	cd $(b)/$@/usr/doc; ln -s libgtop1@SUFFIX@ $@	 | ||||
| 	dh_movefiles         -p$@ -P$(b)/$@ | ||||
| 	dh_strip             -p$@ -P$(b)/$@  | ||||
| 	dh_compress          -p$@ -P$(b)/$@  | ||||
|   | ||||
| @@ -1,3 +1,14 @@ | ||||
| 2002-03-12  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* Makefile.am (MAKEINFO): using += seems to screw up the build | ||||
| 	with newer automakes.  Set it explicitly (using @MAKEINFO@) seems | ||||
| 	to be compatible with both. | ||||
|  | ||||
| 2001-11-26  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* libgtop.texi, Makefile.am: Renamed to libgtop2.texi | ||||
| 	* about.texi: Very minor update. | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* about.texi: Added a note about LibGTop and GNOME. | ||||
| @@ -7,22 +18,7 @@ | ||||
|  | ||||
| 1999-09-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Reverted Timur's commit. | ||||
| 	(MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. This still | ||||
| 	creates libgtop.info in srcdir, but that's an automake problem. | ||||
|  | ||||
| Tue Jun 15 15:59:50 1999 Timur Bakeyev <mc@bat.ru> | ||||
|  | ||||
| 	* Makefile.am: Force `auto-macros.texi' to be created in $(srcdir), | ||||
| 	as, otherwise, makeinfo is unable to find it, if srcdir != builddir. | ||||
| 	That's a buggy solution, as spoils srcdir, but, as libgtop.info also | ||||
| 	created in srcdir - this is acceptable. Both SHOULD be fixed! | ||||
|  | ||||
| 1999-05-28  Martin Baulig  <baulig@Stud.Informatik.Uni-Trier.DE> | ||||
|  | ||||
| 	* internals.texi: New file documenting LibGTop internals. | ||||
| 	* reference.texi: Started to document all library functions and | ||||
| 	finished the sysdeps and common references. | ||||
| 	* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. | ||||
|  | ||||
| 1999-05-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
|   | ||||
| @@ -1,17 +1,17 @@ | ||||
| info_TEXINFOS		= libgtop.texi | ||||
| info_TEXINFOS		= libgtop2.texi | ||||
|  | ||||
| libgtop_TEXINFOS	= libgtop.texi about.texi reference.texi \ | ||||
| libgtop2_TEXINFOS	= libgtop2.texi about.texi reference.texi \ | ||||
| 			  auto-macros.texi version.texi main.texi \ | ||||
| 			  white-paper.texi internals.texi | ||||
| 			  white-paper.texi | ||||
|  | ||||
| MAKEINFO		+= -I @libgtop_top_builddir@/doc | ||||
| MAKEINFO		= @MAKEINFO@ -I @libgtop_top_builddir@/doc | ||||
|  | ||||
| EXTRA_DIST		= auto-macros.texi.in | ||||
|  | ||||
| auto-macros.texi: auto-macros.texi.in Makefile | ||||
| ## Use sed and then mv to avoid problems if the user interrupts. | ||||
| 	sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \ | ||||
| 	  -e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \ | ||||
|   | ||||
| @@ -7,9 +7,10 @@ and information about running Processes. | ||||
| On Systems like Solaris or Digital Unix where you need special privileges to | ||||
| get those data, it uses a setuid/setgid server to do so. | ||||
|  | ||||
| Even if LibGTop is a part of the GNOME desktop environment (@uref{http://www.gnome.org}), | ||||
| the main interface of LibGTop is totally independent from any particular desktop environment, | ||||
| so you can also use it as a standalone library in any piece of GPLed software. | ||||
| Even if LibGTop is a part of the GNOME desktop environment | ||||
| (@uref{http://www.gnome.org}), the main interface of LibGTop is totally | ||||
| independent from any particular desktop environment, so you can also use it | ||||
| as a standalone library in any piece of GPLed software. | ||||
|  | ||||
| @menu | ||||
| * Availability::                Where to get LibGTop | ||||
| @@ -32,10 +33,10 @@ latest release tarballs from | ||||
| @noindent | ||||
| or any of its mirror sites. | ||||
|  | ||||
| The latest stable version of LibGTop is 1.0.1 which is also the one that comes | ||||
| together with GNOME 1.0. In CVS, there is a @code{LIBGTOP_STABLE_1_0} branch | ||||
| which is rooted at the @code{LIBGTOP_1_0_1} tag while actual development occurs | ||||
| in the @code{HEAD} which currently has version 1.1.0. | ||||
| The latest stable version of LibGTop is 1.0.12 which is also the one that comes | ||||
| together with GNOME 1.0. It belongs to @code{LIBGTOP_STABLE_1_0} branch in CVS. | ||||
| Actual development occurs in the @code{libgtop-GNOME-2-0-port} which is | ||||
| currently versioned 1.90.0. | ||||
|  | ||||
| @node Supported Platforms, Mailing List, Availability, About | ||||
| @section Supported Platforms | ||||
| @@ -46,7 +47,7 @@ The stable branch currently supports the following platforms: | ||||
| @item All versions of Linux | ||||
|  | ||||
| LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but | ||||
| it should also work without problems on SparcLinux. | ||||
| it should also work without problems on SparcLinux or Linux 2.4.x. | ||||
|  | ||||
| Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system. | ||||
|  | ||||
| @@ -115,6 +116,7 @@ me a lot in the early beginning. | ||||
| @item Timur Bakeyev for the BSDI port. | ||||
| @item Drazen Kacar and the other people on the LibGTop development mailing | ||||
| list for the Solaris port. | ||||
| @item Kevin Vandersloot for the effort to port to GNOME 2.0. | ||||
| @item All people sending me patches, having good ideas, ... | ||||
| @item Everyone I have forgotten in this list ... | ||||
| @end itemize | ||||
|   | ||||
| @@ -1,107 +0,0 @@ | ||||
| @node LibGTop Internals, , Reference Manual, Top | ||||
| @chapter LibGTop Internals | ||||
|  | ||||
| @menu | ||||
| * General Internals::           General Internals | ||||
| * Sysdeps Internals::           Sysdeps Internals | ||||
| @end menu | ||||
|  | ||||
| @node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals | ||||
| @section General Internals | ||||
|  | ||||
| @menu | ||||
| * glibtop::                     The server structure | ||||
| @end menu | ||||
|  | ||||
| @node glibtop,  , General Internals, General Internals | ||||
| @subsection The server structure - @code{glibtop} | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| typedef struct _glibtop         glibtop; | ||||
|  | ||||
| struct _glibtop | ||||
| @{ | ||||
|         unsigned flags; | ||||
|         unsigned method; | ||||
|         unsigned error_method; | ||||
| #ifdef HAVE_GLIBTOP_MACHINE_H | ||||
|         glibtop_machine machine; | ||||
| #endif | ||||
|         int input [2]; | ||||
|         int output [2]; | ||||
|         int socket; | ||||
|         int ncpu; | ||||
|         unsigned long os_version_code; | ||||
|         const char *name; | ||||
|         const char *server_command; | ||||
|         const char *server_host; | ||||
|         const char *server_user; | ||||
|         const char *server_rsh; | ||||
|         unsigned long features; | ||||
|         unsigned long server_port; | ||||
|         glibtop_sysdeps sysdeps; | ||||
|         glibtop_sysdeps required; | ||||
|         glibtop_sysdeps wanted; | ||||
|         pid_t pid; | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @node Sysdeps Internals,  , General Internals, LibGTop Internals | ||||
| @section Sysdeps Internals | ||||
|  | ||||
| @menu | ||||
| * glibtop_open_s::              Non-privileged initializations | ||||
| * glibtop_close_s::             Non-privileged cleanups | ||||
| @end menu | ||||
|  | ||||
| @node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals | ||||
| @subsection glibtop_open_s | ||||
|  | ||||
| This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to | ||||
| initialize a server. It should do all initializations that do not need any | ||||
| privileges. | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| void | ||||
| glibtop_open_s (glibtop *server, const char *program_name, | ||||
| 		const unsigned long features, | ||||
| 		const unsigned flags); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @table @code | ||||
| @item server | ||||
| Pointer to the @code{glibtop} server structure. | ||||
| @item program_name | ||||
| Name of the calling program; the implementation will usually | ||||
| set @samp{server->name} to this so it'll be used as the program | ||||
| name in error messages. | ||||
| @end table | ||||
|  | ||||
| Typically, this function will set @code{server->name}, @code{server->ncpu} and | ||||
| @code{server->os_version_code} and initialize any of the @code{server->machine} | ||||
| fields which do not need any privileges. | ||||
|  | ||||
| It is normally implemented in @file{open.c} in the sysdeps directory. | ||||
|  | ||||
| @node glibtop_close_s,  , glibtop_open_s, Sysdeps Internals | ||||
| @subsection glibtop_close_s | ||||
|  | ||||
| This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to | ||||
| clean-up a server when it's no longer used. | ||||
|  | ||||
| It must free all resources that were allocated in @code{glibtop_open_s}. | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| void | ||||
| glibtop_close_s (glibtop *server); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| It is normally implemented in @file{close.c} in the sysdeps directory, but may | ||||
| be empty. | ||||
|  | ||||
| @@ -1,6 +1,6 @@ | ||||
| \input texinfo   @c -*-texinfo-*- | ||||
| @c %**start of header | ||||
| @setfilename libgtop.info | ||||
| @setfilename libgtop2.info | ||||
| @settitle LibGTop Reference Manual | ||||
| @setchapternewpage odd | ||||
| @c %**end of header | ||||
| @@ -44,7 +44,7 @@ translation approved by the Free Software Foundation. | ||||
| @format | ||||
| @dircategory Libraries: | ||||
| @direntry | ||||
| * libgtop: (libgtop).			Library to get system specific data | ||||
| * LibGTop2: (libgtop2).			Library to get system specific data | ||||
| 					such as cpu and memory usage, active | ||||
| 					processes | ||||
| @end direntry | ||||
| @@ -4,7 +4,6 @@ | ||||
| * About::                       About LibGTop | ||||
| * White Paper::                 LibGTop White Paper | ||||
| * Reference Manual::            LibGTop Reference Manual | ||||
| * LibGTop Internals::           LibGTop Internals | ||||
|  | ||||
|  --- The Detailed Node Listing --- | ||||
|  | ||||
| @@ -19,7 +18,6 @@ LibGTop White Paper | ||||
|  | ||||
| * Introduction::                Introduction | ||||
| * Overview::                    Overview | ||||
| * Servers and Daemons::         Servers and Daemons | ||||
|  | ||||
| Overview | ||||
|  | ||||
| @@ -62,24 +60,9 @@ Library Functions | ||||
| * glibtop_init::                Server Initialization. | ||||
| * glibtop_sysdeps::             Server Sysdeps. | ||||
| * Library Parameters::          Library Parameters. | ||||
|  | ||||
| LibGTop Internals | ||||
|  | ||||
| * General Internals::           General Internals | ||||
| * Sysdeps Internals::           Sysdeps Internals | ||||
|  | ||||
| General Internals | ||||
|  | ||||
| * glibtop::                     The server structure | ||||
|  | ||||
| Sysdeps Internals | ||||
|  | ||||
| * glibtop_open_s::              Non-privileged initializations | ||||
| * glibtop_close_s::             Non-privileged cleanups | ||||
| @end menu | ||||
|  | ||||
| @include about.texi | ||||
| @include white-paper.texi | ||||
| @include reference.texi | ||||
| @include internals.texi | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| @node Reference Manual, LibGTop Internals, White Paper, Top | ||||
| @node Reference Manual, , White Paper, Top | ||||
| @chapter LibGTop Reference Manual | ||||
|  | ||||
| @menu | ||||
|   | ||||
| @@ -4,7 +4,6 @@ | ||||
| @menu | ||||
| * Introduction::                Introduction | ||||
| * Overview::                    Overview | ||||
| * Servers and Daemons::         Servers and Daemons | ||||
| @end menu | ||||
|  | ||||
| @node Introduction, Overview, White Paper, White Paper | ||||
| @@ -48,7 +47,7 @@ since there's more than just one single program that wants to use them - for | ||||
| instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and | ||||
| @code{netload} panel applets. | ||||
|  | ||||
| @node Overview, Servers and Daemons, Introduction, White Paper | ||||
| @node Overview,  , Introduction, White Paper | ||||
| @section Overview | ||||
|  | ||||
| This section should give you a short overview on how LibGTop was developed, which | ||||
| @@ -89,48 +88,3 @@ only contains the @dfn{features} which need privileges. | ||||
| Whenever we do not need any privileges to get all the data for some of the requested | ||||
| structures (here called @dfn{features}) the library calls the sysdeps code directly | ||||
| rather than using the server. | ||||
|  | ||||
| @node Servers and Daemons,  , Overview, White Paper | ||||
| @section Servers and Daemons | ||||
|  | ||||
| LibGTop gives you the possibility to use different LibGTop "servers" and | ||||
| "daemons" in your application. | ||||
|  | ||||
| Normally you do not need to worry about this things since LibGTop auto- | ||||
| matically opens a pipe to its server it it's required, but this can also | ||||
| be customized to fit your needs. | ||||
|  | ||||
| For instance if you have a small applet which is only interested in disk | ||||
| usage there's no need to fork a separate server process since you don't | ||||
| need any privileges to get them on any of the supported systems. This can | ||||
| be archieved with a special call to @code{glibtop_init_r} on startup. | ||||
|  | ||||
| There's also an option to tell @code{glibtop_init_r} that you're only | ||||
| interested in several features - for instance cpu and memory usage. In | ||||
| this case LibGTop will only fork a server process if it's required to get | ||||
| cpu and memory. | ||||
|  | ||||
| You can also tell @code{glibtop_init_r} to start the server only on demand, | ||||
| this might become useful in command-line based programs. For graphical | ||||
| applications it's normally best to start the server directly during their | ||||
| initialization. The same applies for any time critical applications (since | ||||
| @code{fork} is an expensive operation on some systems this may lead to | ||||
| incorrect statistics). | ||||
|  | ||||
| LibGTop also allows you to talk to a remote machine using the | ||||
| @dfn{LibGTop daemon}. This daemon is based on @code{gnuserv} from | ||||
| GNU Emacs and should be run as an unprivileged user. It has support | ||||
| for either @code{xauth} or host based authorization. | ||||
|  | ||||
| This daemon itself behaves like a LibGTop client application, i.e. it | ||||
| forks a server process if this is required. | ||||
|  | ||||
| The main use for this daemon is when you want to monitor a machine which | ||||
| is either very slow or has very low disk space. In this case you don't need | ||||
| to install the whole client application (for instance GTop) on the remote | ||||
| machine but only a very small (maybe also statically linked) executable and | ||||
| run the graphical application on a more powerful machine. | ||||
|  | ||||
| It can also be used to monitor a remote machine over a very slow link such | ||||
| as a dialup connection since the conversation between LibGTop client and | ||||
| daemon uses much less bandwith than an ordinary X11 connection. | ||||
|   | ||||
							
								
								
									
										16
									
								
								examples/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								examples/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| .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 | ||||
							
								
								
									
										94
									
								
								examples/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								examples/ChangeLog
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
| 2001-01-14  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE. | ||||
|  | ||||
| 	* Makefile.am, first.c, second.c, sysdeps.c: Make them at least | ||||
| 	compile for now, by disabling chunks which should belong to | ||||
| 	HEAD branch. | ||||
|  | ||||
| 1999-05-28  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c, second.c, sysdeps.c: Use LibGTop version conditionals | ||||
|  	so we can more easily merge the code into LIBGTOP_STABLE_1_0. | ||||
|  | ||||
| 1999-05-07  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* timings.c (timersub): Renamed this to `libgtop_timersub' and define | ||||
| 	it on all systems. | ||||
|  | ||||
| Fri Apr  9 00:14:52 1999 Timur Bakeyev  <timur@gnu.org> | ||||
|  | ||||
| 	* timings.c: Added timersub defenition, to make code compilable on  | ||||
| 	BSDI. | ||||
|  | ||||
| 1999-03-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* timings.c: New example. | ||||
|  | ||||
| 1999-03-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c, second.c: Fixed a bug that caused a core dump when | ||||
| 	the sysdeps code does not return all data. | ||||
|  | ||||
| 1998-11-22  Martin Baulig  <baulig@taurus.uni-trier.de> | ||||
|  | ||||
| 	* netload.c: Call inet_ntoa () to get address and subnet | ||||
| 	in quatted dot notation (like 136.199.14.201) and not just | ||||
| 	as a number (like 0xc90ec788). | ||||
|  | ||||
| 1998-11-02  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* sysdeps.c: New example. | ||||
|  | ||||
| 1998-10-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* netload.c: New file. Gets network load for the interface | ||||
| 	given as command line argument. | ||||
|  | ||||
| 1998-10-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c (glibtop_get_proc_args): Get command line arguments. | ||||
| 	* second.c: Likewise. | ||||
|  | ||||
| 1998-10-25  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c (glibtop_get_ppp): Get PPP/ISDN statistics. | ||||
|  | ||||
| 1998-09-28  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything in $(libexecdir)/libgtop. | ||||
|  | ||||
| 1998-09-09  Martin Baulig <baulig@Stud.Informatik.uni-trier.de> | ||||
|  | ||||
| 	* smp.c: New file. Nice tool to show CPU statistics on SMP systems. | ||||
|  | ||||
| 1998-08-25  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c, second.c, procmap.c: Fixed some compiler warnings. | ||||
|  | ||||
| 1998-08-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* procmap.c: We now display filenames when compiled | ||||
| 	`--with-libgtop-inodedb'. | ||||
|  | ||||
| 1998-08-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* second.c: Works a little bit more like `ps' - you can | ||||
| 	give an optional command line argument to get information | ||||
| 	about a single process. | ||||
|  | ||||
| 1998-07-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* mountlist.c: New file. | ||||
|  | ||||
| 1998-06-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* test.scm: New file. | ||||
| 	 | ||||
| 1998-06-07  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am (CFLAGS): Disable optimize. | ||||
| 	 | ||||
| 	* first.c (PROFILE_COUNT): Number of times each function | ||||
| 	should be called. Defaults to 1; to profile the code, you | ||||
| 	can increase this when compiling. | ||||
							
								
								
									
										121
									
								
								examples/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								examples/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,121 @@ | ||||
| ## Process this file with automake to produce Makefile.in | ||||
|  | ||||
| LINK			= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES		= @INCLUDES@ | ||||
|  | ||||
| DEFS			= @DEFS@ | ||||
|  | ||||
| # We install it in `libexec' since this will make it more easy | ||||
| # to put the examples into an extra RPM package. | ||||
|  | ||||
| libgtopdir		= $(libexecdir)/libgtop | ||||
|  | ||||
| libgtop_PROGRAMS	= first second\ | ||||
| 			  mountlist procmap netload sysdeps 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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
|  | ||||
| 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 | ||||
|  | ||||
| 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_static_SOURCES	= $(timings_SOURCES) | ||||
| timings_static_LDADD	= $(timings_LDADD) | ||||
| timings_static_LDFLAGS	= -static | ||||
|  | ||||
							
								
								
									
										575
									
								
								examples/first.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										575
									
								
								examples/first.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,575 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <sys/resource.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT	1 | ||||
| #endif | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_union data; | ||||
| 	glibtop_sysdeps sysdeps; | ||||
| 	unsigned c, method, count, port, i, *ptr; | ||||
| 	char buffer [BUFSIZ]; | ||||
| 	pid_t pid, ppid; | ||||
| 	char *args; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (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); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	printf ("Command = '%s'\n", buffer); | ||||
|  | ||||
| 	count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port)); | ||||
|  | ||||
| 	printf ("Host = '%s' - %u\n\n", buffer, port); | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 	  	glibtop_get_cpu (&data.cpu); | ||||
|  | ||||
| 	printf ("CPU          (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.cpu.flags, | ||||
| 		(unsigned long) data.cpu.total, | ||||
| 		(unsigned long) data.cpu.user, | ||||
| 		(unsigned long) data.cpu.nice, | ||||
| 		(unsigned long) data.cpu.sys, | ||||
| 		(unsigned long) data.cpu.idle, | ||||
| 		(unsigned long) data.cpu.frequency); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_mem (&data.mem); | ||||
|  | ||||
| 	printf ("Memory       (0x%08lx): " | ||||
| 		"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.mem.flags, | ||||
| 		(unsigned long) data.mem.total, | ||||
| 		(unsigned long) data.mem.used, | ||||
| 		(unsigned long) data.mem.free, | ||||
| 		(unsigned long) data.mem.shared, | ||||
| 		(unsigned long) data.mem.buffer, | ||||
| 		(unsigned long) data.mem.cached, | ||||
| 		(unsigned long) data.mem.user, | ||||
| 		(unsigned long) data.mem.locked); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_swap (&data.swap); | ||||
|  | ||||
| 	printf ("Swap         (0x%08lx): %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.swap.flags, | ||||
| 		(unsigned long) data.swap.total, | ||||
| 		(unsigned long) data.swap.used, | ||||
| 		(unsigned long) data.swap.free, | ||||
| 		(unsigned long) data.swap.pagein, | ||||
| 		(unsigned long) data.swap.pageout); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_uptime (&data.uptime); | ||||
|  | ||||
| 	printf ("Uptime       (0x%08lx): %f, %f\n", | ||||
| 		(unsigned long) data.uptime.flags, | ||||
| 		data.uptime.uptime, data.uptime.idletime); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_loadavg (&data.loadavg); | ||||
|  | ||||
| 	printf ("Loadavg      (0x%08lx): %f, %f, %f - %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.loadavg.flags, | ||||
| 		(double) data.loadavg.loadavg [0], | ||||
| 		(double) data.loadavg.loadavg [1], | ||||
| 		(double) data.loadavg.loadavg [2], | ||||
| 		(unsigned long) data.loadavg.nr_running, | ||||
| 		(unsigned long) data.loadavg.nr_tasks, | ||||
| 		(unsigned long) data.loadavg.last_pid); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_shm_limits (&data.shm_limits); | ||||
| 	 | ||||
| 	printf ("Shm Limits   (0x%08lx): %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.shm_limits.flags, | ||||
| 		(unsigned long) data.shm_limits.shmmax, | ||||
| 		(unsigned long) data.shm_limits.shmmin, | ||||
| 		(unsigned long) data.shm_limits.shmmni, | ||||
| 		(unsigned long) data.shm_limits.shmseg, | ||||
| 		(unsigned long) data.shm_limits.shmall); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_msg_limits (&data.msg_limits); | ||||
|  | ||||
| 	printf ("Msg Limits   (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.msg_limits.flags, | ||||
| 		(unsigned long) data.msg_limits.msgpool, | ||||
| 		(unsigned long) data.msg_limits.msgmap, | ||||
| 		(unsigned long) data.msg_limits.msgmax, | ||||
| 		(unsigned long) data.msg_limits.msgmnb, | ||||
| 		(unsigned long) data.msg_limits.msgmni, | ||||
| 		(unsigned long) data.msg_limits.msgssz, | ||||
| 		(unsigned long)  data.msg_limits.msgtql); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_sem_limits (&data.sem_limits); | ||||
| 	 | ||||
| 	printf ("Sem Limits   (0x%08lx): " | ||||
| 		"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.sem_limits.flags, | ||||
| 		(unsigned long) data.sem_limits.semmap, | ||||
| 		(unsigned long) data.sem_limits.semmni, | ||||
| 		(unsigned long) data.sem_limits.semmns, | ||||
| 		(unsigned long) data.sem_limits.semmnu, | ||||
| 		(unsigned long) data.sem_limits.semmsl, | ||||
| 		(unsigned long) data.sem_limits.semopm, | ||||
| 		(unsigned long) data.sem_limits.semume, | ||||
| 		(unsigned long) data.sem_limits.semusz, | ||||
| 		(unsigned long) data.sem_limits.semvmx, | ||||
| 		(unsigned long) data.sem_limits.semaem); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_ppp (&data.ppp, 0); | ||||
|  | ||||
| 	printf ("PPP          (0x%08lx): %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.ppp.flags, | ||||
| 		(unsigned long) data.ppp.state, | ||||
| 		(unsigned long) data.ppp.bytes_in, | ||||
| 		(unsigned long) data.ppp.bytes_out); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	glibtop_get_sysdeps (&sysdeps); | ||||
|  | ||||
| 	printf ("Sysdeps      (0x%08lx): %lu, %lu, %lu, %lu, %lu, " | ||||
| 		"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, " | ||||
| 		"%lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) sysdeps.flags, | ||||
| 		(unsigned long) sysdeps.cpu, | ||||
| 		(unsigned long) sysdeps.mem, | ||||
| 		(unsigned long) sysdeps.swap, | ||||
| 		(unsigned long) sysdeps.uptime, | ||||
| 		(unsigned long) sysdeps.loadavg, | ||||
| 		(unsigned long) sysdeps.shm_limits, | ||||
| 		(unsigned long) sysdeps.msg_limits, | ||||
| 		(unsigned long) sysdeps.sem_limits, | ||||
| 		(unsigned long) sysdeps.proclist, | ||||
| 		(unsigned long) sysdeps.proc_state, | ||||
| 		(unsigned long) sysdeps.proc_uid, | ||||
| 		(unsigned long) sysdeps.proc_mem, | ||||
| 		(unsigned long) sysdeps.proc_time, | ||||
| 		(unsigned long) sysdeps.proc_signal, | ||||
| 		(unsigned long) sysdeps.proc_kernel, | ||||
| 		(unsigned long) sysdeps.proc_segment, | ||||
| 		(unsigned long) sysdeps.proc_args, | ||||
| 		(unsigned long) sysdeps.proc_map, | ||||
| 		(unsigned long) sysdeps.mountlist, | ||||
| 		(unsigned long) sysdeps.fsusage, | ||||
| 		(unsigned long) sysdeps.netload, | ||||
| 		(unsigned long) sysdeps.ppp); | ||||
|  | ||||
| 	printf ("\n"); | ||||
| 	 | ||||
| 	ptr = glibtop_get_proclist (&data.proclist, 0, 0); | ||||
|  | ||||
| 	printf ("Proclist     (0x%08lx): %lu, %lu, %lu\n", | ||||
| 		(unsigned long) data.proclist.flags, | ||||
| 		(unsigned long) data.proclist.number, | ||||
| 		(unsigned long) data.proclist.size, | ||||
| 		(unsigned long) data.proclist.total); | ||||
|  | ||||
| 	if (ptr) { | ||||
| 		printf ("\nProcess: "); | ||||
| 		for (i = 0; i < data.proclist.number; i++) | ||||
| 			printf ("%s%u", i ? ", " : "", ptr [i]); | ||||
| 		printf ("\n"); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (ptr); | ||||
|  | ||||
| 	pid = getpid (); | ||||
| 	ppid = getppid (); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_state (&data.proc_state, pid); | ||||
|  | ||||
| 	printf ("Proc_State   PID  %5d (0x%08lx): '%s', %c, %lu, %lu\n", | ||||
| 		(int) pid, (unsigned long) data.proc_state.flags, | ||||
| 		data.proc_state.cmd, data.proc_state.state, | ||||
| 		(unsigned long) data.proc_state.uid, | ||||
| 		(unsigned long) data.proc_state.gid); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_uid (&data.proc_uid, pid); | ||||
|  | ||||
| 	printf ("Proc_Uid     PID  %5d (0x%08lx): " | ||||
| 		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid, | ||||
| 		(unsigned long) data.proc_uid.flags, | ||||
| 		data.proc_uid.uid, data.proc_uid.euid, | ||||
| 		data.proc_uid.gid, data.proc_uid.egid, | ||||
| 		data.proc_uid.pid, data.proc_uid.ppid, | ||||
| 		data.proc_uid.pgrp, data.proc_uid.session, | ||||
| 		data.proc_uid.tty, data.proc_uid.tpgid, | ||||
| 		data.proc_uid.priority, data.proc_uid.nice); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_mem (&data.proc_mem, pid); | ||||
|  | ||||
| 	printf ("Proc_Mem     PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_mem.flags, | ||||
| 		(unsigned long) data.proc_mem.size, | ||||
| 		(unsigned long) data.proc_mem.vsize, | ||||
| 		(unsigned long) data.proc_mem.resident, | ||||
| 		(unsigned long) data.proc_mem.share, | ||||
| 		(unsigned long) data.proc_mem.rss, | ||||
| 		(unsigned long) data.proc_mem.rss_rlim); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_segment (&data.proc_segment, pid); | ||||
|  | ||||
| 	printf ("Proc_Segment PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_segment.flags, | ||||
| 		(unsigned long) data.proc_segment.text_rss, | ||||
| 		(unsigned long) data.proc_segment.shlib_rss, | ||||
| 		(unsigned long) data.proc_segment.data_rss, | ||||
| 		(unsigned long) data.proc_segment.stack_rss, | ||||
| 		(unsigned long) data.proc_segment.dirty_size, | ||||
| 		(unsigned long) data.proc_segment.start_code, | ||||
| 		(unsigned long) data.proc_segment.end_code, | ||||
| 		(unsigned long) data.proc_segment.start_stack); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_time (&data.proc_time, pid); | ||||
|  | ||||
| 	printf ("Proc_Time    PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_time.flags, | ||||
| 		(unsigned long) data.proc_time.start_time, | ||||
| 		(unsigned long) data.proc_time.rtime, | ||||
| 		(unsigned long) data.proc_time.utime, | ||||
| 		(unsigned long) data.proc_time.stime, | ||||
| 		(unsigned long) data.proc_time.cutime, | ||||
| 		(unsigned long) data.proc_time.cstime, | ||||
| 		(unsigned long) data.proc_time.timeout, | ||||
| 		(unsigned long) data.proc_time.it_real_value, | ||||
| 		(unsigned long) data.proc_time.frequency); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_signal (&data.proc_signal, pid); | ||||
| 	 | ||||
| 	printf ("Proc_Signal  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_signal.flags, | ||||
| 		(unsigned long) data.proc_signal.signal, | ||||
| 		(unsigned long) data.proc_signal.blocked, | ||||
| 		(unsigned long) data.proc_signal.sigignore, | ||||
| 		(unsigned long) data.proc_signal.sigcatch); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, pid); | ||||
|  | ||||
| 	printf ("Proc_Kernel  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| 		(unsigned long) data.proc_kernel.maj_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmin_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmaj_flt, | ||||
| 		(unsigned long) data.proc_kernel.kstk_esp, | ||||
| 		(unsigned long) data.proc_kernel.kstk_eip, | ||||
| 		(unsigned long) data.proc_kernel.nwchan, | ||||
| 		data.proc_kernel.wchan); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	args = glibtop_get_proc_args (&data.proc_args, pid, 0); | ||||
|  | ||||
| 	for (i = 0; i < data.proc_args.size; i++) { | ||||
| 		if (args [i]) continue; | ||||
| 		args [i] = '|'; | ||||
| 	} | ||||
|  | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", (int) pid, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_state (&data.proc_state, ppid); | ||||
|  | ||||
| 	printf ("Proc_State   PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n", | ||||
| 		(int) ppid, (unsigned long) data.proc_state.flags, | ||||
| 		data.proc_state.cmd, data.proc_state.state, | ||||
| 		(unsigned long) data.proc_state.uid, | ||||
| 		(unsigned long) data.proc_state.gid); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_uid (&data.proc_uid, ppid); | ||||
|  | ||||
| 	printf ("Proc_Uid     PPID %5d (0x%08lx): " | ||||
| 		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_uid.flags, | ||||
| 		data.proc_uid.uid, data.proc_uid.euid, | ||||
| 		data.proc_uid.gid, data.proc_uid.egid, | ||||
| 		data.proc_uid.pid, data.proc_uid.ppid, | ||||
| 		data.proc_uid.pgrp, data.proc_uid.session, | ||||
| 		data.proc_uid.tty, data.proc_uid.tpgid, | ||||
| 		data.proc_uid.priority, data.proc_uid.nice); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_mem (&data.proc_mem, ppid); | ||||
|  | ||||
| 	printf ("Proc_Mem     PPID %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_mem.flags, | ||||
| 		(unsigned long) data.proc_mem.size, | ||||
| 		(unsigned long) data.proc_mem.vsize, | ||||
| 		(unsigned long) data.proc_mem.resident, | ||||
| 		(unsigned long) data.proc_mem.share, | ||||
| 		(unsigned long) data.proc_mem.rss, | ||||
| 		(unsigned long) data.proc_mem.rss_rlim); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_segment (&data.proc_segment, ppid); | ||||
|  | ||||
| 	printf ("Proc_Segment PPID %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_segment.flags, | ||||
| 		(unsigned long) data.proc_segment.text_rss, | ||||
| 		(unsigned long) data.proc_segment.shlib_rss, | ||||
| 		(unsigned long) data.proc_segment.data_rss, | ||||
| 		(unsigned long) data.proc_segment.stack_rss, | ||||
| 		(unsigned long) data.proc_segment.dirty_size, | ||||
| 		(unsigned long) data.proc_segment.start_code, | ||||
| 		(unsigned long) data.proc_segment.end_code, | ||||
| 		(unsigned long) data.proc_segment.start_stack); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_time (&data.proc_time, ppid); | ||||
|  | ||||
| 	printf ("Proc_Time    PPID %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_time.flags, | ||||
| 		(unsigned long) data.proc_time.start_time, | ||||
| 		(unsigned long) data.proc_time.rtime, | ||||
| 		(unsigned long) data.proc_time.utime, | ||||
| 		(unsigned long) data.proc_time.stime, | ||||
| 		(unsigned long) data.proc_time.cutime, | ||||
| 		(unsigned long) data.proc_time.cstime, | ||||
| 		(unsigned long) data.proc_time.timeout, | ||||
| 		(unsigned long) data.proc_time.it_real_value, | ||||
| 		(unsigned long) data.proc_time.frequency); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_signal (&data.proc_signal, ppid); | ||||
|  | ||||
| 	printf ("Proc_Signal  PPID %5d (0x%08lx): %lu %lu %lu %lu\n", | ||||
| 		(int) ppid, (unsigned long) data.proc_signal.flags, | ||||
| 		(unsigned long) data.proc_signal.signal, | ||||
| 		(unsigned long) data.proc_signal.blocked, | ||||
| 		(unsigned long) data.proc_signal.sigignore, | ||||
| 		(unsigned long) data.proc_signal.sigcatch); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, ppid); | ||||
|  | ||||
| 	printf ("Proc_Kernel  PPID %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| 		(unsigned long) data.proc_kernel.maj_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmin_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmaj_flt, | ||||
| 		(unsigned long) data.proc_kernel.kstk_esp, | ||||
| 		(unsigned long) data.proc_kernel.kstk_eip, | ||||
| 		(unsigned long) data.proc_kernel.nwchan, | ||||
| 		data.proc_kernel.wchan); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	args = glibtop_get_proc_args (&data.proc_args, ppid, 0); | ||||
|  | ||||
| 	for (i = 0; i < data.proc_args.size; i++) { | ||||
| 		if (args [i]) continue; | ||||
| 		args [i] = '|'; | ||||
| 	} | ||||
|  | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_state (&data.proc_state, 1); | ||||
|  | ||||
| 	printf ("Proc_State   INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1, | ||||
| 		(unsigned long) data.proc_state.flags, | ||||
| 		data.proc_state.cmd, data.proc_state.state, | ||||
| 		(unsigned long) data.proc_state.uid, | ||||
| 		(unsigned long) data.proc_state.gid); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_uid (&data.proc_uid, 1); | ||||
|  | ||||
| 	printf ("Proc_Uid     INIT %5d (0x%08lx): " | ||||
| 		"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1, | ||||
| 		(unsigned long) data.proc_uid.flags, | ||||
| 		data.proc_uid.uid, data.proc_uid.euid, | ||||
| 		data.proc_uid.gid, data.proc_uid.egid, | ||||
| 		data.proc_uid.pid, data.proc_uid.ppid, | ||||
| 		data.proc_uid.pgrp, data.proc_uid.session, | ||||
| 		data.proc_uid.tty, data.proc_uid.tpgid, | ||||
| 		data.proc_uid.priority, data.proc_uid.nice); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_mem (&data.proc_mem, 1); | ||||
|  | ||||
| 	printf ("Proc_Mem     INIT %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu\n", 1, | ||||
| 		(unsigned long) data.proc_mem.flags, | ||||
| 		(unsigned long) data.proc_mem.size, | ||||
| 		(unsigned long) data.proc_mem.vsize, | ||||
| 		(unsigned long) data.proc_mem.resident, | ||||
| 		(unsigned long) data.proc_mem.share, | ||||
| 		(unsigned long) data.proc_mem.rss, | ||||
| 		(unsigned long) data.proc_mem.rss_rlim); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_segment (&data.proc_segment, 1); | ||||
|  | ||||
| 	printf ("Proc_Segment INIT %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1, | ||||
| 		(unsigned long) data.proc_segment.flags, | ||||
| 		(unsigned long) data.proc_segment.text_rss, | ||||
| 		(unsigned long) data.proc_segment.shlib_rss, | ||||
| 		(unsigned long) data.proc_segment.data_rss, | ||||
| 		(unsigned long) data.proc_segment.stack_rss, | ||||
| 		(unsigned long) data.proc_segment.dirty_size, | ||||
| 		(unsigned long) data.proc_segment.start_code, | ||||
| 		(unsigned long) data.proc_segment.end_code, | ||||
| 		(unsigned long) data.proc_segment.start_stack); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_time (&data.proc_time, 1); | ||||
|  | ||||
| 	printf ("Proc_Time    INIT %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", 1, | ||||
| 		(unsigned long) data.proc_time.flags, | ||||
| 		(unsigned long) data.proc_time.start_time, | ||||
| 		(unsigned long) data.proc_time.rtime, | ||||
| 		(unsigned long) data.proc_time.utime, | ||||
| 		(unsigned long) data.proc_time.stime, | ||||
| 		(unsigned long) data.proc_time.cutime, | ||||
| 		(unsigned long) data.proc_time.cstime, | ||||
| 		(unsigned long) data.proc_time.timeout, | ||||
| 		(unsigned long) data.proc_time.it_real_value, | ||||
| 		(unsigned long) data.proc_time.frequency); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_signal (&data.proc_signal, 1); | ||||
|  | ||||
| 	printf ("Proc_Signal  INIT %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu\n", 1, | ||||
| 		(unsigned long) data.proc_signal.flags, | ||||
| 		(unsigned long) data.proc_signal.signal, | ||||
| 		(unsigned long) data.proc_signal.blocked, | ||||
| 		(unsigned long) data.proc_signal.sigignore, | ||||
| 		(unsigned long) data.proc_signal.sigcatch); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, 1); | ||||
|  | ||||
| 	printf ("Proc_Kernel  INIT %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", 1, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| 		(unsigned long) data.proc_kernel.maj_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmin_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmaj_flt, | ||||
| 		(unsigned long) data.proc_kernel.kstk_esp, | ||||
| 		(unsigned long) data.proc_kernel.kstk_eip, | ||||
| 		(unsigned long) data.proc_kernel.nwchan, | ||||
| 		data.proc_kernel.wchan); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	args = glibtop_get_proc_args (&data.proc_args, 1, 0); | ||||
|  | ||||
| 	for (i = 0; i < data.proc_args.size; i++) { | ||||
| 		if (args [i]) continue; | ||||
| 		args [i] = '|'; | ||||
| 	} | ||||
|  | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", 1, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										113
									
								
								examples/mountlist.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								examples/mountlist.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,113 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/mountlist.h> | ||||
| #include <glibtop/fsusage.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT	1000 | ||||
| #endif | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_fsusage fsusage; | ||||
| 	glibtop_mountlist mount_list; | ||||
| 	glibtop_mountentry *mount_entries; | ||||
| 	unsigned c, index, method, count, port; | ||||
| 	char buffer [BUFSIZ]; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (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); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	printf ("Command = '%s'\n", buffer); | ||||
|  | ||||
| 	count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port)); | ||||
|  | ||||
| 	printf ("Host = '%s' - %u\n\n", buffer, port); | ||||
|  | ||||
| 	printf ("sbrk (0) = %p\n\n", sbrk (0)); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) { | ||||
| 		mount_entries = glibtop_get_mountlist (&mount_list, 1); | ||||
|  | ||||
| 		glibtop_free (mount_entries); | ||||
| 	} | ||||
|  | ||||
| 	printf ("sbrk (0) = %p\n\n", sbrk (0)); | ||||
|  | ||||
| 	mount_entries = glibtop_get_mountlist (&mount_list, 1); | ||||
|  | ||||
| 	if (mount_entries == NULL) | ||||
| 		_exit (1); | ||||
|  | ||||
| 	for (index = 0; index < mount_list.number; index++) | ||||
| 		printf ("Mount_Entry: %-30s %-10s %-20s\n", | ||||
| 			mount_entries [index].mountdir, | ||||
| 			mount_entries [index].type, | ||||
| 			mount_entries [index].devname); | ||||
|  | ||||
| 	printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n", | ||||
| 		"", "Blocks", "Free", "Avail", "Files", "Free"); | ||||
|  | ||||
| 	for (index = 0; index < mount_list.number; index++) { | ||||
| 		glibtop_get_fsusage (&fsusage, | ||||
| 				     mount_entries [index].mountdir); | ||||
|  | ||||
| 		printf ("Usage: %-16s %9Lu %9Lu %9Lu %9Lu %9Lu\n", | ||||
| 			mount_entries [index].mountdir, | ||||
| 			fsusage.blocks, fsusage.bfree, | ||||
| 			fsusage.bavail, fsusage.files, | ||||
| 			fsusage.ffree); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (mount_entries); | ||||
|  | ||||
| 	printf ("\nsbrk (0) = %p\n\n", sbrk (0)); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										125
									
								
								examples/netload.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								examples/netload.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/netload.h> | ||||
|  | ||||
| #include <netinet/in.h> | ||||
| #include <arpa/inet.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT	1 | ||||
| #endif | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_netload netload; | ||||
| 	unsigned method, count, port; | ||||
| 	struct in_addr addr, subnet; | ||||
| 	char *address_string, *subnet_string; | ||||
| 	char buffer [BUFSIZ]; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	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); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	printf ("Command = '%s'\n", buffer); | ||||
|  | ||||
| 	count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port)); | ||||
|  | ||||
| 	printf ("Host = '%s' - %u\n\n", buffer, port); | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	if (argc != 2) | ||||
| 		glibtop_error ("Usage: %s interface", argv [0]); | ||||
| 	 | ||||
| 	glibtop_get_netload (&netload, argv [1]); | ||||
|  | ||||
| 	addr.s_addr = netload.address; | ||||
| 	subnet.s_addr = netload.subnet; | ||||
|  | ||||
| 	address_string = glibtop_strdup (inet_ntoa (addr)); | ||||
| 	subnet_string  = glibtop_strdup (inet_ntoa (subnet)); | ||||
|  | ||||
| 	printf ("Network Load (0x%08lx):\n\n" | ||||
| 		"\tInterface Flags:\t0x%08lx\n" | ||||
| 		"\tAddress:\t\t0x%08lx - %s\n" | ||||
| 		"\tSubnet:\t\t\t0x%08lx - %s\n\n" | ||||
| 		"\tMTU:\t\t\t%ld\n" | ||||
| 		"\tCollisions:\t\t%ld\n\n" | ||||
| 		"\tPackets In:\t\t%ld\n" | ||||
| 		"\tPackets Out:\t\t%ld\n" | ||||
| 		"\tPackets Total:\t\t%ld\n\n" | ||||
| 		"\tBytes In:\t\t%ld\n" | ||||
| 		"\tBytes Out:\t\t%ld\n" | ||||
| 		"\tBytes Total:\t\t%ld\n\n" | ||||
| 		"\tErrors In:\t\t%ld\n" | ||||
| 		"\tErrors Out:\t\t%ld\n" | ||||
| 		"\tErrors Total:\t\t%ld\n\n", | ||||
| 		(unsigned long) netload.flags, | ||||
| 		(unsigned long) netload.if_flags, | ||||
| 		(unsigned long) netload.address, address_string, | ||||
| 		(unsigned long) netload.subnet,  subnet_string, | ||||
| 		(unsigned long) netload.mtu, | ||||
| 		(unsigned long) netload.collisions, | ||||
| 		(unsigned long) netload.packets_in, | ||||
| 		(unsigned long) netload.packets_out, | ||||
| 		(unsigned long) netload.packets_total, | ||||
| 		(unsigned long) netload.bytes_in, | ||||
| 		(unsigned long) netload.bytes_out, | ||||
| 		(unsigned long) netload.bytes_total, | ||||
| 		(unsigned long) netload.errors_in, | ||||
| 		(unsigned long) netload.errors_out, | ||||
| 		(unsigned long) netload.errors_total); | ||||
|  | ||||
| 	glibtop_free (address_string); | ||||
| 	glibtop_free (subnet_string); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										164
									
								
								examples/procmap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								examples/procmap.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/procmap.h> | ||||
|  | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| #include <glibtop/inodedb.h> | ||||
| #endif | ||||
|  | ||||
| #include <sys/resource.h> | ||||
| #include <sys/mman.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT	1 | ||||
| #endif | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| 	glibtop_inodedb *inodedb; | ||||
| #endif | ||||
| 	glibtop_proc_map procmap; | ||||
| 	glibtop_map_entry *maps; | ||||
| 	unsigned method, count, port, i; | ||||
| 	char buffer [BUFSIZ]; | ||||
| 	pid_t pid; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (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); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	printf ("Command = '%s'\n", buffer); | ||||
|  | ||||
| 	count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port)); | ||||
|  | ||||
| 	printf ("Host = '%s' - %u\n\n", buffer, port); | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1)) | ||||
| 		glibtop_error ("Usage: %s pid", argv [0]); | ||||
|  | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| 	inodedb = glibtop_inodedb_open (0, 0); | ||||
| #endif | ||||
|  | ||||
| 	fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid); | ||||
|  | ||||
| 	maps = glibtop_get_proc_map (&procmap, pid); | ||||
|  | ||||
| 	for (i = 0; i < procmap.number; i++) { | ||||
| 		const char *filename = NULL; | ||||
| 		unsigned device, device_major, device_minor; | ||||
| 		char perm [5]; | ||||
| 		 | ||||
| 		if (maps [i].flags & (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' : '-'; | ||||
| 		perm [3] = (maps [i].perm & GLIBTOP_MAP_PERM_SHARED) ? 's' : '-'; | ||||
| 		perm [4] = (maps [i].perm & GLIBTOP_MAP_PERM_PRIVATE) ? 'p' : '-'; | ||||
|  | ||||
| 		device = (unsigned long) maps [i].device; | ||||
| 		device_minor = (device & 255); | ||||
| 		device_major = ((device >> 8) & 255); | ||||
|  | ||||
| 		if (filename) { | ||||
| 			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); | ||||
| 		} | ||||
|  | ||||
| 		if (filename && (filename != maps [i].filename)) | ||||
| 			glibtop_free (filename); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (maps); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										300
									
								
								examples/second.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										300
									
								
								examples/second.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,300 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| static void | ||||
| output (pid_t pid) | ||||
| { | ||||
| 	glibtop_union data; | ||||
| 	char *args; | ||||
| 	unsigned i; | ||||
|  | ||||
| #if HAVE_LIBGTOP_SMP | ||||
| 	unsigned long total; | ||||
| 	double p_total, p_utime, p_stime; | ||||
| 	double b_total, b_utime, b_stime; | ||||
| 	double s_total, s_utime, s_stime; | ||||
| 	double my_utime, my_stime; | ||||
| 	int ncpu; | ||||
| #endif | ||||
|  | ||||
| 	printf ("\n"); | ||||
| 		 | ||||
| 	glibtop_get_proc_state (&data.proc_state, pid); | ||||
|  | ||||
| 	printf ("Proc_State   PID  %5d (0x%08lx): " | ||||
| 		"'%s', %c, %lu, %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_state.flags, | ||||
| 		data.proc_state.cmd, data.proc_state.state, | ||||
| 		(unsigned long) data.proc_state.uid, | ||||
| 		(unsigned long) data.proc_state.gid); | ||||
| 		 | ||||
| 	glibtop_get_proc_uid (&data.proc_uid, pid); | ||||
| 	 | ||||
| 	printf ("Proc_Uid     PID  %5d (0x%08lx): " | ||||
| 		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid, | ||||
| 		(unsigned long) data.proc_uid.flags, | ||||
| 		data.proc_uid.uid, data.proc_uid.euid, | ||||
| 		data.proc_uid.gid, data.proc_uid.egid, | ||||
| 		data.proc_uid.pid, data.proc_uid.ppid, | ||||
| 		data.proc_uid.pgrp, data.proc_uid.session, | ||||
| 		data.proc_uid.tty, data.proc_uid.tpgid, | ||||
| 		data.proc_uid.priority, data.proc_uid.nice); | ||||
|  | ||||
| 	glibtop_get_proc_mem (&data.proc_mem, pid); | ||||
| 		 | ||||
| 	printf ("Proc_Mem     PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_mem.flags, | ||||
| 		(unsigned long) data.proc_mem.size, | ||||
| 		(unsigned long) data.proc_mem.vsize, | ||||
| 		(unsigned long) data.proc_mem.resident, | ||||
| 		(unsigned long) data.proc_mem.share, | ||||
| 		(unsigned long) data.proc_mem.rss, | ||||
| 		(unsigned long) data.proc_mem.rss_rlim); | ||||
| 		 | ||||
| 	glibtop_get_proc_segment (&data.proc_segment, pid); | ||||
|  | ||||
| 	printf ("Proc_Segment PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_segment.flags, | ||||
| 		(unsigned long) data.proc_segment.text_rss, | ||||
| 		(unsigned long) data.proc_segment.shlib_rss, | ||||
| 		(unsigned long) data.proc_segment.data_rss, | ||||
| 		(unsigned long) data.proc_segment.stack_rss, | ||||
| 		(unsigned long) data.proc_segment.dirty_size, | ||||
| 		(unsigned long) data.proc_segment.start_code, | ||||
| 		(unsigned long) data.proc_segment.end_code, | ||||
| 		(unsigned long) data.proc_segment.start_stack); | ||||
|  | ||||
| 	glibtop_get_proc_time (&data.proc_time, pid); | ||||
| 		 | ||||
| 	printf ("Proc_Time    PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_time.flags, | ||||
| 		(unsigned long) data.proc_time.start_time, | ||||
| 		(unsigned long) data.proc_time.rtime, | ||||
| 		(unsigned long) data.proc_time.utime, | ||||
| 		(unsigned long) data.proc_time.stime, | ||||
| 		(unsigned long) data.proc_time.cutime, | ||||
| 		(unsigned long) data.proc_time.cstime, | ||||
| 		(unsigned long) data.proc_time.timeout, | ||||
| 		(unsigned long) data.proc_time.it_real_value, | ||||
| 		(unsigned long) data.proc_time.frequency); | ||||
|  | ||||
| 	glibtop_get_proc_signal (&data.proc_signal, pid); | ||||
| 	 | ||||
| 	printf ("Proc_Signal  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_signal.flags, | ||||
| 		(unsigned long) data.proc_signal.signal, | ||||
| 		(unsigned long) data.proc_signal.blocked, | ||||
| 		(unsigned long) data.proc_signal.sigignore, | ||||
| 		(unsigned long) data.proc_signal.sigcatch); | ||||
|  | ||||
| 	glibtop_get_proc_kernel (&data.proc_kernel, pid); | ||||
|  | ||||
| 	printf ("Proc_Kernel  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| 		(unsigned long) data.proc_kernel.maj_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmin_flt, | ||||
| 		(unsigned long) data.proc_kernel.cmaj_flt, | ||||
| 		(unsigned long) data.proc_kernel.kstk_esp, | ||||
| 		(unsigned long) data.proc_kernel.kstk_eip, | ||||
| 		(unsigned long) data.proc_kernel.nwchan, | ||||
| 		data.proc_kernel.wchan); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	args = glibtop_get_proc_args (&data.proc_args, pid, 0); | ||||
|  | ||||
| 	for (i = 0; i < data.proc_args.size; i++) { | ||||
| 		if (args [i]) continue; | ||||
| 		args [i] = '|'; | ||||
| 	} | ||||
|  | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", (int) pid, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| #if HAVE_LIBGTOP_SMP | ||||
| 	ncpu = glibtop_global_server->ncpu; | ||||
|  | ||||
| 	glibtop_get_proc_time (&data.proc_time, pid); | ||||
| 		 | ||||
| 	total = (unsigned long) data.proc_time.utime + | ||||
| 		(unsigned long) data.proc_time.stime; | ||||
|  | ||||
| 	p_total = total ? (double) total : 1.0; | ||||
|  | ||||
| 	p_utime = (double) data.proc_time.utime * 100.0 / p_total; | ||||
| 	p_stime = (double) data.proc_time.stime * 100.0 / p_total; | ||||
|  | ||||
| 	b_total = p_total / ncpu; | ||||
| 	b_utime = (double) data.proc_time.utime / ncpu; | ||||
| 	b_stime = (double) data.proc_time.stime / ncpu; | ||||
|  | ||||
| 	s_total = 0.0; s_utime = 0.0; s_stime = 0.0; | ||||
|  | ||||
| 	printf ("Proc_Time    PID  %5d (0x%08lx): %12lu   %12lu   %12lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_time.flags, total, | ||||
| 		(unsigned long) data.proc_time.utime, | ||||
| 		(unsigned long) data.proc_time.stime); | ||||
|  | ||||
| 	for (i = 0; i < ncpu; i++) { | ||||
| 		unsigned long this_total; | ||||
|  | ||||
| 		this_total = (unsigned long) data.proc_time.xcpu_utime [i] + | ||||
| 			(unsigned long) data.proc_time.xcpu_stime [i]; | ||||
|  | ||||
| 		printf ("CPU %3d      PID  %5d (0x%08lx): %12lu   %12lu   %12lu\n", i, | ||||
| 			(int) pid, (unsigned long) data.proc_time.flags, this_total, | ||||
| 			(unsigned long) data.proc_time.xcpu_utime [i], | ||||
| 			(unsigned long) data.proc_time.xcpu_stime [i]); | ||||
|  | ||||
| 		s_total += fabs (((double) this_total) - b_total); | ||||
| 		s_utime += fabs (((double) data.proc_time.xcpu_utime [i]) - b_utime); | ||||
| 		s_stime += fabs (((double) data.proc_time.xcpu_stime [i]) - b_stime); | ||||
| 	} | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	printf ("Proc_Time    PID  %5d (0x%08lx): %12.3f   %12.3f   %12.3f\n", (int) pid, | ||||
| 		(unsigned long) data.proc_time.flags, 100.0, p_utime, p_stime); | ||||
|  | ||||
| 	for (i = 0; i < ncpu; i++) { | ||||
| 		double this_p_total, this_p_utime, this_p_stime; | ||||
| 		unsigned long this_total; | ||||
|  | ||||
| 		this_total = (unsigned long) data.proc_time.xcpu_utime [i] + | ||||
| 			(unsigned long) data.proc_time.xcpu_stime [i]; | ||||
|  | ||||
| 		this_p_total = (double) this_total * 100.0 / p_total; | ||||
|  | ||||
| 		this_p_utime = (double) data.proc_time.xcpu_utime [i] * 100.0 / p_total; | ||||
| 		this_p_stime = (double) data.proc_time.xcpu_stime [i] * 100.0 / p_total; | ||||
|  | ||||
| 		printf ("CPU %3d      PID  %5d (0x%08lx): %12.3f   %12.3f   %12.3f\n", i, | ||||
| 			(int) pid, (unsigned long) data.proc_time.flags, | ||||
| 			this_p_total, this_p_utime, this_p_stime); | ||||
| 	} | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	my_utime = (unsigned long) data.proc_time.utime ? | ||||
| 		(double) data.proc_time.utime : 1.0; | ||||
| 	my_stime = (unsigned long) data.proc_time.stime ? | ||||
| 		(double) data.proc_time.stime : 1.0; | ||||
|  | ||||
| 	printf ("SPIN: %31s %12.3f   %12.3f   %12.3f\n", "", s_total * 100.0 / p_total, | ||||
| 		s_utime * 100.0 / my_utime, s_stime * 100.0 / my_stime); | ||||
|  | ||||
| 	printf ("\n"); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_proclist proclist; | ||||
| 	glibtop_sysdeps sysdeps; | ||||
| 	unsigned *ptr, pid, i; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init (); | ||||
|  | ||||
| 	glibtop_get_sysdeps (&sysdeps); | ||||
|  | ||||
| 	printf ("Sysdeps      (0x%08lx): %lu, %lu, %lu, %lu, %lu, " | ||||
| 		"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", | ||||
| 		(unsigned long) sysdeps.flags, | ||||
| 		(unsigned long) sysdeps.cpu, | ||||
| 		(unsigned long) sysdeps.mem, | ||||
| 		(unsigned long) sysdeps.swap, | ||||
| 		(unsigned long) sysdeps.uptime, | ||||
| 		(unsigned long) sysdeps.loadavg, | ||||
| 		(unsigned long) sysdeps.shm_limits, | ||||
| 		(unsigned long) sysdeps.msg_limits, | ||||
| 		(unsigned long) sysdeps.sem_limits, | ||||
| 		(unsigned long) sysdeps.proclist, | ||||
| 		(unsigned long) sysdeps.proc_state, | ||||
| 		(unsigned long) sysdeps.proc_uid, | ||||
| 		(unsigned long) sysdeps.proc_mem, | ||||
| 		(unsigned long) sysdeps.proc_time, | ||||
| 		(unsigned long) sysdeps.proc_signal, | ||||
| 		(unsigned long) sysdeps.proc_kernel, | ||||
| 		(unsigned long) sysdeps.proc_segment); | ||||
|  | ||||
| 	if ((argc == 2) && (sscanf (argv [1], "%d", &pid) == 1)) { | ||||
| 		output (pid); | ||||
|  | ||||
| 		exit (0); | ||||
| 	} | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	ptr = glibtop_get_proclist (&proclist, 0, 0); | ||||
|  | ||||
| 	printf ("Proclist     (0x%08lx): %lu, %lu, %lu\n", | ||||
| 		(unsigned long) proclist.flags, | ||||
| 		(unsigned long) proclist.number, | ||||
| 		(unsigned long) proclist.size, | ||||
| 		(unsigned long) proclist.total); | ||||
|  | ||||
| 	if (!ptr) exit (1); | ||||
|  | ||||
| 	for (i = 0; i < proclist.number; i++) { | ||||
|  | ||||
| 		pid = ptr [i]; | ||||
| 		 | ||||
| 		output (pid); | ||||
| 	} | ||||
|  | ||||
| 	glibtop_free (ptr); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										127
									
								
								examples/smp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								examples/smp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, September 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/cpu.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_cpu cpu; | ||||
| 	unsigned long frequency; | ||||
| 	double total, user, nice, sys, idle; | ||||
| 	double b_total, b_user, b_nice, b_sys, b_idle; | ||||
| 	double s_total, s_user, s_nice, s_sys, s_idle; | ||||
| 	char separator [BUFSIZ], buffer [BUFSIZ]; | ||||
| 	int ncpu, i; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	glibtop_get_cpu (&cpu); | ||||
|  | ||||
| 	ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1; | ||||
|  | ||||
| 	frequency = (unsigned long) cpu.frequency; | ||||
|  | ||||
| 	total = ((unsigned long) cpu.total) ? ((double) cpu.total) : 1.0; | ||||
| 	user  = ((unsigned long) cpu.user)  ? ((double) cpu.user)  : 1.0; | ||||
| 	nice  = ((unsigned long) cpu.nice)  ? ((double) cpu.nice)  : 1.0; | ||||
| 	sys   = ((unsigned long) cpu.sys)   ? ((double) cpu.sys)   : 1.0; | ||||
| 	idle  = ((unsigned long) cpu.idle)  ? ((double) cpu.idle)  : 1.0; | ||||
|  | ||||
| 	s_total = s_user = s_nice = s_sys = s_idle = 0.0; | ||||
|  | ||||
| 	b_total = total / ncpu; | ||||
| 	b_user  = user  / ncpu; | ||||
| 	b_nice  = nice  / ncpu; | ||||
| 	b_sys   = sys   / ncpu; | ||||
| 	b_idle  = idle  / ncpu; | ||||
|  | ||||
| 	memset (separator, '-', 91); | ||||
| 	separator [92] = '\0'; | ||||
|  | ||||
| 	sprintf (buffer, _("Ticks (%ld per second):"), frequency); | ||||
|  | ||||
| 	printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer, | ||||
| 		_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator); | ||||
|  | ||||
| 	printf (_("CPU          (0x%08lx): %12.0f %12.0f %12.0f %12.0f %12.0f\n\n"), | ||||
| 		(unsigned long) cpu.flags, total, user, nice, sys, idle); | ||||
|  | ||||
| 	for (i = 0; i < glibtop_global_server->ncpu; i++) { | ||||
| 		printf (_("CPU %3d      (0x%08lx): %12lu %12lu %12lu %12lu %12lu\n"), i, | ||||
| 			(unsigned long) cpu.flags, | ||||
| 			(unsigned long) cpu.xcpu_total [i], | ||||
| 			(unsigned long) cpu.xcpu_user  [i], | ||||
| 			(unsigned long) cpu.xcpu_nice  [i], | ||||
| 			(unsigned long) cpu.xcpu_sys   [i], | ||||
| 			(unsigned long) cpu.xcpu_idle  [i]); | ||||
|  | ||||
| 		s_total += fabs (((double) cpu.xcpu_total [i]) - b_total); | ||||
| 		s_user  += fabs (((double) cpu.xcpu_user  [i]) - b_user); | ||||
| 		s_nice  += fabs (((double) cpu.xcpu_nice  [i]) - b_nice); | ||||
| 		s_sys   += fabs (((double) cpu.xcpu_sys   [i]) - b_sys); | ||||
| 		s_idle  += fabs (((double) cpu.xcpu_idle  [i]) - b_idle); | ||||
| 	} | ||||
|  | ||||
| 	printf ("%s\n\n\n", separator); | ||||
|  | ||||
| 	printf ("%-26s %12s %12s %12s %12s %12s\n%s\n", _("Percent:"), | ||||
| 		_("Total (%)"), _("User (%)"), _("Nice (%)"), _("Sys (%)"), | ||||
| 		_("Idle (%)"), separator); | ||||
| 	 | ||||
| 	printf (_("CPU          (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n\n"), | ||||
| 		(unsigned long) cpu.flags, (double) total * 100.0 / total, | ||||
| 		(double) user  * 100.0 / total, | ||||
| 		(double) nice  * 100.0 / total, | ||||
| 		(double) sys   * 100.0 / total, | ||||
| 		(double) idle  * 100.0 / total); | ||||
|  | ||||
| 	for (i = 0; i < glibtop_global_server->ncpu; i++) { | ||||
| 		double p_total, p_user, p_nice, p_sys, p_idle; | ||||
|  | ||||
| 		p_total = ((double) cpu.xcpu_total [i]) * 100.0 / total; | ||||
| 		p_user  = ((double) cpu.xcpu_user  [i]) * 100.0 / user; | ||||
| 		p_nice  = ((double) cpu.xcpu_nice  [i]) * 100.0 / nice; | ||||
| 		p_sys   = ((double) cpu.xcpu_sys   [i]) * 100.0 / sys; | ||||
| 		p_idle  = ((double) cpu.xcpu_idle  [i]) * 100.0 / idle; | ||||
|  | ||||
| 		printf (_("CPU %3d      (0x%08lx): %12.3f %12.3f %12.3f %12.3f %12.3f\n"), | ||||
| 			i, (unsigned long) cpu.flags, p_total, p_user, p_nice, | ||||
| 			p_sys, p_idle); | ||||
| 	} | ||||
|  | ||||
| 	printf ("%s\n%-26s %12.3f %12.3f %12.3f %12.3f %12.3f\n\n", separator, | ||||
| 		_("Spin:"), s_total * 100.0 / total, s_user * 100.0 / user, | ||||
| 		s_nice * 100.0 / nice, s_sys * 100.0 / sys, s_idle * 100.0 / idle); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										148
									
								
								examples/sysdeps.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								examples/sysdeps.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,148 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT	1 | ||||
| #endif | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_sysdeps sysdeps; | ||||
| 	unsigned method, count, port; | ||||
| 	char buffer [BUFSIZ]; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	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); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	printf ("Command = '%s'\n", buffer); | ||||
|  | ||||
| 	count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ); | ||||
| 	buffer [count] = 0; | ||||
|  | ||||
| 	glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port)); | ||||
|  | ||||
| 	printf ("Host = '%s' - %u\n\n", buffer, port); | ||||
|  | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	glibtop_get_sysdeps (&sysdeps); | ||||
|  | ||||
| #define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0) | ||||
|  | ||||
| 	printf ("Sysdeps (0x%08lx):\n\n" | ||||
| 		"\tfeatures:\t\t0x%08lx\n\n" | ||||
| 		"\tcpu:\t\t%d\t0x%08lx\n" | ||||
| 		"\tmem:\t\t%d\t0x%08lx\n" | ||||
| 		"\tswap:\t\t%d\t0x%08lx\n\n" | ||||
| 		"\tuptime:\t\t%d\t0x%08lx\n" | ||||
| 		"\tloadavg:\t%d\t0x%08lx\n\n" | ||||
| 		"\tshm_limits:\t%d\t0x%08lx\n" | ||||
| 		"\tmsg_limits:\t%d\t0x%08lx\n" | ||||
| 		"\tsem_limits:\t%d\t0x%08lx\n\n" | ||||
| 		"\tproclist:\t%d\t0x%08lx\n\n" | ||||
| 		"\tproc_state:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_uid:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_mem:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_time:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_signal:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_kernel:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_segment:\t%d\t0x%08lx\n\n" | ||||
| 		"\tproc_args:\t%d\t0x%08lx\n" | ||||
| 		"\tproc_map:\t%d\t0x%08lx\n\n" | ||||
| 		"\tmountlist:\t%d\t0x%08lx\n" | ||||
| 		"\tfsusage:\t%d\t0x%08lx\n\n" | ||||
| 		"\tnetload:\t%d\t0x%08lx\n" | ||||
| 		"\tppp:\t\t%d\t0x%08lx\n\n", | ||||
| 		(unsigned long) sysdeps.flags, | ||||
| 		(unsigned long) sysdeps.features, | ||||
| 		FEATURE_CHECK(CPU), | ||||
| 		(unsigned long) sysdeps.cpu, | ||||
| 		FEATURE_CHECK(MEM), | ||||
| 		(unsigned long) sysdeps.mem, | ||||
| 		FEATURE_CHECK(SWAP), | ||||
| 		(unsigned long) sysdeps.swap, | ||||
| 		FEATURE_CHECK(UPTIME), | ||||
| 		(unsigned long) sysdeps.uptime, | ||||
| 		FEATURE_CHECK(LOADAVG), | ||||
| 		(unsigned long) sysdeps.loadavg, | ||||
| 		FEATURE_CHECK(SHM_LIMITS), | ||||
| 		(unsigned long) sysdeps.shm_limits, | ||||
| 		FEATURE_CHECK(MSG_LIMITS), | ||||
| 		(unsigned long) sysdeps.msg_limits, | ||||
| 		FEATURE_CHECK(SEM_LIMITS), | ||||
| 		(unsigned long) sysdeps.sem_limits, | ||||
| 		FEATURE_CHECK(PROCLIST), | ||||
| 		(unsigned long) sysdeps.proclist, | ||||
| 		FEATURE_CHECK(PROC_STATE), | ||||
| 		(unsigned long) sysdeps.proc_state, | ||||
| 		FEATURE_CHECK(PROC_UID), | ||||
| 		(unsigned long) sysdeps.proc_uid, | ||||
| 		FEATURE_CHECK(PROC_MEM), | ||||
| 		(unsigned long) sysdeps.proc_mem, | ||||
| 		FEATURE_CHECK(PROC_TIME), | ||||
| 		(unsigned long) sysdeps.proc_time, | ||||
| 		FEATURE_CHECK(PROC_SIGNAL), | ||||
| 		(unsigned long) sysdeps.proc_signal, | ||||
| 		FEATURE_CHECK(PROC_KERNEL), | ||||
| 		(unsigned long) sysdeps.proc_kernel, | ||||
| 		FEATURE_CHECK(PROC_SEGMENT), | ||||
| 		(unsigned long) sysdeps.proc_segment, | ||||
| 		FEATURE_CHECK(PROC_ARGS), | ||||
| 		(unsigned long) sysdeps.proc_args, | ||||
| 		FEATURE_CHECK(PROC_MAP), | ||||
| 		(unsigned long) sysdeps.proc_map, | ||||
| 		FEATURE_CHECK(MOUNTLIST), | ||||
| 		(unsigned long) sysdeps.mountlist, | ||||
| 		FEATURE_CHECK(FSUSAGE), | ||||
| 		(unsigned long) sysdeps.fsusage, | ||||
| 		FEATURE_CHECK(NETLOAD), | ||||
| 		(unsigned long) sysdeps.netload, | ||||
| 		FEATURE_CHECK(PPP), | ||||
| 		(unsigned long) sysdeps.ppp); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										80
									
								
								examples/test.scm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								examples/test.scm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| (display (glibtop-names-sysdeps)) (newline) | ||||
| (display (glibtop-labels-sysdeps)) (newline) | ||||
| (display (glibtop-descriptions-sysdeps)) (newline) | ||||
| (display (glibtop-types-sysdeps)) (newline) | ||||
|  | ||||
| (newline) | ||||
|  | ||||
| (display (glibtop-names-cpu)) (newline) | ||||
| (display (glibtop-names-mem)) (newline) | ||||
| (display (glibtop-names-swap)) (newline) | ||||
| (display (glibtop-names-uptime)) (newline) | ||||
| (display (glibtop-names-loadavg)) (newline) | ||||
| (display (glibtop-names-shm_limits)) (newline) | ||||
| (display (glibtop-names-msg_limits)) (newline) | ||||
| (display (glibtop-names-sem_limits)) (newline) | ||||
| (display (glibtop-names-proclist)) (newline) | ||||
| (display (glibtop-names-proc_state)) (newline) | ||||
| (display (glibtop-names-proc_uid)) (newline) | ||||
| (display (glibtop-names-proc_mem)) (newline) | ||||
| (display (glibtop-names-proc_time)) (newline) | ||||
| (display (glibtop-names-proc_signal)) (newline) | ||||
| (display (glibtop-names-proc_kernel)) (newline) | ||||
| (display (glibtop-names-proc_segment)) (newline) | ||||
|  | ||||
| (newline) | ||||
|  | ||||
| (display (glibtop-labels-cpu)) (newline) | ||||
| (display (glibtop-labels-mem)) (newline) | ||||
| (display (glibtop-labels-swap)) (newline) | ||||
| (display (glibtop-labels-uptime)) (newline) | ||||
| (display (glibtop-labels-loadavg)) (newline) | ||||
| (display (glibtop-labels-shm_limits)) (newline) | ||||
| (display (glibtop-labels-msg_limits)) (newline) | ||||
| (display (glibtop-labels-sem_limits)) (newline) | ||||
| (display (glibtop-labels-proclist)) (newline) | ||||
| (display (glibtop-labels-proc_state)) (newline) | ||||
| (display (glibtop-labels-proc_uid)) (newline) | ||||
| (display (glibtop-labels-proc_mem)) (newline) | ||||
| (display (glibtop-labels-proc_time)) (newline) | ||||
| (display (glibtop-labels-proc_signal)) (newline) | ||||
| (display (glibtop-labels-proc_kernel)) (newline) | ||||
| (display (glibtop-labels-proc_segment)) (newline) | ||||
|  | ||||
| (newline) | ||||
|  | ||||
| (display (glibtop-descriptions-cpu)) (newline) | ||||
| (display (glibtop-descriptions-mem)) (newline) | ||||
| (display (glibtop-descriptions-swap)) (newline) | ||||
| (display (glibtop-descriptions-uptime)) (newline) | ||||
| (display (glibtop-descriptions-loadavg)) (newline) | ||||
| (display (glibtop-descriptions-shm_limits)) (newline) | ||||
| (display (glibtop-descriptions-msg_limits)) (newline) | ||||
| (display (glibtop-descriptions-sem_limits)) (newline) | ||||
| (display (glibtop-descriptions-proclist)) (newline) | ||||
| (display (glibtop-descriptions-proc_state)) (newline) | ||||
| (display (glibtop-descriptions-proc_uid)) (newline) | ||||
| (display (glibtop-descriptions-proc_mem)) (newline) | ||||
| (display (glibtop-descriptions-proc_time)) (newline) | ||||
| (display (glibtop-descriptions-proc_signal)) (newline) | ||||
| (display (glibtop-descriptions-proc_kernel)) (newline) | ||||
| (display (glibtop-descriptions-proc_segment)) (newline) | ||||
|  | ||||
| (newline) | ||||
|  | ||||
| (display (glibtop-types-cpu)) (newline) | ||||
| (display (glibtop-types-mem)) (newline) | ||||
| (display (glibtop-types-swap)) (newline) | ||||
| (display (glibtop-types-uptime)) (newline) | ||||
| (display (glibtop-types-loadavg)) (newline) | ||||
| (display (glibtop-types-shm_limits)) (newline) | ||||
| (display (glibtop-types-msg_limits)) (newline) | ||||
| (display (glibtop-types-sem_limits)) (newline) | ||||
| (display (glibtop-types-proclist)) (newline) | ||||
| (display (glibtop-types-proc_state)) (newline) | ||||
| (display (glibtop-types-proc_uid)) (newline) | ||||
| (display (glibtop-types-proc_mem)) (newline) | ||||
| (display (glibtop-types-proc_time)) (newline) | ||||
| (display (glibtop-types-proc_signal)) (newline) | ||||
| (display (glibtop-types-proc_kernel)) (newline) | ||||
| (display (glibtop-types-proc_segment)) (newline) | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
| 
 | ||||
| /* $Id$ */ | ||||
| 
 | ||||
| /* Copyright (C) 1998-99 Martin Baulig
 | ||||
| @@ -23,16 +21,37 @@ | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
| 
 | ||||
| #include <locale.h> | ||||
| 
 | ||||
| #include <glibtop.h> | ||||
|       | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/backend.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| 
 | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
| 
 | ||||
| void main_prog(int argc, char *argv[]); | ||||
| 
 | ||||
| int      | ||||
| main (int argc, char *argv[]) | ||||
| { | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 
 | ||||
| 	gh_enter (argc, argv, main_prog); | ||||
| 	exit (0); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| _glibtop_open_sysdeps (glibtop *server, const char *program_name, | ||||
| 		       const unsigned long features, const unsigned flags) | ||||
| main_prog (int argc, char *argv[]) | ||||
| { | ||||
|     glibtop_open_backend_l (server, "glibtop-backend-common", | ||||
| 			    features, NULL); | ||||
|     glibtop_open_backend_l (server, "glibtop-backend-sysdeps", | ||||
| 			    features, NULL); | ||||
| 	glibtop_boot_guile (); | ||||
| #ifdef GLIBTOP_GUILE_NAMES | ||||
| 	glibtop_boot_guile_names (); | ||||
| #endif | ||||
| 
 | ||||
| 	gh_repl (argc, argv); | ||||
| } | ||||
							
								
								
									
										357
									
								
								examples/timings.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										357
									
								
								examples/timings.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,357 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <sys/times.h> | ||||
| #include <sys/resource.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT			100000L | ||||
| #endif | ||||
|  | ||||
| #ifndef PROFILE_COUNT_EXPENSIVE | ||||
| #define PROFILE_COUNT_EXPENSIVE		10000L | ||||
| #endif | ||||
|  | ||||
| #define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 +	(unsigned long) elapsed_utime.tv_usec) | ||||
| #define ELAPSED_STIME ((unsigned long) elapsed_stime.tv_sec * 1000000 + (unsigned long) elapsed_stime.tv_usec) | ||||
|  | ||||
| #define libgtop_timeradd(tvp, uvp, vvp)						\ | ||||
| 	do {								\ | ||||
| 		(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec;		\ | ||||
| 		(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec;	\ | ||||
| 		if ((vvp)->tv_usec >= 1000000) {			\ | ||||
| 			(vvp)->tv_sec++;				\ | ||||
| 			(vvp)->tv_usec -= 1000000;			\ | ||||
| 		}							\ | ||||
| 	} while (0) | ||||
| #define libgtop_timersub(tvp, uvp, vvp)						\ | ||||
| 	do {								\ | ||||
| 		(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;		\ | ||||
| 		(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;	\ | ||||
| 		if ((vvp)->tv_usec < 0) {				\ | ||||
| 			(vvp)->tv_sec--;				\ | ||||
| 			(vvp)->tv_usec += 1000000;			\ | ||||
| 		}							\ | ||||
| 	} while (0) | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_union data; | ||||
| 	unsigned c, count, *ptr; | ||||
| 	struct rusage total_start, total_end; | ||||
| 	struct rusage rusage_start, rusage_end; | ||||
| 	struct timeval elapsed_utime, elapsed_stime; | ||||
| 	pid_t pid; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
|  | ||||
| 	printf ("%-12s (%-10s): %7s - %9s - %9s\n", | ||||
| 		"Feature", "Flags", "Count", "utime", "stime"); | ||||
| 	printf ("-------------------------------------------" | ||||
| 		"---------------\n"); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &total_start); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_cpu (&data.cpu); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("CPU          (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.cpu.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) | ||||
| 		glibtop_get_mem (&data.mem); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Memory       (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.mem.flags, PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) | ||||
| 		glibtop_get_swap (&data.swap); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Swap         (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.swap.flags, PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_uptime (&data.uptime); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Uptime       (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.uptime.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_loadavg (&data.loadavg); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Loadavg      (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.loadavg.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) { | ||||
| 		ptr = glibtop_get_proclist (&data.proclist, 0, 0); | ||||
| 		glibtop_free (ptr); | ||||
| 	} | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proclist     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proclist.flags, | ||||
| 		PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	pid = getpid (); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_state (&data.proc_state, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_State   (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_state.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_uid (&data.proc_uid, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Uid     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_uid.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_mem (&data.proc_mem, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Mem     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_mem.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_segment (&data.proc_segment, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Segment (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_segment.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_time (&data.proc_time, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Time    (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_time.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_signal (&data.proc_signal, pid); | ||||
| 	 | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Signal  (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_signal.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Kernel  (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_kernel.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
| 	 | ||||
| 	getrusage (RUSAGE_SELF, &total_end); | ||||
|  | ||||
| 	libgtop_timersub (&total_end.ru_utime, &total_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&total_end.ru_stime, &total_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("-------------------------------------------" | ||||
| 		"---------------\n"); | ||||
|  | ||||
| 	printf ("%-36s %9lu - %9lu\n\n", "TOTAL", | ||||
| 		ELAPSED_UTIME, ELAPSED_STIME); | ||||
|  | ||||
| 	printf ("All timings are in clock ticks " | ||||
| 		"(1000000 ticks per second).\n\n"); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
							
								
								
									
										46
									
								
								features.def
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								features.def
									
									
									
									
									
								
							| @@ -1,24 +1,22 @@ | ||||
| retval|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[GLIBTOP_NCPU],xcpu_user[GLIBTOP_NCPU],xcpu_nice[GLIBTOP_NCPU],xcpu_sys[GLIBTOP_NCPU],xcpu_idle[GLIBTOP_NCPU],xcpu_flags) | ||||
| retval|mem|ulong(total,used,free,shared,buffer,cached,user,locked) | ||||
| retval|swap|ulong(total,used,free,pagein,pageout) | ||||
| retval|uptime|double(uptime,idletime):ulong(boot_time) | ||||
| retval|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid) | ||||
| retval|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall) | ||||
| retval|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql) | ||||
| retval|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem) | ||||
| pointer(unsigned)|proclist|array|long(which,arg) | ||||
| retval|proc_state|string(cmd):unsigned(state):ulong(uid,gid,ruid,rgid,has_cpu,processor,last_processor)|pid_t(pid) | ||||
| retval|proc_uid|long(uid,euid,gid,egid,suid,sgid,fsuid,fsgid,pid,ppid,pgrp,session,tty,tpgid,priority,nice,ngroups,groups[GLIBTOP_MAX_GROUPS])|pid_t(pid) | ||||
| retval|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid) | ||||
| retval|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[GLIBTOP_NCPU],xcpu_stime[GLIBTOP_NCPU],xcpu_flags)|pid_t(pid) | ||||
| retval|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid) | ||||
| retval|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):string(wchan)|pid_t(pid) | ||||
| retval|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_data,end_data,start_brk,end_brk,start_stack,start_mmap,arg_start,arg_end,env_start,env_end)|pid_t(pid) | ||||
| pointer(string)|proc_args|array|pid_t(pid) | ||||
| array(glibtop_map_entry)|proc_map|array|pid_t(pid) | ||||
| array(glibtop_mountentry)|@mountlist|array|int(all_fs) | ||||
| retval|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string(mount_dir) | ||||
| array(glibtop_interface)|interface_names|array|ulong(interface,number,instance,strategy) | ||||
| retval|netinfo|ulong(if_flags,transport,mtu,subnet,address)|string(interface):unsigned(transport) | ||||
| retval|netload|ulong(packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string(interface):unsigned(transport,protocol) | ||||
| retval|ppp|ulong(state,bytes_in,bytes_out)|ushort(device) | ||||
| 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) | ||||
|   | ||||
							
								
								
									
										84
									
								
								glibtop.h
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								glibtop.h
									
									
									
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -26,48 +24,46 @@ | ||||
| #ifndef __GLIBTOP_H__ | ||||
| #define __GLIBTOP_H__ | ||||
|  | ||||
| #ifndef _IN_LIBGTOP | ||||
| #include <glibtop-config.h> | ||||
| #endif | ||||
|  | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/limits.h> | ||||
|  | ||||
| #include <glibtop_server.h> | ||||
| #include <glibtop/types.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
| #ifdef HAVE_GLIBTOP_MACHINE_H | ||||
| #include <glibtop_machine.h> | ||||
| #endif | ||||
|  | ||||
| typedef struct _glibtop			glibtop; | ||||
| typedef struct _glibtop_server_private	glibtop_server_private; | ||||
| #ifndef GLIBTOP_MOUNTENTRY_LEN | ||||
| #define GLIBTOP_MOUNTENTRY_LEN	79 | ||||
| #endif | ||||
|  | ||||
| typedef struct _glibtop		glibtop; | ||||
|  | ||||
| #include <glibtop/sysdeps.h> | ||||
| #include <glibtop/errors.h> | ||||
|  | ||||
| #ifdef _IN_LIBGTOP | ||||
| #include <glibtop-server-private.h> | ||||
| #endif | ||||
|  | ||||
| struct _glibtop | ||||
| { | ||||
|     int refcount;		/* Reference count */ | ||||
|     unsigned flags; | ||||
|     unsigned method;		/* Server Method */ | ||||
|     unsigned error_method;	/* Error Method */ | ||||
|     int ncpu;			/* Number of CPUs, zero if single-processor */ | ||||
|     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 */ | ||||
|     const char *server_host;	/* Host the server should run on */ | ||||
|     const char *server_user;	/* Name of the user on the target host */ | ||||
|     const char *server_rsh;	/* Command used to connect to the target host */ | ||||
|     unsigned long features;	/* Server is required for this features */ | ||||
|     unsigned long server_port;	/* Port on which daemon is listening */ | ||||
|     glibtop_sysdeps sysdeps;	/* Detailed feature list */ | ||||
|     glibtop_sysdeps required;	/* Required feature list */ | ||||
|     glibtop_sysdeps wanted;	/* We only want this features */ | ||||
|     glibtop_server_private *_priv;	/* Private data */ | ||||
|     unsigned glibtop_errno; | ||||
| 	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 */ | ||||
| 	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 */ | ||||
| 	const char *server_host;	/* Host the server should run on */ | ||||
| 	const char *server_user;	/* Name of the user on the target host */ | ||||
| 	const char *server_rsh;		/* Command used to connect to the target host */ | ||||
| 	unsigned long features;		/* Server is required for this features */ | ||||
| 	unsigned long server_port;	/* Port on which daemon is listening */ | ||||
| 	glibtop_sysdeps sysdeps;	/* Detailed feature list */ | ||||
| 	glibtop_sysdeps required;	/* Required feature list */ | ||||
| 	pid_t pid;			/* PID of the server */ | ||||
| }; | ||||
|  | ||||
| extern glibtop *glibtop_global_server; | ||||
| @@ -88,12 +84,24 @@ glibtop_init_s (glibtop **server_ptr, | ||||
| 		unsigned long features, | ||||
| 		unsigned flags); | ||||
|  | ||||
| void | ||||
| glibtop_server_ref (glibtop *server); | ||||
| #ifdef GLIBTOP_GUILE | ||||
|  | ||||
| void | ||||
| glibtop_server_unref (glibtop *server); | ||||
| /* You need to link with -lgtop_guile to get this stuff here. */ | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
| void glibtop_boot_guile (void); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_GUILE_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_guile_names to get this stuff here. */ | ||||
|  | ||||
| void glibtop_boot_guile_names (void); | ||||
|  | ||||
| #ifndef GLIBTOP_NAMES | ||||
| #define GLIBTOP_NAMES | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,3 +1,2 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| call-vector.h | ||||
|   | ||||
| @@ -1,23 +1,10 @@ | ||||
| glibtopdir		= $(includedir)/glibtop | ||||
| glibtopdir		= $(includedir)/libgtop-2.0/glibtop | ||||
|  | ||||
| glibtop_HEADERS		= close.h loadavg.h prockernel.h procstate.h \ | ||||
| 			  sem_limits.h uptime.h mem.h proclist.h \ | ||||
| 			  proctime.h shm_limits.h cpu.h msg_limits.h \ | ||||
| 			  procmem.h procuid.h swap.h error.h open.h \ | ||||
| 			  procsegment.h sysdeps.h xmalloc.h global.h \ | ||||
| 			  procsignal.h union.h types.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 \ | ||||
| 			  parameter.h mountlist.h fsusage.h procmap.h signal.h \ | ||||
| 			  inodedb.h sysinfo.h ppp.h procargs.h netload.h \ | ||||
| 			  netinfo.h interfaces.h limits.h array.h compat_10.h \ | ||||
| 			  errors.h glib-arrays.h backend.h call-vector.h | ||||
|  | ||||
| BUILT_SOURCES		= call-vector.h | ||||
|  | ||||
| call-vector.h: call-vector.pl call-vector.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/call-vector.pl $(top_srcdir)/features.def $(srcdir)/call-vector.h.in > tmp-t | ||||
| 	mv tmp-t call-vector.h | ||||
|  | ||||
| EXTRA_DIST		= call-vector.pl call-vector.h.in | ||||
|  | ||||
| CLEANFILES		= $(BUILT_SOURCES) | ||||
|  | ||||
| 			  inodedb.h sysinfo.h ppp.h procargs.h netload.h | ||||
|   | ||||
| @@ -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. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_BACKEND_H__ | ||||
| #define __GLIBTOP_BACKEND_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| typedef struct _glibtop_backend_info	glibtop_backend_info; | ||||
| typedef struct _glibtop_backend_entry	glibtop_backend_entry; | ||||
| typedef struct _glibtop_backend_module	glibtop_backend_module; | ||||
| typedef struct _glibtop_backend_private	glibtop_backend_private; | ||||
|  | ||||
| typedef struct _glibtop_backend		glibtop_backend; | ||||
|  | ||||
| #include <glibtop/call-vector.h> | ||||
|  | ||||
| typedef int (*glibtop_backend_open_func_t) (glibtop *, glibtop_backend *, | ||||
| 					    u_int64_t, const char **); | ||||
| typedef int (*glibtop_backend_close_func_t) (glibtop *, glibtop_backend *); | ||||
|  | ||||
| struct _glibtop_backend_info | ||||
| { | ||||
|     const char *name; | ||||
|     glibtop_backend_open_func_t open; | ||||
|     glibtop_backend_close_func_t close; | ||||
|     glibtop_call_vector *call_vector; | ||||
| }; | ||||
|  | ||||
| #ifdef _IN_LIBGTOP | ||||
|  | ||||
| #include <gmodule.h> | ||||
|  | ||||
| /* private structure */ | ||||
| struct _glibtop_backend_module | ||||
| { | ||||
|     int refcount; | ||||
|     GModule *module; | ||||
| }; | ||||
|  | ||||
| #endif /* _IN_LIBGTOP */ | ||||
|  | ||||
| struct _glibtop_backend_entry | ||||
| { | ||||
|     char *name; | ||||
|     char *libtool_name; | ||||
|     char *shlib_name; | ||||
|  | ||||
|     /* This is const since you must not attempt to | ||||
|      * write into gmodule loaded memory. */ | ||||
|     const glibtop_backend_info *info; | ||||
|  | ||||
|     /* private pointer */ | ||||
|     glibtop_backend_module *_priv; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_backend | ||||
| { | ||||
|     const glibtop_backend_info *info; | ||||
|  | ||||
|     /* private pointers */ | ||||
|     glibtop_backend_private *_priv; | ||||
|     glibtop_backend_module *_priv_module; | ||||
| }; | ||||
|  | ||||
| long | ||||
| glibtop_register_backend (glibtop_backend_entry *entry); | ||||
|  | ||||
| void | ||||
| glibtop_unregister_backend (long id); | ||||
|  | ||||
| glibtop_backend_entry * | ||||
| glibtop_backend_by_id (long id); | ||||
|  | ||||
| glibtop_backend_entry * | ||||
| glibtop_backend_by_name (const char *backend_name); | ||||
|  | ||||
| void | ||||
| glibtop_init_backends (void); | ||||
|  | ||||
| int | ||||
| glibtop_open_backend_l (glibtop *server, const char *backend_name, | ||||
| 			u_int64_t features, const char **backend_args); | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,116 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| die "Usage: $0 features.def call-vector.h.in" unless $#ARGV == 1; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| $func_decl_code = ''; | ||||
|  | ||||
| open FEATURESDEF, $ARGV[1] or | ||||
|   die "open ($ARGV[1]): $!"; | ||||
|  | ||||
| while (<FEATURESDEF>) { | ||||
|   chop;				# strip record separator | ||||
|    | ||||
|   if (/^[^\#]/) { | ||||
|     &parse_features_def ($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| close FEATURESDEF; | ||||
|  | ||||
| sub parse_features_def { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $retval = $line_fields[1]; | ||||
|   $element_def = $line_fields[3]; | ||||
|   $feature = $line_fields[2]; | ||||
|   $param_def = $line_fields[4]; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|   $space = $feature; | ||||
|   $space =~ s/./ /g; | ||||
|  | ||||
|   if ($retval eq 'retval') { | ||||
|     $retval_param = '&retval'; | ||||
|     $retval = 'int'; | ||||
|   } | ||||
|   elsif ($retval !~ /^void$/) { | ||||
|     $retval_param = 'NULL'; | ||||
|   } | ||||
|   else { | ||||
|     $retval_param = 'NULL'; | ||||
|   } | ||||
|   | ||||
|   if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|     $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|   } | ||||
|  | ||||
|   $param_decl = ''; | ||||
|   $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|   for ($param = 1; $param <= $nr_params; $param++) { | ||||
|     $list = $params[$param]; | ||||
|     $type = $params[$param]; | ||||
|     $type =~ s/\(.*//; | ||||
|     $list =~ s/^.*\(//; | ||||
|     $list =~ s/\)$//; | ||||
|     $count = (@fields = split(/,/, $list, 9999)); | ||||
|     for ($field = 1; $field <= $count; $field++) { | ||||
|       my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
|       $param_decl = $param_decl . ', '; | ||||
|       $param_decl = $param_decl . $c_type; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop *, glibtop_backend *%s);\n], $retval, $feature, $param_decl); | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *%s);\n], $retval, $feature, $param_decl); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl); | ||||
|   } else { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop *, glibtop_backend *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl); | ||||
|   } | ||||
| } | ||||
|  | ||||
| chop $func_decl_code; | ||||
|  | ||||
| $auto_gen_comment = sprintf | ||||
|   (qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]); | ||||
|  | ||||
| open CALLVECTOR, $ARGV[2] or | ||||
|   die "open ($ARGV[2]): $!"; | ||||
|  | ||||
| while (<CALLVECTOR>) { | ||||
|   chop; | ||||
|  | ||||
|   s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/; | ||||
|  | ||||
|   s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; | ||||
| } continue { | ||||
|   print $_; | ||||
| } | ||||
|  | ||||
| close CALLVECTOR; | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|   | ||||
							
								
								
									
										102
									
								
								include/glibtop/command.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								include/glibtop/command.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_COMMAND_H__ | ||||
| #define __GLIBTOP_COMMAND_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_CMND_QUIT		0 | ||||
| #define GLIBTOP_CMND_SYSDEPS		1 | ||||
|  | ||||
| #define GLIBTOP_CMND_CPU		2 | ||||
| #define GLIBTOP_CMND_MEM		3 | ||||
| #define GLIBTOP_CMND_SWAP		4 | ||||
| #define GLIBTOP_CMND_UPTIME		5 | ||||
| #define GLIBTOP_CMND_LOADAVG		6 | ||||
| #define GLIBTOP_CMND_SHM_LIMITS		7 | ||||
| #define GLIBTOP_CMND_MSG_LIMITS		8 | ||||
| #define GLIBTOP_CMND_SEM_LIMITS		9 | ||||
| #define GLIBTOP_CMND_PROCLIST		10 | ||||
|  | ||||
| #define GLIBTOP_CMND_PROC_STATE		11 | ||||
| #define GLIBTOP_CMND_PROC_UID		12 | ||||
| #define GLIBTOP_CMND_PROC_MEM		13 | ||||
| #define GLIBTOP_CMND_PROC_TIME		14 | ||||
| #define GLIBTOP_CMND_PROC_SIGNAL	15 | ||||
| #define GLIBTOP_CMND_PROC_KERNEL	16 | ||||
| #define GLIBTOP_CMND_PROC_SEGMENT	17 | ||||
| #define GLIBTOP_CMND_PROC_ARGS		18 | ||||
| #define GLIBTOP_CMND_PROC_MAP		19 | ||||
|  | ||||
| #define GLIBTOP_CMND_MOUNTLIST		20 | ||||
| #define GLIBTOP_CMND_FSUSAGE		21 | ||||
| #define GLIBTOP_CMND_NETLOAD		22 | ||||
| #define GLIBTOP_CMND_PPP		23 | ||||
|  | ||||
| #define GLIBTOP_MAX_CMND		24 | ||||
|  | ||||
| #define _GLIBTOP_PARAM_SIZE		16 | ||||
|  | ||||
| typedef struct _glibtop_command		glibtop_command; | ||||
|  | ||||
| typedef struct _glibtop_response	glibtop_response; | ||||
| typedef union  _glibtop_response_union	glibtop_response_union; | ||||
|  | ||||
| struct _glibtop_command | ||||
| { | ||||
| 	u_int64_t	command; | ||||
| 	u_int64_t	size, data_size; | ||||
| 	char		parameter [_GLIBTOP_PARAM_SIZE]; | ||||
| }; | ||||
|  | ||||
| union _glibtop_response_union | ||||
| { | ||||
| 	glibtop_union	data; | ||||
| 	glibtop_sysdeps	sysdeps; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_response | ||||
| { | ||||
| 	int64_t offset; | ||||
| 	u_int64_t size, data_size; | ||||
| 	glibtop_response_union u; | ||||
| }; | ||||
|  | ||||
| #define glibtop_call(p1, p2, p3, p4)	glibtop_call_r(glibtop_global_server, p1, p2, p3, p4) | ||||
|  | ||||
| void * | ||||
| glibtop_call_l (glibtop *server, unsigned command, size_t send_size, | ||||
| 		const void *send_buf, size_t recv_size, void *recv_buf); | ||||
|  | ||||
| void * | ||||
| glibtop_call_s (glibtop *server, unsigned command, size_t send_size, | ||||
| 		const void *send_buf, size_t recv_size, void *recv_buf); | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -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> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| /* glibtop_cpu */ | ||||
|  | ||||
| #define GLIBTOP_XCPU_TOTAL		GLIBTOP_CPU_XCPU_TOTAL | ||||
| #define GLIBTOP_XCPU_USER		GLIBTOP_CPU_XCPU_USER | ||||
| #define GLIBTOP_XCPU_NICE		GLIBTOP_CPU_XCPU_NICE | ||||
| #define GLIBTOP_XCPU_SYS		GLIBTOP_CPU_XCPU_SYS | ||||
| #define GLIBTOP_XCPU_IDLE		GLIBTOP_CPU_XCPU_IDLE | ||||
| #define GLIBTOP_XCPU_FLAGS		GLIBTOP_CPU_XCPU_FLAGS | ||||
|  | ||||
| /* glibtop_proclist */ | ||||
|  | ||||
| #define GLIBTOP_PROCLIST_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROCLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROCLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROCLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proclist; | ||||
|  | ||||
| /* glibtop_mountlist */ | ||||
|  | ||||
| #define GLIBTOP_MOUNTLIST_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_MOUNTLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_MOUNTLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_MOUNTLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_mountlist; | ||||
|  | ||||
| /* glibtop_proc_args */ | ||||
|  | ||||
| #define GLIBTOP_PROC_ARGS_SIZE		0 | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_ARGS		1 | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_args; | ||||
|  | ||||
| /* glibtop_proc_map */ | ||||
|  | ||||
| #define GLIBTOP_PROC_MAP_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROC_MAP_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROC_MAP_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_MAP		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_map; | ||||
|  | ||||
| /* glibtop_interface_names */ | ||||
|  | ||||
| #define GLIBTOP_INTERFACE_NAMES_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_INTERFACE_NAMES_SIZE	GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_INTERFACE_NAMES_TOTAL	GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_INTERFACE_NAMES	GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_interface_names; | ||||
|  | ||||
| #endif | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -38,32 +36,33 @@ BEGIN_LIBGTOP_DECLS | ||||
| #define GLIBTOP_CPU_IDLE	4 | ||||
| #define GLIBTOP_CPU_FREQUENCY	5 | ||||
|  | ||||
| #define GLIBTOP_CPU_XCPU_TOTAL	6 | ||||
| #define GLIBTOP_CPU_XCPU_USER	7 | ||||
| #define GLIBTOP_CPU_XCPU_NICE	8 | ||||
| #define GLIBTOP_CPU_XCPU_SYS	9 | ||||
| #define GLIBTOP_CPU_XCPU_IDLE	10 | ||||
| #define GLIBTOP_CPU_XCPU_FLAGS	11 | ||||
| #define GLIBTOP_XCPU_TOTAL	6 | ||||
| #define GLIBTOP_XCPU_USER	7 | ||||
| #define GLIBTOP_XCPU_NICE	8 | ||||
| #define GLIBTOP_XCPU_SYS	9 | ||||
| #define GLIBTOP_XCPU_IDLE	10 | ||||
|  | ||||
| #define GLIBTOP_MAX_CPU		12 | ||||
| #define GLIBTOP_MAX_CPU		11 | ||||
|  | ||||
| /* Nobody should really be using more than 4 processors. */ | ||||
| #define GLIBTOP_NCPU		4 | ||||
|  | ||||
| typedef struct _glibtop_cpu	glibtop_cpu; | ||||
|  | ||||
| struct _glibtop_cpu | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	total,				/* GLIBTOP_CPU_TOTAL		*/ | ||||
| 	user,				/* GLIBTOP_CPU_USER		*/ | ||||
| 	nice,				/* GLIBTOP_CPU_NICE		*/ | ||||
| 	sys,				/* GLIBTOP_CPU_SYS		*/ | ||||
| 	idle,				/* GLIBTOP_CPU_IDLE		*/ | ||||
| 	frequency,			/* GLIBTOP_CPU_FREQUENCY	*/ | ||||
| 	xcpu_total [GLIBTOP_NCPU],	/* GLIBTOP_CPU_XCPU_TOTAL	*/ | ||||
| 	xcpu_user [GLIBTOP_NCPU],	/* GLIBTOP_CPU_XCPU_USER	*/ | ||||
| 	xcpu_nice [GLIBTOP_NCPU],	/* GLIBTOP_CPU_XCPU_NICE	*/ | ||||
| 	xcpu_sys  [GLIBTOP_NCPU],	/* GLIBTOP_CPU_XCPU_SYS		*/ | ||||
| 	xcpu_idle [GLIBTOP_NCPU],	/* GLIBTOP_CPU_XCPU_IDLE	*/ | ||||
| 	xcpu_flags;			/* GLIBTOP_CPU_XCPU_FLAGS	*/ | ||||
| 	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		*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_cpu(cpu)	glibtop_get_cpu_l(glibtop_global_server, cpu) | ||||
| @@ -74,14 +73,14 @@ struct _glibtop_cpu | ||||
| #define glibtop_get_cpu_r	glibtop_get_cpu_s | ||||
| #endif | ||||
|  | ||||
| int glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf); | ||||
| void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_CPU | ||||
| int glibtop_init_cpu_p (glibtop *server); | ||||
| int glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf); | ||||
| void glibtop_init_cpu_p (glibtop *server); | ||||
| void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf); | ||||
| #else | ||||
| int glibtop_init_cpu_s (glibtop *server); | ||||
| int glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf); | ||||
| void glibtop_init_cpu_s (glibtop *server); | ||||
| void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -48,41 +46,41 @@ void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args); | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_error_r (glibtop *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
| 	va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_error_vr (server, format, args); | ||||
|     va_end (args); | ||||
| 	va_start (args, format); | ||||
| 	glibtop_error_vr (server, format, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_warn_r (glibtop *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
| 	va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_vr (server, format, args); | ||||
|     va_end (args); | ||||
| 	va_start (args, format); | ||||
| 	glibtop_warn_vr (server, format, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_error_io_r (glibtop *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
| 	va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_error_io_vr (server, format, errno, args); | ||||
|     va_end (args); | ||||
| 	va_start (args, format); | ||||
| 	glibtop_error_io_vr (server, format, errno, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_warn_io_r (glibtop *server, char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
| 	va_list args; | ||||
|  | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_io_vr (server, format, errno, args); | ||||
|     va_end (args); | ||||
| 	va_start (args, format); | ||||
| 	glibtop_warn_io_vr (server, format, errno, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| #ifdef  __GNUC__ | ||||
| @@ -98,37 +96,37 @@ glibtop_warn_io_r (glibtop *server, char *format, ...) | ||||
| static void | ||||
| glibtop_error (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_error_vr (glibtop_global_server, format, args); | ||||
|     va_end (args); | ||||
| 	va_list args; | ||||
| 	va_start (args, format); | ||||
| 	glibtop_error_vr (glibtop_global_server, format, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_warn (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_vr (glibtop_global_server, format, args); | ||||
|     va_end (args); | ||||
| 	va_list args; | ||||
| 	va_start (args, format); | ||||
| 	glibtop_warn_vr (glibtop_global_server, format, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_error_io (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_error_io_vr (glibtop_global_server, format, errno, args); | ||||
|     va_end (args); | ||||
| 	va_list args; | ||||
| 	va_start (args, format); | ||||
| 	glibtop_error_io_vr (glibtop_global_server, format, errno, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| glibtop_warn_io (char *format, ...) | ||||
| { | ||||
|     va_list args; | ||||
|     va_start (args, format); | ||||
|     glibtop_warn_io_vr (glibtop_global_server, format, errno, args); | ||||
|     va_end (args); | ||||
| 	va_list args; | ||||
| 	va_start (args, format); | ||||
| 	glibtop_warn_io_vr (glibtop_global_server, format, errno, args); | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| #endif /* no __GNUC__ */ | ||||
|   | ||||
| @@ -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_ERRORS_H__ | ||||
| #define __GLIBTOP_ERRORS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_ERROR_NO_ERROR			0 | ||||
| #define GLIBTOP_ERROR_UNKNOWN			1 | ||||
| #define GLIBTOP_ERROR_INVALID_ARGUMENT		2 | ||||
| #define GLIBTOP_ERROR_NO_SUCH_PARAMETER		3 | ||||
| #define GLIBTOP_ERROR_READONLY_VALUE		4 | ||||
| #define GLIBTOP_ERROR_SIZE_MISMATCH		5 | ||||
|  | ||||
| #define GLIBTOP_ERROR_SERVER_COMM_FAILURE	6 | ||||
|  | ||||
| #define GLIBTOP_ERROR_NO_SUCH_PROCESS		7 | ||||
|  | ||||
| #define GLIBTOP_ERROR_NO_KERNEL_SUPPORT		8 | ||||
| #define GLIBTOP_ERROR_INCOMPATIBLE_KERNEL	9 | ||||
|  | ||||
| #define GLIBTOP_ERROR_NO_SUCH_BACKEND		10 | ||||
| #define GLIBTOP_ERROR_NOT_IMPLEMENTED		11 | ||||
| #define GLIBTOP_ERROR_NO_BACKEND_OPENED		12 | ||||
|  | ||||
| #define GLIBTOP_ERROR_DEMARSHAL_ERROR		13 | ||||
|  | ||||
| #define GLIBTOP_MAX_ERROR			14 | ||||
|  | ||||
| char * | ||||
| glibtop_get_error_string_l (glibtop *server, unsigned error_number); | ||||
|  | ||||
| unsigned | ||||
| glibtop_get_errno_l (glibtop *server); | ||||
|  | ||||
| unsigned | ||||
| glibtop_clear_errno_l (glibtop *server); | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -43,20 +41,20 @@ typedef struct _glibtop_fsusage		glibtop_fsusage; | ||||
|  | ||||
| struct _glibtop_fsusage | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	blocks,		/* Total blocks. */ | ||||
| 	bfree,		/* Free blocks available to superuser. */ | ||||
| 	bavail,		/* Free blocks available to non-superuser. */ | ||||
| 	files,		/* Total file nodes. */ | ||||
| 	ffree;		/* Free file nodes. */ | ||||
| 	u_int64_t	flags, | ||||
| 		blocks,		/* Total blocks. */ | ||||
| 		bfree,		/* Free blocks available to superuser. */ | ||||
| 		bavail,		/* Free blocks available to non-superuser. */ | ||||
| 		files,		/* Total file nodes. */ | ||||
| 		ffree;		/* Free file nodes. */ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_fsusage(fsusage,disk)	glibtop_get_fsusage_l(glibtop_global_server, fsusage, disk) | ||||
|  | ||||
| #define glibtop_get_fsusage_r		glibtop_get_fsusage_s | ||||
|  | ||||
| int glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir); | ||||
| int glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir); | ||||
| void glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf, const char *mount_dir); | ||||
| void glibtop_get_fsusage_s (glibtop *server, glibtop_fsusage *buf, const char *mount_dir); | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
|   | ||||
| @@ -1,59 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_GLIB_ARRAYS_H__ | ||||
| #define __GLIBTOP_GLIB_ARRAYS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/array.h> | ||||
| #include <glibtop/global.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define glibtop_get_proc_args_as_array(pid) glibtop_get_proc_args_as_array_l(glibtop_global_server, pid) | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_args_as_array_l (glibtop *server, pid_t pid); | ||||
|  | ||||
| #define glibtop_get_proclist_as_array(which,arg) glibtop_get_proclist_as_array_l(glibtop_global_server, which, arg) | ||||
|  | ||||
| GArray * | ||||
| glibtop_get_proclist_as_array_l (glibtop *server, int64_t which, int64_t arg); | ||||
|  | ||||
| #define glibtop_get_proc_map_as_array(pid) glibtop_get_proc_map_as_array_l(glibtop_global_server, pid) | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_map_as_array_l (glibtop *server, pid_t pid); | ||||
|  | ||||
| #define glibtop_get_mountlist_as_array(all_fs) glibtop_get_mountlist_as_array_l(glibtop_global_server, all_fs) | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_mountlist_as_array_l (glibtop *server, int all_fs); | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
| #endif | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -111,10 +109,10 @@ | ||||
| #endif | ||||
|  | ||||
| #include <string.h> | ||||
| #include <sys/types.h> | ||||
|  | ||||
| #ifdef _IN_LIBGTOP | ||||
|  | ||||
| #include <sys/types.h> | ||||
| #include <sys/param.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/stat.h> | ||||
|   | ||||
							
								
								
									
										161
									
								
								include/glibtop/gnuserv.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								include/glibtop/gnuserv.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | ||||
| /* -*-C-*- | ||||
|  | ||||
|  Header file for the GNU Emacs server and client C code. | ||||
|  | ||||
|  This file is part of GNU Emacs. | ||||
|  | ||||
|  Copying is permitted under those conditions described by the GNU | ||||
|  General Public License. | ||||
|  | ||||
|  Copyright (C) 1989 Free Software Foundation, Inc. | ||||
|  | ||||
|  Author: Andy Norman (ange@hplb.hpl.hp.com), based on  | ||||
|          'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU | ||||
|          Emacs distribution. | ||||
|  | ||||
|  Please mail bugs and suggestions to the author at the above address. | ||||
| */ | ||||
|  | ||||
| /* HISTORY  | ||||
|  * 11-Nov-1990		bristor@simba	 | ||||
|  *    Added EOT stuff. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * This file incorporates new features added by Bob Weiner <weiner@mot.com>, | ||||
|  * Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>. | ||||
|  * Please see the note at the end of the README file for details. | ||||
|  * | ||||
|  * (If gnuserv came bundled with your emacs, the README file is probably | ||||
|  * ../etc/gnuserv.README relative to the directory containing this file) | ||||
|  */ | ||||
|  | ||||
| #if 0 | ||||
| static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !"; | ||||
| #endif | ||||
|  | ||||
| #define NO_SHORTNAMES | ||||
|  | ||||
| #define PATCHLEVEL 2 | ||||
|  | ||||
| #define NO_SHORTNAMES | ||||
| /* gnuserv should not be compiled using SOCKS */ | ||||
| #define DO_NOT_SOCKSIFY | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/error.h> | ||||
| #undef read | ||||
| #undef write | ||||
| #undef open | ||||
| #undef close | ||||
| #undef signal | ||||
|  | ||||
| /* Define the communication method between server and clients: | ||||
|  *   You can have either or both kinds of sockets, but you can't mix | ||||
|  *   sockets with sysv ipc | ||||
|  */ | ||||
|  | ||||
| #define INTERNET_DOMAIN_SOCKETS | ||||
| #define UNIX_DOMAIN_SOCKETS | ||||
|  | ||||
| /* | ||||
|  * Define additional authentication protocols to be used. These methods will | ||||
|  * be tried before falling back to the default gnuserv protocol (based on | ||||
|  * the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1 | ||||
|  * is also supported. | ||||
|  * | ||||
|  * Comment out the next line(s) if you don't want to enable the | ||||
|  * appropriate authentication protocol. | ||||
|  */ | ||||
|  | ||||
| #if defined (HAVE_XAUTH) | ||||
| #define AUTH_MAGIC_COOKIE | ||||
| #endif /* HAVE_XAUTH */ | ||||
|  | ||||
| /* | ||||
|  * stuff related to supporting MIT-MAGIC-COOKIE-1 | ||||
|  */ | ||||
|  | ||||
| #if 0 | ||||
| #define MCOOKIE_SCREEN "42980"   /* screen # to use as the gnuserv cookie */  | ||||
| #endif | ||||
| #define MCOOKIE_NAME   "MAGIC-1" /* authentication protocol name */ | ||||
| #define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1"  /* as needed by X */ | ||||
|  | ||||
|  | ||||
| #define DEFAUTH_NAME "GNU-SECURE"  /* name of default auth protocol */ | ||||
| #define AUTH_TIMEOUT  15           /* # seconds to wait for auth data */ | ||||
| #define AUTH_NAMESZ   15           /* max allows auth protocol name size */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Pick a default communication scheme, if none was specified. | ||||
|  */ | ||||
|  | ||||
| #if !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS) | ||||
|  | ||||
| /* BSD systems use Unix Domain sockets by default */ | ||||
|  | ||||
| #ifdef BSD | ||||
| #define UNIX_DOMAIN_SOCKETS | ||||
| #endif | ||||
|  | ||||
| #endif /* No communication method pre-defined */ | ||||
|  | ||||
| /* | ||||
|  * If you are using SYSV_IPC, you might want to make the buffer size bigger | ||||
|  * since it limits the size of requests and responses. Don't make it bigger | ||||
|  * than your system's max message size though (usually a couple of k) or else | ||||
|  * msgsend will start failing. For sockets, using the system BUFSIZ is usually | ||||
|  * what you want.  | ||||
|  */ | ||||
|  | ||||
| #if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS) | ||||
| #include <sys/socket.h> | ||||
| #endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */ | ||||
|  | ||||
| #ifdef INTERNET_DOMAIN_SOCKETS | ||||
| #include <netdb.h> | ||||
| #include <netinet/in.h> | ||||
| #include <arpa/inet.h> | ||||
| #define TABLE_SIZE 101		/* The number of entries in the hash table */ | ||||
| #define HASH(host) host		/* Rather simplistic hash function */ | ||||
| #define DEFAULT_PORT 21490	/* default port number to use is | ||||
| 				 * DEFAULT_PORT + uid */ | ||||
| #endif /* INTERNET_DOMAIN_SOCKETS */ | ||||
|  | ||||
| #ifdef UNIX_DOMAIN_SOCKETS | ||||
| #include <sys/un.h> | ||||
| #define HIDE_UNIX_SOCKET	/* put the unix socket in a protected dir */ | ||||
| #endif /* UNIX_DOMAIN_SOCKETS */ | ||||
|  | ||||
| #define HOSTNAMSZ 255		/* max size of a hostname */ | ||||
| #define REPLYSIZ 300		/* max size of reply from server to client */ | ||||
| #undef FALSE | ||||
| #define FALSE 0 | ||||
| #undef TRUE | ||||
| #define TRUE 1 | ||||
|  | ||||
| /* The casts shut Sun's compiler up and are safe in the context these | ||||
|    are actually used. */ | ||||
| #define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y)) | ||||
| #define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y)) | ||||
|  | ||||
| #ifndef _NFILE            /* rough guess at maximum number of open files */ | ||||
| #define _NFILE 20 | ||||
| #endif | ||||
|  | ||||
| #define EOT_STR "\004" | ||||
| #define EOT_CHR '\004' | ||||
|  | ||||
| /* connection types */ | ||||
| #define CONN_UNIX     0 | ||||
| #define CONN_INTERNET 1 | ||||
| #define CONN_IPC      2 | ||||
|  | ||||
| /* function declarations */ | ||||
| int glibtop_make_connection (const char *hostarg, int portarg, int *s); | ||||
|  | ||||
| #ifdef INTERNET_DOMAIN_SOCKETS | ||||
| long glibtop_internet_addr (const char *host); | ||||
| #endif | ||||
|  | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -41,12 +39,12 @@ typedef struct _glibtop_inodedb_key	glibtop_inodedb_key; | ||||
|  | ||||
| struct _glibtop_inodedb_key | ||||
| { | ||||
|     u_int64_t device, inode; | ||||
| 	u_int64_t device, inode; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_inodedb | ||||
| { | ||||
|     GDBM_FILE system_dbf, user_dbf; | ||||
| 	GDBM_FILE system_dbf, user_dbf; | ||||
| }; | ||||
|  | ||||
| #define glibtop_inodedb_open(p1,p2)	glibtop_inodedb_open_s(glibtop_global_server, p1, p2) | ||||
|   | ||||
| @@ -1,173 +0,0 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_INTERFACES_H__ | ||||
| #define __GLIBTOP_INTERFACES_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/compat_10.h> | ||||
| #include <glibtop/array.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_INTERFACE_IF_FLAGS	0 | ||||
| #define GLIBTOP_INTERFACE_TRANSPORT	1 | ||||
| #define GLIBTOP_INTERFACE_TYPE		2 | ||||
| #define GLIBTOP_INTERFACE_NUMBER	3 | ||||
| #define GLIBTOP_INTERFACE_INSTANCE	4 | ||||
| #define GLIBTOP_INTERFACE_NUM_LOGICAL	5 | ||||
| #define GLIBTOP_INTERFACE_NAME		6 | ||||
|  | ||||
| #define GLIBTOP_MAX_INTERFACE		7 | ||||
|  | ||||
| typedef struct _glibtop_interface	glibtop_interface; | ||||
|  | ||||
| typedef enum _glibtop_interface_type	glibtop_interface_type; | ||||
| typedef enum _glibtop_transport		glibtop_transport; | ||||
| typedef enum _glibtop_protocol		glibtop_protocol; | ||||
|  | ||||
| typedef enum _glibtop_strategy		glibtop_strategy; | ||||
| typedef enum _glibtop_interface_flags	glibtop_interface_flags; | ||||
|  | ||||
| enum _glibtop_protocol { | ||||
|     GLIBTOP_PROTOCOL_OTHERS	= 0, | ||||
|     GLIBTOP_PROTOCOL_ICMP	= 1 << 0, | ||||
|     GLIBTOP_PROTOCOL_TCP	= 1 << 1, | ||||
|     GLIBTOP_PROTOCOL_UDP	= 1 << 2, | ||||
|     GLIBTOP_PROTOCOL_IGMP	= 1 << 3, | ||||
|     GLIBTOP_PROTOCOL_RAW	= 1 << 4, | ||||
|     GLIBTOP_PROTOCOL_ICMP6	= 1 << 5, | ||||
|     GLIBTOP_PROTOCOL_TCP6	= 1 << 6, | ||||
|     GLIBTOP_PROTOCOL_UDP6	= 1 << 7, | ||||
|     GLIBTOP_PROTOCOL_IGMP6	= 1 << 8, | ||||
|     GLIBTOP_PROTOCOL_RAW6	= 1 << 9 | ||||
| }; | ||||
|  | ||||
| enum _glibtop_transport { | ||||
|     GLIBTOP_TRANSPORT_DEFAULT	= 0, | ||||
|     GLIBTOP_TRANSPORT_IPV4	= 1 << 0, | ||||
|     GLIBTOP_TRANSPORT_IPV6	= 1 << 1, | ||||
|     GLIBTOP_TRANSPORT_IPX	= 1 << 2, | ||||
|     GLIBTOP_TRANSPORT_X25	= 1 << 3, | ||||
|     GLIBTOP_TRANSPORT_DECNET	= 1 << 4, | ||||
|     GLIBTOP_TRANSPORT_APPLETALK	= 1 << 5, | ||||
|     GLIBTOP_TRANSPORT_NETBEUI	= 1 << 6, | ||||
| }; | ||||
|  | ||||
| #define GLIBTOP_TRANSPORT_ALL	GLIBTOP_UNLIMITED | ||||
| #define GLIBTOP_PROTOCOL_ALL	GLIBTOP_UNLIMITED | ||||
|  | ||||
| enum _glibtop_interface_type { | ||||
|     GLIBTOP_INTERFACE_ALL		= 0, | ||||
|     GLIBTOP_INTERFACE_OTHER, | ||||
|     /* Network interfaces */ | ||||
|     GLIBTOP_INTERFACE_ETHERNET		= 101, | ||||
|     GLIBTOP_INTERFACE_FDDI, | ||||
|     GLIBTOP_INTERFACE_FRAME_RELAY, | ||||
|     GLIBTOP_INTERFACE_TOKEN_RING, | ||||
|     GLIBTOP_INTERFACE_ARCNET, | ||||
|     GLIBTOP_INTERFACE_ATM, | ||||
|     /* Dummy interfaces */ | ||||
|     GLIBTOP_INTERFACE_LOOPBACK		= 501, | ||||
|     GLIBTOP_INTERFACE_DUMMY, | ||||
|     /* Dialup interfaces */ | ||||
|     GLIBTOP_INTERFACE_PARA		= 801, | ||||
|     GLIBTOP_INTERFACE_SLIP, | ||||
|     GLIBTOP_INTERFACE_PPP, | ||||
|     GLIBTOP_INTERFACE_ISDN | ||||
| }; | ||||
|  | ||||
| enum _glibtop_strategy { | ||||
|     GLIBTOP_INTERFACES_ALL		= 0, | ||||
|     GLIBTOP_INTERFACES_BEST_MATCHING, | ||||
|     GLIBTOP_INTERFACES_ONLY_THIS_ONE, | ||||
|     GLIBTOP_INTERFACES_INCLUDE_LOGICAL	= 1 << 7, | ||||
| }; | ||||
|  | ||||
| enum _glibtop_interface_flags { | ||||
|     GLIBTOP_IF_FLAGS_UP = 1, | ||||
|     GLIBTOP_IF_FLAGS_BROADCAST, | ||||
|     GLIBTOP_IF_FLAGS_DEBUG, | ||||
|     GLIBTOP_IF_FLAGS_LOOPBACK, | ||||
|     GLIBTOP_IF_FLAGS_POINTOPOINT, | ||||
|     GLIBTOP_IF_FLAGS_RUNNING, | ||||
|     GLIBTOP_IF_FLAGS_NOARP, | ||||
|     GLIBTOP_IF_FLAGS_PROMISC, | ||||
|     GLIBTOP_IF_FLAGS_ALLMULTI, | ||||
|     GLIBTOP_IF_FLAGS_OACTIVE, | ||||
|     GLIBTOP_IF_FLAGS_SIMPLEX, | ||||
|     GLIBTOP_IF_FLAGS_LINK0, | ||||
|     GLIBTOP_IF_FLAGS_LINK1, | ||||
|     GLIBTOP_IF_FLAGS_LINK2, | ||||
|     GLIBTOP_IF_FLAGS_ALTPHYS, | ||||
|     GLIBTOP_IF_FLAGS_MULTICAST | ||||
| }; | ||||
|  | ||||
| struct _glibtop_interface | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	if_flags,		/* GLIBTOP_INTERFACE_IF_FLAGS		*/ | ||||
| 	transport,		/* GLIBTOP_INTERFACE_TRANSPORT		*/ | ||||
| 	type,			/* GLIBTOP_INTERFACE_TYPE		*/ | ||||
| 	number,			/* GLIBTOP_INTERFACE_NUMBER		*/ | ||||
| 	instance,		/* GLIBTOP_INTERFACE_INSTANCE		*/ | ||||
| 	num_logical;		/* GLIBTOP_INTERFACE_NUM_LOGICAL	*/ | ||||
|     char name [GLIBTOP_INTERFACE_LEN]; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_interface_names(array,interface,number,instance,strategy) glibtop_get_interface_names_l (glibtop_global_server, array, interface, number, instance, strategy) | ||||
|  | ||||
| #if GLIBTOP_SUID_INTERFACE_NAMES | ||||
| #define glibtop_get_interface_names_r	glibtop_get_interface_names_p | ||||
| #else | ||||
| #define glibtop_get_interface_names_r	glibtop_get_interface_names_s | ||||
| #endif | ||||
|  | ||||
| glibtop_interface *glibtop_get_interface_names_l (glibtop *server, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy); | ||||
|  | ||||
| #if GLIBTOP_SUID_INTERFACE_NAMES | ||||
| int glibtop_init_interface_names_p (glibtop *server); | ||||
| glibtop_interface *glibtop_get_interface_names_p (glibtop *server, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy); | ||||
| #else | ||||
| int glibtop_init_interface_names_s (glibtop *server); | ||||
| glibtop_interface *glibtop_get_interface_names_s (glibtop *server, glibtop_array *array, u_int64_t interface, u_int64_t number, u_int64_t instance, u_int64_t strategy); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_names to get this stuff here. */ | ||||
|  | ||||
| extern const char *glibtop_names_interface_names []; | ||||
| extern const unsigned glibtop_types_interface_names []; | ||||
| extern const char *glibtop_labels_interface_names []; | ||||
| extern const char *glibtop_descriptions_interface_names []; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -42,11 +40,11 @@ typedef struct _glibtop_loadavg	glibtop_loadavg; | ||||
|  | ||||
| struct _glibtop_loadavg | ||||
| { | ||||
|     u_int64_t flags; | ||||
|     double loadavg [3];		/* GLIBTOP_LOADAVG_LOADAVG	*/ | ||||
|     u_int64_t nr_running,	/* GLIBTOP_LOADAVG_NR_RUNNING	*/ | ||||
| 	nr_tasks,		/* GLIBTOP_LOADAVG_NR_TASKS	*/ | ||||
| 	last_pid;		/* GLIBTOP_LOADAVG_LAST_PID	*/ | ||||
| 	u_int64_t flags; | ||||
| 	double loadavg [3];		/* GLIBTOP_LOADAVG_LOADAVG	*/ | ||||
| 	u_int64_t nr_running,		/* GLIBTOP_LOADAVG_NR_RUNNING	*/ | ||||
| 		nr_tasks,		/* GLIBTOP_LOADAVG_NR_TASKS	*/ | ||||
| 		last_pid;		/* GLIBTOP_LOADAVG_LAST_PID	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_loadavg(loadavg)	glibtop_get_loadavg_l(glibtop_global_server, loadavg) | ||||
| @@ -57,14 +55,14 @@ struct _glibtop_loadavg | ||||
| #define glibtop_get_loadavg_r		glibtop_get_loadavg_s | ||||
| #endif | ||||
|  | ||||
| int glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf); | ||||
| void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_LOADAVG | ||||
| int glibtop_init_loadavg_p (glibtop *server); | ||||
| int glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf); | ||||
| void glibtop_init_loadavg_p (glibtop *server); | ||||
| void glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf); | ||||
| #else | ||||
| int glibtop_init_loadavg_s (glibtop *server); | ||||
| int glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf); | ||||
| void glibtop_init_loadavg_s (glibtop *server); | ||||
| void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -46,15 +44,15 @@ typedef struct _glibtop_mem	glibtop_mem; | ||||
|  | ||||
| struct _glibtop_mem | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	total,		/* GLIBTOP_MEM_TOTAL	*/ | ||||
| 	used,		/* GLIBTOP_MEM_USED	*/ | ||||
| 	free,		/* GLIBTOP_MEM_FREE	*/ | ||||
| 	shared,		/* GLIBTOP_MEM_SHARED	*/ | ||||
| 	buffer,		/* GLIBTOP_MEM_BUFFER	*/ | ||||
| 	cached,		/* GLIBTOP_MEM_CACHED	*/ | ||||
| 	user,		/* GLIBTOP_MEM_USER	*/ | ||||
| 	locked;		/* GLIBTOP_MEM_LOCKED	*/ | ||||
| 	u_int64_t	flags, | ||||
| 		total,		/* GLIBTOP_MEM_TOTAL	*/ | ||||
| 		used,		/* GLIBTOP_MEM_USED	*/ | ||||
| 		free,		/* GLIBTOP_MEM_FREE	*/ | ||||
| 		shared,		/* GLIBTOP_MEM_SHARED	*/ | ||||
| 		buffer,		/* GLIBTOP_MEM_BUFFER	*/ | ||||
| 		cached,		/* GLIBTOP_MEM_CACHED	*/ | ||||
| 		user,		/* GLIBTOP_MEM_USER	*/ | ||||
| 		locked;		/* GLIBTOP_MEM_LOCKED	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_mem(mem)	glibtop_get_mem_l(glibtop_global_server, mem) | ||||
| @@ -65,14 +63,14 @@ struct _glibtop_mem | ||||
| #define glibtop_get_mem_r		glibtop_get_mem_s | ||||
| #endif | ||||
|  | ||||
| int glibtop_get_mem_l (glibtop *server, glibtop_mem *buf); | ||||
| void glibtop_get_mem_l (glibtop *server, glibtop_mem *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_MEM | ||||
| int glibtop_init_mem_p (glibtop *server); | ||||
| int glibtop_get_mem_p (glibtop *server, glibtop_mem *buf); | ||||
| void glibtop_init_mem_p (glibtop *server); | ||||
| void glibtop_get_mem_p (glibtop *server, glibtop_mem *buf); | ||||
| #else | ||||
| int glibtop_init_mem_s (glibtop *server); | ||||
| int glibtop_get_mem_s (glibtop *server, glibtop_mem *buf); | ||||
| void glibtop_init_mem_s (glibtop *server); | ||||
| void glibtop_get_mem_s (glibtop *server, glibtop_mem *buf); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -29,30 +27,43 @@ | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/compat_10.h> | ||||
| #include <glibtop/array.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_MOUNTLIST_NUMBER	0 | ||||
| #define GLIBTOP_MOUNTLIST_TOTAL		1 | ||||
| #define GLIBTOP_MOUNTLIST_SIZE		2 | ||||
|  | ||||
| #define GLIBTOP_MAX_MOUNTLIST		3 | ||||
|  | ||||
| typedef struct _glibtop_mountentry	glibtop_mountentry; | ||||
|  | ||||
| typedef struct _glibtop_mountlist	glibtop_mountlist; | ||||
|  | ||||
| struct _glibtop_mountentry | ||||
| { | ||||
|     u_int64_t dev; | ||||
|     char devname [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
|     char mountdir [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
|     char type [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
| 	u_int64_t dev; | ||||
| 	char devname [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
| 	char mountdir [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
| 	char type [GLIBTOP_MOUNTENTRY_LEN+1]; | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_mountlist(array,all_fs)	glibtop_get_mountlist_l(glibtop_global_server, array, all_fs) | ||||
| struct _glibtop_mountlist | ||||
| { | ||||
| 	u_int64_t	flags, | ||||
| 		number,			/* GLIBTOP_MOUNTLIST_NUMBER	*/ | ||||
| 		total,			/* GLIBTOP_MOUNTLIST_TOTAL	*/ | ||||
| 		size;			/* GLIBTOP_MOUNTLIST_SIZE	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_mountlist(mountlist,all_fs)	glibtop_get_mountlist_l(glibtop_global_server, mountlist, all_fs) | ||||
|  | ||||
| #define glibtop_get_mountlist_r		glibtop_get_mountlist_s | ||||
|  | ||||
| glibtop_mountentry * | ||||
| glibtop_get_mountlist_l (glibtop *server, glibtop_array *array, int all_fs); | ||||
| glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf, int all_fs); | ||||
|  | ||||
| glibtop_mountentry * | ||||
| glibtop_get_mountlist_s (glibtop *server, glibtop_array *array, int all_fs); | ||||
| glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs); | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -31,28 +29,28 @@ | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_MSG_LIMITS_MSGPOOL	0 | ||||
| #define GLIBTOP_MSG_LIMITS_MSGMAP	1 | ||||
| #define GLIBTOP_MSG_LIMITS_MSGMAX	2 | ||||
| #define GLIBTOP_MSG_LIMITS_MSGMNB	3 | ||||
| #define GLIBTOP_MSG_LIMITS_MSGMNI	4 | ||||
| #define GLIBTOP_MSG_LIMITS_MSGSSZ	5 | ||||
| #define GLIBTOP_MSG_LIMITS_MSGTQL	6 | ||||
| #define GLIBTOP_IPC_MSGPOOL	0 | ||||
| #define GLIBTOP_IPC_MSGMAP	1 | ||||
| #define GLIBTOP_IPC_MSGMAX	2 | ||||
| #define GLIBTOP_IPC_MSGMNB	3 | ||||
| #define GLIBTOP_IPC_MSGMNI	4 | ||||
| #define GLIBTOP_IPC_MSGSSZ	5 | ||||
| #define GLIBTOP_IPC_MSGTQL	6 | ||||
|  | ||||
| #define GLIBTOP_MAX_MSG_LIMITS		7 | ||||
| #define GLIBTOP_MAX_MSG_LIMITS	7 | ||||
|  | ||||
| typedef struct _glibtop_msg_limits	glibtop_msg_limits; | ||||
|  | ||||
| struct _glibtop_msg_limits | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	msgpool,	/* GLIBTOP_MSG_LIMITS_MSGPOOL	*/ | ||||
| 	msgmap,		/* GLIBTOP_MSG_LIMITS_MSGMAP	*/ | ||||
| 	msgmax,		/* GLIBTOP_MSG_LIMITS_MSGMAX	*/ | ||||
| 	msgmnb,		/* GLIBTOP_MSG_LIMITS_MSGMNB	*/ | ||||
| 	msgmni,		/* GLIBTOP_MSG_LIMITS_MSGMNI	*/ | ||||
| 	msgssz,		/* GLIBTOP_MSG_LIMITS_MSGSSZ	*/ | ||||
| 	msgtql;		/* GLIBTOP_MSG_LIMITS_MSGTQL	*/ | ||||
| 	u_int64_t	flags, | ||||
| 		msgpool,	/* GLIBTOP_IPC_MSGPOOL	*/ | ||||
| 		msgmap,		/* GLIBTOP_IPC_MSGMAP	*/ | ||||
| 		msgmax,		/* GLIBTOP_IPC_MSGMAX	*/ | ||||
| 		msgmnb,		/* GLIBTOP_IPC_MSGMNB	*/ | ||||
| 		msgmni,		/* GLIBTOP_IPC_MSGMNI	*/ | ||||
| 		msgssz,		/* GLIBTOP_IPC_MSGSSZ	*/ | ||||
| 		msgtql;		/* GLIBTOP_IPC_MSGTQL	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_msg_limits(msg)	glibtop_get_msg_limits_l(glibtop_global_server, msg) | ||||
| @@ -63,14 +61,14 @@ struct _glibtop_msg_limits | ||||
| #define glibtop_get_msg_limits_r	glibtop_get_msg_limits_s | ||||
| #endif | ||||
|  | ||||
| int glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf); | ||||
| void glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf); | ||||
|  | ||||
| #if GLIBTOP_SUID_MSG_LIMITS | ||||
| int glibtop_init_msg_limits_p (glibtop *server); | ||||
| int glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf); | ||||
| void glibtop_init_msg_limits_p (glibtop *server); | ||||
| void glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf); | ||||
| #else | ||||
| int glibtop_init_msg_limits_s (glibtop *server); | ||||
| int glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf); | ||||
| void glibtop_init_msg_limits_s (glibtop *server); | ||||
| void glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|   | ||||
| @@ -1,87 +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_NETINFO_H__ | ||||
| #define __GLIBTOP_NETINFO_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_NETINFO_IF_FLAGS	0 | ||||
| #define GLIBTOP_NETINFO_TRANSPORT	1 | ||||
| #define GLIBTOP_NETINFO_MTU		2 | ||||
| #define GLIBTOP_NETINFO_SUBNET		3 | ||||
| #define GLIBTOP_NETINFO_ADDRESS		4 | ||||
|  | ||||
| #define GLIBTOP_MAX_NETINFO		5 | ||||
|  | ||||
| typedef struct _glibtop_netinfo	glibtop_netinfo; | ||||
|  | ||||
| #include <glibtop/interfaces.h> | ||||
|  | ||||
| struct _glibtop_netinfo | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	if_flags,		/* GLIBTOP_NETINFO_IF_FLAGS	*/ | ||||
| 	transport,		/* GLIBTOP_NETINFO_TRANSPORT	*/		 | ||||
| 	mtu,			/* GLIBTOP_NETINFO_MTU		*/ | ||||
| 	subnet,			/* GLIBTOP_NETINFO_SUBNET	*/ | ||||
| 	address;		/* GLIBTOP_NETINFO_ADDRESS	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_netinfo(netinfo,interface,transport)	glibtop_get_netinfo_l(glibtop_global_server, netinfo, interface, transport) | ||||
|  | ||||
| #if GLIBTOP_SUID_NETINFO | ||||
| #define glibtop_get_netinfo_r		glibtop_get_netinfo_p | ||||
| #else | ||||
| #define glibtop_get_netinfo_r		glibtop_get_netinfo_s | ||||
| #endif | ||||
|  | ||||
| int glibtop_get_netinfo_l (glibtop *server, glibtop_netinfo *buf, const char *interface, unsigned transport); | ||||
|  | ||||
| #if GLIBTOP_SUID_NETINFO | ||||
| int glibtop_init_netinfo_p (glibtop *server); | ||||
| int glibtop_get_netinfo_p (glibtop *server, glibtop_netinfo *buf, const char *interface, unsigned transport); | ||||
| #else | ||||
| int glibtop_init_netinfo_s (glibtop *server); | ||||
| int glibtop_get_netinfo_s (glibtop *server, glibtop_netinfo *buf, const char *interface, unsigned transport); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|  | ||||
| /* You need to link with -lgtop_names to get this stuff here. */ | ||||
|  | ||||
| extern const char *glibtop_names_netinfo []; | ||||
| extern const unsigned glibtop_types_netinfo []; | ||||
| extern const char *glibtop_labels_netinfo []; | ||||
| extern const char *glibtop_descriptions_netinfo []; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
| @@ -31,54 +29,79 @@ | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #define GLIBTOP_NETLOAD_PACKETS_IN	0 | ||||
| #define GLIBTOP_NETLOAD_PACKETS_OUT	1 | ||||
| #define GLIBTOP_NETLOAD_PACKETS_TOTAL	2 | ||||
| #define GLIBTOP_NETLOAD_BYTES_IN	3 | ||||
| #define GLIBTOP_NETLOAD_BYTES_OUT	4 | ||||
| #define GLIBTOP_NETLOAD_BYTES_TOTAL	5 | ||||
| #define GLIBTOP_NETLOAD_ERRORS_IN	6 | ||||
| #define GLIBTOP_NETLOAD_ERRORS_OUT	7 | ||||
| #define GLIBTOP_NETLOAD_ERRORS_TOTAL	8 | ||||
| #define GLIBTOP_NETLOAD_COLLISIONS	9 | ||||
| #define GLIBTOP_NETLOAD_IF_FLAGS	0 | ||||
| #define GLIBTOP_NETLOAD_MTU		1 | ||||
| #define GLIBTOP_NETLOAD_SUBNET		2 | ||||
| #define GLIBTOP_NETLOAD_ADDRESS		3 | ||||
| #define GLIBTOP_NETLOAD_PACKETS_IN	4 | ||||
| #define GLIBTOP_NETLOAD_PACKETS_OUT	5 | ||||
| #define GLIBTOP_NETLOAD_PACKETS_TOTAL	6 | ||||
| #define GLIBTOP_NETLOAD_BYTES_IN	7 | ||||
| #define GLIBTOP_NETLOAD_BYTES_OUT	8 | ||||
| #define GLIBTOP_NETLOAD_BYTES_TOTAL	9 | ||||
| #define GLIBTOP_NETLOAD_ERRORS_IN	10 | ||||
| #define GLIBTOP_NETLOAD_ERRORS_OUT	11 | ||||
| #define GLIBTOP_NETLOAD_ERRORS_TOTAL	12 | ||||
| #define GLIBTOP_NETLOAD_COLLISIONS	13 | ||||
|  | ||||
| #define GLIBTOP_MAX_NETLOAD		10 | ||||
| #define GLIBTOP_MAX_NETLOAD		14 | ||||
|  | ||||
| typedef struct _glibtop_netload	glibtop_netload; | ||||
|  | ||||
| #include <glibtop/interfaces.h> | ||||
| enum { | ||||
| 	GLIBTOP_IF_FLAGS_UP = 1, | ||||
| 	GLIBTOP_IF_FLAGS_BROADCAST, | ||||
| 	GLIBTOP_IF_FLAGS_DEBUG, | ||||
| 	GLIBTOP_IF_FLAGS_LOOPBACK, | ||||
| 	GLIBTOP_IF_FLAGS_POINTOPOINT, | ||||
| 	GLIBTOP_IF_FLAGS_RUNNING, | ||||
| 	GLIBTOP_IF_FLAGS_NOARP, | ||||
| 	GLIBTOP_IF_FLAGS_PROMISC, | ||||
| 	GLIBTOP_IF_FLAGS_ALLMULTI, | ||||
| 	GLIBTOP_IF_FLAGS_OACTIVE, | ||||
| 	GLIBTOP_IF_FLAGS_SIMPLEX, | ||||
| 	GLIBTOP_IF_FLAGS_LINK0, | ||||
| 	GLIBTOP_IF_FLAGS_LINK1, | ||||
| 	GLIBTOP_IF_FLAGS_LINK2, | ||||
| 	GLIBTOP_IF_FLAGS_ALTPHYS, | ||||
| 	GLIBTOP_IF_FLAGS_MULTICAST | ||||
| }; | ||||
|  | ||||
| struct _glibtop_netload | ||||
| { | ||||
|     u_int64_t	flags, | ||||
| 	packets_in,		/* GLIBTOP_NETLOAD_PACKETS_IN	*/ | ||||
| 	packets_out,		/* GLIBTOP_NETLOAD_PACKETS_OUT	*/ | ||||
| 	packets_total,		/* GLIBTOP_NETLOAD_PACKETS_TOTAL*/ | ||||
| 	bytes_in,		/* GLIBTOP_NETLOAD_BYTES_IN	*/ | ||||
| 	bytes_out,		/* GLIBTOP_NETLOAD_BYTES_OUT	*/ | ||||
| 	bytes_total,		/* GLIBTOP_NETLOAD_BYTES_TOTAL	*/ | ||||
| 	errors_in,		/* GLIBTOP_NETLOAD_ERRORS_IN	*/ | ||||
| 	errors_out,		/* GLIBTOP_NETLOAD_ERRORS_OUT	*/ | ||||
| 	errors_total,		/* GLIBTOP_NETLOAD_ERRORS_TOTAL	*/ | ||||
| 	collisions;		/* GLIBTOP_NETLOAD_COLLISIONS	*/ | ||||
| 	u_int64_t	flags, | ||||
| 		if_flags,		/* GLIBTOP_NETLOAD_IF_FLAGS	*/ | ||||
| 		mtu,			/* GLIBTOP_NETLOAD_MTU		*/ | ||||
| 		subnet,			/* GLIBTOP_NETLOAD_SUBNET	*/ | ||||
| 		address,		/* GLIBTOP_NETLOAD_ADDRESS	*/ | ||||
| 		packets_in,		/* GLIBTOP_NETLOAD_PACKETS_IN	*/ | ||||
| 		packets_out,		/* GLIBTOP_NETLOAD_PACKETS_OUT	*/ | ||||
| 		packets_total,		/* GLIBTOP_NETLOAD_PACKETS_TOTAL*/ | ||||
| 		bytes_in,		/* GLIBTOP_NETLOAD_BYTES_IN	*/ | ||||
| 		bytes_out,		/* GLIBTOP_NETLOAD_BYTES_OUT	*/ | ||||
| 		bytes_total,		/* GLIBTOP_NETLOAD_BYTES_TOTAL	*/ | ||||
| 		errors_in,		/* GLIBTOP_NETLOAD_ERRORS_IN	*/ | ||||
| 		errors_out,		/* GLIBTOP_NETLOAD_ERRORS_OUT	*/ | ||||
| 		errors_total,		/* GLIBTOP_NETLOAD_ERRORS_TOTAL	*/ | ||||
| 		collisions;		/* GLIBTOP_NETLOAD_COLLISIONS	*/ | ||||
| }; | ||||
|  | ||||
| #define glibtop_get_netload(netload,interface,transport,protocol)	glibtop_get_netload_l(glibtop_global_server, netload, interface, transport, protocol) | ||||
| #define glibtop_get_netload(netload,interface)	glibtop_get_netload_l(glibtop_global_server, netload, interface) | ||||
|  | ||||
| #if GLIBTOP_SUID_NETLOAD | ||||
| #define glibtop_get_netload_r		glibtop_get_netload_p | ||||
| #define glibtop_get_netload_r	glibtop_get_netload_p | ||||
| #else | ||||
| #define glibtop_get_netload_r		glibtop_get_netload_s | ||||
| #define glibtop_get_netload_r	glibtop_get_netload_s | ||||
| #endif | ||||
|  | ||||
| int glibtop_get_netload_l (glibtop *server, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol); | ||||
| void glibtop_get_netload_l (glibtop *server, glibtop_netload *buf, const char *interface); | ||||
|  | ||||
| #if GLIBTOP_SUID_NETLOAD | ||||
| int glibtop_init_netload_p (glibtop *server); | ||||
| int glibtop_get_netload_p (glibtop *server, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol); | ||||
| void glibtop_init_netload_p (glibtop *server); | ||||
| void glibtop_get_netload_p (glibtop *server, glibtop_netload *buf, const char *interface); | ||||
| #else | ||||
| int glibtop_init_netload_s (glibtop *server); | ||||
| int glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol); | ||||
| void glibtop_init_netload_s (glibtop *server); | ||||
| void glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, const char *interface); | ||||
| #endif | ||||
|  | ||||
| #ifdef GLIBTOP_NAMES | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
| @@ -25,6 +23,7 @@ | ||||
| #define __GLIBTOP_OPEN_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/read.h> | ||||
| #include <glibtop/error.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
| @@ -53,7 +52,7 @@ BEGIN_LIBGTOP_DECLS | ||||
| #define GLIBTOP_ERROR_METHOD_DEFAULT	GLIBTOP_ERROR_METHOD_WARN_ONCE | ||||
|  | ||||
| void | ||||
| glibtop_open_l (glibtop *server, const char *backend_name, | ||||
| glibtop_open_l (glibtop *server, const char *program_name, | ||||
| 		const unsigned long features, const unsigned flags); | ||||
|  | ||||
| void | ||||
| @@ -68,13 +67,6 @@ void | ||||
| glibtop_open_s (glibtop *server, const char *program_name, | ||||
| 		const unsigned long features, const unsigned flags); | ||||
|  | ||||
| #ifdef _IN_LIBGTOP | ||||
|  | ||||
| void | ||||
| _glibtop_open_sysdeps (glibtop *server, const char *program_name, | ||||
| 		       const unsigned long features, const unsigned flags); | ||||
|  | ||||
| #endif /* _IN_LIBGTOP */ | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user