Compare commits

...

184 Commits

Author SHA1 Message Date
Martin Baulig
473ecd6b3a *** empty log message *** 2000-01-15 19:04:12 +00:00
Martin Baulig
e5b75b86fc Released LibGTop 1.1.4 "Earthquake".
2000-01-14  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.1.4 "Earthquake".
2000-01-14 19:26:59 +00:00
Martin Baulig
d826c3e48c *** empty log message *** 2000-01-14 19:25:27 +00:00
Martin Baulig
f10223b8eb Should work now. 2000-01-14 19:25:10 +00:00
Martin Baulig
7e28d2d5dc *** empty log message *** 2000-01-14 18:58:07 +00:00
Martin Baulig
d8aa36d637 First version of a debian/ directory. 2000-01-14 14:47:53 +00:00
Martin Baulig
9deecf345e 1.1.4. 2000-01-14 14:09:27 +00:00
Martin Baulig
dd17bc8f92 Comment out all debugging code. 2000-01-14 11:49:10 +00:00
Martin Baulig
f11195b104 Copy the @sysdeps_init_file@ to `sysdeps-init.c', don't link it symbolically. 2000-01-13 21:26:52 +00:00
Yuri Syrota
74f688c5d1 Updated Ukrainian translation 2000-01-13 16:18:58 +00:00
Martin Baulig
65b08749cf Add compatibility #defines for GLIBTOP_XCPU_TOTAL', GLIBTOP_XCPU_USER',
2000-01-13  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/compat_10.h: Add compatibility #defines for
	`GLIBTOP_XCPU_TOTAL', `GLIBTOP_XCPU_USER', `GLIBTOP_XCPU_NICE',
	`GLIBTOP_XCPU_SYS', `GLIBTOP_XCPU_IDLE' and `GLIBTOP_XCPU_FLAGS'
2000-01-13 15:20:49 +00:00
Martin Baulig
f7b69ebfae *** empty log message *** 2000-01-13 01:25:55 +00:00
Martin Baulig
371371b633 make update-po for 1.1.4. 2000-01-13 00:53:48 +00:00
Martin Baulig
d423559605 *** empty log message *** 2000-01-13 00:35:31 +00:00
Martin Baulig
f3d309441a The buffer which we write is now a `const'.
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-13 00:16:40 +00:00
Martin Baulig
fabb12370f Set version number to 1.1.4, binary age 0, interface age 0 and increased
2000-01-13  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.1.4, binary age 0,
	interface age 0 and increased LIBGTOP_SERVER_VERSION to 52.
2000-01-13 00:08:24 +00:00
Martin Baulig
5af2aab0bf *** empty log message *** 2000-01-13 00:05:35 +00:00
Martin Baulig
dd8c31ebda Call glibtop_init_backend () and _glibtop_open_sysdeps () here.
2000-01-13  Martin Baulig  <martin@home-of-linux.org>

	* lib/open.c (glibtop_open_l): Call glibtop_init_backend () and
	_glibtop_open_sysdeps () here.
2000-01-13 00:00:04 +00:00
Martin Baulig
4d402ecc14 Provide implementation. 2000-01-12 23:57:19 +00:00
Martin Baulig
b660c7a0f7 New file. New file. New file. New file. New file. New file.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* lib/sysdeps-init-freebsd.c: New file.
	* lib/sysdeps-init-kernel.c: New file.
	* lib/sysdeps-init-linux.c: New file.
	* lib/sysdeps-init-solaris.c: New file.
	* lib/sysdeps-init-stub-suid.c: New file.
	* lib/sysdeps-init-stub.c: New file.
2000-01-12 23:33:51 +00:00
Martin Baulig
20c306fc6d Call `_glibtop_open_sysdeps'.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* lib/init.c (glibtop_init_s): Call `_glibtop_open_sysdeps'.

	* include/glibtop/open.h (_glibtop_open_sysdeps): Declare this
	when we are _IN_LIBGTOP.

	* configure.in (sysdeps_name): Define and AC_SUBST this.
	(sysdeps_init_file): Define and AC_SUBST this to
	`sysdeps-init-${sysdeps_name}.c'.

	* libgtop-sysdeps.m4 (GNOME_LIBGTOP_SYSDEPS): Define and AC_SUBST
	`libgtop_sysdeps_name'.
2000-01-12 22:46:29 +00:00
Martin Baulig
2a86a5de49 *** empty log message *** 2000-01-12 22:25:06 +00:00
Martin Baulig
7ba17b2bee New error constant.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/errors.h (GLIBTOP_ERROR_NO_BACKEND_OPENED):
	New error constant.

	* lib/lib.pl (glibtop_get_<feature>_l): Don't dump core when there
	is no backend opened, but return GLIBTOP_ERROR_NO_BACKEND_OPENED.
2000-01-12 21:38:55 +00:00
Martin Baulig
31067e703d Added `_priv_module' pointer (type glibtop_backend_module). Made the
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/backend.h (glibtop_backend): Added `_priv_module'
	pointer (type glibtop_backend_module). Made the `info' field const
	since this now points to gmodule loaded memory
	(glibtop_backend_entry): Made the `info' field const since it points
	to gmodule loaded memory.

	* lib/close.c (glibtop_close_r): Close all currently opened backends.
2000-01-12 21:30:13 +00:00
Martin Baulig
12e32ffc24 Install everything in $(LIBGTOP_BACKEND_DIR).
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 20:45:34 +00:00
Martin Baulig
b4122165eb Install everything except the server binary in $(LIBGTOP_BACKEND_DIR).
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-12 20:45:19 +00:00
Martin Baulig
c17f8f2421 Install everything in $(LIBGTOP_BACKEND_DIR).
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 20:44:51 +00:00
Martin Baulig
e2e5c3a1cc New type. (glibtop_backend_module): New private type.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/backend.h (glibtop_backend_entry): New type.
	(glibtop_backend_module): New private type.

	* lib/backend.c (glibtop_register_backend): This now takes a
	`glibtop_backend_entry' argument, not a `glibtop_backend_info' one.
	(glibtop_backend_by_id): Return a `glibtop_backend_entry' type,
	not a `glibtop_backend_info' one.
	(glibtop_backend_by_name): Likewise.

	* lib/init-backends.c: If we have libxml, read all `.backend' files
	in $(LIBGTOP_BACKEND_DIR), XML parse them and register them via
	`glibtop_backend_register'. This builds a list of all currently
	supported backends without actually loading them into memory.

	* lib/open-backend.c (glibtop_open_backend_l): GModule load the
	backend if it's not already in memory.
2000-01-12 20:37:21 +00:00
Martin Baulig
8d532c6298 Reflect latest interface changes. 2000-01-12 20:08:31 +00:00
Martin Baulig
50f0929ae8 Comment out `_glibtop_init_hook_s'.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* lib/init.c (glibtop_init_s): Comment out `_glibtop_init_hook_s'.
2000-01-12 17:39:58 +00:00
Martin Baulig
62c59f6087 We now require libxml. (LIBGTOP_LIBS): Remove all backend libraries.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* configure.in: We now require libxml.
	(LIBGTOP_LIBS): Remove all backend libraries.
	(LIBGTOP_EXTRA_LIBS): Add $(LIBGTOP_XML_LIB) here.

	* configure.in: Don't check for -lXau any longer.
2000-01-12 17:38:45 +00:00
Martin Baulig
f0aab5a724 Define this to be `$(datadir)/libgtop/backends' and AC_SUBST it.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (LIBGTOP_BACKEND_DIR): Define this to be
	`$(datadir)/libgtop/backends' and AC_SUBST it.

	* libgtopConf.sh.in (LIBGTOP_BACKEND_DIR): Added.
2000-01-12 16:26:30 +00:00
Martin Baulig
27bf526b85 Define this if we have libxml.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* acconfig.h (HAVE_LIBXML): Define this if we have libxml.
2000-01-12 16:18:42 +00:00
Martin Baulig
bb15be7198 New file to check for libxml.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* xml.m4: New file to check for libxml.

	* configure.in: Call `LIBGTOP_XML_HOOK' from `xml.m4' and
	add libxml libraries to `LIBGTOP_EXTRA_LIBS' when found.
2000-01-12 16:13:56 +00:00
Martin Baulig
fe86288e76 This has been moved into the sysdeps backend.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* lib/sysdeps.c (_glibtop_init_hook_s): This has been moved
	into the sysdeps backend.
2000-01-12 13:11:19 +00:00
Martin Baulig
fc4f288ce1 Create the `_glibtop_init_hook_s' as well.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* marshal.pl: Create the `_glibtop_init_hook_s' as well.
2000-01-12 13:10:35 +00:00
Martin Baulig
7e20f2f5f2 Forgot to actually remove this file from CVS. 2000-01-12 13:04:34 +00:00
Martin Baulig
720cb52cf3 Don't create code for things which are now in the new
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* marshal.pl: Don't create code for things which are now
	in the new `glibtop-backend-common' backend.
2000-01-12 13:04:09 +00:00
Martin Baulig
d74c329404 Added -lgtop_backend_common'. Initialize glibtop_backend_common'
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (LIBGTOP_LIBS): Added `-lgtop_backend_common'.
	* lib/init-backends.c (glibtop_init_backends): Initialize
	`glibtop_backend_common' backend.
2000-01-12 12:57:04 +00:00
Martin Baulig
b8fec13607 New directory.
2000-01-12  Martin Baulig  <martin@home-of-linux.org>

	* backends/common/: New directory.
2000-01-12 12:55:13 +00:00
Martin Baulig
8b8e1de19a Initial version of the "glibtop-backend-common" backend.
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'.
2000-01-12 12:53:26 +00:00
Martin Baulig
38d6f5ad0c Smalll $(srcdir) != $(builddir) fix. 2000-01-12 12:28:26 +00:00
Martin Baulig
4e42a2aa17 Better use BUFSIZ' instead of PAGE_SIZE' since this is large enough
and not all flavors of BSD define `PAGE_SIZE' in user-level header
files.
2000-01-12 12:24:20 +00:00
Martin Baulig
8491b51264 Added netinfo and interface_names. 2000-01-09 22:21:20 +00:00
Martin Baulig
c164df664d Correctly pass string data from client to server. 2000-01-09 22:12:49 +00:00
Martin Baulig
fa592c3a94 *** empty log message *** 2000-01-09 21:58:47 +00:00
Martin Baulig
cb96ce0ad2 Removed everything in this directory. This has been obsoleted by the new
2000-01-10  Martin Baulig  <martin@home-of-linux.org>

	* src/daemon/: Removed everything in this directory. This has
	been obsoleted by the new server code in backends/server.
2000-01-09 21:58:34 +00:00
Martin Baulig
938a444edf Make marshal/demarshal of stringlists (like in proc_args) work. 2000-01-09 21:56:06 +00:00
Martin Baulig
995b506920 Returning arrays and such from server to client now works. 2000-01-09 20:13:51 +00:00
Martin Baulig
ba466fe572 Don't dump core. 2000-01-09 15:03:01 +00:00
Martin Baulig
c2e40852b6 Removed debugging code. 2000-01-09 15:02:51 +00:00
Martin Baulig
a1c574c502 Disable i18n here. 2000-01-09 14:24:16 +00:00
Martin Baulig
9b8fd192d0 Unconditionally #include <sys/types.h>.
2000-01-09  Martin Baulig  <martin@bergen.home-of-linux.org>

	* include/glibtop/global.h: Unconditionally #include <sys/types.h>.
2000-01-09 14:18:55 +00:00
Martin Baulig
c37460ad3d Removed turkish translations. 2000-01-09 10:17:10 +00:00
Martin Baulig
d1e708b2cb Reflect latest interface changes. 2000-01-09 10:15:02 +00:00
Martin Baulig
8745316574 *** empty log message *** 2000-01-08 21:51:33 +00:00
Martin Baulig
ec5b8790ec New structure.
2000-01-08  Martin Baulig  <martin@home-of-linux.org>

	* command.h.in (glibtop_response): New structure.
2000-01-08 21:26:18 +00:00
Martin Baulig
d9105dfe8a perl -pni -e 's,server->machine,server->_priv->machine,g' *.c
perl -pni -e 's,server->machine,server->_priv->machine,g' *.h
2000-01-08 19:50:33 +00:00
Martin Baulig
386f66d7e2 *** empty log message *** 2000-01-02 17:15:15 +00:00
Martin Baulig
fa5d2af7ea *** empty log message *** 2000-01-02 16:20:15 +00:00
Martin Baulig
e0d9f28674 New file. Creates command.h' from command.h.in'. New file. Template file
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'.
2000-01-02 16:13:08 +00:00
Martin Baulig
6fe80f02ce Removed.
2000-01-02  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/version.h: Removed.
2000-01-02 16:11:08 +00:00
Martin Baulig
cdfee65492 New variable.
2000-01-02  Martin Baulig  <martin@home-of-linux.org>

	* c_types.pl ($demarshal_funcs): New variable.
2000-01-02 14:51:54 +00:00
Martin Baulig
44016ac371 New file. Automatically creates `demarshal.c'. This automatically created
2000-01-02  Martin Baulig  <martin@home-of-linux.org>

	* 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-02 14:50:49 +00:00
Martin Baulig
58fa4a5955 New error constant.
2000-01-02  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/errors.h
	(GLIBTOP_ERROR_DEMARSHAL_ERROR): New error constant.
2000-01-02 14:48:49 +00:00
Martin Baulig
cd9c5b7967 Disable compilation of the `daemon' directory.
2000-01-02  Martin Baulig  <martin@home-of-linux.org>

	* src/Makefile.am: Disable compilation of the `daemon' directory.

	* include/glibtop/command.h: Removed.
2000-01-02 14:48:15 +00:00
Martin Baulig
141c863f54 *** empty log message *** 2000-01-02 13:04:41 +00:00
Martin Baulig
24743243a8 *** empty log message *** 2000-01-02 13:03:26 +00:00
Martin Baulig
c2848e73af Hello translators,
I'm currently doing larger interface changes in the HEAD of LibGTop
which means that things will change very often here while the whole
module is unstable and unusable for the end-user.

So please don't waste your time doing any translations in the HEAD
at the moment. If you want to do translations, please use the
`LIBGTOP_1_1_2_PATCHES' branch.

January 2, 2000
Martin Baulig
2000-01-02 12:58:14 +00:00
Martin Baulig
57d102425f All functions in the `glibtop_call_vector' now take an additional
2000-01-02  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/call-vector.pl: All functions in the
	`glibtop_call_vector' now take an additional `glibtop_backend *'
	argument.
2000-01-02 12:53:53 +00:00
Martin Baulig
68a40b5cba Removed. Removed. Removed.
2000-01-01  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/read.h: Removed.
	* include/glibtop/read_data.h: Removed.
	* include/glibtop/write.h: Removed.
2000-01-01 21:00:08 +00:00
Martin Baulig
75ed7287d1 New directory. New directory. New directory.
2000-01-01  Martin Baulig  <martin@home-of-linux.org>

	* backends/: New directory.
	* backends/server/: New directory.
	* backends/sysdeps/: New directory.

	* include/glibtop/backend.h: New file.

	* include/glibtop/call-vector.h.in: New file. Template file
	for `call-vector.h'.
	* include/glibtop/call-vector.pl: New file. Creates 'call-vector.h'
	from `call-vector.h.in'.

	* include/glibtop/errors.h
	(GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant.
        (GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant.

	* include/glibtop/limits.h
	(GLIBTOP_BACKEND_NAME_LEN): New constant.

	* glibtop-server-private.h (glibtop_server_private):
	Added `GSList *backend_list' and removed `input', `output',
	`socket' and `pid'.

	* lib/command.c: Removed. Moved to `backends/server/'.
	* lib/read.c: Removed. Moved to `backends/server/'.
	* lib/read_data.c: Removed. Moved to `backends/server/'.
	* lib/write.c: Removed. Moved to `backends/server/'.
2000-01-01 20:56:53 +00:00
Martin Baulig
8797d18587 Initial version of the "glibtop-backend-sysdeps" backend.
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.
2000-01-01 20:55:05 +00:00
Martin Baulig
a567f1a8d1 Initial version of the "glibtop-backend-server" backend.
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'.
2000-01-01 20:54:10 +00:00
Martin Baulig
945ec9b0b1 Added empty tr.po file so it compiles again. 2000-01-01 15:11:50 +00:00
Fatih Demir
adc575dcdf Added the Turkish translation .
Added the Turkish translation .
1999-12-31 23:25:48 +00:00
Martin Baulig
e593861d7f *** empty log message *** 1999-12-26 14:18:43 +00:00
Martin Baulig
36c0941dda New file.
1999-12-26  Martin Baulig  <martin@home-of-linux.org>

	* netinfo.c: New file.
1999-12-26 14:08:50 +00:00
Martin Baulig
f1a6e1ead8 The indentation in LibGTop was done with the following command:
find . -name \*.[ch] | xargs -i emacs -batch {} \
		-l /gnome/compile/libgtop/misc/format.el -f save-buffer

December 26, 1999
Martin
1999-12-26 14:05:32 +00:00
Martin Baulig
d7f088bef0 Reflect latest interface changes. 1999-12-26 13:43:04 +00:00
Martin Baulig
f489ea871d perl -pni -e 's,server->machine,server->_priv->machine,g' *.c *.h 1999-12-26 13:38:22 +00:00
Martin Baulig
7ae08dcf4f New macro; moved check for the sysdeps directory here.
1999-12-26  Martin Baulig  <martin@home-of-linux.org>

	* libgtop-sysdeps.m4 (LIBGTOP_CHECK_SYSDEPS_DIR): New macro;
	moved check for the sysdeps directory here.
	(--with-sysdeps-dir): New hacker mode command line option to
	manually override the sysdeps dir. Use of this option is highly
	deprecated; I only added it to be able to do `stub_suid' hackings
	on my GNU/Linux machine.
1999-12-26 13:36:55 +00:00
Martin Baulig
de90df6a63 *** empty log message *** 1999-12-25 20:44:04 +00:00
Martin Baulig
addb3101f2 *** empty log message *** 1999-12-25 20:18:21 +00:00
Martin Baulig
e162a06a1a Removed. This is now included in <glibtop-private.h>.
1999-12-25  Martin Baulig  <martin@home-of-linux.org>

	* safeio.h: Removed. This is now included in <glibtop-private.h>.
1999-12-25 19:58:36 +00:00
Martin Baulig
b9abc7c3ef New file.
1999-12-25  Martin Baulig  <martin@home-of-linux.org>

	* netinfo.c: New file.
1999-12-25 19:57:33 +00:00
Martin Baulig
c76bf0bfab Reflect latest interface changes. 1999-12-25 19:50:36 +00:00
Martin Baulig
e7b42a66b1 Indent to 4 spaces. 1999-12-25 19:04:22 +00:00
Martin Baulig
bbb539ef56 Indent everything to 4 spaces to make it consistant with the other LibGTop
code.
1999-12-25 19:01:13 +00:00
Martin Baulig
dbb5f9b636 Reflect latest interface changes; especially all functions now return
appropriate error return values on error.
1999-12-25 18:54:52 +00:00
Martin Baulig
1979cb8104 Added function prototypes for everything from safeio.c.
1999-12-25  Martin Baulig  <martin@home-of-linux.org>

	* glibtop_private.h: Added function prototypes for everything
	from safeio.c.
1999-12-25 18:46:06 +00:00
Martin Baulig
91e94f9c0d Warning fix. 1999-12-25 18:37:21 +00:00
Martin Baulig
42cbc7cf0c perl -pni -e 's,server->machine,server->_priv->machine,g' *.c
perl -pni -e 's,server->machine,server->_priv->machine,g' *.h
1999-12-25 18:30:26 +00:00
Martin Baulig
595553ae0b Removed all remote communication support from LibGTop.
1999-12-23  Martin Baulig  <martin@home-of-linux.org>

	Removed all remote communication support from LibGTop.

	* include/glibtop/gnuserv.h: Removed.

	* sysdeps/common/gnuslib.c: Removed.

	* src/daemon/Makefile.am: Don't build the `libgtop_daemon'
	binary any longer.

	* src/daemon/server_config.pl: Removed.
	* src/daemon/server_config.h.in: Removed.
	* src/daemon/server_config.h: Removed.
1999-12-23 13:08:51 +00:00
Martin Baulig
e03b665dd1 s/server->machine/server->_priv->machine/g; 1999-12-23 13:01:57 +00:00
Martin Baulig
d0441219cb New global function to return `server->glibtop_errno'.
1999-12-22  Martin Baulig  <martin@home-of-linux.org>

	* lib/errors.c (glibtop_get_errno_l): New global function
	to return `server->glibtop_errno'.
	(glibtop_clear_errno_l): New global function to return
	`server->glibtop_errno' and set it back to 0.
1999-12-22 13:09:42 +00:00
Martin Baulig
ac0cce9d6f Distinguish between GLIBTOP_ERROR_NO_KERNEL_SUPPORT and
1999-12-22  Martin Baulig  <martin@home-of-linux.org>

	* procdata.c: Distinguish between GLIBTOP_ERROR_NO_KERNEL_SUPPORT
	and GLIBTOP_ERROR_NO_SUCH_PROCESS.
1999-12-22 12:59:36 +00:00
Martin Baulig
1ad3a69d8f New error constant. (GLIBTOP_ERROR_INCOMPATIBLE_KERNEL): New error
1999-12-22  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/errors.h
	(GLIBTOP_ERROR_NO_KERNEL_SUPPORT): New error constant.
	(GLIBTOP_ERROR_INCOMPATIBLE_KERNEL): New error constant.
1999-12-22 12:51:59 +00:00
Martin Baulig
d86a386ad8 New global function.
1999-12-22  Martin Baulig  <martin@home-of-linux.org>

	* lib/errors.c (glibtop_get_errno_l): New global function.

	* 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.
1999-12-22 11:50:47 +00:00
Martin Baulig
d66768ac55 Return -GLIBTOP_ERROR_NO_SUCH_PROCESS if the process doesn't exist.
1999-12-22  Martin Baulig  <martin@home-of-linux.org>

	* procdata.c (glibtop_get_proc_data_proc_state_s): Return
	-GLIBTOP_ERROR_NO_SUCH_PROCESS if the process doesn't exist.
	(glibtop_get_proc_data_proc_mem_s): Likewise.
	(glibtop_get_proc_data_proc_signal_s): Likewise.
	(glibtop_get_proc_data_proc_kernel_s): Likewise.
	(glibtop_get_proc_data_proc_args_s): Likewise.
	(glibtop_get_proc_data_proc_maps_s): Likewise.
1999-12-22 11:32:18 +00:00
Martin Baulig
567ceac52f Use of `errno' as struct field yields some trouble; better use
`glibtop_errno' instead.
1999-12-22 11:22:29 +00:00
Martin Baulig
47a0ef64d8 Added `errno' field.
1999-12-22  Martin Baulig  <martin@home-of-linux.org>

	* glibtop.h (glibtop): Added `errno' field.

	* include/glibtop/errors.h
	(GLIBTOP_ERROR_SERVER_COMM_FAILURE): New error constant.
	(GLIBTOP_ERROR_NO_SUCH_PROCESS): New error constant.
1999-12-22 11:19:16 +00:00
Martin Baulig
5f649a7613 New file.
1999-12-19  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/glib-arrays.h: New file.

	* lib/glib-arrays.c: New file.
	(glibtop_get_proclist_as_array_l): New function.
	(glibtop_get_proc_args_as_array_l): New function.
	(glibtop_get_proc_map_as_array_l): New function.
	(glibtop_get_mountlist_as_array_l): New function.
1999-12-19 15:49:47 +00:00
Martin Baulig
d4b712db86 New file. This is a private header file which defines `struct
1999-12-19  Martin Baulig  <martin@home-of-linux.org>

	* glibtop-server-private.h: New file. This is a private header
	file which defines `struct _glibtop_server_private'.

	* glibtop.h (glibtop): Added `glibtop_server_private *_priv' field
	and moved some private fields there.
1999-12-19 15:07:13 +00:00
Martin Baulig
339e1f4557 Removed. (glibtop_get_proc_args_*): This now takes a `glibtop_array'
1999-12-12  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/procargs.h (glibtop_proc_args): Removed.
	(glibtop_get_proc_args_*): This now takes a `glibtop_array' parameter
	instead of a `glibtop_proc_args one and returns a `char **'.
1999-12-19 14:37:49 +00:00
Martin Baulig
da42214e86 Removed. (glibtop_get_proc_args_*): This now takes a `glibtop_array'
1999-12-12  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/procargs.h (glibtop_proc_args): Removed.
	(glibtop_get_proc_args_*): This now takes a `glibtop_array' parameter
	instead of a `glibtop_proc_args one and returns a `char **'.
1999-12-19 14:10:23 +00:00
Martin Baulig
c5ebf9c12e *** empty log message *** 1999-12-19 13:04:51 +00:00
Martin Baulig
6b201a78e0 Put -lgtop' after -lgtop_common'.
1999-12-13  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (LIBGTOP_LIBS): Put `-lgtop' after `-lgtop_common'.
1999-12-19 00:50:12 +00:00
Martin Baulig
d2d8d38db4 New file. We define `GLIBTOP_ERROR_*' error constants here.
1999-12-19  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/errors.h: New file. We define `GLIBTOP_ERROR_*'
	error constants here.

	* lib/errors.c: New file.
	(glibtop_error_strings): Array of error messages.
	(glibtop_get_error_string_l): Get error message.

	* include/glibtop/parameter.h: Added `GLIBTOP_PARAM_REMOTE_USER' and
	`GLIBTOP_PARAM_PATH_RSH'.

	* lib/parameter.c (glibtop_get_parameter_l): Changed return value
	from `size_t' to `ssize_t' and let it return an error constant.
	(glibtop_get_parameter_size_l): New function.
	(glibtop_set_parameter_l): Changed return value from `void' to `int'
	and let it return an error constant on error.

	* structures.def (glibtop_sysdeps): Added.
1999-12-19 00:30:18 +00:00
Martin Baulig
0dee417e1d Added `lib/errors.c'.
1999-12-19  Martin Baulig  <martin@home-of-linux.org>

	* POTFILES.in: Added `lib/errors.c'.
1999-12-19 00:25:19 +00:00
Martin Baulig
a0056665ae Reflect latest interface changes. 1999-12-18 18:11:27 +00:00
Martin Baulig
9b245d8113 *** empty log message *** 1999-12-18 18:11:00 +00:00
Martin Baulig
d098b19d4d Make it work with kernel 2.2.12. 1999-12-18 17:52:02 +00:00
Martin Baulig
3aaa326bab "It compiles". 1999-12-12 16:09:33 +00:00
Martin Baulig
1a25c3ade9 New file.
1999-12-12  Martin Baulig  <martin@home-of-linux.org>

	* netinfo.c: New file.

	* interfaces.c: Reflect latest interface changes.
	* netload.c: Likewise.
1999-12-12 16:09:03 +00:00
Martin Baulig
881c2a2086 All functions which return an array now take a `glibtop_array *array'
1999-12-12  Martin Baulig  <martin@home-of-linux.org>

	All functions which return an array now take a `glibtop_array *array'
	parameter instead of a `glibtop_<feature> *buf' one.

	For compatibility, we typedef the corresponding `glibtop_<feature>'s
	to `glibtop_array' in <glibtop/compat_10.h>.

	This has the advantage that scripting languages like Guile with an
	array implementation which stores the length of an array in the
	array don't need the `glibtop_array' parameter at all any longer.

	We'll also add convenient functions which return GPtrArray's here.

	* include/glibtop/proclist.h (glibtop_proclist): Removed.
	(glibtop_get_proclist_*): This now takes a `glibtop_array' parameter
	instead of a `glibtop_proclist' one.

	* include/glibtop/procmap.h (glibtop_proc_map): Removed.
	(glibtop_get_proc_map_*): This now takes a `glibtop_array' parameter
	instead of a `glibtop_proc_map' one.

	* include/glibtop/mountlist.h (glibtop_mountlist): Removed.
	(glibtop_get_mountlist_*): This now takes a `glibtop_array' parameter
	instead of a `glibtop_mountlist' one.

	* include/glibtop/interfaces.h (glibtop_interface_names): Removed.
	(glibtop_get_interface_names_*): This now takes a `glibtop_array'
	parameter instead of a `glibtop_interface_name' one.

	* include/glibtop/compat_10.h: New file. Contains some typedefs and
	#defines to keep compatibility until the big restructurement is
	completely done.
1999-12-12 14:20:17 +00:00
Martin Baulig
a33f4df47e New file.
1999-12-12  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/array.h: New file.
1999-12-12 12:48:30 +00:00
Martin Baulig
4748c6c4d7 Only set smp flags when we're really on a SMP machine.
1999-12-11  Martin Baulig  <martin@home-of-linux.org>

	* cpu.c: Only set smp flags when we're really on a SMP machine.
1999-12-11 15:38:04 +00:00
Martin Baulig
18af9297ea This is a larger source-incompatible commit, but it'll make it easier to
1999-12-11  Martin Baulig  <martin@home-of-linux.org>

	This is a larger source-incompatible commit, but it'll make it
	easier to write automatically generated code (for instance for
	scripting languages).

	Renamed all constants for the flags field to match the field names
	from the features.def and structures.def where this was not already
	the case.

	* include/glibtop/cpu.h: s/GLIBTOP_XCPU_/GLIBTOP_CPU_XCPU_/g.
	* include/glibtop/shm_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SHM_LIMITS_/g.
	* include/glibtop/sem_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SEM_LIMITS_/g.
	* include/glibtop/msg_limits.h: s/GLIBTOP_IPC_/GLIBTOP_MSG_LIMITS_/g.
1999-12-11 14:33:18 +00:00
Martin Baulig
c138d87c30 Use string' instead of str' as type name.
1999-12-11  Martin Baulig  <martin@home-of-linux.org>

	* features.def: Use `string' instead of `str' as type name.
1999-12-11 14:29:00 +00:00
Martin Baulig
709c5378f8 Removed `guile_types.pl'. 1999-12-05 22:20:38 +00:00
Martin Baulig
8e9a0fbe99 Moved all Guile code to the libgtop-bindings module.
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	Moved all Guile code to the libgtop-bindings module.

	* sysdeps/guile/*: Removed.
	* sysdeps/guile/names/*: Removed.

	* libgtopConf.sh.in: Removed all guile variables.

	* configure.in: Don't check for guile any longer.
1999-12-05 22:16:31 +00:00
Martin Baulig
117af5f59b New script to create `structures.h' which will be used in language
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* lib/structures.pl: New script to create `structures.h' which will
	be used in language bindings code.
1999-12-05 16:14:09 +00:00
Martin Baulig
4dccb636e2 *** empty log message *** 1999-12-05 15:02:34 +00:00
Martin Baulig
c40788c5b2 Return vector for functions returning arrays. 1999-12-05 14:55:18 +00:00
Martin Baulig
ca27a66593 Use `pointer(<type>)' as return value for functions returning an array of
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* features.def: Use `pointer(<type>)' as return value for functions
	returning an array of scalar values (such as `unsigned' etc.).
1999-12-05 14:54:54 +00:00
Martin Baulig
713a076df3 *** empty log message *** 1999-12-05 14:17:08 +00:00
Martin Baulig
abaa37c51f Return SCM_BOOL_F on error. 1999-12-05 14:15:49 +00:00
Martin Baulig
4a2fb0a871 Use `array(<type>)' as return value for functions returning an array of
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* features.def: Use `array(<type>)' as return value for functions
	returning an array of structures.
1999-12-05 14:07:20 +00:00
Martin Baulig
5ddf25c66a Enable `guile' subdir again. 1999-12-05 13:58:31 +00:00
Martin Baulig
ff9f90c7e6 This is now the low-level guile interface to LibGTop. For each of the
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	This is now the low-level guile interface to LibGTop. For
	each of the LibGTop structures we create a new smob here and
	let the `glibtop-get-<feature>' functions return such a smob.

	* main.c: New file.
	(glibtop_boot_guile_main): Initialize "glibtop-global-server" here.

	* guile.h: New file.
1999-12-05 13:58:03 +00:00
Martin Baulig
d48d48cafb Reflect latest interface changes. 1999-12-05 13:54:58 +00:00
Martin Baulig
2bb9bc624d Return array of `glibtop_interface' structures. (glibtop_interface): New
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* includes/glibtop/interfaces.h (glibtop_get_interface_names):
	Return array of `glibtop_interface' structures.
	(glibtop_interface): New structure.
1999-12-05 13:54:37 +00:00
Martin Baulig
069eb707f0 New #define. (GLIBTOP_UNLIMITED): #define this to be `(~(u_int64_t)0)'.
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/limits.h (GLIBTOP_INTERFACE_LEN): New #define.
	(GLIBTOP_UNLIMITED): #define this to be `(~(u_int64_t)0)'.
1999-12-05 13:52:32 +00:00
Martin Baulig
c1cae4e9ba Added `refcount' field. New functions to deal with refcounts.
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* glibtop.h (glibtop): Added `refcount' field.
	* lib/init.c (glibtop_server_ref, glibtop_server_unref): New
	functions to deal with refcounts.
1999-12-05 13:50:35 +00:00
Martin Baulig
f5efccc8d6 New file. This is used by the language bindings code to get the
1999-12-05  Martin Baulig  <martin@home-of-linux.org>

	* structures.def: New file. This is used by the language bindings
	code to get the definitions of some of LibGTop's structures.
1999-12-05 13:49:36 +00:00
Birger Langkjer/danish translations
f6e4fefd66 Modified Files: balsa/po/da.po gedit/po/da.po libgtop/po/da.po
Modified Files:
 	balsa/po/da.po gedit/po/da.po libgtop/po/da.po
1999-12-03 18:57:14 +00:00
Martin Baulig
66bab0ec49 Partitially got it working again. 1999-12-02 20:56:42 +00:00
Martin Baulig
2b501953ce New file.
1999-12-02  Martin Baulig  <martin@home-of-linux.org>

	* guile_types.pl: New file.
1999-12-02 20:54:55 +00:00
Yuri Syrota
150d9c9961 Added Ukrainian Translation 1999-12-02 09:15:23 +00:00
Kjartan Maraas
e5b62ecc0b Updated Norwegian translation.
1999-12-01  Kjartan Maraas  <kmaraas@online.no>

	* no.po: Updated Norwegian translation.
1999-12-01 08:49:10 +00:00
Yuri Syrota
b621d3cf1c Added Ukrainian Translation 1999-11-30 13:21:33 +00:00
Ricardo Soares Guimares
9abff2143d Updated pt_BR translations
1999-11-29 Ricardo Soares Guimares <ricardo@conectiva.com.br>
	*	Updated pt_BR translations
1999-11-29 18:49:10 +00:00
Drazen Kacar
5d224583a1 @#$!%@# gcc!!! 1999-11-29 16:19:28 +00:00
Nam SungHyun
fdc5890b09 updated to 1.1.3 1999-11-29 04:22:15 +00:00
Martin Baulig
f850409d45 Added transport' and protocol' argument to specify transport method and
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/netload.h (glibtop_get_netload): Added
	`transport' and `protocol' argument to specify transport method
	and protocol.

	* include/glibtop/netinfo.h (glibtop_get_netinfo): Added
	`transport' argument to specify the transport method.
1999-11-28 19:03:05 +00:00
Martin Baulig
d58748ac66 Added `transport' field for the transport method.
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/netinfo.h (glibtop_netinfo): Added `transport'
	field for the transport method.
1999-11-28 18:41:45 +00:00
Martin Baulig
4a01752467 Split netload into netload and netinfo.
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	Split netload into netload and netinfo.

	* include/glibtop/netinfo.h: New file.

	* include/glibtop/netload.h (glibtop_netload): Moved `if_flags',
	`mtu', `subnet' and `address' into the new `glibtop_netinfo'.

	* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_NETINFO): Added.
	(glibtop_sysdeps): Added `netinfo.
	* include/glibtop/union.h (glibtop_union): Added `netinfo.
	* include/glibtop/command.h (GLIBTOP_CMND_NETINFO): Added.
1999-11-28 18:17:21 +00:00
Martin Baulig
53f9d03e30 Added `instance' argument.
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* include/glibtop/interfaces.h (glibtop_get_interface_names):
	Added `instance' argument.
1999-11-28 17:53:34 +00:00
Martin Baulig
776b6965fb **** Merged from Hardangervidda ****
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* gnuserv.c (setup_table): Don't dump core when the table of
	permitted host names contains a NULL pointer.
1999-11-28 16:43:30 +00:00
Martin Baulig
aeeef43f45 We now have a new, more extensible client/server communication model.
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-28 16:21:51 +00:00
Martin Baulig
b60b7fd201 New file. This is included in `$(top_srcdir)/lib/lib.pl'.
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* c_types.pl: New file.
	This is included in `$(top_srcdir)/lib/lib.pl'.
1999-11-28 16:20:16 +00:00
Martin Baulig
f918792bb6 Temporarily comment out guile subdir. 1999-11-28 16:19:20 +00:00
Martin Baulig
abb3ba2c6a **** Merged from Hardangervidda ****
1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* procstate.c (glibtop_get_procstate_s): Stat "/proc/<pid>" instead
	of "/proc/<pid>/state" to get `uid' and `gid'. Thanks to Jason Becker
	for pointing out that GTop reported wrong uid's.
1999-11-28 11:58:14 +00:00
Martin Baulig
566e05bb33 *** empty log message *** 1999-11-21 19:05:11 +00:00
Martin Baulig
6380440c00 Reflect latest interface changes. 1999-11-21 19:03:12 +00:00
Martin Baulig
f8e6fb5674 Implement GLIBTOP_CMND_INTERFACE_NAMES. 1999-11-21 18:46:36 +00:00
Martin Baulig
ac83dcc3b3 Added GLIBTOP_INTERFACE_ISDN. 1999-11-21 18:38:48 +00:00
Martin Baulig
b746f488b0 Added new feature to get a list of network interface names.
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 18:35:40 +00:00
Martin Baulig
e5a7a5b0e5 New file. (glibtop_init_interface_names_s): New function.
1999-11-21  Martin Baulig  <martin@home-of-linux.org>

	* interfaces.c: New file.
	(glibtop_init_interface_names_s): New function.
	(glibtop_get_interface_names_s): New function.
1999-11-21 18:35:10 +00:00
Martin Baulig
f8aae8f544 Support GLIBTOP_KERN_PROC_PPID.
1999-11-21  Martin Baulig  <martin@home-of-linux.org>

	* proclist.c: (glibtop_get_proclist_s): Support GLIBTOP_KERN_PROC_PPID.
1999-11-21 18:08:10 +00:00
Martin Baulig
3f8ad111b2 Use int' as return type, not void'.
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-21 17:07:42 +00:00
Martin Baulig
81176f8181 Reflect latest interface changes; return 0 on success and -1 on error. 1999-11-21 16:54:36 +00:00
Ricardo Soares Guimares
cdc8e43a79 Updated pt_BR translations
1999-11-10 Ricardo Soares Guimares <ricardo@conectiva.com.br>

	* Updated pt_BR translations
1999-11-10 13:21:44 +00:00
Jesus Bravo Alvarez
ae69444b3b Added Galician translation 1999-11-02 22:06:26 +00:00
Birger Langkjer/danish translations
28257e906b Modified Files: balsa/po/ChangeLog balsa/po/da.po gedit/po/da.po
Modified Files:
 	balsa/po/ChangeLog balsa/po/da.po gedit/po/da.po
 	gnome-core/desktop-links/Balsa.desktop
 	gnome-core/desktop-links/Development.directory
 	gnome-core/desktop-links/Emacs.desktop
 	gnome-core/desktop-links/GIMP.desktop
 	gnome-core/desktop-links/Games.directory
 	gnome-core/desktop-links/Gmc.desktop
 	gnome-core/desktop-links/Graphics.directory
 	gnome-core/desktop-links/Imlib_config.desktop
 	gnome-core/desktop-links/Internet.directory
 	gnome-core/desktop-links/Kterm.desktop
 	gnome-core/desktop-links/Root.directory
 	gnome-core/desktop-links/Settings.directory
 	gnome-core/desktop-links/System.directory
 	gnome-core/desktop-links/Tkrat.desktop
 	gnome-core/desktop-links/UNIX-regular.desktop
 	gnome-core/desktop-links/Vim.desktop
 	gnome-core/desktop-links/Vnterm.desktop
 	gnome-core/gmenu/gmenu.desktop
 	gnome-core/gnome-hint/gnome-hint-properties.desktop
 	gnome-core/gnome-terminal/gnome-terminal.desktop
 	gnome-core/panel/gnome-panel-properties.desktop
 	gnome-core/po/da.po gnome-libs/po/da.po gnome-pim/po/da.po
 	libgtop/po/da.po libunicode/ltconfig libunicode/ltmain.sh
1999-10-25 00:32:07 +00:00
Martin Baulig
7a9bb6e43d Return 0 on success and -1 on error. 1999-10-24 20:17:42 +00:00
Martin Baulig
507f171b63 Use `retval' for the default retval.
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.
1999-10-24 20:04:37 +00:00
Martin Baulig
1dadfb6d15 Added additional `int' parameter for the retval from the sysdeps
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* io.c (do_output): Added additional `int' parameter for the
	retval from the sysdeps functions.
1999-10-24 20:03:35 +00:00
Martin Baulig
2dc529b19f New static variable. (glibtop_get_fsusage_s): Return -1 on error;
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* fsusage.c (_glibtop_sysdeps_fsusage): New static variable.
	(glibtop_get_fsusage_s): Return -1 on error; otherwise set the
	features and return 0.
1999-10-24 19:16:52 +00:00
Martin Baulig
a5dd7e9063 This is a very big an possibly breaking commit.
It changes the return values of all sysdeps functions which were
previosly returning void to int.

This is the first step to implement better error handling in LibGTop.

Martin

1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* 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 19:09:32 +00:00
Martin Baulig
eae892c9b1 Use glib's malloc functions when compiled with LIBGTOP_USE_GLIB_MALLOC.
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* xmalloc.c: Use glib's malloc functions when compiled
	with LIBGTOP_USE_GLIB_MALLOC.
1999-10-24 18:47:50 +00:00
Martin Baulig
71e81ccad3 Added. New configure parameter to use glib's malloc functions.
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.
1999-10-24 18:46:59 +00:00
Martin Baulig
eeaa766456 Use glib's malloc functions when compiled with LIBGTOP_ENABLE_DEBUG.
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* xmalloc.c: Use glib's malloc functions when compiled
	with LIBGTOP_ENABLE_DEBUG.

	* xmalloc_suid.c: New file.
1999-10-24 16:19:48 +00:00
Martin Baulig
17627bab9f New file.
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* sysdeps/common/ChangeLog: New file.
1999-10-24 16:19:28 +00:00
Martin Baulig
7327906fde Removed examples from the spec file. 1999-10-24 15:55:46 +00:00
Martin Baulig
3c3dfcd77d The LibGTop examples have been moved into their own top-level module
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 15:51:28 +00:00
Martin Baulig
0adc3bd9ab Move that warning from configure.in to autogen.sh so it won't show up
each time during the build process.
1999-10-24 14:44:03 +00:00
Martin Baulig
0c3e5cd755 Check for <osreldate.h> on *BSD* systems.
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* libgtop-sysdeps.m4: Check for <osreldate.h> on *BSD* systems.
1999-10-24 14:33:44 +00:00
Martin Baulig
34714be205 Make inclusion of <osreldate.h> conditional to `HAVE_OSRELDATE_H', not to
1999-10-24  Martin Baulig  <martin@home-of-linux.org>

	* glibtop_machine.h: Make inclusion of <osreldate.h> conditional
 	to `HAVE_OSRELDATE_H', not to `__FreeBSD__'.
	* procsignal.c, proctime.c, proctime.c: Likewise.
1999-10-24 14:33:18 +00:00
Martin Baulig
77cf90cfb0 Add a prominent warning that this is a development version of LibGTop. 1999-10-24 14:13:02 +00:00
Martin Baulig
359f5511d7 Fix bug #2909; I made some little mistake when applying a patch here. 1999-10-20 14:35:54 +00:00
Martin Baulig
9043e29b18 Don't cast uptime and idletime to float as suggested by John Kodis.
1999-10-19  Martin Baulig  <martin@home-of-linux.org>

	* uptime.c (glibtop_get_uptime_s): Don't cast uptime and idletime
	to float as suggested by John Kodis.
1999-10-19 00:11:33 +00:00
Martin Baulig
d59b8e5220 Set version number to 1.1.3, binary age 0, interface age 0 and increased
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.
1999-10-19 00:08:09 +00:00
469 changed files with 18912 additions and 15180 deletions

View File

@@ -1,5 +1,7 @@
Makefile
Makefile.in
call-vector.h
call-vector.h
aclocal.m4
config.cache
config.h
@@ -13,7 +15,8 @@ gtopConf.sh
i386-bsdi
i686-pc-linux-gnu
intl
libgtop-0.01.tar.gz
libgtop-1.*.*.tar.gz
libgtop-1.*.*
libgtop-mirror.sh.swp
libgtopConf.sh
libtool
@@ -31,8 +34,6 @@ i686-pc-linux-gnu-linux
libgtop-config
ABOUT-NLS
libgtop.spec
libgtop-0.99.*.tar.gz
libgtop-0.99.*
install-sh
mkinstalldirs
missing
@@ -40,3 +41,5 @@ INSTALL
COPYING
glibtop-config.h
stamp-gc-h
build-debstamp
install-debstamp

468
ChangeLog
View File

@@ -1,3 +1,471 @@
2000-01-14 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.1.4 "Earthquake".
1999-01-13 Yuri Syrota <rasta@renome.rovno.ua>
* configure.in: Added Ukrainian (uk) to ALL_LINGUAS
2000-01-13 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/compat_10.h: Add compatibility #defines for
`GLIBTOP_XCPU_TOTAL', `GLIBTOP_XCPU_USER', `GLIBTOP_XCPU_NICE',
`GLIBTOP_XCPU_SYS', `GLIBTOP_XCPU_IDLE' and `GLIBTOP_XCPU_FLAGS'
* LIBGTOP-VERSION: Set version number to 1.1.4, binary age 0,
interface age 0 and increased LIBGTOP_SERVER_VERSION to 52.
2000-01-13 Martin Baulig <martin@home-of-linux.org>
* lib/sysdeps-init-freebsd.c: New file.
* lib/sysdeps-init-kernel.c: New file.
* lib/sysdeps-init-linux.c: New file.
* lib/sysdeps-init-solaris.c: New file.
* lib/sysdeps-init-stub-suid.c: New file.
* lib/sysdeps-init-stub.c: New file.
* lib/open.c (glibtop_open_l): Call glibtop_init_backend () and
_glibtop_open_sysdeps () here.
* lib/init.c (glibtop_init_s): Call `_glibtop_open_sysdeps'.
* include/glibtop/open.h (_glibtop_open_sysdeps): Declare this
when we are _IN_LIBGTOP.
* configure.in (sysdeps_name): Define and AC_SUBST this.
(sysdeps_init_file): Define and AC_SUBST this to
`sysdeps-init-${sysdeps_name}.c'.
* libgtop-sysdeps.m4 (GNOME_LIBGTOP_SYSDEPS): Define and AC_SUBST
`libgtop_sysdeps_name'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/errors.h (GLIBTOP_ERROR_NO_BACKEND_OPENED):
New error constant.
* lib/lib.pl (glibtop_get_<feature>_l): Don't dump core when there
is no backend opened, but return GLIBTOP_ERROR_NO_BACKEND_OPENED.
* include/glibtop/backend.h (glibtop_backend): Added `_priv_module'
pointer (type glibtop_backend_module). Made the `info' field const
since this now points to gmodule loaded memory
(glibtop_backend_entry): Made the `info' field const since it points
to gmodule loaded memory.
* lib/close.c (glibtop_close_r): Close all currently opened backends.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/backend.h (glibtop_backend_entry): New type.
(glibtop_backend_module): New private type.
* lib/backend.c (glibtop_register_backend): This now takes a
`glibtop_backend_entry' argument, not a `glibtop_backend_info' one.
(glibtop_backend_by_id): Return a `glibtop_backend_entry' type,
not a `glibtop_backend_info' one.
(glibtop_backend_by_name): Likewise.
* lib/init-backends.c: If we have libxml, read all `.backend' files
in $(LIBGTOP_BACKEND_DIR), XML parse them and register them via
`glibtop_backend_register'. This builds a list of all currently
supported backends without actually loading them into memory.
* lib/open-backend.c (glibtop_open_backend_l): GModule load the
backend if it's not already in memory.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* lib/init.c (glibtop_init_s): Comment out `_glibtop_init_hook_s'.
* configure.in: We now require libxml.
(LIBGTOP_LIBS): Remove all backend libraries.
(LIBGTOP_EXTRA_LIBS): Add $(LIBGTOP_XML_LIB) here.
* configure.in: Don't check for -lXau any longer.
* configure.in (LIBGTOP_BACKEND_DIR): Define this to be
`$(datadir)/libgtop/backends' and AC_SUBST it.
* libgtopConf.sh.in (LIBGTOP_BACKEND_DIR): Added.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* xml.m4: New file to check for libxml.
* acconfig.h (HAVE_LIBXML): Define this if we have libxml.
* configure.in: Call `LIBGTOP_XML_HOOK' from `xml.m4' and
add libxml libraries to `LIBGTOP_EXTRA_LIBS' when found.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* lib/sysdeps.c (_glibtop_init_hook_s): This has been moved
into the sysdeps backend.
* configure.in (LIBGTOP_LIBS): Added `-lgtop_backend_common'.
* lib/init-backends.c (glibtop_init_backends): Initialize
`glibtop_backend_common' backend.
* backends/common/: New directory.
2000-01-10 Martin Baulig <martin@home-of-linux.org>
* src/daemon/: Removed everything in this directory. This has
been obsoleted by the new server code in backends/server.
2000-01-09 Martin Baulig <martin@bergen.home-of-linux.org>
* include/glibtop/global.h: Unconditionally #include <sys/types.h>.
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/errors.h
(GLIBTOP_ERROR_DEMARSHAL_ERROR): New error constant.
* src/Makefile.am: Disable compilation of the `daemon' directory.
* include/glibtop/command.h: Removed.
* include/glibtop/version.h: Removed.
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/call-vector.pl: All functions in the
`glibtop_call_vector' now take an additional `glibtop_backend *'
argument.
2000-01-01 Martin Baulig <martin@home-of-linux.org>
* backends/: New directory.
* backends/server/: New directory.
* backends/sysdeps/: New directory.
* include/glibtop/backend.h: New file.
* include/glibtop/call-vector.h.in: New file. Template file
for `call-vector.h'.
* include/glibtop/call-vector.pl: New file. Creates 'call-vector.h'
from `call-vector.h.in'.
* include/glibtop/errors.h
(GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant.
(GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant.
* include/glibtop/limits.h
(GLIBTOP_BACKEND_NAME_LEN): New constant.
* glibtop-server-private.h (glibtop_server_private):
Added `GSList *backend_list' and removed `input', `output',
`socket' and `pid'.
* lib/command.c: Removed. Moved to `backends/server/'.
* lib/read.c: Removed. Moved to `backends/server/'.
* lib/read_data.c: Removed. Moved to `backends/server/'.
* lib/write.c: Removed. Moved to `backends/server/'.
* include/glibtop/read.h: Removed.
* include/glibtop/read_data.h: Removed.
* include/glibtop/write.h: Removed.
1999-12-26 Martin Baulig <martin@home-of-linux.org>
* libgtop-sysdeps.m4 (LIBGTOP_CHECK_SYSDEPS_DIR): New macro;
moved check for the sysdeps directory here.
(--with-sysdeps-dir): New hacker mode command line option to
manually override the sysdeps dir. Use of this option is highly
deprecated; I only added it to be able to do `stub_suid' hackings
on my GNU/Linux machine.
1999-12-23 Martin Baulig <martin@home-of-linux.org>
Removed all remote communication support from LibGTop.
* include/glibtop/gnuserv.h: Removed.
* sysdeps/common/gnuslib.c: Removed.
* src/daemon/Makefile.am: Don't build the `libgtop_daemon'
binary any longer.
* src/daemon/server_config.pl: Removed.
* src/daemon/server_config.h.in: Removed.
* src/daemon/server_config.h: Removed.
1999-12-22 Martin Baulig <martin@home-of-linux.org>
* lib/errors.c (glibtop_get_errno_l): New global function
to return `server->glibtop_errno'.
(glibtop_clear_errno_l): New global function to return
`server->glibtop_errno' and set it back to 0.
* include/glibtop/errors.h
(GLIBTOP_ERROR_SERVER_COMM_FAILURE): New error constant.
(GLIBTOP_ERROR_NO_SUCH_PROCESS): New error constant.
(GLIBTOP_ERROR_NO_KERNEL_SUPPORT): New error constant.
(GLIBTOP_ERROR_INCOMPATIBLE_KERNEL): New error constant.
* lib/lib.pl: For functions with a `retval' return type, set
`server->glibtop_errno' to the error code on error or to zero
on success.
* glibtop.h (glibtop): Added `glibtop_errno' field.
1999-12-19 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/glib-arrays.h: New file.
* lib/glib-arrays.c: New file.
(glibtop_get_proclist_as_array_l): New function.
(glibtop_get_proc_args_as_array_l): New function.
(glibtop_get_proc_map_as_array_l): New function.
(glibtop_get_mountlist_as_array_l): New function.
1999-12-19 Martin Baulig <martin@home-of-linux.org>
* glibtop-server-private.h: New file. This is a private header
file which defines `struct _glibtop_server_private'.
* glibtop.h (glibtop): Added `glibtop_server_private *_priv' field
and moved some private fields there.
1999-12-12 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/procargs.h (glibtop_proc_args): Removed.
(glibtop_get_proc_args_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_proc_args one and returns a `char **'.
1999-12-13 Martin Baulig <martin@home-of-linux.org>
* configure.in (LIBGTOP_LIBS): Put `-lgtop' after `-lgtop_common'.
1999-12-19 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/errors.h: New file. We define `GLIBTOP_ERROR_*'
error constants here.
* lib/errors.c: New file.
(glibtop_error_strings): Array of error messages.
(glibtop_get_error_string_l): Get error message.
* include/glibtop/parameter.h: Added `GLIBTOP_PARAM_REMOTE_USER' and
`GLIBTOP_PARAM_PATH_RSH'.
* lib/parameter.c (glibtop_get_parameter_l): Changed return value
from `size_t' to `ssize_t' and let it return an error constant.
(glibtop_get_parameter_size_l): New function.
(glibtop_set_parameter_l): Changed return value from `void' to `int'
and let it return an error constant on error.
* structures.def (glibtop_sysdeps): Added.
1999-12-12 Martin Baulig <martin@home-of-linux.org>
All functions which return an array now take a `glibtop_array *array'
parameter instead of a `glibtop_<feature> *buf' one.
For compatibility, we typedef the corresponding `glibtop_<feature>'s
to `glibtop_array' in <glibtop/compat_10.h>.
This has the advantage that scripting languages like Guile with an
array implementation which stores the length of an array in the
array don't need the `glibtop_array' parameter at all any longer.
We'll also add convenient functions which return GPtrArray's here.
* include/glibtop/proclist.h (glibtop_proclist): Removed.
(glibtop_get_proclist_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_proclist' one.
* include/glibtop/procmap.h (glibtop_proc_map): Removed.
(glibtop_get_proc_map_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_proc_map' one.
* include/glibtop/mountlist.h (glibtop_mountlist): Removed.
(glibtop_get_mountlist_*): This now takes a `glibtop_array' parameter
instead of a `glibtop_mountlist' one.
* include/glibtop/interfaces.h (glibtop_interface_names): Removed.
(glibtop_get_interface_names_*): This now takes a `glibtop_array'
parameter instead of a `glibtop_interface_name' one.
* include/glibtop/compat_10.h: New file. Contains some typedefs and
#defines to keep compatibility until the big restructurement is
completely done.
1999-12-12 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/array.h: New file.
1999-12-11 Martin Baulig <martin@home-of-linux.org>
This is a larger source-incompatible commit, but it'll make it
easier to write automatically generated code (for instance for
scripting languages).
Renamed all constants for the flags field to match the field names
from the features.def and structures.def where this was not already
the case.
* include/glibtop/cpu.h: s/GLIBTOP_XCPU_/GLIBTOP_CPU_XCPU_/g.
* include/glibtop/shm_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SHM_LIMITS_/g.
* include/glibtop/sem_limits.h: s/GLIBTOP_IPC_/GLIBTOP_SEM_LIMITS_/g.
* include/glibtop/msg_limits.h: s/GLIBTOP_IPC_/GLIBTOP_MSG_LIMITS_/g.
1999-12-11 Martin Baulig <martin@home-of-linux.org>
* features.def: Use `string' instead of `str' as type name.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
Moved all Guile code to the libgtop-bindings module.
* sysdeps/guile/*: Removed.
* sysdeps/guile/names/*: Removed.
* libgtopConf.sh.in: Removed all guile variables.
* configure.in: Don't check for guile any longer.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* lib/structures.pl: New script to create `structures.h' which will
be used in language bindings code.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* features.def: Use `pointer(<type>)' as return value for functions
returning an array of scalar values (such as `unsigned' etc.).
* features.def: Use `array(<type>)' as return value for functions
returning an array of structures.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* includes/glibtop/interfaces.h (glibtop_get_interface_names):
Return array of `glibtop_interface' structures.
(glibtop_interface): New structure.
1999-12-05 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/limits.h (GLIBTOP_INTERFACE_LEN): New #define.
(GLIBTOP_UNLIMITED): #define this to be `(~(u_int64_t)0)'.
* glibtop.h (glibtop): Added `refcount' field.
* lib/init.c (glibtop_server_ref, glibtop_server_unref): New
functions to deal with refcounts.
* structures.def: New file. This is used by the language bindings
code to get the definitions of some of LibGTop's structures.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/netload.h (glibtop_get_netload): Added
`transport' and `protocol' argument to specify transport method
and protocol.
* include/glibtop/netinfo.h (glibtop_get_netinfo): Added
`transport' argument to specify the transport method.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/netinfo.h (glibtop_netinfo): Added `transport'
field for the transport method.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
Split netload into netload and netinfo.
* include/glibtop/netinfo.h: New file.
* include/glibtop/netload.h (glibtop_netload): Moved `if_flags',
`mtu', `subnet' and `address' into the new `glibtop_netinfo'.
* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_NETINFO): Added.
(glibtop_sysdeps): Added `netinfo.
* include/glibtop/union.h (glibtop_union): Added `netinfo.
* include/glibtop/command.h (GLIBTOP_CMND_NETINFO): Added.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/interfaces.h (glibtop_get_interface_names):
Added `instance' argument.
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* lib/lib.pl: We now have a new, more extensible client/server
communication model. Include `$(top_srcdir)/scripts/c_types.pl' here.
1999-11-21 Martin Baulig <martin@home-of-linux.org>
Added new feature to get a list of network interface names.
* features.def: Added `interface_names' feature.
* include/glibtop/interfaces.h: New file.
* include/glibtop/sysdeps.h (GLIBTOP_SYSDEPS_INTERFACE_NAMES): Added.
(glibtop_sysdeps): Added `interface_names'.
* include/glibtop/union.h (glibtop_union): Added `interface_names'.
* include/glibtop/command.h (GLIBTOP_CMND_INTERFACE_NAMES): Added.
1999-11-21 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/sysdeps.h (glibtop_init_func_t): Use `int'
as return type, not `void'.
* include/glibtop/proclist.h (GLIBTOP_KERN_PROC_PPID): On a
suggestion from Sebastian Fischmeister added a way to return
all children of a given process.
1999-11-02 Jesus Bravo Alvarez <jba@pobox.com>
* configure.in: Added Galician (gl) to ALL_LINGUAS
1999-10-24 Martin Baulig <martin@home-of-linux.org>
* features.def: Use `retval' for the default retval.
* include/glibtop/command.h (glibtop_command_h): Added
`int *retval_ptr' parameter to return the retval from the
sysdeps functions.
* include/glibtop/*.h (glibtop_get_*, glibtop_init*): Changed
the return value of all `glibtop_get_<feature>_* ()' and all
`glibtop_init_<feature>_* ()' functions from void to int.
* features.def: Reflect changes of the return values.
* sysdeps/*/*.c: Reflect changes of the return values.
1999-10-24 Martin Baulig <martin@home-of-linux.org>
* acconfig.h (LIBGTOP_USE_GLIB_MALLOC): Added.
* configure.in (--enable-glib-malloc): New configure parameter
to use glib's malloc functions.
* sysdeps/common/ChangeLog: New file.
1999-10-24 Martin Baulig <martin@home-of-linux.org>
The LibGTop examples have been moved into their own top-level
module libgtop-examples.
* examples/*: Removed.
* configure.in: Removed all checks for the examples.
* libgtop-sysdeps.m4: Removed --with-libgtop-examples parameter.
* Makefile.am: Removed examples from the subdir list.
1999-10-24 Martin Baulig <martin@home-of-linux.org>
* libgtop-sysdeps.m4: Check for <osreldate.h> on *BSD* systems.
1999-10-19 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.1.3, binary age 0,
interface age 0 and increased LIBGTOP_SERVER_VERSION to 51.
This implies that we can now break as much compatibility as
we want.
1999-10-19 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.1.2 "Hardangervidda".

View File

@@ -8,13 +8,13 @@
#
LIBGTOP_MAJOR_VERSION=1
LIBGTOP_MINOR_VERSION=1
LIBGTOP_MICRO_VERSION=2
LIBGTOP_MICRO_VERSION=4
LIBGTOP_INTERFACE_AGE=2
LIBGTOP_BINARY_AGE=2
LIBGTOP_INTERFACE_AGE=0
LIBGTOP_BINARY_AGE=0
# Increase each time you change the client/server protocol.
LIBGTOP_SERVER_VERSION=50
LIBGTOP_SERVER_VERSION=52
# Don't change this
LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION

View File

@@ -1,24 +1,20 @@
## 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 lib src \
$(examples_SUBDIRS) doc
SUBDIRS = po intl $(support) macros misc include sysdeps backends lib \
src doc scripts
include_HEADERS = glibtop.h
configincludedir = $(pkglibdir)/include
noinst_HEADERS = glibtop-server-private.h
EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \
LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \
RELNOTES-1.0 RELNOTES-1.1.x libgtop-sysdeps.m4 README \
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
configinclude_DATA = \
@@ -41,7 +37,8 @@ release:
## `install-exec', not `install-data'.
confexecdir = $(libdir)
confexec_DATA = $(top_builddir)/libgtopConf.sh \
$(top_builddir)/libgtop-features.def
$(top_builddir)/libgtop-features.def \
$(top_builddir)/libgtop-structures.def
CLEANFILES=libgtopConf.sh
@@ -64,15 +61,12 @@ libgtopConf.sh: libgtopConf.sh.in Makefile
sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \
-e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#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' \
@@ -84,8 +78,6 @@ 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
@@ -98,3 +90,6 @@ libgtop-config: libgtop-config.in Makefile
libgtop-features.def: features.def
@LN_S@ $< $@
libgtop-structures.def: structures.def
@LN_S@ $< $@

8
NEWS
View File

@@ -1,3 +1,11 @@
January 14, 1999:
================
* Released LibGTop 1.1.4 "Earthquake"
This is the first developer's snapshot release after a
longer development period with a lot of interface changes.
October 19, 1999:
================

View File

@@ -11,6 +11,10 @@ Please use LibGTop 1.0.x if you're not on a Solaris system
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

View File

@@ -1,3 +1,5 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* Define if gethostname () must be declared. */
#undef NEED_DECLARATION_GETHOSTNAME
@@ -122,7 +124,6 @@
#undef HAVE_LIBZ
#undef HAVE_LIBPNG
#undef HAVE_GMP2_INCLUDE_DIR
#undef HAVE_GUILE
#undef ssize_t
#undef u_int64_t
@@ -131,8 +132,6 @@
#undef HAVE_GLIBTOP_MACHINE_H
#undef GLIBTOP_NAMES
#undef GLIBTOP_GUILE
#undef GLIBTOP_GUILE_NAMES
#undef GLIBTOP_EXAMPLES
#undef GLIBTOP_INODEDB
@@ -151,6 +150,9 @@
#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).
*/
@@ -167,3 +169,7 @@
/* 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

View File

@@ -15,3 +15,26 @@ PKG_NAME="Gnome Top Library"
}
. $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 ""

5
backends/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
.deps
.libs
Makefile
Makefile.in
*.lo

1
backends/Makefile.am Normal file
View File

@@ -0,0 +1 @@
SUBDIRS = server sysdeps common

View File

@@ -0,0 +1,7 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c

17
backends/common/ChangeLog Normal file
View File

@@ -0,0 +1,17 @@
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
* libgtop-common.backend: New file.
* backend-common.c (glibtop_backend_common): Renamed to
`LibGTopBackendInfo'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
Initial version of the "glibtop-backend-common" backend.
* backend-common.c: New file.
* glibtop-backend-private.h: New file.
* marshal.pl: New file. Automatically creates `marshal.c'.

View File

@@ -0,0 +1,35 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@
backenddir = @LIBGTOP_BACKEND_DIR@
backend_DATA = \
libgtop-common.backend
noinst_HEADERS = \
glibtop-backend-private.h
backend_LTLIBRARIES = \
libgtop_backend_common.la
libgtop_backend_common_la_SOURCES = \
backend-common.c \
marshal.c
libgtop_backend_common_la_LDFLAGS = \
$(LT_VERSION_INFO) -export-dynamic
BUILT_SOURCES = \
marshal.c
EXTRA_DIST = \
marshal.pl \
libgtop-common.backend
CLEANFILES = $(BUILT_SOURCES)
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
mv tmp-t marshal.c

View File

@@ -0,0 +1,62 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <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;
}

View File

@@ -23,19 +23,12 @@
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_WRITE_H__
#define __GLIBTOP_WRITE_H__
#ifndef __GLIBTOP_BACKEND_PRIVATE_H__
#define __GLIBTOP_BACKEND_PRIVATE_H__
#include <glibtop.h>
#include <glibtop/error.h>
BEGIN_LIBGTOP_DECLS
#define glibtop_write(p1, p2) glibtop_write(glibtop_global_server, p1, p2)
void glibtop_write_l (glibtop *server, size_t size, void *buf);
void glibtop_write_s (glibtop *server, size_t size, void *buf);
END_LIBGTOP_DECLS
struct _glibtop_backend_private
{
u_int64_t flags;
};
#endif

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?> <!-- -*-xml-*- -->
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
<libgtop:Backend>
<libgtop:Name>glibtop-backend-common</libgtop:Name>
<libgtop:Location>
<libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName>
<libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName>
</libgtop:Location>
</libgtop:Backend>
</libgtop:Backends>

179
backends/common/marshal.pl Normal file
View File

@@ -0,0 +1,179 @@
#!/usr/bin/perl
require 'c_types.pl';
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
$always_use_temp_storage = 1;
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
print '/* marshal.c */';
print "/* This is a generated file. Please modify `marshal.pl' */";
print '';
print '#include <glibtop.h>';
print '#include <glibtop/open.h>';
print '#include <glibtop/xmalloc.h>';
print '';
print '#include <glibtop/sysdeps.h>';
print '#include <glibtop/union.h>';
print '';
print '#include <glibtop/backend.h>';
print '';
print '#include <glibtop-backend-private.h>';
print '';
$feature_count = 0;
while (<>) {
chop; # strip record separator
if (/^[^#]/) {
&output($_);
}
}
sub output {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$feature = $line_fields[2];
$param_def = $line_fields[4];
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$features{++$feature_count} = $orig;
return unless $orig =~ /^@/;
if ($retval eq 'retval') {
$retval_param = '&retval';
$call_prefix = '';
$call_prefix_space = '';
$prefix = 'retval = ';
$prefix_space = ' ';
$retval = 'int';
}
elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
$prefix = 'retval = ';
$prefix_space = ' ';
$call_prefix = 'retval = ';
$call_prefix_space = ' ';
}
else {
$retval_param = 'NULL';
$call_prefix = '';
$call_prefix_space = '';
$prefix = '';
$prefix_space = '';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$need_temp_storage = $always_use_temp_storage;
$first_param_name = '';
$call_param = '';
$param_decl = '';
$need_temp_len = 0;
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
if ($first_param_name eq '') {
$first_param_name = $fields[$field];
}
if ($typeinfo->{$type}->[2]) {
$need_temp_storage = 1;
}
if ($param_decl eq '') {
$param_decl = ",\n " . $space . ' ';
}
else {
$param_decl = $param_decl . ', ';
}
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
$call_param = $call_param . ', ' . $fields[$field];
}
}
if ($line_fields[3] eq '') {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
} elsif ($line_fields[3] eq 'array') {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
} elsif ($line_fields[3] =~ /^array/) {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
} else {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
}
$func_decl = 'static '.$retval."\n";
if ($line_fields[3] eq '') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
}
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
print $total_code;
}
$call_vector_code = '';
for ($nr = 1; $nr <= $feature_count; $nr++) {
$feature = $features{$nr};
if ($feature =~ /^@/) {
$feature =~ s/^@//;
$call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature);
} else {
$call_vector_code .= sprintf (qq[\tNULL,\n]);
}
}
print 'glibtop_call_vector glibtop_backend_common_call_vector = {';
print $call_vector_code;
print '};';
print '';

View File

@@ -1,7 +1,10 @@
Makefile.in
Makefile
libgtop_daemon
libgtop_server
server.conf
.libs
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c
demarshal.c
libgtop_server
command.h

45
backends/server/ChangeLog Normal file
View File

@@ -0,0 +1,45 @@
2000-01-13 Martin Baulig <martin@home-of-linux.org>
* write.c (glibtop_write_i): The buffer which we write is
now a `const'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything except the server binary
in $(LIBGTOP_BACKEND_DIR).
* libgtop-server.backend: New file.
* backend-server.c (glibtop_backend_server): Renamed to
`LibGTopBackendInfo'.
2000-01-08 Martin Baulig <martin@home-of-linux.org>
* command.h.in (glibtop_response): New structure.
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* command.pl: New file. Creates `command.h' from `command.h.in'.
* command.h.in: New file. Template file for `command.h'.
* io.c, version.c: New files. Copied here from `src/daemon'.
* demarshal.pl: New file. Automatically creates `demarshal.c'.
* demarshal.c: This automatically created file handles the
demarshalling in the libgtop_server.
* Makefile.am: Build the `libgtop_server' here.
* server.c, server.h: New files. Copied here from `src/daemon'.
2000-01-01 Martin Baulig <martin@home-of-linux.org>
Initial version of the "glibtop-backend-server" backend.
* command.c, read.c, read_data.c, write.c: New files. Moved here
from the `lib' directory.
* backend-server.c: New file.
* glibtop-backend-private.h: New file.
* marshal.pl: New file. Automatically creates `marshal.c'.

View File

@@ -0,0 +1,77 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@ -D_BSD \
-DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \
-DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \
-DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\"
backenddir = @LIBGTOP_BACKEND_DIR@
backend_DATA = \
libgtop-server.backend
noinst_HEADERS = \
glibtop-backend-private.h
backend_LTLIBRARIES = \
libgtop_backend_server.la
bin_PROGRAMS = \
@server_programs@
EXTRA_PROGRAMS = \
libgtop_server
libgtop_backend_server_la_SOURCES = \
backend-server.c \
marshal.c \
command.c \
read.c \
read_data.c \
write.c
libgtop_backend_server_la_LDFLAGS = \
$(LT_VERSION_INFO) -export-dynamic
libgtop_server_SOURCES = \
server.c \
server.h \
demarshal.c \
version.c \
io.c
libgtop_server_LDADD = \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
$(top_builddir)/sysdeps/common/libgtop_suid_common.la \
@LIBSUPPORT@
if ENABLE_STATIC
libgtop_server_LDFLAGS = -static
endif
BUILT_SOURCES = \
marshal.c \
demarshal.c \
command.h
EXTRA_DIST = \
marshal.pl \
demarshal.pl \
command.pl \
command.h.in \
libgtop-server.backend
CLEANFILES = $(BUILT_SOURCES)
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
mv tmp-t marshal.c
demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t
mv tmp-t demarshal.c
command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t
mv tmp-t command.h

View File

@@ -0,0 +1,101 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
static int
_open_server (glibtop *, glibtop_backend *, u_int64_t, const char **);
static int
_close_server (glibtop *, glibtop_backend *);
extern glibtop_call_vector glibtop_backend_server_call_vector;
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-server", _open_server, _close_server,
&glibtop_backend_server_call_vector
};
static int
_open_server (glibtop *server, glibtop_backend *backend,
u_int64_t features, const char **backend_args)
{
backend->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_backend_private));
#ifdef DEBUG
fprintf (stderr, "open_server - %p, %p, %p\n", server, backend,
backend->_priv);
fprintf (stderr, "Opening pipe to server (%s).\n",
LIBGTOP_SERVER);
#endif
if (pipe (backend->_priv->input) ||
pipe (backend->_priv->output)) {
glibtop_warn_io_r (server, "cannot make a pipe");
return -1;
}
backend->_priv->pid = fork ();
if (backend->_priv->pid < 0) {
glibtop_warn_io_r (server, "fork failed");
return -1;
} else if (backend->_priv->pid == 0) {
close (0); close (1);
close (backend->_priv->input [0]);
close (backend->_priv->output [1]);
dup2 (backend->_priv->input [1], 1);
dup2 (backend->_priv->output [0], 0);
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
glibtop_error_io_r (server, "execl (%s)",
LIBGTOP_SERVER);
_exit (2);
}
close (backend->_priv->input [1]);
close (backend->_priv->output [0]);
return 0;
}
static int
_close_server (glibtop *server, glibtop_backend *backend)
{
kill (backend->_priv->pid, SIGKILL);
close (backend->_priv->input [0]);
close (backend->_priv->output [1]);
backend->_priv->pid = 0;
return 0;
}

108
backends/server/command.c Normal file
View File

@@ -0,0 +1,108 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <glibtop/xmalloc.h>
#include <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
#include "command.h"
void *
glibtop_call_i (glibtop *server, glibtop_backend *backend, unsigned command,
size_t send_size, const void *send_buf,
size_t data_size, const void *data_buf,
size_t recv_size, void *recv_ptr,
int *retval_ptr)
{
glibtop_command cmnd;
glibtop_response resp;
#if 0
int retval;
#endif
glibtop_init_r (&server, 0, 0);
memset (&cmnd, 0, sizeof (glibtop_command));
memset (&resp, 0, sizeof (glibtop_response));
cmnd.command = command;
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
* send it together with command, so we only need one system call instead
* of two. */
if (send_size <= _GLIBTOP_PARAM_SIZE) {
memcpy (cmnd.parameter, send_buf, send_size);
cmnd.param_size = send_size;
} else {
cmnd.send_size = send_size;
}
cmnd.data_size = data_size;
glibtop_write_i (server, backend, sizeof (glibtop_command), &cmnd);
if (data_size) {
#ifdef SLAVE_DEBUG
fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size);
#endif
glibtop_write_i (server, backend, data_size, data_buf);
}
glibtop_read_i (server, backend, sizeof (glibtop_response), &resp);
#ifdef SLAVE_DEBUG
fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n",
resp.retval, resp.glibtop_errno,
(long) resp.recv_size, (long) resp.data_size,
recv_ptr, (long) recv_size);
#endif
if (retval_ptr)
*retval_ptr = resp.glibtop_errno;
if (resp.recv_size != recv_size) {
glibtop_warn_r (server, "Expected %ld bytes, but got %ld.",
(long) recv_size, (long) resp.recv_size);
return NULL;
}
if (recv_ptr)
glibtop_read_i (server, backend, recv_size, recv_ptr);
if (resp.data_size) {
void *ptr = glibtop_malloc_r (server, resp.data_size);
glibtop_read_i (server, backend, resp.data_size, ptr);
return ptr;
}
return NULL;
}

View File

@@ -0,0 +1,59 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
@@AUTOGEN_COMMENT@@
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_COMMAND_H__
#define __GLIBTOP_COMMAND_H__
#include <glibtop.h>
#include <glibtop/union.h>
BEGIN_LIBGTOP_DECLS
@@GLIBTOP_COMMAND_CONSTANTS@@
#define _GLIBTOP_PARAM_SIZE 16
typedef struct _glibtop_command glibtop_command;
typedef struct _glibtop_response glibtop_response;
struct _glibtop_command
{
u_int64_t command;
u_int64_t param_size, send_size, data_size;
char parameter [_GLIBTOP_PARAM_SIZE];
};
struct _glibtop_response
{
int retval;
int glibtop_errno;
u_int64_t recv_size, data_size;
};
END_LIBGTOP_DECLS
#endif

View File

@@ -0,0 +1,76 @@
#!/usr/bin/perl
require 'c_types.pl';
die "Usage: $0 features.def command.h.in" unless $#ARGV == 1;
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
$constants_decl_code = '';
open FEATURESDEF, $ARGV[1] or
die "open ($ARGV[1]): $!";
while (<FEATURESDEF>) {
chop; # strip record separator
if (/^[^\#]/) {
&parse_features_def ($_);
}
}
close FEATURESDEF;
sub parse_features_def {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$element_def = $line_fields[3];
$feature = $line_fields[2];
$param_def = $line_fields[4];
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$constants_decl_code .= sprintf
(qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature),
++$feature_count);
$features{$feature_count} = $feature;
}
chop $constants_decl_code;
$auto_gen_comment = sprintf
(qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]);
open COMMAND, $ARGV[2] or
die "open ($ARGV[2]): $!";
while (<COMMAND>) {
chop;
s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/;
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
} continue {
print $_;
}
close COMMAND;

View File

@@ -0,0 +1,382 @@
#!/usr/bin/perl
require 'c_types.pl';
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
$always_use_temp_storage = 0;
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
print '/* demarshal.c */';
print "/* This is a generated file. Please modify `demarshal.pl' */";
print '';
print '#include <glibtop.h>';
print '#include <glibtop/open.h>';
print '#include <glibtop/xmalloc.h>';
print '';
print '#include <glibtop/sysdeps.h>';
print '#include <glibtop/union.h>';
print '';
print '#include <glibtop/backend.h>';
print '';
print '#include <glibtop-backend-private.h>';
print '#include "server.h"';
print '';
$feature_count = 0;
while (<>) {
chop; # strip record separator
if (/^[^\#]/) {
&output($_);
}
}
sub output {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$element_def = $line_fields[3];
$feature = $line_fields[2];
$param_def = $line_fields[4];
return if $feature =~ /^@/;
$name = 'glibtop_'.$feature;
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$features{++$feature_count} = $feature;
$orig_retval = $retval;
if ($retval eq 'retval') {
$retval_param = '&retval';
$call_prefix = '';
$call_prefix_space = '';
$prefix = 'retval = ';
$prefix_space = ' ';
$retval = 'int';
} elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
$prefix = 'retval = ';
$prefix_space = ' ';
$call_prefix = 'retval = ';
$call_prefix_space = ' ';
} else {
$retval_param = 'NULL';
$call_prefix = '';
$call_prefix_space = '';
$prefix = '';
$prefix_space = '';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$need_temp_storage = $always_use_temp_storage;
$first_param_name = '';
$size_code = "\t/* send size */\n";
$size_code .= "\t_LIBGTOP_SEND_len = 0;\n";
$local_var_decl_code = '';
$local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n";
$local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n";
$local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n";
$local_var_decl_code .= sprintf
(qq[\tglibtop_%s %s;\n], $feature, $feature);
if ($retval !~ /^void$/) {
$local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n",
$retval, $retval);
}
$init_local_var_code = "\t/* variable initialization */\n";
$init_local_var_code .= sprintf
(qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature);
$init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
$init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) send_ptr;\n";
$demarshal_code = '';
$call_param = '';
$param_decl = '';
$need_temp_len = 0;
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
if ($first_param_name eq '') {
$first_param_name = $fields[$field];
}
if ($typeinfo->{$type}->[2]) {
$need_temp_storage = 1;
}
if ($param_decl eq '') {
$param_decl = ",\n " . $space . ' ';
} else {
$param_decl = $param_decl . ', ';
}
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
$call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field];
$size_code .= "\t_LIBGTOP_SEND_len += ";
if ($typeinfo->{$type}->[2]) {
$size_code .= sprintf ("sizeof (size_t)");
} else {
$size_code .= sprintf ("sizeof (%s)", $c_type);
}
$size_code .= ";\n";
$local_var_decl_code .= sprintf
(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]);
$init_local_var_code .= sprintf
(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n],
$fields[$field], $c_type);
$demarshal_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) send_ptr + _LIBGTOP_SEND_offset;\n";
if ($typeinfo->{$type}->[2]) {
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n");
$demarshal_code .= sprintf
(qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]);
$demarshal_code .= sprintf
(qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]);
$demarshal_code .= sprintf
(qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]);
}
if (defined $demarshal_funcs->{$type}) {
$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t");
} else {
$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n",
$fields[$field], "sizeof ($c_type)");
}
$demarshal_code .= "\t_LIBGTOP_SEND_offset += ";
if ($typeinfo->{$type}->[2]) {
$demarshal_code .= sprintf ("sizeof (size_t)");
} else {
$demarshal_code .= sprintf ("sizeof (%s)", $c_type);
}
$demarshal_code .= ";\n";
}
}
if (!($demarshal_code eq '')) {
$demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n],
$demarshal_code);
}
if ($line_fields[3] eq '') {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server%s);\n",
$feature, $call_param);
} elsif ($line_fields[3] eq 'array') {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server, &array%s);\n",
$feature, $call_param);
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
} elsif ($line_fields[3] =~ /^array/) {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n",
$feature, $feature, $call_param);
$local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]);
} else {
$call_code = sprintf
("\tretval = glibtop_get_%s_p (server, &%s%s);\n",
$feature, $feature, $call_param);
}
if ($orig_retval eq 'retval') {
$call_code .= sprintf
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]);
} else {
$call_code .= sprintf
(qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]);
}
$size_code .= sprintf
(qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]);
$size_code .= "\t/* recv size */\n";
$size_code .= "\t_LIBGTOP_RECV_len = 0;\n";
if ($line_fields[3] eq '') {
} elsif ($line_fields[3] eq 'array') {
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
} elsif ($line_fields[3] =~ /^array/) {
$size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n";
$size_code .= sprintf
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
} else {
$size_code .= sprintf
(qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature);
}
$size_code .= "\n";
$size_code .= "\t/* recv buffer */\n";
if ($line_fields[3] eq '') {
$size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n";
} else {
$size_code .= "\t_LIBGTOP_RECV_buf = glibtop_malloc_r (server, _LIBGTOP_RECV_len);\n";
}
$size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n";
$recv_buf_code = '';
if ($line_fields[3] eq '') {
} elsif ($line_fields[3] eq 'array') {
$recv_buf_code = "\t/* write recv buffer */\n";
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
} elsif ($line_fields[3] =~ /^array/) {
$recv_buf_code = "\t/* write recv buffer */\n";
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]);
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
$feature, $feature);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
} else {
$recv_buf_code = "\t/* write recv buffer */\n";
$recv_buf_code .= sprintf
(qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n],
$feature, $feature);
$recv_buf_code .= sprintf
(qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature);
}
$recv_buf_code .= "\n";
$recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n";
$recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n";
if ($orig_retval eq 'pointer(string)') {
$need_temp_storage = 1;
$local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n";
$local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n";
$local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
$recv_buf_code .= "\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n";
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n";
$recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
$recv_buf_code .= "\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n";
$recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_base = glibtop_malloc_r (server, _LIBGTOP_TEMP_len);";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n";
$recv_buf_code .= "\n";
$recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
$recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n";
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
$recv_buf_code .= "\t}\n\n";
$recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n";
$recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n";
$recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n";
$recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n";
$recv_buf_code .= "\t}\n\n";
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
$recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n";
$recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n";
$recv_buf_code .= "\t}\n";
} elsif ($line_fields[3] =~ /^array/) {
$recv_buf_code .= "\n";
$recv_buf_code .= "\tif (recv_data_ptr) {\n";
$recv_buf_code .= "\t\t*recv_data_ptr = retval;\n";
$recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n";
$recv_buf_code .= "\t}\n";
}
if ($need_temp_storage) {
$local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n";
$local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n";
$local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n";
$local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n";
$init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n";
$init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n";
$init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ".
"(char *) data_ptr;\n";
}
$func_decl_code = sprintf
(qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature);
if (!($call_code eq '')) {
$call_code .= "\n";
}
$func_body_code = sprintf
(qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code);
$total_code = sprintf
(qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n],
$func_decl_code, $local_var_decl_code, $init_local_var_code,
$func_body_code);
print $total_code;
}
$func_decl_code = sprintf
(qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]);
$switch_body_code = '';
for ($nr = 1; $nr <= $feature_count; $nr++) {
$feature = $features{$nr};
$switch_body_code .= sprintf
(qq[\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n],
&toupper ($feature), $feature);
}
$switch_code = sprintf
(qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code);
$total_code = sprintf
(qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code);
print $total_code;
1;

View File

@@ -0,0 +1,55 @@
/* -*- 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

114
backends/server/io.c Normal file
View File

@@ -0,0 +1,114 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "server.h"
void
do_output (int s, glibtop_response *resp, const void *recv_ptr,
const void *data_ptr)
{
#ifdef DEBUG
fprintf (stderr, "Really writing %d bytes.\n",
sizeof (glibtop_response));
#endif
if (s == 0) {
if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0)
glibtop_warn_io ("write");
} else {
if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0)
glibtop_warn_io ("send");
}
if (resp->recv_size) {
#ifdef DEBUG
fprintf (stderr, "Writing %ld bytes of data.\n",
(long) resp->recv_size);
#endif
if (s == 0) {
if (write (1, recv_ptr, resp->recv_size) < 0)
glibtop_warn_io ("write");
} else {
if (send (s, recv_ptr, resp->recv_size, 0) < 0)
glibtop_warn_io ("send");
}
}
if (resp->data_size) {
#ifdef DEBUG
fprintf (stderr, "Writing %ld bytes of extra data.\n",
(long) resp->data_size);
#endif
if (s == 0) {
if (write (1, data_ptr, resp->data_size) < 0)
glibtop_warn_io ("write");
} else {
if (send (s, data_ptr, resp->data_size, 0) < 0)
glibtop_warn_io ("send");
}
}
}
int
do_read (int s, void *ptr, size_t total_size)
{
int nread;
char *tmp_ptr;
size_t already_read = 0, remaining = total_size;
while (already_read < total_size) {
if (s)
nread = recv (s, ptr, remaining, 0);
else
nread = read (0, ptr, remaining);
if ((already_read == 0) && (nread == 0)) {
glibtop_warn ("pid %d received eof.", getpid ());
return 0;
}
if (nread <= 0) {
glibtop_warn_io ("recv");
return 0;
}
already_read += nread;
remaining -= nread;
/* (char *) ptr += nread; */
tmp_ptr = ptr;
tmp_ptr += nread;
ptr = tmp_ptr;
#ifdef DEBUG
fprintf (stderr, "READ (%d): %d - %d - %d\n",
nread, already_read, remaining, total_size);
#endif
}
return already_read;
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?> <!-- -*-xml-*- -->
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
<libgtop:Backend>
<libgtop:Name>glibtop-backend-server</libgtop:Name>
<libgtop:Location>
<libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName>
<libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName>
</libgtop:Location>
</libgtop:Backend>
</libgtop:Backends>

309
backends/server/marshal.pl Normal file
View File

@@ -0,0 +1,309 @@
#!/usr/bin/perl
require 'c_types.pl';
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
$always_use_temp_storage = 1;
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
print '/* marshal.c */';
print "/* This is a generated file. Please modify `marshal.pl' */";
print '';
print '#include <glibtop.h>';
print '#include <glibtop/open.h>';
print '#include <glibtop/xmalloc.h>';
print '';
print '#include <glibtop/sysdeps.h>';
print '#include <glibtop/union.h>';
print '';
print '#include "command.h"';
print '#include <glibtop/backend.h>';
print '';
print '#include <glibtop-backend-private.h>';
print '';
$feature_count = 0;
while (<>) {
chop; # strip record separator
if (/^[^#]/) {
&output($_);
}
}
sub output {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$feature = $line_fields[2];
$param_def = $line_fields[4];
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$features{++$feature_count} = $orig;
return if $orig =~ /^@/;
$orig_retval = $retval;
if ($retval eq 'retval') {
$retval_param = '&retval';
$call_prefix = '';
$call_prefix_space = '';
$prefix = 'retval = ';
$prefix_space = ' ';
$retval = 'int';
}
elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
$prefix = 'retval = ';
$prefix_space = ' ';
$call_prefix = 'retval = ';
$call_prefix_space = ' ';
}
else {
$retval_param = 'NULL';
$call_prefix = '';
$call_prefix_space = '';
$prefix = '';
$prefix_space = '';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$need_temp_storage = $always_use_temp_storage;
$local_var_init_code = "\t/* variable initialization */\n";
$local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n";
$local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n";
$local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n";
$local_var_init_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) _LIBGTOP_SEND_buf;\n";
$marshal_code = "\t/* marshal start */\n";
$marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n";
$first_param_name = '';
$size_code = '';
$call_param = '';
$param_decl = '';
$need_temp_len = 0;
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
if ($first_param_name eq '') {
$first_param_name = $fields[$field];
}
if ($typeinfo->{$type}->[2]) {
$need_temp_storage = 1;
}
if ($param_decl eq '') {
$param_decl = ",\n " . $space . ' ';
}
else {
$param_decl = $param_decl . ', ';
}
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
$call_param = $call_param . ', ' . $fields[$field];
$size_code .= "\t_LIBGTOP_SEND_len += ";
if ($typeinfo->{$type}->[2]) {
$size_code .= sprintf ("sizeof (size_t)");
} else {
$size_code .= sprintf ("sizeof (%s)", $c_type);
}
$size_code .= ";\n";
if (defined $sizeof_funcs->{$type}) {
$size_code .= "\t_LIBGTOP_DATA_len += ";
$size_code .= $sizeof_funcs->{$type}->($fields[$field]);
$size_code .= ";\n";
}
$marshal_code .= "\t_LIBGTOP_SEND_ptr = ".
"(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n";
if (defined $marshal_funcs->{$type}) {
$marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t");
} else {
$marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
'&'.$fields[$field], "sizeof ($c_type)");
}
$marshal_code .= "\t_LIBGTOP_SEND_offset += ";
if ($typeinfo->{$type}->[2]) {
$marshal_code .= sprintf ("sizeof (size_t)");
} else {
$marshal_code .= sprintf ("sizeof (%s)", $c_type);
}
$marshal_code .= ";\n";
}
}
$local_var_code = "";
$local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n";
$local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n";
if ($need_temp_len) {
$local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n";
}
$local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n";
$local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n";
if ($retval !~ /^void$/) {
$local_var_code .= sprintf ("\t%s retval = (%s) 0;\n",
$retval, $retval);
}
$total_code = '';
$send_buf_code = "\t/* send buffer */\n";
$send_buf_code .= "\t_LIBGTOP_SEND_buf = ";
if ($need_temp_storage) {
$send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)";
} else {
$send_buf_code .= '(void *) &'.$first_param_name;
}
$send_buf_code .= ";\n\n";
$send_buf_code .= "\t/* data buffer */\n";
$send_buf_code .= "\t_LIBGTOP_DATA_buf = ";
if ($need_temp_storage) {
$send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)";
} else {
$send_buf_code .= 'NULL';
}
$send_buf_code .= ";\n";
$send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n";
$call_code = '';
$call_code .= sprintf ("\t%sglibtop_call_i (server, backend, GLIBTOP_CMND_%s,\n",
$call_prefix, &toupper($feature));
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
"_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf");
$call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space,
"_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf");
if ($line_fields[3] eq '') {
$call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space);
} elsif ($line_fields[3] eq 'array') {
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n",
$call_prefix_space);
} else {
$call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n",
$call_prefix_space, $feature);
}
$call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param);
if ($need_temp_storage) {
$send_buf_free_code = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n";
$send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n";
} else {
$send_buf_free_code = "";
}
if (!($size_code eq '')) {
$size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code);
}
if ($orig_retval eq 'pointer(string)') {
$call_code .= "\n";
$local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n";
$local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n";
$local_var_code .= "\tint i;\n";
$call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n";
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n";
$call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n";
$call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n";
$call_code .= "\tfor (i = 0; i < array->number; i++)\n";
$call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n";
$call_code .= "\tptrlist [array->number] = NULL;\n\n";
$call_code .= "\tglibtop_free_r (server, retval);\n";
$call_code .= "\tretval = ptrlist;\n";
}
$total_code .= sprintf ("%s%s\n%s\n%s\n%s\n",
$size_code, $send_buf_code, $marshal_code,
$call_code, $send_buf_free_code);
$return_code = '';
if ($retval !~ /^void$/) {
$return_code .= "\treturn retval;\n";
} else {
$return_code .= "\treturn;\n";
}
$total_code .= $return_code;
$func_decl = 'static '.$retval."\n";
if ($line_fields[3] eq '') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
}
$total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl,
$local_var_code, $local_var_init_code,
$total_code);
$total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n",
&toupper($feature), $total_code,
&toupper($feature));
print $total_code;
}
$call_vector_code = '';
for ($nr = 1; $nr <= $feature_count; $nr++) {
$feature = $features{$nr};
$orig = $feature;
$feature =~ s/^@//;
if ($orig =~ /^@/) {
$call_vector_code .= sprintf (qq[\tNULL,\n]);
} else {
$call_vector_code .= sprintf
(qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n],
&toupper($feature), $feature);
}
}
print 'glibtop_call_vector glibtop_backend_server_call_vector = {';
print $call_vector_code;
print '};';
print '';

53
backends/server/read.c Normal file
View File

@@ -0,0 +1,53 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
void
glibtop_read_i (glibtop *server, glibtop_backend *backend,
size_t size, void *buf)
{
int ret = 0;
glibtop_init_r (&server, 0, 0);
#ifdef DEBUG
fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n",
size, backend->_priv->input [0]);
#endif
ret = read (backend->_priv->input [0], buf, size);
#ifdef DEBUG
fprintf (stderr, "LIBRARY: read %d bytes.\n", ret);
#endif
if (ret < 0)
glibtop_error_io_r (server, "read %d bytes", size);
}

View File

@@ -0,0 +1,64 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/xmalloc.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
void *
glibtop_read_data_i (glibtop *server, glibtop_backend *backend)
{
size_t size;
void *ptr;
int ret;
#ifdef DEBUG
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
#endif
ret = read (backend->_priv->input [0], (void *)&size,
sizeof (size_t));
if (ret < 0)
glibtop_error_io_r (server, "read data size");
#ifdef DEBUG
fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret);
#endif
if (!size) return NULL;
ptr = glibtop_malloc_r (server, size);
ret = read (backend->_priv->input [0], ptr, size);
if (ret < 0)
glibtop_error_io_r (server, "read data %d bytes");
return ptr;
}

190
backends/server/server.c Normal file
View File

@@ -0,0 +1,190 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "server.h"
static glibtop _glibtop_global_server;
glibtop *glibtop_global_server = &_glibtop_global_server;
#include <glibtop.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/utsname.h>
const unsigned long glibtop_server_features =
GLIBTOP_SUID_CPU +
GLIBTOP_SUID_MEM +
GLIBTOP_SUID_SWAP +
GLIBTOP_SUID_UPTIME +
GLIBTOP_SUID_LOADAVG +
GLIBTOP_SUID_SHM_LIMITS +
GLIBTOP_SUID_MSG_LIMITS +
GLIBTOP_SUID_SEM_LIMITS +
GLIBTOP_SUID_PROCLIST +
GLIBTOP_SUID_PROC_STATE +
GLIBTOP_SUID_PROC_UID +
GLIBTOP_SUID_PROC_MEM +
GLIBTOP_SUID_PROC_TIME +
GLIBTOP_SUID_PROC_SIGNAL +
GLIBTOP_SUID_PROC_KERNEL +
GLIBTOP_SUID_PROC_SEGMENT +
GLIBTOP_SUID_PROC_ARGS +
GLIBTOP_SUID_PROC_MAP +
GLIBTOP_SUID_NETINFO +
GLIBTOP_SUID_NETLOAD +
GLIBTOP_SUID_INTERFACE_NAMES +
GLIBTOP_SUID_PPP;
#include <fcntl.h>
#include <locale.h>
int
main(int argc, char *argv[])
{
struct utsname uts;
int uid, euid, gid, egid;
glibtop *server;
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
uid = getuid (); euid = geteuid ();
gid = getgid (); egid = getegid ();
if (uname (&uts) < 0) _exit (1);
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
fprintf (stderr, "Can only run on %s %s %s\n",
LIBGTOP_COMPILE_SYSTEM,
LIBGTOP_COMPILE_RELEASE,
LIBGTOP_COMPILE_MACHINE);
_exit (1);
}
server = glibtop_global_server;
if (!server->_priv)
server->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_server_private));
glibtop_init_p (server, 0, 0);
if (setreuid (euid, uid)) _exit (1);
if (setregid (egid, gid)) _exit (1);
/* !!! END OF SUID ROOT PART !!! */
handle_slave_connection (0, 0);
_exit (0);
}
void
handle_slave_connection (int input, int output)
{
glibtop_command _cmnd, *cmnd = &_cmnd;
glibtop *server = glibtop_global_server;
// glibtop_send_version_i (glibtop_global_server, output);
while (do_read (input, cmnd, sizeof (glibtop_command))) {
size_t recv_size = 0, send_size = 0, recv_data_size = 0;
void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL;
char parameter [BUFSIZ];
int retval, func_retval;
glibtop_response resp;
#ifdef DEBUG
fprintf (stderr, "Slave %d received command "
"%ld from client.\n", getpid (), (long) cmnd->command);
#endif
if (cmnd->send_size >= BUFSIZ)
glibtop_error ("Client sent %d bytes, but buffer is %d",
cmnd->send_size, BUFSIZ);
else if (cmnd->param_size >= BUFSIZ)
glibtop_error ("Client sent %d bytes, but buffer is %d",
cmnd->param_size, BUFSIZ);
memset (parameter, 0, sizeof (parameter));
if (cmnd->send_size) {
#ifdef DEBUG
fprintf (stderr, "Client has %d bytes of data.\n",
cmnd->send_size);
#endif
send_size = cmnd->send_size;
do_read (input, parameter, send_size);
} else if (cmnd->param_size) {
#ifdef DEBUG
fprintf (stderr, "Client has %d bytes of parameter data.\n",
cmnd->param_size);
#endif
send_size = cmnd->param_size;
memcpy (parameter, cmnd->parameter, send_size);
}
if (cmnd->data_size) {
#ifdef DEBUG
fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n",
cmnd->data_size);
#endif
data_ptr = glibtop_malloc_r (server, cmnd->data_size);
do_read (input, data_ptr, cmnd->data_size);
}
retval = glibtop_demarshal_func_i (server, NULL,
cmnd->command,
parameter, send_size,
data_ptr, cmnd->data_size,
&recv_ptr, &recv_size,
&recv_data_ptr, &recv_data_size,
&func_retval);
#ifdef DEBUG
fprintf (stderr, "Retval %d / %d - %p - %d\n",
retval, func_retval, recv_ptr, recv_size);
if (recv_data_size) {
fprintf (stderr, "Returning %d bytes of data from %p.\n",
recv_data_size, recv_data_ptr);
}
#endif
memset (&resp, 0, sizeof (glibtop_response));
resp.retval = retval;
resp.glibtop_errno = func_retval;
resp.recv_size = recv_size;
resp.data_size = recv_data_size;
do_output (output, &resp, recv_ptr, recv_data_ptr);
}
}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -31,8 +33,6 @@
#include <glibtop/open.h>
#include <glibtop/union.h>
#include <glibtop/xmalloc.h>
#include <glibtop/version.h>
#include <glibtop/command.h>
#include <glibtop/parameter.h>
#include <fcntl.h>
@@ -40,6 +40,11 @@
#include <sys/socket.h>
#include <syslog.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
#include "command.h"
BEGIN_LIBGTOP_DECLS
/* Some don't have LOG_PERROR */
@@ -47,6 +52,8 @@ BEGIN_LIBGTOP_DECLS
#define LOG_PERROR 0
#endif
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
#if defined(HAVE_GETDTABLESIZE)
#define GET_MAX_FDS() getdtablesize()
#else
@@ -55,23 +62,21 @@ BEGIN_LIBGTOP_DECLS
#define GET_MAX_FDS() 256
#endif
#define _offset_union(p) ((char *) &resp->u.p - (char *) resp)
#define _offset_data(p) _offset_union (data.p)
void
do_output (int s, glibtop_response *resp, const void *recv_ptr,
const void *data_ptr);
#define MSG_BUFSZ sizeof (struct _glibtop_ipc_message)
#define MSG_MSGSZ (MSG_BUFSZ - sizeof (long))
int
do_read (int s, void *ptr, size_t total_size);
void handle_parent_connection (int s);
void handle_slave_connection (int input, int output);
void handle_slave_command (glibtop_command *cmnd, glibtop_response *resp,
const void *parameter);
void
handle_slave_connection (int input, int output);
void do_output (int s, glibtop_response *resp, off_t offset,
size_t data_size, const void *data);
int do_read (int s, void *ptr, size_t total_size);
int
glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr);
void syslog_message (int priority, char *format, ...);
void syslog_io_message (int priority, char *format, ...);
void
glibtop_send_version_i (glibtop *server, int fd);
extern int enable_debug;
extern int verbose_output;

62
backends/server/version.c Normal file
View File

@@ -0,0 +1,62 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "server.h"
void
glibtop_send_version_i (glibtop *server, int fd)
{
char buffer [BUFSIZ];
size_t size;
sprintf (buffer, LIBGTOP_VERSION_STRING,
LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
sizeof (glibtop_command),
sizeof (glibtop_response),
sizeof (glibtop_union),
sizeof (glibtop_sysdeps));
size = strlen (buffer) + 1;
#ifdef DEBUG
fprintf (stderr, "SERVER ID: |%s|\n", buffer);
#endif
if (fd == 0) {
if (write (1, (const void *) &size, sizeof (size)) < 0)
glibtop_warn_io_r (server, "write");
} else {
if (send (fd, (const void *) &size, sizeof (size), 0) < 0)
glibtop_warn_io_r (server, "send");
}
if (fd == 0) {
if (write (1, (const void *) buffer, size) < 0)
glibtop_warn_io_r (server, "write");
} else {
if (send (fd, (const void *) buffer, size, 0) < 0)
glibtop_warn_io_r (server, "send");
}
}

48
backends/server/write.c Normal file
View File

@@ -0,0 +1,48 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
void
glibtop_write_i (glibtop *server, glibtop_backend *backend,
size_t size, const void *buf)
{
int ret;
if (size == 0) return;
#ifdef DEBUG
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
#endif
ret = write (backend->_priv->output [1], buf, size);
if (ret < 0)
glibtop_error_io_r (server, "write %d bytes", size);
}

View File

@@ -0,0 +1,7 @@
.deps
.libs
Makefile
Makefile.in
*.lo
*.la
marshal.c

View File

@@ -0,0 +1,28 @@
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR).
* libgtop-sysdeps.backend: New file.
* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to
`LibGTopBackendInfo'.
2000-01-12 Martin Baulig <martin@home-of-linux.org>
* marshal.pl: Create the `_glibtop_init_hook_s' as well.
* marshal.pl: Don't create code for things which are now
in the new `glibtop-backend-common' backend.
2000-01-02 Martin Baulig <martin@home-of-linux.org>
* marshal.pl: New file. Automatically creates `marshal.c'.
* call-vector.c: Removed.
2000-01-01 Martin Baulig <martin@home-of-linux.org>
Initial version of the "glibtop-backend-sysdeps" backend.
* backend-sysdeps.c: New file.
* glibtop-backend-private.h: New file.

View File

@@ -0,0 +1,35 @@
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@
backenddir = @LIBGTOP_BACKEND_DIR@
backend_DATA = \
libgtop-sysdeps.backend
noinst_HEADERS = \
glibtop-backend-private.h
backend_LTLIBRARIES = \
libgtop_backend_sysdeps.la
libgtop_backend_sysdeps_la_SOURCES = \
backend-sysdeps.c \
marshal.c
libgtop_backend_sysdeps_la_LDFLAGS = \
$(LT_VERSION_INFO) -export-dynamic
BUILT_SOURCES = \
marshal.c
EXTRA_DIST = \
marshal.pl \
libgtop-sysdeps.backend
CLEANFILES = $(BUILT_SOURCES)
marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t
mv tmp-t marshal.c

View File

@@ -0,0 +1,77 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glibtop/open.h>
#include <glibtop/backend.h>
#include <glibtop-backend-private.h>
static int
_open_sysdeps (glibtop *, glibtop_backend *, u_int64_t, const char **);
static int
_close_sysdeps (glibtop *, glibtop_backend *);
extern glibtop_call_vector glibtop_backend_sysdeps_call_vector;
glibtop_backend_info LibGTopBackendInfo = {
"glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps,
&glibtop_backend_sysdeps_call_vector
};
static int
_open_sysdeps (glibtop *server, glibtop_backend *backend,
u_int64_t features, const char **backend_args)
{
glibtop_init_func_t *init_fkt;
backend->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_backend_private));
/* Do the initialization, but only if not already initialized. */
if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) {
glibtop_open_s (server, "glibtop", features, 0);
for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++)
(*init_fkt) (server);
server->sysdeps.pointer_size = sizeof (void*)*8;
server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS;
}
return 0;
}
static int
_close_sysdeps (glibtop *server, glibtop_backend *backend)
{
return -1;
}

View File

@@ -1,5 +1,7 @@
/* -*- 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.
@@ -21,24 +23,12 @@
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_VERSION_H__
#define __GLIBTOP_VERSION_H__
#ifndef __GLIBTOP_BACKEND_PRIVATE_H__
#define __GLIBTOP_BACKEND_PRIVATE_H__
#include <glibtop.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <glibtop/command.h>
#define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)."
BEGIN_LIBGTOP_DECLS
#if _IN_LIBGTOP
void glibtop_send_version (glibtop *server, int fd);
#endif
END_LIBGTOP_DECLS
struct _glibtop_backend_private
{
u_int64_t flags;
};
#endif

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?> <!-- -*-xml-*- -->
<libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1">
<libgtop:Backend>
<libgtop:Name>glibtop-backend-sysdeps</libgtop:Name>
<libgtop:Location>
<libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName>
<libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName>
</libgtop:Location>
</libgtop:Backend>
</libgtop:Backends>

199
backends/sysdeps/marshal.pl Normal file
View File

@@ -0,0 +1,199 @@
#!/usr/bin/perl
require 'c_types.pl';
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
$always_use_temp_storage = 1;
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
print '/* marshal.c */';
print "/* This is a generated file. Please modify `marshal.pl' */";
print '';
print '#include <glibtop.h>';
print '#include <glibtop/open.h>';
print '#include <glibtop/xmalloc.h>';
print '';
print '#include <glibtop/sysdeps.h>';
print '#include <glibtop/union.h>';
print '';
print '#include <glibtop/backend.h>';
print '';
print '#include <glibtop-backend-private.h>';
print '';
$feature_count = 0;
while (<>) {
chop; # strip record separator
if (/^[^#]/) {
&output($_);
}
}
sub output {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$feature = $line_fields[2];
$param_def = $line_fields[4];
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
$features{++$feature_count} = $orig;
return if $orig =~ /^@/;
if ($retval eq 'retval') {
$retval_param = '&retval';
$call_prefix = '';
$call_prefix_space = '';
$prefix = 'retval = ';
$prefix_space = ' ';
$retval = 'int';
}
elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
$prefix = 'retval = ';
$prefix_space = ' ';
$call_prefix = 'retval = ';
$call_prefix_space = ' ';
}
else {
$retval_param = 'NULL';
$call_prefix = '';
$call_prefix_space = '';
$prefix = '';
$prefix_space = '';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$need_temp_storage = $always_use_temp_storage;
$first_param_name = '';
$call_param = '';
$param_decl = '';
$need_temp_len = 0;
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
if ($first_param_name eq '') {
$first_param_name = $fields[$field];
}
if ($typeinfo->{$type}->[2]) {
$need_temp_storage = 1;
}
if ($param_decl eq '') {
$param_decl = ",\n " . $space . ' ';
}
else {
$param_decl = $param_decl . ', ';
}
$param_decl = $param_decl . $c_type . ' ' . $fields[$field];
$call_param = $call_param . ', ' . $fields[$field];
}
}
if ($line_fields[3] eq '') {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param);
} elsif ($line_fields[3] eq 'array') {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param);
} elsif ($line_fields[3] =~ /^array/) {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param);
} else {
$total_code = sprintf
("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param);
}
$func_decl = 'static '.$retval."\n";
if ($line_fields[3] eq '') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array%s)\n",
$feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, glibtop_array *array, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl .= sprintf ("_glibtop_get_%s_c (glibtop *server, glibtop_backend *backend, %s *buf%s)\n",
$feature, 'glibtop_'.$feature, $param_decl);
}
$total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code);
$total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n",
&toupper($feature), $total_code,
&toupper($feature));
print $total_code;
}
$init_hook_code = '';
$call_vector_code = '';
for ($nr = 1; $nr <= $feature_count; $nr++) {
$feature = $features{$nr};
if ($feature =~ /^@/) {
$call_vector_code .= sprintf (qq[\tNULL,\n]);
} else {
$call_vector_code .= sprintf
(qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n],
&toupper($feature), $feature);
}
if (!($feature =~ /^@/)) {
$init_hook_code .= sprintf
(qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n],
&toupper($feature), $feature);
}
}
$init_hook_code .= sprintf (qq[\tNULL\n]);
chop $init_hook_code;
chop $call_vector_code;
print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {';
print $call_vector_code;
print '};';
print '';
print 'glibtop_init_func_t _glibtop_init_hook_s [] = {';
print $init_hook_code;
print '};';
print '';

View File

@@ -1,5 +1,5 @@
dnl
dnl Configure script for the Gnome library
dnl Configure script for LibGTop
dnl
AC_INIT(copyright.txt)
@@ -113,20 +113,23 @@ AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
GNOME_LIBGTOP_SYSDEPS
GNOME_LIBGTOP_TYPES
AC_ARG_WITH(libgtop-guile,
[ --with-libgtop-guile Build the libgtop guile interface (default=no)],
[build_guile="$withval"], [build_guile=yes])
sysdeps_dir="$libgtop_sysdeps_dir"
sysdeps_name="$libgtop_sysdeps_name"
AC_SUBST(sysdeps_dir)
AC_SUBST(sysdeps_name)
if test x$build_guile != xno ; then
GNOME_CHECK_GUILE
fi
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
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
@@ -139,45 +142,13 @@ 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))
AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop),
[gmodule])
dnl You need to uncomment the following line if you want to use
dnl libGTop without Gnome.
@@ -276,7 +247,7 @@ AC_FUNC_STRFTIME
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
dnl ## all 'es_??' are only needed for format numbers different of 'es'
ALL_LINGUAS="da de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fi fr ja ko nl no pl pt_BR sv"
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
AC_PATH_XTRA
@@ -296,26 +267,29 @@ for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
$1="$T"
])dnl
dnl Autodetect Xauth
dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h, ,with_xauth=no) }
test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no, $X_LIBS) }
test -z "$with_xauth" && with_xauth=yes
if test "$with_xauth" = "yes"; then
AC_DEFINE(HAVE_XAUTH)
XE_SPACE(libs_xauth, $X_LIBS -lXau)
fi
CPPFLAGS="$saved_CPPFLAGS"
AC_SUBST(libs_xauth)
dnl For diskusage stuff
GNOME_FILEUTILS_CHECKS
dnl Debugging
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],AC_DEFINE(LIBGTOP_ENABLE_DEBUG),)
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]], libgtop_enable_debug=yes, libgtop_enable_debug=no)
AC_ARG_ENABLE(fatal-warnings, [ --enable-fatal-warnings make all warnings fatal [debug=no]],AC_DEFINE(LIBGTOP_FATAL_WARNINGS),)
AC_ARG_ENABLE(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"
@@ -357,73 +331,37 @@ 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'
sysdeps_dir="$libgtop_sysdeps_dir"
AC_SUBST(sysdeps_dir)
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS $LIBGTOP_XML_LIB"
if test x$ac_cv_guile_found = xyes ; then
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile"
libgtop_guile_found=yes
else
libgtop_guile_found=no
fi
AC_SUBST(libgtop_guile_found)
if test -z "$LIBGTOP_EXTRA_LIBS" ; then
LIBGTOP_EXTRA_LIBS="$libs_xauth"
else
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $libs_xauth"
fi
LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS"
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop -lgtop_sysdeps -lgtop_common"
LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop_sysdeps -lgtop_common -lgtop"
LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names"
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names"
LIBGTOP_LIBS="$LIBGTOP_LIBS"
LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS"
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS"
LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_NAMES_LIBS"
LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS $GUILE_LIBS"
LIBGTOP_GUILE_INCS="$LIBGTOP_GUILE_INCS $GUILE_INCS -DGLIBTOP_GUILE"
LIBGTOP_NAMES_INCS="$LIBGTOP_INCS -DGLIBTOP_NAMES"
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_GUILE_NAMES"
LIBGTOP_GUILE_NAMES_INCS="$LIBGTOP_GUILE_INCS -DGLIBTOP_NAMES"
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
AC_SUBST(machine_incs)
if test x$libgtop_guile_found = xyes ; then
guile_def="-DGLIBTOP_GUILE -DGLIBTOP_GUILE_NAMES $GUILE_INCS "
else
guile_def=""
fi
LIBGTOP_BACKEND_DIR="\$(datadir)/libgtop/backends"
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"'
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_builddir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\" -DLIBGTOP_BACKEND_DIR=\"'"$LIBGTOP_BACKEND_DIR"'\"'
AC_SUBST(INCLUDES)
AC_SUBST(LIBGTOP_EXTRA_LIBS)
AC_SUBST(LIBGTOP_BACKEND_DIR)
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)
@@ -581,8 +519,6 @@ 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
@@ -592,10 +528,13 @@ sysdeps/kernel/Makefile
sysdeps/freebsd/Makefile
sysdeps/solaris/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])

9
debian/.cvsignore vendored Normal file
View File

@@ -0,0 +1,9 @@
control
rules
build
tmp
*.postinst
*.debhelper
*.files
files
substvars

10
debian/README.Debian vendored Normal file
View File

@@ -0,0 +1,10 @@
LibGTop CVS snapshots for Debian
--------------------------------
This is a snapshot of LibGTop from the main CVS archive, built into a
Debian package. This package is not guaranteed to work, as it was
built automatically. You're on your own, mister or missus!
Martin Baulig <martin@home-of-linux.org>, Fri, 14 Jan 2000 20:20:13 +0100

120
debian/changelog vendored Normal file
View File

@@ -0,0 +1,120 @@
libgtop (1.1.4-1) unstable; urgency=low
* New upstream source
* Non-maintainer upload; this is an unstable developer's snapshot from
the GNOME CVS tree.
-- Martin Baulig <martin@home-of-linux.org> Fri, 14 Jan 2000 15:32:48 +0100
libgtop (1.0.6-1) unstable; urgency=low
* New upstream source
-- Ian Lynagh (wibble) <igloo@debian.org> Wed, 20 Oct 1999 16:16:27 +0100
libgtop (1.0.4.5pre1-1) frozen unstable; urgency=low
* New upstream source (1.0.5 pre release)
* Maintainer e-mail address changed to igloo@debian.org
-- Ian Lynagh (wibble) <igloo@debian.org> Thu, 30 Sep 1999 22:37:33 +0100
libgtop (1.0.4-1) frozen unstable; urgency=low
* New upstream source
* Removed nasty sed stuff from the rules in favour of make install prefix=...
* Added .la files to libgtop-dev
* Added info to the copyright file
* Wrote simple man page for libgtop-config.
* Recompiled with later debhelper so docs go to /usr/share/doc as per FHS
* changed infodir to /usr/share/info
-- Ian Lynagh (wibble) <igloo@debian.org> Mon, 20 Sep 1999 00:06:16 +0100
libgtop (1.0.1-2) frozen unstable; urgency=low
* Didn't actually use wildcards in libgtop-dev.files because tar complained
* Set section names properly
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 7 Mar 1999 00:53:50 +0000
libgtop (1.0.1-1) frozen unstable; urgency=low
* SONAME changed back to 1. Fun fun fun.
* Added RELNOTES-1.0 to debian/libgtop1.docs and debian/rules
* Changed libgtop1.README.Debian to at least make sense
* Used wildcards in libgtop-dev.files
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 7 Mar 1999 00:53:50 +0000
libgtop (1.0.1-0.1) unstable; urgency=low
* Non-maintainer upload for GNOME 1.0
-- Jules Bean <jules@debian.org> Thu, 4 Mar 1999 22:34:12 +0000
libgtop (0.99.2-0.2) unstable; urgency=low
* Oops, forgot some files.
-- Jim Pick <jim@jimpick.com> Sun, 24 Jan 1999 02:12:24 -0800
libgtop (0.99.2-0.1) unstable; urgency=low
* Non-maintainer upload.
* New upstream source.
* SONAME is now 0 again. Hmmm.
-- Jim Pick <jim@jimpick.com> Sat, 23 Jan 1999 20:21:38 -0800
libgtop (0.26.2-4) frozen unstable; urgency=low
* Upstream changelog installed as changelog
* debian/shlibs.local removed in favour of the LD_LIBRARY_PATH line
-- Ian Lynagh <ian@lynagh.demon.co.uk> Thu, 26 Nov 1998 17:20:24 +0000
libgtop (0.26.2-3.1) frozen unstable; urgency=low
* Non-maintainer upload.
* Upload to frozen, corrects Bug #29110, Bug #29111, which were
already fixed.
* Noticed that guile option is no longer being used, so I removed
the dependency.
* Added changelog (to fix lintian error).
* Changed control file to use macro substitutions. This is a much
less error-prone way of building dependencies than doing them by
hand.
* Added -V option to dh_makeshlibs to put version number on shlibs
file.
* Added shlibs.local file with null entry for "libgtop 1" (and
others) so libgtop1 doesn't declare a relationship on itself.
-- Jim Pick <jim@jimpick.com> Wed, 25 Nov 1998 12:03:12 -0800
libgtop (0.26.2-3) frozen unstable; urgency=low
* libgtop0 changed to libgtop1
* Added an #ifndef strstr around the prototype of strstr in
sysdeps/common/mountlist.c as this is a macro under glibc 2.1.
-- Ian Lynagh <ian@lynagh.demon.co.uk> Sun, 8 Nov 1998 12:06:09 +0000
libgtop (0.26.2-2) frozen unstable; urgency=low
* Fixes minor bugs in debian/rules
-- Ian Lynagh <ian@lynagh.demon.co.uk> Fri, 16 Oct 1998 05:30:16 +0200
libgtop (0.26.2-1) unstable; urgency=low
* New upstream version
* Non-maintainer release
-- Martin Schulze <joey@finlandia.infodrom.north.de> Fri, 16 Oct 1998 05:30:16 +0200
libgtop (0.26.0-1) unstable; urgency=low
* Initial Release.
-- Jim Pick <jim@jimpick.com> Thu, 24 Sep 1998 18:42:48 -0700
Local variables:
mode: debian-changelog
End:

33
debian/control.in vendored Normal file
View File

@@ -0,0 +1,33 @@
Source: libgtop@SUFFIX@
Maintainer: Martin Baulig <martin@home-of-linux.org>
Section: libs
Priority: optional
Standards-Version: 3.0.0
Package: libgtop2@SUFFIX@
Architecture: any
Section: libs
Depends: ${shlibs:Depends}
Description: Portable system access library (part of Gnome)
Gnome is the "GNU Network Object Model Environment"
.
It is a project to build a complete, user-friendly desktop based
entirely on free software.
.
This package contains the gtop libraries which read information about
processes and the running systems.
Package: libgtop-dev@SUFFIX@
Architecture: any
Section: devel
Depends: libgtop2@SUFFIX@ (= ${Source-Version})
Description: Dev libraries for the portable system access library (part of Gnome)
Gnome is the "GNU Network Object Model Environment"
.
It is a project to build a complete, user-friendly desktop based
entirely on free software.
.
This package contains the include files and static library for the
gtop libraries which read information about processes and the running
systems.

109
debian/debconfigure vendored Executable file
View File

@@ -0,0 +1,109 @@
#! /bin/sh
#
# debconfigure
#
# A script to generate a debian/rules file, with options.
#
# By Jim Pick <jim@jimpick.com>, GPL'd of course.
# Adjusted for LibGTop by Martin Baulig <martin@home-of-linux.org>
#
if [ ! -r rules.in ]; then
echo "Please run the debconfigure script in the debian directory" 1>&2
exit 1
fi
debtype='official'
prefix='/usr'
gnomeprefix='/usr'
localstatedir='/var/lib'
pkgsuffix=''
for dc_option
do
case "$dc_option" in
-*=*) dc_optarg=`echo "$dc_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) dc_optarg= ;;
esac
case "$dc_option" in
--clean)
rm -f control rules *~ core *files *menu *substvars *.postinst *.debhelper
exit ;;
--prefix=*)
prefix="$dc_optarg" ;;
--localstatedir=*)
prefix="$dc_optarg" ;;
--pkgsuffix=*)
pkgsuffix="$dc_optarg" ;;
--gnome-prefix=*)
gnomeprefix="$dc_optarg" ;;
--debtype=*)
debtype="$dc_optarg" ;;
*)
cat <<EOF 1>&2
Usage: debconfigure [options]
Options: [defaults in brackets after descriptions]
--help print this message
--clean remove generated files
--prefix=PREFIX install files under under PREFIX dir [/usr]
--gnome-prefix=PREFIX look for GNOME under PREFIX dir [/usr]
--localstatedir=DIR directory for things like game scores [/var/lib]
--pkgsuffix=SUFFIX append SUFFIX onto package names []
--debtype=DEBTYPE enable macros with the name of DEBTYPE [official]
EOF
exit ;;
esac
done
# Strip leading slash
prefix=`expr $prefix : '/\(.*\)'`
gnomeprefix=`expr $gnomeprefix : '/\(.*\)'`
localstatedir=`expr $localstatedir : '/\(.*\)'`
for infile in `ls control.in rules.in`
do
tofile=`expr $infile : '\(.*\)\.in'`
cat $infile | \
sed "s,@SUFFIX@,$pkgsuffix,g" | \
sed "s,@PREFIX@,$prefix,g" | \
sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \
sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
done
chmod +x rules
for filesfile in `ls *.files.in`
do
tofile=`expr $filesfile : '\(.*\)\.files\.in'`
tofile=`echo $tofile$pkgsuffix.files`
cat $filesfile | \
sed "s,@SUFFIX@,$pkgsuffix,g" | \
sed "s,@PREFIX@,$prefix,g" | \
sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \
sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \
sed "s,%$debtype>,," | sed '/^%/d' > $tofile
done
for postinst in libgtop2$pkgsuffix
do
cat > $postinst.postinst <<EOF
#! /bin/sh
set -e
ldconfig
#DEBHELPER#
EOF
done

34
debian/libgtop-config.1 vendored Normal file
View File

@@ -0,0 +1,34 @@
.TH GTOP l "15 September 1999"
.SH NAME
\fBlibgtop-config\fP \- libgtop libraries and component information retrieval.
.SH SYNTAX
.B libgtop-config
.RI [ --version ]
.RI [ --config ]
.RI [ --features-def-file ]
.SH DESCRIPTION
.B libgtop-config
is used to retrieve information from installed libraries in the system.
This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page.
.LP
.SH OPTIONS
.TP
.B \-\-version
.PD
Prints the version of libgtop that you're using.
.TP
.B \-\-config
.PD
Prints the location of libgtopConf.sh.
.TP
.B \-\-version
.PD
Prints the location of libgtop-features.def.
.SH BUGS
None known
.SH AUTHORS
Martin Baulig (martin@home-of-linux.org)
.TP
Josh Sled (jsled@scam.XCF.Berkeley.EDU)

25
debian/libgtop-dev.files.in vendored Normal file
View File

@@ -0,0 +1,25 @@
@PREFIX@/lib/libgtop.a
@PREFIX@/lib/libgtop_common.a
@PREFIX@/lib/libgtop_names.a
@PREFIX@/lib/libgtop_suid_common.a
@PREFIX@/lib/libgtop_sysdeps.a
@PREFIX@/lib/libgtop.la
@PREFIX@/lib/libgtop_common.la
@PREFIX@/lib/libgtop_names.la
@PREFIX@/lib/libgtop_suid_common.la
@PREFIX@/lib/libgtop_sysdeps.la
@PREFIX@/lib/libgtopConf.sh
@PREFIX@/lib/libgtop.so
@PREFIX@/lib/libgtop_common.so
@PREFIX@/lib/libgtop_names.so
@PREFIX@/lib/libgtop_suid_common.so
@PREFIX@/lib/libgtop_sysdeps.so
@PREFIX@/lib/libgtop-features.def
@PREFIX@/lib/libgtop-structures.def
@PREFIX@/lib/libgtop/include/*.h
@PREFIX@/include/glibtop/*.h
@PREFIX@/include/glibtop.h
@PREFIX@/include/glibtop_server.h
@PREFIX@/include/glibtop_machine.h
@PREFIX@/info/libgtop.info
@PREFIX@/bin/libgtop-config

5
debian/libgtop2.README.Debian vendored Normal file
View File

@@ -0,0 +1,5 @@
The Debian package of libgtop, a GNOME library.
--
Ian Lynagh <ian@lynagh.demon.co.uk>

12
debian/libgtop2.copyright vendored Normal file
View File

@@ -0,0 +1,12 @@
libgtop is released under the GPL.
On Debian GNU/Linux systems, the complete text of the GNU General
Public License can be found in /usr/share/common-licenses/GPL
Original authors: Martin Baulig <martin@home-of-linux.org>
Drazen Kacar <dave@srce.hr>
Originally Debianised by Jim Pick <jim@jimpick.com>
Then re-Debianised in October 1998 by Martin Schulze
<joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh
<ian@lynagh.demon.co.uk> in November 1998.

7
debian/libgtop2.docs vendored Normal file
View File

@@ -0,0 +1,7 @@
RELNOTES-0.25
RELNOTES-1.0
RELNOTES-1.1.x
NEWS
AUTHORS
TODO
debian/changelog

2
debian/libgtop2.files.in vendored Normal file
View File

@@ -0,0 +1,2 @@
@PREFIX@/lib/libgtop*-1.1.so.*.*
@PREFIX@/lib/libgtop*-1.1.so.*

115
debian/rules.in vendored Executable file
View File

@@ -0,0 +1,115 @@
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
# This version is for a hypothetical package that builds an
# architecture-dependant package, as well as an architecture-independent
# package.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
i=$(shell pwd)/debian/tmp
b=$(shell pwd)/debian/build
configure: configure.in
@echo "--- Making configure script and configuring"
chmod +x autogen.sh
./autogen.sh --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
--localstatedir=/@LOCALSTATEDIR@
Makefile: configure
@echo "--- Configuring"
./configure --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
--localstatedir=/@LOCALSTATEDIR@
build: configure Makefile build-debstamp
build-debstamp:
@echo "--- Compiling"
dh_testdir
$(MAKE) all
touch build-debstamp
clean: Makefile
@echo "--- Cleaning"
dh_testdir
dh_clean
-rm -rf static shared
-rm -f build-debstamp install-debstamp
-make -k distclean
-rm -f `find . -name "*~"`
-rm -f `find . -name "*\.la"`
-rm -rf `find . -name "\.deps"`
-rm -rf `find . -name "\.libs"`
-rm -rf `find . -name "*\.rej"`
-rm -rf debian/tmp `find debian/* -type d ! -name CVS` debian/files* core
-rm -f debian/*substvars
install: build install-debstamp
install-debstamp:
@echo "--- Installing"
dh_testdir
dh_testroot
rm -rf $(b)
$(MAKE) install prefix=$(i)/@PREFIX@ exec_prefix=$(i)/@PREFIX@ \
localstatedir=$(i)/@LOCALSTATEDIR@
touch install-debstamp
install-save: install
rm -rf $(i).saved
cp -a $(i) $(i).saved
install-saved:
rm -rf $(i)
cp -a $(i).saved $(i)
rm -rf $(b)
touch install-debstamp
binary-indep: build install
binary-arch: build install \
libgtop2@SUFFIX@ \
libgtop-dev@SUFFIX@
#
# libgtop2@SUFFIX@
#
libgtop2@SUFFIX@: install
@echo "--- Building: $@"
dh_installdocs -p$@ -P$(b)/$@ README NEWS AUTHORS
dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog
dh_movefiles -p$@ -P$(b)/$@
dh_strip -p$@ -P$(b)/$@
dh_compress -p$@ -P$(b)/$@
dh_fixperms -p$@ -P$(b)/$@
dh_installdeb -p$@ -P$(b)/$@
dh_shlibdeps -p$@ -P$(b)/$@
dh_gencontrol -p$@ -P$(b)/$@
dh_makeshlibs -p$@ -P$(b)/$@ -V
dh_md5sums -p$@ -P$(b)/$@
dh_builddeb -p$@ -P$(b)/$@
#
# libgtop-dev
#
libgtop-dev@SUFFIX@: install
@echo "--- Building: $@"
mkdir -p $(b)/$@/usr/doc
cd $(b)/$@/usr/doc; ln -s libgtop2@SUFFIX@ $@
dh_movefiles -p$@ -P$(b)/$@
dh_strip -p$@ -P$(b)/$@
dh_compress -p$@ -P$(b)/$@
dh_fixperms -p$@ -P$(b)/$@
dh_installdeb -p$@ -P$(b)/$@
dh_shlibdeps -p$@ -P$(b)/$@
dh_gencontrol -p$@ -P$(b)/$@
dh_makeshlibs -p$@ -P$(b)/$@ -V
dh_undocumented -p$@ -P$(b)/$@ \
libgtop-config.1
dh_md5sums -p$@ -P$(b)/$@
dh_builddeb -p$@ -P$(b)/$@
binary: binary-indep binary-arch
.PHONY: binary clean binary-indep binary-arch build install install-save install-saved

View File

@@ -1,16 +0,0 @@
.deps
.libs
Makefile
Makefile.in
first
first_linux
first_static
second
third
third_linux
third_static
second_static
second_linux
smp_static sysdeps_static netload_static procmap_static mountlist_static
smp sysdeps netload procmap mountlist
timings timings_static

View File

@@ -1,92 +0,0 @@
1999-05-28 Martin Baulig <martin@home-of-linux.org>
* first.c, second.c, sysdeps.c: Use LibGTop version conditionals
so we can more easily merge the code into LIBGTOP_STABLE_1_0.
1999-05-08 Drazen Kacar <dave@srce.hr>
* mountlist.c: Changed pfintf formats to "%lld" when printing
u_int64_t. This is still utterly unportable, but will
hopefully work on all supported architectures. For now.
1999-05-07 Martin Baulig <martin@home-of-linux.org>
* timings.c (timersub): Renamed this to `libgtop_timersub' and define
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.

View File

@@ -1,121 +0,0 @@
## Process this file with automake to produce Makefile.in
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
INCLUDES = @INCLUDES@
DEFS = @DEFS@
# We install it in `libexec' since this will make it more easy
# to put the examples into an extra RPM package.
libgtopdir = $(libexecdir)/libgtop
libgtop_PROGRAMS = first second\
mountlist procmap netload sysdeps 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.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
first_static_SOURCES = $(first_SOURCES)
first_static_LDADD = $(first_LDADD)
first_static_LDFLAGS = -static
second_SOURCES = second.c
second_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
second_static_SOURCES = $(second_SOURCES)
second_static_LDADD = $(second_LDADD)
second_static_LDFLAGS = -static
procmap_SOURCES = procmap.c
procmap_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
procmap_static_SOURCES = $(procmap_SOURCES)
procmap_static_LDADD = $(procmap_LDADD)
procmap_static_LDFLAGS = -static
netload_SOURCES = netload.c
netload_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
netload_static_SOURCES = $(netload_SOURCES)
netload_static_LDADD = $(netload_LDADD)
netload_static_LDFLAGS = -static
sysdeps_SOURCES = sysdeps.c
sysdeps_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
sysdeps_static_SOURCES = $(sysdeps_SOURCES)
sysdeps_static_LDADD = $(sysdeps_LDADD)
sysdeps_static_LDFLAGS = -static
third_guile_names_LIBS = $(top_builddir)/sysdeps/guile/names/libgtop_guile_names.la
third_names_LIBS = $(top_builddir)/sysdeps/names/libgtop_names.la
third_SOURCES = third.c
third_LDADD = $(top_builddir)/sysdeps/guile/libgtop_guile.la \
$(third_guile_names_LIBS) $(third_names_LIBS) \
$(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@
third_static_SOURCES = $(third_SOURCES)
third_static_LDADD = $(third_LDADD)
third_static_LDFLAGS = -static
mountlist_SOURCES = mountlist.c
mountlist_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
mountlist_static_SOURCES= $(mountlist_SOURCES)
mountlist_static_LDADD = $(mountlist_LDADD)
mountlist_static_LDFLAGS= -static
smp_SOURCES = smp.c
smp_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
smp_static_SOURCES = $(smp_SOURCES)
smp_static_LDADD = $(smp_LDADD)
smp_static_LDFLAGS = -static
timings_SOURCES = timings.c
timings_LDADD = $(top_builddir)/lib/libgtop.la \
$(top_builddir)/sysdeps/common/libgtop_common.la \
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \
@LIBSUPPORT@ @INTLLIBS@
timings_static_SOURCES = $(timings_SOURCES)
timings_static_LDADD = $(timings_LDADD)
timings_static_LDFLAGS = -static

View File

@@ -1,813 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/resource.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
glibtop_union data;
glibtop_sysdeps sysdeps;
unsigned c, method, count, port, i, *ptr;
char buffer [BUFSIZ];
pid_t pid, ppid;
char *args;
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_cpu (&data.cpu);
printf ("CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.cpu.flags,
(unsigned long) data.cpu.total,
(unsigned long) data.cpu.user,
(unsigned long) data.cpu.nice,
(unsigned long) data.cpu.sys,
(unsigned long) data.cpu.idle,
(unsigned long) data.cpu.frequency);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_mem (&data.mem);
printf ("Memory (0x%08lx): "
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.mem.flags,
(unsigned long) data.mem.total,
(unsigned long) data.mem.used,
(unsigned long) data.mem.free,
(unsigned long) data.mem.shared,
(unsigned long) data.mem.buffer,
(unsigned long) data.mem.cached,
(unsigned long) data.mem.user,
(unsigned long) data.mem.locked);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_swap (&data.swap);
printf ("Swap (0x%08lx): %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) data.swap.flags,
(unsigned long) data.swap.total,
(unsigned long) data.swap.used,
(unsigned long) data.swap.free,
(unsigned long) data.swap.pagein,
(unsigned long) data.swap.pageout);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_uptime (&data.uptime);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Uptime (0x%08lx): %f, %f, %lu\n",
(unsigned long) data.uptime.flags,
data.uptime.uptime, data.uptime.idletime,
(unsigned long) data.uptime.boot_time);
#else
printf ("Uptime (0x%08lx): %f, %f\n",
(unsigned long) data.uptime.flags,
data.uptime.uptime, data.uptime.idletime);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_loadavg (&data.loadavg);
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_State PID %5d (0x%08lx): '%s', %u - "
"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
data.proc_state.uid, data.proc_state.gid,
data.proc_state.ruid, data.proc_state.rgid,
data.proc_state.has_cpu, data.proc_state.processor,
data.proc_state.last_processor);
#else
printf ("Proc_State PID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
(int) pid, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
(int) pid, (unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.suid, data.proc_uid.sgid,
data.proc_uid.fsuid, data.proc_uid.fsgid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice,
data.proc_uid.ngroups);
if (data.proc_uid.ngroups) {
for (i = 0; i < data.proc_uid.ngroups; i++) {
if (i)
printf (" %d", data.proc_uid.groups [i]);
else
printf (" (%d", data.proc_uid.groups [i]);
}
printf (")");
}
printf ("\n");
#else
printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
(unsigned long) data.proc_uid.flags,
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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_data,
(unsigned long) data.proc_segment.end_data,
(unsigned long) data.proc_segment.start_brk,
(unsigned long) data.proc_segment.end_brk,
(unsigned long) data.proc_segment.start_stack,
(unsigned long) data.proc_segment.start_mmap,
(unsigned long) data.proc_segment.arg_start,
(unsigned long) data.proc_segment.arg_end,
(unsigned long) data.proc_segment.env_start,
(unsigned long) data.proc_segment.env_end);
#else
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal [0],
(unsigned long) data.proc_signal.signal [1],
(unsigned long) data.proc_signal.blocked [0],
(unsigned long) data.proc_signal.blocked [1],
(unsigned long) data.proc_signal.sigignore [0],
(unsigned long) data.proc_signal.sigignore [1],
(unsigned long) data.proc_signal.sigcatch [0],
(unsigned long) data.proc_signal.sigcatch [1]);
#else
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, 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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_State PPID %5d (0x%08lx): '%s', %u - "
"%u, %u, %u, %u - %u, %u, %u\n", (int) ppid,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
data.proc_state.uid, data.proc_state.gid,
data.proc_state.ruid, data.proc_state.rgid,
data.proc_state.has_cpu, data.proc_state.processor,
data.proc_state.last_processor);
#else
printf ("Proc_State PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
(int) ppid, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, ppid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Uid PPID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
(int) ppid, (unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.suid, data.proc_uid.sgid,
data.proc_uid.fsuid, data.proc_uid.fsgid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice,
data.proc_uid.ngroups);
if (data.proc_uid.ngroups) {
for (i = 0; i < data.proc_uid.ngroups; i++) {
if (i)
printf (" %d", data.proc_uid.groups [i]);
else
printf (" (%d", data.proc_uid.groups [i]);
}
printf (")");
}
printf ("\n");
#else
printf ("Proc_Uid PPID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid,
(unsigned long) data.proc_uid.flags,
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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Segment PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) ppid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_data,
(unsigned long) data.proc_segment.end_data,
(unsigned long) data.proc_segment.start_brk,
(unsigned long) data.proc_segment.end_brk,
(unsigned long) data.proc_segment.start_stack,
(unsigned long) data.proc_segment.start_mmap,
(unsigned long) data.proc_segment.arg_start,
(unsigned long) data.proc_segment.arg_end,
(unsigned long) data.proc_segment.env_start,
(unsigned long) data.proc_segment.env_end);
#else
printf ("Proc_Segment PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
(unsigned long) data.proc_segment.flags,
(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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Signal PPID %5d (0x%08lx): "
"%lx %lx %lx %lx %lx %lx %lx %lx\n",
(int) ppid, (unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal [0],
(unsigned long) data.proc_signal.signal [1],
(unsigned long) data.proc_signal.blocked [0],
(unsigned long) data.proc_signal.blocked [1],
(unsigned long) data.proc_signal.sigignore [0],
(unsigned long) data.proc_signal.sigignore [1],
(unsigned long) data.proc_signal.sigcatch [0],
(unsigned long) data.proc_signal.sigcatch [1]);
#else
printf ("Proc_Signal PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
(int) ppid, (unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_State INIT %5d (0x%08lx): '%s', %u - "
"%u, %u, %u, %u - %u, %u, %u\n", 1,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
data.proc_state.uid, data.proc_state.gid,
data.proc_state.ruid, data.proc_state.rgid,
data.proc_state.has_cpu, data.proc_state.processor,
data.proc_state.last_processor);
#else
printf ("Proc_State INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, 1);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Uid INIT %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d", 1,
(unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.suid, data.proc_uid.sgid,
data.proc_uid.fsuid, data.proc_uid.fsgid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice,
data.proc_uid.ngroups);
if (data.proc_uid.ngroups) {
for (i = 0; i < data.proc_uid.ngroups; i++) {
if (i)
printf (" %d", data.proc_uid.groups [i]);
else
printf (" (%d", data.proc_uid.groups [i]);
}
printf (")");
}
printf ("\n");
#else
printf ("Proc_Uid INIT %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1,
(unsigned long) data.proc_uid.flags,
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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Segment INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx\n", 1,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_data,
(unsigned long) data.proc_segment.end_data,
(unsigned long) data.proc_segment.start_brk,
(unsigned long) data.proc_segment.end_brk,
(unsigned long) data.proc_segment.start_stack,
(unsigned long) data.proc_segment.start_mmap,
(unsigned long) data.proc_segment.arg_start,
(unsigned long) data.proc_segment.arg_end,
(unsigned long) data.proc_segment.env_start,
(unsigned long) data.proc_segment.env_end);
#else
printf ("Proc_Segment INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_segment.flags,
(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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Signal INIT %5d (0x%08lx): "
"%lx %lx %lx %lx %lx %lx %lx %lx\n", 1,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal [0],
(unsigned long) data.proc_signal.signal [1],
(unsigned long) data.proc_signal.blocked [0],
(unsigned long) data.proc_signal.blocked [1],
(unsigned long) data.proc_signal.sigignore [0],
(unsigned long) data.proc_signal.sigignore [1],
(unsigned long) data.proc_signal.sigcatch [0],
(unsigned long) data.proc_signal.sigcatch [1]);
#else
printf ("Proc_Signal INIT %5d (0x%08lx): "
"%lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
#endif
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, 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);
}

View File

@@ -1,113 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/mountlist.h>
#include <glibtop/fsusage.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1000
#endif
int
main (int argc, char *argv [])
{
glibtop_fsusage fsusage;
glibtop_mountlist mount_list;
glibtop_mountentry *mount_entries;
unsigned c, index, method, count, port;
char buffer [BUFSIZ];
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
printf ("sbrk (0) = %p\n\n", sbrk (0));
for (c = 0; c < PROFILE_COUNT; c++) {
mount_entries = glibtop_get_mountlist (&mount_list, 1);
glibtop_free (mount_entries);
}
printf ("sbrk (0) = %p\n\n", sbrk (0));
mount_entries = glibtop_get_mountlist (&mount_list, 1);
if (mount_entries == NULL)
_exit (1);
for (index = 0; index < mount_list.number; index++)
printf ("Mount_Entry: %-30s %-10s %-20s\n",
mount_entries [index].mountdir,
mount_entries [index].type,
mount_entries [index].devname);
printf ("\n\n%-23s %9s %9s %9s %9s %9s\n\n",
"", "Blocks", "Free", "Avail", "Files", "Free");
for (index = 0; index < mount_list.number; index++) {
glibtop_get_fsusage (&fsusage,
mount_entries [index].mountdir);
printf ("Usage: %-16s %9llu %9llu %9llu %9llu %9llu\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);
}

View File

@@ -1,125 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/netload.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
glibtop_netload netload;
unsigned method, count, port;
struct in_addr addr, subnet;
char *address_string, *subnet_string;
char buffer [BUFSIZ];
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
if (argc != 2)
glibtop_error ("Usage: %s interface", argv [0]);
glibtop_get_netload (&netload, argv [1]);
addr.s_addr = netload.address;
subnet.s_addr = netload.subnet;
address_string = glibtop_strdup (inet_ntoa (addr));
subnet_string = glibtop_strdup (inet_ntoa (subnet));
printf ("Network Load (0x%08lx):\n\n"
"\tInterface Flags:\t0x%08lx\n"
"\tAddress:\t\t0x%08lx - %s\n"
"\tSubnet:\t\t\t0x%08lx - %s\n\n"
"\tMTU:\t\t\t%ld\n"
"\tCollisions:\t\t%ld\n\n"
"\tPackets In:\t\t%ld\n"
"\tPackets Out:\t\t%ld\n"
"\tPackets Total:\t\t%ld\n\n"
"\tBytes In:\t\t%ld\n"
"\tBytes Out:\t\t%ld\n"
"\tBytes Total:\t\t%ld\n\n"
"\tErrors In:\t\t%ld\n"
"\tErrors Out:\t\t%ld\n"
"\tErrors Total:\t\t%ld\n\n",
(unsigned long) netload.flags,
(unsigned long) netload.if_flags,
(unsigned long) netload.address, address_string,
(unsigned long) netload.subnet, subnet_string,
(unsigned long) netload.mtu,
(unsigned long) netload.collisions,
(unsigned long) netload.packets_in,
(unsigned long) netload.packets_out,
(unsigned long) netload.packets_total,
(unsigned long) netload.bytes_in,
(unsigned long) netload.bytes_out,
(unsigned long) netload.bytes_total,
(unsigned long) netload.errors_in,
(unsigned long) netload.errors_out,
(unsigned long) netload.errors_total);
glibtop_free (address_string);
glibtop_free (subnet_string);
glibtop_close ();
exit (0);
}

View File

@@ -1,164 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/procmap.h>
#ifdef GLIBTOP_INODEDB
#include <glibtop/inodedb.h>
#endif
#include <sys/resource.h>
#include <sys/mman.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
#ifdef GLIBTOP_INODEDB
glibtop_inodedb *inodedb;
#endif
glibtop_proc_map procmap;
glibtop_map_entry *maps;
unsigned method, count, port, i;
char buffer [BUFSIZ];
pid_t pid;
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
glibtop_error ("Usage: %s pid", argv [0]);
#ifdef GLIBTOP_INODEDB
inodedb = glibtop_inodedb_open (0, 0);
#endif
fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid);
maps = glibtop_get_proc_map (&procmap, pid);
for (i = 0; i < procmap.number; i++) {
const char *filename = NULL;
unsigned device, device_major, device_minor;
char perm [5];
if (maps [i].flags & (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);
}

View File

@@ -1,376 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_State PID %5d (0x%08lx): '%s', %u - "
"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
data.proc_state.uid, data.proc_state.gid,
data.proc_state.ruid, data.proc_state.rgid,
data.proc_state.has_cpu, data.proc_state.processor,
data.proc_state.last_processor);
#else
printf ("Proc_State PID %5d (0x%08lx): "
"'%s', %c, %lu, %lu\n", (int) pid,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid);
#endif
glibtop_get_proc_uid (&data.proc_uid, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d - %d",
(int) pid, (unsigned long) data.proc_uid.flags,
data.proc_uid.uid, data.proc_uid.euid,
data.proc_uid.gid, data.proc_uid.egid,
data.proc_uid.suid, data.proc_uid.sgid,
data.proc_uid.fsuid, data.proc_uid.fsgid,
data.proc_uid.pid, data.proc_uid.ppid,
data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice,
data.proc_uid.ngroups);
if (data.proc_uid.ngroups) {
for (i = 0; i < data.proc_uid.ngroups; i++) {
if (i)
printf (" %d", data.proc_uid.groups [i]);
else
printf (" (%d", data.proc_uid.groups [i]);
}
printf (")");
}
printf ("\n");
#else
printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
(unsigned long) data.proc_uid.flags,
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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_data,
(unsigned long) data.proc_segment.end_data,
(unsigned long) data.proc_segment.start_brk,
(unsigned long) data.proc_segment.end_brk,
(unsigned long) data.proc_segment.start_stack,
(unsigned long) data.proc_segment.start_mmap,
(unsigned long) data.proc_segment.arg_start,
(unsigned long) data.proc_segment.arg_end,
(unsigned long) data.proc_segment.env_start,
(unsigned long) data.proc_segment.env_end);
#else
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(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);
#endif
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);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal [0],
(unsigned long) data.proc_signal.signal [1],
(unsigned long) data.proc_signal.blocked [0],
(unsigned long) data.proc_signal.blocked [1],
(unsigned long) data.proc_signal.sigignore [0],
(unsigned long) data.proc_signal.sigignore [1],
(unsigned long) data.proc_signal.sigcatch [0],
(unsigned long) data.proc_signal.sigcatch [1]);
#else
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch);
#endif
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 (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_init ();
glibtop_get_sysdeps (&sysdeps);
printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
(unsigned long) sysdeps.flags,
(unsigned long) sysdeps.cpu,
(unsigned long) sysdeps.mem,
(unsigned long) sysdeps.swap,
(unsigned long) sysdeps.uptime,
(unsigned long) sysdeps.loadavg,
(unsigned long) sysdeps.shm_limits,
(unsigned long) sysdeps.msg_limits,
(unsigned long) sysdeps.sem_limits,
(unsigned long) sysdeps.proclist,
(unsigned long) sysdeps.proc_state,
(unsigned long) sysdeps.proc_uid,
(unsigned long) sysdeps.proc_mem,
(unsigned long) sysdeps.proc_time,
(unsigned long) sysdeps.proc_signal,
(unsigned long) sysdeps.proc_kernel,
(unsigned long) sysdeps.proc_segment);
if ((argc == 2) && (sscanf (argv [1], "%d", &pid) == 1)) {
output (pid);
exit (0);
}
printf ("\n");
ptr = glibtop_get_proclist (&proclist, 0, 0);
printf ("Proclist (0x%08lx): %lu, %lu, %lu\n",
(unsigned long) proclist.flags,
(unsigned long) proclist.number,
(unsigned long) proclist.size,
(unsigned long) proclist.total);
if (!ptr) exit (1);
for (i = 0; i < proclist.number; i++) {
pid = ptr [i];
output (pid);
}
glibtop_free (ptr);
exit (0);
}

View File

@@ -1,124 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, September 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/cpu.h>
#include <glibtop/xmalloc.h>
int
main (int argc, char *argv [])
{
glibtop_cpu cpu;
unsigned long frequency;
double total, user, nice, sys, idle;
double b_total, b_user, b_nice, b_sys, b_idle;
double s_total, s_user, s_nice, s_sys, s_idle;
char separator [BUFSIZ], buffer [BUFSIZ];
int ncpu, i;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_get_cpu (&cpu);
ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
frequency = (unsigned long) cpu.frequency;
total = ((unsigned long) cpu.total) ? ((double) cpu.total) : 1.0;
user = ((unsigned long) cpu.user) ? ((double) cpu.user) : 1.0;
nice = ((unsigned long) cpu.nice) ? ((double) cpu.nice) : 1.0;
sys = ((unsigned long) cpu.sys) ? ((double) cpu.sys) : 1.0;
idle = ((unsigned long) cpu.idle) ? ((double) cpu.idle) : 1.0;
s_total = s_user = s_nice = s_sys = s_idle = 0.0;
b_total = total / ncpu;
b_user = user / ncpu;
b_nice = nice / ncpu;
b_sys = sys / ncpu;
b_idle = idle / ncpu;
memset (separator, '-', 91);
separator [92] = '\0';
sprintf (buffer, _("Ticks (%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);
}

View File

@@ -1,154 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 1
#endif
int
main (int argc, char *argv [])
{
glibtop_sysdeps sysdeps;
unsigned method, count, port;
char buffer [BUFSIZ];
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN);
glibtop_get_parameter (GLIBTOP_PARAM_METHOD, &method, sizeof (method));
printf ("Method = %d\n", method);
count = glibtop_get_parameter (GLIBTOP_PARAM_COMMAND, buffer, BUFSIZ);
buffer [count] = 0;
printf ("Command = '%s'\n", buffer);
count = glibtop_get_parameter (GLIBTOP_PARAM_HOST, buffer, BUFSIZ);
buffer [count] = 0;
glibtop_get_parameter (GLIBTOP_PARAM_PORT, &port, sizeof (port));
printf ("Host = '%s' - %u\n\n", buffer, port);
glibtop_init_r (&glibtop_global_server, 0, 0);
glibtop_get_sysdeps (&sysdeps);
#define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
printf ("Sysdeps (0x%08lx):\n\n"
"\tfeatures:\t\t0x%08lx\n\n"
#if LIBGTOP_VERSION_CODE > 1001000
"\tpointer_size:\t\t0x%08lx\n\n"
#endif
"\tcpu:\t\t%d\t0x%08lx\n"
"\tmem:\t\t%d\t0x%08lx\n"
"\tswap:\t\t%d\t0x%08lx\n\n"
"\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,
#if LIBGTOP_VERSION_CODE > 1001000
(unsigned long) sysdeps.pointer_size,
#endif
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);
}

View File

@@ -1,80 +0,0 @@
(display (glibtop-names-sysdeps)) (newline)
(display (glibtop-labels-sysdeps)) (newline)
(display (glibtop-descriptions-sysdeps)) (newline)
(display (glibtop-types-sysdeps)) (newline)
(newline)
(display (glibtop-names-cpu)) (newline)
(display (glibtop-names-mem)) (newline)
(display (glibtop-names-swap)) (newline)
(display (glibtop-names-uptime)) (newline)
(display (glibtop-names-loadavg)) (newline)
(display (glibtop-names-shm_limits)) (newline)
(display (glibtop-names-msg_limits)) (newline)
(display (glibtop-names-sem_limits)) (newline)
(display (glibtop-names-proclist)) (newline)
(display (glibtop-names-proc_state)) (newline)
(display (glibtop-names-proc_uid)) (newline)
(display (glibtop-names-proc_mem)) (newline)
(display (glibtop-names-proc_time)) (newline)
(display (glibtop-names-proc_signal)) (newline)
(display (glibtop-names-proc_kernel)) (newline)
(display (glibtop-names-proc_segment)) (newline)
(newline)
(display (glibtop-labels-cpu)) (newline)
(display (glibtop-labels-mem)) (newline)
(display (glibtop-labels-swap)) (newline)
(display (glibtop-labels-uptime)) (newline)
(display (glibtop-labels-loadavg)) (newline)
(display (glibtop-labels-shm_limits)) (newline)
(display (glibtop-labels-msg_limits)) (newline)
(display (glibtop-labels-sem_limits)) (newline)
(display (glibtop-labels-proclist)) (newline)
(display (glibtop-labels-proc_state)) (newline)
(display (glibtop-labels-proc_uid)) (newline)
(display (glibtop-labels-proc_mem)) (newline)
(display (glibtop-labels-proc_time)) (newline)
(display (glibtop-labels-proc_signal)) (newline)
(display (glibtop-labels-proc_kernel)) (newline)
(display (glibtop-labels-proc_segment)) (newline)
(newline)
(display (glibtop-descriptions-cpu)) (newline)
(display (glibtop-descriptions-mem)) (newline)
(display (glibtop-descriptions-swap)) (newline)
(display (glibtop-descriptions-uptime)) (newline)
(display (glibtop-descriptions-loadavg)) (newline)
(display (glibtop-descriptions-shm_limits)) (newline)
(display (glibtop-descriptions-msg_limits)) (newline)
(display (glibtop-descriptions-sem_limits)) (newline)
(display (glibtop-descriptions-proclist)) (newline)
(display (glibtop-descriptions-proc_state)) (newline)
(display (glibtop-descriptions-proc_uid)) (newline)
(display (glibtop-descriptions-proc_mem)) (newline)
(display (glibtop-descriptions-proc_time)) (newline)
(display (glibtop-descriptions-proc_signal)) (newline)
(display (glibtop-descriptions-proc_kernel)) (newline)
(display (glibtop-descriptions-proc_segment)) (newline)
(newline)
(display (glibtop-types-cpu)) (newline)
(display (glibtop-types-mem)) (newline)
(display (glibtop-types-swap)) (newline)
(display (glibtop-types-uptime)) (newline)
(display (glibtop-types-loadavg)) (newline)
(display (glibtop-types-shm_limits)) (newline)
(display (glibtop-types-msg_limits)) (newline)
(display (glibtop-types-sem_limits)) (newline)
(display (glibtop-types-proclist)) (newline)
(display (glibtop-types-proc_state)) (newline)
(display (glibtop-types-proc_uid)) (newline)
(display (glibtop-types-proc_mem)) (newline)
(display (glibtop-types-proc_time)) (newline)
(display (glibtop-types-proc_signal)) (newline)
(display (glibtop-types-proc_kernel)) (newline)
(display (glibtop-types-proc_segment)) (newline)

View File

@@ -1,57 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
void main_prog(int argc, char *argv[]);
int
main (int argc, char *argv[])
{
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, GTOPLOCALEDIR);
textdomain (PACKAGE);
gh_enter (argc, argv, main_prog);
exit (0);
}
void
main_prog (int argc, char *argv[])
{
glibtop_boot_guile ();
#ifdef GLIBTOP_GUILE_NAMES
glibtop_boot_guile_names ();
#endif
gh_repl (argc, argv);
}

View File

@@ -1,357 +0,0 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/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 (PACKAGE, GTOPLOCALEDIR);
textdomain (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);
}

View File

@@ -1,22 +1,24 @@
void|cpu|ulong(total,user,nice,sys,idle,frequency,xcpu_total[GLIBTOP_NCPU],xcpu_user[GLIBTOP_NCPU],xcpu_nice[GLIBTOP_NCPU],xcpu_sys[GLIBTOP_NCPU],xcpu_idle[GLIBTOP_NCPU],xcpu_flags)
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
void|swap|ulong(total,used,free,pagein,pageout)
void|uptime|double(uptime,idletime):ulong(boot_time)
void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
unsigned *|proclist|ulong(number,size,total)|long(which,arg)
void|proc_state|str(cmd):unsigned(state):ulong(uid,gid,ruid,rgid,has_cpu,processor,last_processor)|pid_t(pid)
void|proc_uid|long(uid,euid,gid,egid,suid,sgid,fsuid,fsgid,pid,ppid,pgrp,session,tty,tpgid,priority,nice,ngroups,groups[GLIBTOP_MAX_GROUPS])|pid_t(pid)
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[GLIBTOP_NCPU],xcpu_stime[GLIBTOP_NCPU],xcpu_flags)|pid_t(pid)
void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):str(wchan)|pid_t(pid)
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_data,end_data,start_brk,end_brk,start_stack,start_mmap,arg_start,arg_end,env_start,env_end)|pid_t(pid)
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)
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)

View File

@@ -23,19 +23,21 @@
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_READ_H__
#define __GLIBTOP_READ_H__
#ifndef __GLIBTOP_SERVER_PRIVATE_H__
#define __GLIBTOP_SERVER_PRIVATE_H__
#include <glibtop.h>
#include <glibtop/error.h>
#ifdef HAVE_GLIBTOP_MACHINE_H
#include <glibtop_machine.h>
#endif
BEGIN_LIBGTOP_DECLS
#include <glib.h>
#define glibtop_read(p1, p2) glibtop_read(glibtop_global_server, p1, p2)
void glibtop_read_l (glibtop *server, size_t size, void *buf);
void glibtop_read_s (glibtop *server, size_t size, void *buf);
END_LIBGTOP_DECLS
struct _glibtop_server_private
{
#ifdef HAVE_GLIBTOP_MACHINE_H
glibtop_machine machine; /* Machine dependent data */
#endif
GSList *backend_list;
};
#endif

View File

@@ -1,3 +1,5 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
@@ -34,38 +36,38 @@
#include <glibtop_server.h>
#include <glibtop/types.h>
#ifdef HAVE_GLIBTOP_MACHINE_H
#include <glibtop_machine.h>
#endif
BEGIN_LIBGTOP_DECLS
typedef struct _glibtop glibtop;
typedef struct _glibtop glibtop;
typedef struct _glibtop_server_private glibtop_server_private;
#include <glibtop/sysdeps.h>
#include <glibtop/errors.h>
#ifdef _IN_LIBGTOP
#include <glibtop-server-private.h>
#endif
struct _glibtop
{
unsigned flags;
unsigned method; /* Server Method */
unsigned error_method; /* Error Method */
#ifdef HAVE_GLIBTOP_MACHINE_H
glibtop_machine machine; /* Machine dependent data */
#endif
int input [2]; /* Pipe client <- server */
int output [2]; /* Pipe client -> server */
int socket; /* Accepted connection of a socket */
int ncpu; /* Number of CPUs, zero if single-processor */
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 */
pid_t pid; /* PID of the server */
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;
};
extern glibtop *glibtop_global_server;
@@ -86,24 +88,12 @@ glibtop_init_s (glibtop **server_ptr,
unsigned long features,
unsigned flags);
#ifdef GLIBTOP_GUILE
void
glibtop_server_ref (glibtop *server);
/* You need to link with -lgtop_guile to get this stuff here. */
void
glibtop_server_unref (glibtop *server);
void glibtop_boot_guile (void);
#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
END_LIBGTOP_DECLS
#endif

View File

@@ -1,2 +1,3 @@
Makefile
Makefile.in
call-vector.h

View File

@@ -1,11 +1,23 @@
glibtopdir = $(includedir)/glibtop
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
sem_limits.h uptime.h command.h mem.h proclist.h \
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
procmem.h procuid.h swap.h write.h error.h open.h \
procsegment.h read.h sysdeps.h xmalloc.h global.h \
procsignal.h read_data.h union.h types.h gnuserv.h \
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 \
parameter.h mountlist.h fsusage.h procmap.h signal.h \
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
limits.h
netinfo.h interfaces.h limits.h array.h compat_10.h \
errors.h glib-arrays.h backend.h call-vector.h
BUILT_SOURCES = call-vector.h
call-vector.h: call-vector.pl call-vector.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/call-vector.pl $(top_srcdir)/features.def $(srcdir)/call-vector.h.in > tmp-t
mv tmp-t call-vector.h
EXTRA_DIST = call-vector.pl call-vector.h.in
CLEANFILES = $(BUILT_SOURCES)

50
include/glibtop/array.h Normal file
View File

@@ -0,0 +1,50 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_ARRAY_H__
#define __GLIBTOP_ARRAY_H__
#include <glibtop.h>
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_ARRAY_NUMBER 0
#define GLIBTOP_ARRAY_SIZE 1
#define GLIBTOP_ARRAY_TOTAL 2
#define GLIBTOP_MAX_ARRAY 3
typedef struct _glibtop_array glibtop_array;
struct _glibtop_array
{
u_int64_t flags,
number, /* GLIBTOP_ARRAY_NUMBER */
size, /* GLIBTOP_ARRAY_SIZE */
total; /* GLIBTOP_ARRAY_TOTAL */
};
#endif

114
include/glibtop/backend.h Normal file
View File

@@ -0,0 +1,114 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_BACKEND_H__
#define __GLIBTOP_BACKEND_H__
#include <glibtop.h>
#include <glibtop/global.h>
#include <glib.h>
BEGIN_LIBGTOP_DECLS
typedef struct _glibtop_backend_info glibtop_backend_info;
typedef struct _glibtop_backend_entry glibtop_backend_entry;
typedef struct _glibtop_backend_module glibtop_backend_module;
typedef struct _glibtop_backend_private glibtop_backend_private;
typedef struct _glibtop_backend glibtop_backend;
#include <glibtop/call-vector.h>
typedef int (*glibtop_backend_open_func_t) (glibtop *, glibtop_backend *,
u_int64_t, const char **);
typedef int (*glibtop_backend_close_func_t) (glibtop *, glibtop_backend *);
struct _glibtop_backend_info
{
const char *name;
glibtop_backend_open_func_t open;
glibtop_backend_close_func_t close;
glibtop_call_vector *call_vector;
};
#ifdef _IN_LIBGTOP
#include <gmodule.h>
/* private structure */
struct _glibtop_backend_module
{
int refcount;
GModule *module;
};
#endif /* _IN_LIBGTOP */
struct _glibtop_backend_entry
{
char *name;
char *libtool_name;
char *shlib_name;
/* This is const since you must not attempt to
* write into gmodule loaded memory. */
const glibtop_backend_info *info;
/* private pointer */
glibtop_backend_module *_priv;
};
struct _glibtop_backend
{
const glibtop_backend_info *info;
/* private pointers */
glibtop_backend_private *_priv;
glibtop_backend_module *_priv_module;
};
long
glibtop_register_backend (glibtop_backend_entry *entry);
void
glibtop_unregister_backend (long id);
glibtop_backend_entry *
glibtop_backend_by_id (long id);
glibtop_backend_entry *
glibtop_backend_by_name (const char *backend_name);
void
glibtop_init_backends (void);
int
glibtop_open_backend_l (glibtop *server, const char *backend_name,
u_int64_t features, const char **backend_args);
END_LIBGTOP_DECLS
#endif

View File

@@ -2,6 +2,8 @@
/* $Id$ */
@@AUTOGEN_COMMENT@@
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
@@ -23,18 +25,20 @@
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_READ_DATA_H__
#define __GLIBTOP_READ_DATA_H__
#ifndef __GLIBTOP_CALL_VECTOR_H__
#define __GLIBTOP_CALL_VECTOR_H__
#include <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/union.h>
BEGIN_LIBGTOP_DECLS
#define glibtop_read_data() glibtop_read_data_r(glibtop_global_server)
typedef struct _glibtop_call_vector glibtop_call_vector;
void *glibtop_read_data_l (glibtop *server);
void *glibtop_read_data_s (glibtop *server);
struct _glibtop_call_vector
{
@@GLIBTOP_CALL_VECTOR@@
};
END_LIBGTOP_DECLS

View File

@@ -0,0 +1,116 @@
#!/usr/bin/perl
require 'c_types.pl';
die "Usage: $0 features.def call-vector.h.in" unless $#ARGV == 1;
$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator
sub toupper {
local($_) = @_;
tr/a-z/A-Z/;
return $_;
}
sub tolower {
local($_) = @_;
tr/A-Z/a-z/;
return $_;
}
$func_decl_code = '';
open FEATURESDEF, $ARGV[1] or
die "open ($ARGV[1]): $!";
while (<FEATURESDEF>) {
chop; # strip record separator
if (/^[^\#]/) {
&parse_features_def ($_);
}
}
close FEATURESDEF;
sub parse_features_def {
local($line) = @_;
@line_fields = split(/\|/, $line, 9999);
$retval = $line_fields[1];
$element_def = $line_fields[3];
$feature = $line_fields[2];
$param_def = $line_fields[4];
$orig = $feature;
$feature =~ s/^@//;
$space = $feature;
$space =~ s/./ /g;
if ($retval eq 'retval') {
$retval_param = '&retval';
$retval = 'int';
}
elsif ($retval !~ /^void$/) {
$retval_param = 'NULL';
}
else {
$retval_param = 'NULL';
}
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
}
$param_decl = '';
$nr_params = (@params = split(/:/, $param_def, 9999));
for ($param = 1; $param <= $nr_params; $param++) {
$list = $params[$param];
$type = $params[$param];
$type =~ s/\(.*//;
$list =~ s/^.*\(//;
$list =~ s/\)$//;
$count = (@fields = split(/,/, $list, 9999));
for ($field = 1; $field <= $count; $field++) {
my $c_type = $typeinfo->{$type}->[1];
$param_decl = $param_decl . ', ';
$param_decl = $param_decl . $c_type;
}
}
if ($line_fields[3] eq '') {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *%s);\n], $retval, $feature, $param_decl);
} elsif ($line_fields[3] eq 'array') {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *%s);\n], $retval, $feature, $param_decl);
} elsif ($line_fields[3] =~ /^array/) {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
} else {
$func_decl_code .= sprintf
(qq[\t%s (*%s) (glibtop *, glibtop_backend *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
}
}
chop $func_decl_code;
$auto_gen_comment = sprintf
(qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]);
open CALLVECTOR, $ARGV[2] or
die "open ($ARGV[2]): $!";
while (<CALLVECTOR>) {
chop;
s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/;
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
} continue {
print $_;
}
close CALLVECTOR;

View File

@@ -1,104 +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_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

View File

@@ -0,0 +1,91 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_COMPAT10_H__
#define __GLIBTOP_COMPAT10_H__
#include <glibtop.h>
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
/* glibtop_cpu */
#define GLIBTOP_XCPU_TOTAL GLIBTOP_CPU_XCPU_TOTAL
#define GLIBTOP_XCPU_USER GLIBTOP_CPU_XCPU_USER
#define GLIBTOP_XCPU_NICE GLIBTOP_CPU_XCPU_NICE
#define GLIBTOP_XCPU_SYS GLIBTOP_CPU_XCPU_SYS
#define GLIBTOP_XCPU_IDLE GLIBTOP_CPU_XCPU_IDLE
#define GLIBTOP_XCPU_FLAGS GLIBTOP_CPU_XCPU_FLAGS
/* glibtop_proclist */
#define GLIBTOP_PROCLIST_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_PROCLIST_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_PROCLIST_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_PROCLIST GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_proclist;
/* glibtop_mountlist */
#define GLIBTOP_MOUNTLIST_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_MOUNTLIST_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_MOUNTLIST_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_MOUNTLIST GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_mountlist;
/* glibtop_proc_args */
#define GLIBTOP_PROC_ARGS_SIZE 0
#define GLIBTOP_MAX_PROC_ARGS 1
typedef struct _glibtop_array glibtop_proc_args;
/* glibtop_proc_map */
#define GLIBTOP_PROC_MAP_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_PROC_MAP_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_PROC_MAP_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_PROC_MAP GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_proc_map;
/* glibtop_interface_names */
#define GLIBTOP_INTERFACE_NAMES_NUMBER GLIBTOP_ARRAY_NUMBER
#define GLIBTOP_INTERFACE_NAMES_SIZE GLIBTOP_ARRAY_SIZE
#define GLIBTOP_INTERFACE_NAMES_TOTAL GLIBTOP_ARRAY_TOTAL
#define GLIBTOP_MAX_INTERFACE_NAMES GLIBTOP_MAX_ARRAY
typedef struct _glibtop_array glibtop_interface_names;
#endif

View File

@@ -38,12 +38,12 @@ BEGIN_LIBGTOP_DECLS
#define GLIBTOP_CPU_IDLE 4
#define GLIBTOP_CPU_FREQUENCY 5
#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_XCPU_FLAGS 11
#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_MAX_CPU 12
@@ -58,12 +58,12 @@ struct _glibtop_cpu
sys, /* GLIBTOP_CPU_SYS */
idle, /* GLIBTOP_CPU_IDLE */
frequency, /* GLIBTOP_CPU_FREQUENCY */
xcpu_total [GLIBTOP_NCPU], /* GLIBTOP_XCPU_TOTAL */
xcpu_user [GLIBTOP_NCPU], /* GLIBTOP_XCPU_USER */
xcpu_nice [GLIBTOP_NCPU], /* GLIBTOP_XCPU_NICE */
xcpu_sys [GLIBTOP_NCPU], /* GLIBTOP_XCPU_SYS */
xcpu_idle [GLIBTOP_NCPU], /* GLIBTOP_XCPU_IDLE */
xcpu_flags; /* GLIBTOP_XCPU_FLAGS */
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 */
};
#define glibtop_get_cpu(cpu) glibtop_get_cpu_l(glibtop_global_server, cpu)
@@ -74,14 +74,14 @@ struct _glibtop_cpu
#define glibtop_get_cpu_r glibtop_get_cpu_s
#endif
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
int glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
#if GLIBTOP_SUID_CPU
void glibtop_init_cpu_p (glibtop *server);
void glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
int glibtop_init_cpu_p (glibtop *server);
int glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf);
#else
void glibtop_init_cpu_s (glibtop *server);
void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
int glibtop_init_cpu_s (glibtop *server);
int glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf);
#endif
#ifdef GLIBTOP_NAMES

66
include/glibtop/errors.h Normal file
View File

@@ -0,0 +1,66 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_ERRORS_H__
#define __GLIBTOP_ERRORS_H__
#include <glibtop.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_ERROR_NO_ERROR 0
#define GLIBTOP_ERROR_UNKNOWN 1
#define GLIBTOP_ERROR_INVALID_ARGUMENT 2
#define GLIBTOP_ERROR_NO_SUCH_PARAMETER 3
#define GLIBTOP_ERROR_READONLY_VALUE 4
#define GLIBTOP_ERROR_SIZE_MISMATCH 5
#define GLIBTOP_ERROR_SERVER_COMM_FAILURE 6
#define GLIBTOP_ERROR_NO_SUCH_PROCESS 7
#define GLIBTOP_ERROR_NO_KERNEL_SUPPORT 8
#define GLIBTOP_ERROR_INCOMPATIBLE_KERNEL 9
#define GLIBTOP_ERROR_NO_SUCH_BACKEND 10
#define GLIBTOP_ERROR_NOT_IMPLEMENTED 11
#define GLIBTOP_ERROR_NO_BACKEND_OPENED 12
#define GLIBTOP_ERROR_DEMARSHAL_ERROR 13
#define GLIBTOP_MAX_ERROR 14
char *
glibtop_get_error_string_l (glibtop *server, unsigned error_number);
unsigned
glibtop_get_errno_l (glibtop *server);
unsigned
glibtop_clear_errno_l (glibtop *server);
END_LIBGTOP_DECLS
#endif

View File

@@ -55,8 +55,8 @@ struct _glibtop_fsusage
#define glibtop_get_fsusage_r glibtop_get_fsusage_s
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);
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);
#ifdef GLIBTOP_NAMES

View File

@@ -0,0 +1,59 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __GLIBTOP_GLIB_ARRAYS_H__
#define __GLIBTOP_GLIB_ARRAYS_H__
#include <glibtop.h>
#include <glibtop/array.h>
#include <glibtop/global.h>
#include <glibtop/xmalloc.h>
#include <glib.h>
BEGIN_LIBGTOP_DECLS
#define glibtop_get_proc_args_as_array(pid) glibtop_get_proc_args_as_array_l(glibtop_global_server, pid)
GPtrArray *
glibtop_get_proc_args_as_array_l (glibtop *server, pid_t pid);
#define glibtop_get_proclist_as_array(which,arg) glibtop_get_proclist_as_array_l(glibtop_global_server, which, arg)
GArray *
glibtop_get_proclist_as_array_l (glibtop *server, int64_t which, int64_t arg);
#define glibtop_get_proc_map_as_array(pid) glibtop_get_proc_map_as_array_l(glibtop_global_server, pid)
GPtrArray *
glibtop_get_proc_map_as_array_l (glibtop *server, pid_t pid);
#define glibtop_get_mountlist_as_array(all_fs) glibtop_get_mountlist_as_array_l(glibtop_global_server, all_fs)
GPtrArray *
glibtop_get_mountlist_as_array_l (glibtop *server, int all_fs);
END_LIBGTOP_DECLS
#endif

View File

@@ -111,10 +111,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>

View File

@@ -1,161 +0,0 @@
/* -*-C-*-
Header file for the GNU Emacs server and client C code.
This file is part of GNU Emacs.
Copying is permitted under those conditions described by the GNU
General Public License.
Copyright (C) 1989 Free Software Foundation, Inc.
Author: Andy Norman (ange@hplb.hpl.hp.com), based on
'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU
Emacs distribution.
Please mail bugs and suggestions to the author at the above address.
*/
/* HISTORY
* 11-Nov-1990 bristor@simba
* Added EOT stuff.
*/
/*
* This file incorporates new features added by Bob Weiner <weiner@mot.com>,
* Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
* Please see the note at the end of the README file for details.
*
* (If gnuserv came bundled with your emacs, the README file is probably
* ../etc/gnuserv.README relative to the directory containing this file)
*/
#if 0
static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !";
#endif
#define NO_SHORTNAMES
#define PATCHLEVEL 2
#define NO_SHORTNAMES
/* gnuserv should not be compiled using SOCKS */
#define DO_NOT_SOCKSIFY
#include <glibtop.h>
#include <glibtop/error.h>
#undef read
#undef write
#undef open
#undef close
#undef signal
/* Define the communication method between server and clients:
* You can have either or both kinds of sockets, but you can't mix
* sockets with sysv ipc
*/
#define INTERNET_DOMAIN_SOCKETS
#define UNIX_DOMAIN_SOCKETS
/*
* Define additional authentication protocols to be used. These methods will
* be tried before falling back to the default gnuserv protocol (based on
* the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1
* is also supported.
*
* Comment out the next line(s) if you don't want to enable the
* appropriate authentication protocol.
*/
#if defined (HAVE_XAUTH)
#define AUTH_MAGIC_COOKIE
#endif /* HAVE_XAUTH */
/*
* stuff related to supporting MIT-MAGIC-COOKIE-1
*/
#if 0
#define MCOOKIE_SCREEN "42980" /* screen # to use as the gnuserv cookie */
#endif
#define MCOOKIE_NAME "MAGIC-1" /* authentication protocol name */
#define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1" /* as needed by X */
#define DEFAUTH_NAME "GNU-SECURE" /* name of default auth protocol */
#define AUTH_TIMEOUT 15 /* # seconds to wait for auth data */
#define AUTH_NAMESZ 15 /* max allows auth protocol name size */
/*
* Pick a default communication scheme, if none was specified.
*/
#if !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS)
/* BSD systems use Unix Domain sockets by default */
#ifdef BSD
#define UNIX_DOMAIN_SOCKETS
#endif
#endif /* No communication method pre-defined */
/*
* If you are using SYSV_IPC, you might want to make the buffer size bigger
* since it limits the size of requests and responses. Don't make it bigger
* than your system's max message size though (usually a couple of k) or else
* msgsend will start failing. For sockets, using the system BUFSIZ is usually
* what you want.
*/
#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
#include <sys/socket.h>
#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
#ifdef INTERNET_DOMAIN_SOCKETS
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define TABLE_SIZE 101 /* The number of entries in the hash table */
#define HASH(host) host /* Rather simplistic hash function */
#define DEFAULT_PORT 21490 /* default port number to use is
* DEFAULT_PORT + uid */
#endif /* INTERNET_DOMAIN_SOCKETS */
#ifdef UNIX_DOMAIN_SOCKETS
#include <sys/un.h>
#define HIDE_UNIX_SOCKET /* put the unix socket in a protected dir */
#endif /* UNIX_DOMAIN_SOCKETS */
#define HOSTNAMSZ 255 /* max size of a hostname */
#define REPLYSIZ 300 /* max size of reply from server to client */
#undef FALSE
#define FALSE 0
#undef TRUE
#define TRUE 1
/* The casts shut Sun's compiler up and are safe in the context these
are actually used. */
#define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y))
#define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y))
#ifndef _NFILE /* rough guess at maximum number of open files */
#define _NFILE 20
#endif
#define EOT_STR "\004"
#define EOT_CHR '\004'
/* connection types */
#define CONN_UNIX 0
#define CONN_INTERNET 1
#define CONN_IPC 2
/* function declarations */
int glibtop_make_connection (const char *hostarg, int portarg, int *s);
#ifdef INTERNET_DOMAIN_SOCKETS
long glibtop_internet_addr (const char *host);
#endif

View File

@@ -0,0 +1,173 @@
/* -*- 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

View File

@@ -39,6 +39,15 @@ BEGIN_LIBGTOP_DECLS
/* Maximum length of a mountpoint/device name in glibtop_mountlist. */
#define GLIBTOP_MOUNTENTRY_LEN 79
/* Maximum length of a network interface name. */
#define GLIBTOP_INTERFACE_LEN 32
/* This is ((u_int64_t)-1) */
#define GLIBTOP_UNLIMITED (~(u_int64_t)0)
/* Maximum length of a backend name. */
#define GLIBTOP_BACKEND_NAME_LEN 40
END_LIBGTOP_DECLS
#endif

View File

@@ -57,14 +57,14 @@ struct _glibtop_loadavg
#define glibtop_get_loadavg_r glibtop_get_loadavg_s
#endif
void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
int glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
#if GLIBTOP_SUID_LOADAVG
void glibtop_init_loadavg_p (glibtop *server);
void glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
int glibtop_init_loadavg_p (glibtop *server);
int glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf);
#else
void glibtop_init_loadavg_s (glibtop *server);
void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
int glibtop_init_loadavg_s (glibtop *server);
int glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -65,14 +65,14 @@ struct _glibtop_mem
#define glibtop_get_mem_r glibtop_get_mem_s
#endif
void glibtop_get_mem_l (glibtop *server, glibtop_mem *buf);
int glibtop_get_mem_l (glibtop *server, glibtop_mem *buf);
#if GLIBTOP_SUID_MEM
void glibtop_init_mem_p (glibtop *server);
void glibtop_get_mem_p (glibtop *server, glibtop_mem *buf);
int glibtop_init_mem_p (glibtop *server);
int glibtop_get_mem_p (glibtop *server, glibtop_mem *buf);
#else
void glibtop_init_mem_s (glibtop *server);
void glibtop_get_mem_s (glibtop *server, glibtop_mem *buf);
int glibtop_init_mem_s (glibtop *server);
int glibtop_get_mem_s (glibtop *server, glibtop_mem *buf);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -29,18 +29,13 @@
#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;
@@ -49,23 +44,15 @@ struct _glibtop_mountentry
char type [GLIBTOP_MOUNTENTRY_LEN+1];
};
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(array,all_fs) glibtop_get_mountlist_l(glibtop_global_server, array, all_fs)
#define glibtop_get_mountlist_r glibtop_get_mountlist_s
glibtop_mountentry *
glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf, int all_fs);
glibtop_get_mountlist_l (glibtop *server, glibtop_array *array, int all_fs);
glibtop_mountentry *
glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs);
glibtop_get_mountlist_s (glibtop *server, glibtop_array *array, int all_fs);
#ifdef GLIBTOP_NAMES

View File

@@ -31,28 +31,28 @@
BEGIN_LIBGTOP_DECLS
#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_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_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_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 */
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 */
};
#define glibtop_get_msg_limits(msg) glibtop_get_msg_limits_l(glibtop_global_server, msg)
@@ -63,14 +63,14 @@ struct _glibtop_msg_limits
#define glibtop_get_msg_limits_r glibtop_get_msg_limits_s
#endif
void glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf);
int glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf);
#if GLIBTOP_SUID_MSG_LIMITS
void glibtop_init_msg_limits_p (glibtop *server);
void glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf);
int glibtop_init_msg_limits_p (glibtop *server);
int glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf);
#else
void glibtop_init_msg_limits_s (glibtop *server);
void glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf);
int glibtop_init_msg_limits_s (glibtop *server);
int glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf);
#endif
#ifdef GLIBTOP_NAMES

87
include/glibtop/netinfo.h Normal file
View File

@@ -0,0 +1,87 @@
/* -*- 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

View File

@@ -31,51 +31,26 @@
BEGIN_LIBGTOP_DECLS
#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_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_MAX_NETLOAD 14
#define GLIBTOP_MAX_NETLOAD 10
typedef struct _glibtop_netload glibtop_netload;
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
};
#include <glibtop/interfaces.h>
struct _glibtop_netload
{
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*/
@@ -88,22 +63,22 @@ struct _glibtop_netload
collisions; /* GLIBTOP_NETLOAD_COLLISIONS */
};
#define glibtop_get_netload(netload,interface) glibtop_get_netload_l(glibtop_global_server, netload, interface)
#define glibtop_get_netload(netload,interface,transport,protocol) glibtop_get_netload_l(glibtop_global_server, netload, interface, transport, protocol)
#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
void glibtop_get_netload_l (glibtop *server, glibtop_netload *buf, const char *interface);
int glibtop_get_netload_l (glibtop *server, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol);
#if GLIBTOP_SUID_NETLOAD
void glibtop_init_netload_p (glibtop *server);
void glibtop_get_netload_p (glibtop *server, glibtop_netload *buf, const char *interface);
int glibtop_init_netload_p (glibtop *server);
int glibtop_get_netload_p (glibtop *server, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol);
#else
void glibtop_init_netload_s (glibtop *server);
void glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, const char *interface);
int glibtop_init_netload_s (glibtop *server);
int glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, const char *interface, unsigned transport, unsigned protocol);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -25,7 +25,6 @@
#define __GLIBTOP_OPEN_H__
#include <glibtop.h>
#include <glibtop/read.h>
#include <glibtop/error.h>
BEGIN_LIBGTOP_DECLS
@@ -54,7 +53,7 @@ BEGIN_LIBGTOP_DECLS
#define GLIBTOP_ERROR_METHOD_DEFAULT GLIBTOP_ERROR_METHOD_WARN_ONCE
void
glibtop_open_l (glibtop *server, const char *program_name,
glibtop_open_l (glibtop *server, const char *backend_name,
const unsigned long features, const unsigned flags);
void
@@ -69,6 +68,13 @@ 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

View File

@@ -36,15 +36,20 @@ BEGIN_LIBGTOP_DECLS
#define GLIBTOP_PARAM_PORT 5
#define GLIBTOP_PARAM_ERROR_METHOD 6
#define GLIBTOP_PARAM_REQUIRED 7
#define GLIBTOP_PARAM_REMOTE_USER 8
#define GLIBTOP_PARAM_PATH_RSH 9
#define glibtop_get_parameter(p1,p2,p3) glibtop_get_parameter_l(glibtop_global_server,p1,p2,p3)
#define glibtop_set_parameter(p1,p2,p3) glibtop_set_parameter_l(glibtop_global_server,p1,p2,p3)
size_t
ssize_t
glibtop_get_parameter_l (glibtop *server, const unsigned parameter,
void *data_ptr, size_t data_size);
void
int
glibtop_get_parameter_size_l (glibtop *server, const unsigned parameter);
int
glibtop_set_parameter_l (glibtop *server, const unsigned parameter,
const void *data_ptr, size_t data_size);

View File

@@ -61,14 +61,14 @@ struct _glibtop_ppp
#define glibtop_get_ppp_r glibtop_get_ppp_s
#endif
void glibtop_get_ppp_l (glibtop *server, glibtop_ppp *buf, unsigned short device);
int glibtop_get_ppp_l (glibtop *server, glibtop_ppp *buf, unsigned short device);
#if GLIBTOP_SUID_PPP
void glibtop_init_ppp_p (glibtop *server);
void glibtop_get_ppp_p (glibtop *server, glibtop_ppp *buf, unsigned short device);
int glibtop_init_ppp_p (glibtop *server);
int glibtop_get_ppp_p (glibtop *server, glibtop_ppp *buf, unsigned short device);
#else
void glibtop_init_ppp_s (glibtop *server);
void glibtop_get_ppp_s (glibtop *server, glibtop_ppp *buf, unsigned short device);
int glibtop_init_ppp_s (glibtop *server);
int glibtop_get_ppp_s (glibtop *server, glibtop_ppp *buf, unsigned short device);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -29,21 +29,12 @@
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/compat_10.h>
#include <glibtop/array.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_PROC_ARGS_SIZE 0
#define GLIBTOP_MAX_PROC_ARGS 1
typedef struct _glibtop_proc_args glibtop_proc_args;
struct _glibtop_proc_args
{
u_int64_t flags,
size; /* GLIBTOP_PROC_ARGS_SIZE */
};
#define glibtop_get_proc_args(proc_args,pid,max_len) glibtop_get_proc_args_l(glibtop_global_server, proc_args, pid, max_len)
#define glibtop_get_proc_args(array,pid) glibtop_get_proc_args_l(glibtop_global_server, array, pid)
#if GLIBTOP_SUID_PROC_ARGS
#define glibtop_get_proc_args_r glibtop_get_proc_args_p
@@ -51,22 +42,19 @@ struct _glibtop_proc_args
#define glibtop_get_proc_args_r glibtop_get_proc_args_s
#endif
char *
glibtop_get_proc_args_l (glibtop *server, glibtop_proc_args *buf,
pid_t pid, unsigned max_len);
char **
glibtop_get_proc_args_l (glibtop *server, glibtop_array *array, pid_t pid);
#if GLIBTOP_SUID_PROC_ARGS
void glibtop_init_proc_args_p (glibtop *server);
int glibtop_init_proc_args_p (glibtop *server);
char *
glibtop_get_proc_args_p (glibtop *server, glibtop_proc_args *buf,
pid_t pid, unsigned max_len);
char **
glibtop_get_proc_args_p (glibtop *server, glibtop_array *array, pid_t pid);
#else
void glibtop_init_proc_args_s (glibtop *server);
int glibtop_init_proc_args_s (glibtop *server);
char *
glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf,
pid_t pid, unsigned max_len);
char **
glibtop_get_proc_args_s (glibtop *server, glibtop_array *array, pid_t pid);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -85,14 +85,14 @@ struct _glibtop_proc_kernel
#define glibtop_get_proc_kernel_r glibtop_get_proc_kernel_s
#endif
void glibtop_get_proc_kernel_l (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
int glibtop_get_proc_kernel_l (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_KERNEL
void glibtop_init_proc_kernel_p (glibtop *server);
void glibtop_get_proc_kernel_p (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
int glibtop_init_proc_kernel_p (glibtop *server);
int glibtop_get_proc_kernel_p (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
#else
void glibtop_init_proc_kernel_s (glibtop *server);
void glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
int glibtop_init_proc_kernel_s (glibtop *server);
int glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, pid_t pid);
#endif
#ifdef GLIBTOP_NAMES

View File

@@ -29,14 +29,11 @@
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/compat_10.h>
#include <glibtop/array.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_PROCLIST_NUMBER 0
#define GLIBTOP_PROCLIST_TOTAL 1
#define GLIBTOP_PROCLIST_SIZE 2
#define GLIBTOP_MAX_PROCLIST 3
/* You can use the folowing constants as the `which' member of
* glibtop_get_proclist () to specify which processes to fetch. */
@@ -47,6 +44,7 @@ BEGIN_LIBGTOP_DECLS
#define GLIBTOP_KERN_PROC_TTY 4
#define GLIBTOP_KERN_PROC_UID 5
#define GLIBTOP_KERN_PROC_RUID 6
#define GLIBTOP_KERN_PROC_PPID 7
#define GLIBTOP_KERN_PROC_MASK 15
@@ -54,17 +52,7 @@ BEGIN_LIBGTOP_DECLS
#define GLIBTOP_EXCLUDE_SYSTEM 0x2000
#define GLIBTOP_EXCLUDE_NOTTY 0x4000
typedef struct _glibtop_proclist glibtop_proclist;
struct _glibtop_proclist
{
u_int64_t flags,
number, /* GLIBTOP_PROCLIST_NUMBER */
total, /* GLIBTOP_PROCLIST_TOTAL */
size; /* GLIBTOP_PROCLIST_SIZE */
};
#define glibtop_get_proclist(proclist,which,arg) glibtop_get_proclist_l(glibtop_global_server, proclist, which, arg)
#define glibtop_get_proclist(array,which,arg) glibtop_get_proclist_l(glibtop_global_server, array, which, arg)
#if GLIBTOP_SUID_PROCLIST
#define glibtop_get_proclist_r glibtop_get_proclist_p
@@ -73,20 +61,20 @@ struct _glibtop_proclist
#endif
unsigned *
glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
glibtop_get_proclist_l (glibtop *server, glibtop_array *array,
int64_t which, int64_t arg);
#if GLIBTOP_SUID_PROCLIST
void glibtop_init_proclist_p (glibtop *server);
int glibtop_init_proclist_p (glibtop *server);
unsigned *
glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
glibtop_get_proclist_p (glibtop *server, glibtop_array *array,
int64_t which, int64_t arg);
#else
void glibtop_init_proclist_s (glibtop *server);
int glibtop_init_proclist_s (glibtop *server);
unsigned *
glibtop_get_proclist_s (glibtop *server, glibtop_proclist *buf,
glibtop_get_proclist_s (glibtop *server, glibtop_array *array,
int64_t which, int64_t arg);
#endif

View File

@@ -29,14 +29,11 @@
#include <glibtop.h>
#include <glibtop/global.h>
#include <glibtop/compat_10.h>
#include <glibtop/array.h>
BEGIN_LIBGTOP_DECLS
#define GLIBTOP_PROC_MAP_NUMBER 0
#define GLIBTOP_PROC_MAP_TOTAL 1
#define GLIBTOP_PROC_MAP_SIZE 2
#define GLIBTOP_MAX_PROC_MAP 3
#define GLIBTOP_MAP_ENTRY_START 1
#define GLIBTOP_MAP_ENTRY_END 2
#define GLIBTOP_MAP_ENTRY_OFFSET 3
@@ -57,23 +54,13 @@ BEGIN_LIBGTOP_DECLS
typedef struct _glibtop_map_entry glibtop_map_entry;
typedef struct _glibtop_proc_map glibtop_proc_map;
struct _glibtop_map_entry
{
u_int64_t flags, start, end, offset, perm, inode, device;
char filename [GLIBTOP_MAP_FILENAME_LEN+1];
};
struct _glibtop_proc_map
{
u_int64_t flags,
number, /* GLIBTOP_PROC_MAP_NUMBER */
total, /* GLIBTOP_PROC_MAP_TOTAL */
size; /* GLIBTOP_PROC_MAP_SIZE */
};
#define glibtop_get_proc_map(proc_map,pid) glibtop_get_proc_map_l(glibtop_global_server, proc_map, pid)
#define glibtop_get_proc_map(array,pid) glibtop_get_proc_map_l(glibtop_global_server, array, pid)
#if GLIBTOP_SUID_PROC_MAP
#define glibtop_get_proc_map_r glibtop_get_proc_map_p
@@ -82,18 +69,18 @@ struct _glibtop_proc_map
#endif
glibtop_map_entry *
glibtop_get_proc_map_l (glibtop *server, glibtop_proc_map *buf, pid_t pid);
glibtop_get_proc_map_l (glibtop *server, glibtop_array *array, pid_t pid);
#if GLIBTOP_SUID_PROC_MAP
void glibtop_init_proc_map_p (glibtop *server);
int glibtop_init_proc_map_p (glibtop *server);
glibtop_map_entry *
glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf, pid_t pid);
glibtop_get_proc_map_p (glibtop *server, glibtop_array *array, pid_t pid);
#else
void glibtop_init_proc_map_s (glibtop *server);
int glibtop_init_proc_map_s (glibtop *server);
glibtop_map_entry *
glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf, pid_t pid);
glibtop_get_proc_map_s (glibtop *server, glibtop_array *array, pid_t pid);
#endif
#ifdef GLIBTOP_NAMES

Some files were not shown because too many files have changed in this diff Show More