Compare commits

..

56 Commits

Author SHA1 Message Date
Martin Baulig
5221f6d4f8 Released LibGTop 1.0.5.
1999-09-29  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.0.5.
1999-09-29 00:46:31 +00:00
Martin Baulig
ac175a4cbf updated po files for 1.0.5. 1999-09-29 00:43:54 +00:00
Martin Baulig
f53d1a69bc **** Merged from HEAD ****
1999-09-29  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (libgtop_top_builddir): AC_SUBST this.
1999-09-28 23:29:47 +00:00
Kenneth llphaane Christiansen
adaa9cad97 Updated.
1999-09-29  Kenneth llphaane Christiansen  <kenneth@ripen.dk>

	* da.po: Updated.
1999-09-28 23:02:35 +00:00
Elliot Lee
7201ec7790 Remove %{prefix}/lib/libgtop
Remove %{prefix}/lib/libgtop
1999-09-27 22:43:10 +00:00
Chyla Zbigniew
113525a7d7 Updated Polish translation 1999-09-26 22:31:18 +00:00
Martin Baulig
d6e62e85d2 Set version number to 1.0.5 binary age 4, interface age 4.
1999-09-24  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4,
	interface age 4.
1999-09-24 06:32:28 +00:00
Martin Baulig
ee153445f0 1.0.4. 1999-09-24 06:08:35 +00:00
Martin Baulig
50b43a0f41 Released LibGTop 1.0.4.
1999-09-24  Martin Baulig  <martin@home-of-linux.org>

	Released LibGTop 1.0.4.
1999-09-24 05:53:40 +00:00
Kjartan Maraas
25c26a6620 doh 1999-09-21 22:55:09 +00:00
Kjartan Maraas
0438b9d69a Added Danish translation from Kenneth Christiansen <kenneth@ripen.dk>.
1999-09-22  Kjartan Maraas  <kmaraas@online.no>

	* da.po: Added Danish translation from Kenneth
	Christiansen <kenneth@ripen.dk>.
1999-09-21 22:54:44 +00:00
Vincent Renardias
90c01f24fe Updated.
* Updated.
1999-09-20 14:00:34 +00:00
Martin Baulig
dc0f442247 **** Merged from HEAD ****
1999-09-19  Martin Baulig  <martin@home-of-linux.org>

	* libgtopConf.sh.in: Added MODULE_VERSION on Miguel's
	request (set it to "libgtop-@LIBGTOP_VERSION@").
1999-09-18 23:09:05 +00:00
Pablo Saratxaga
017f4d20c7 merged files from head cvs for translations 1999-09-18 17:09:00 +00:00
Chyla Zbigniew
c021ce7851 Added pl to ALL_LINGUAS 1999-09-17 03:37:44 +00:00
Chyla Zbigniew
93ab9882c3 Added Polish translation 1999-09-17 03:35:23 +00:00
Martin Baulig
a0477c6212 **** Merged from HEAD **** 1999-09-17 00:37:41 +00:00
Martin Baulig
6780e78a6b Set version number to 1.0.4 binary age 3, interface age 3.
1999-09-17  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.4 binary age 3,
	interface age 3.
1999-09-16 22:25:54 +00:00
Martin Baulig
d8871029eb Merged everything since May 31 from HEAD and released LibGTop 1.0.3.
1999-09-16  Martin Baulig  <martin@home-of-linux.org>

	Merged everything since May 31 from HEAD and released
 	LibGTop 1.0.3.
1999-09-16 21:49:18 +00:00
Martin Baulig
6799ce187b **** Merged from HEAD **** 1999-09-16 21:38:03 +00:00
Tomas Ogren
2b6b2578be Synced
1999-09-16  Tomas Ogren  <stric@ing.umu.se>

* sv.po: Synced
1999-09-16 21:37:45 +00:00
Martin Baulig
1b0a9fd291 Should be ok now. 1999-09-16 21:37:20 +00:00
Martin Baulig
43e070dd8b make update-po. 1999-09-16 21:33:27 +00:00
Martin Baulig
b0d18119ff **** Merged from HEAD **** 1999-09-16 21:31:36 +00:00
Kjartan Maraas
be05f8163a Updated translation.
1999-07-11  Kjartan Maraas  <kmaraas@online.no>

		* no.po: Updated translation.
1999-07-11 12:27:13 +00:00
Tomas Ogren
d6cdf95d83 New file
1999-07-11  Tomas Ogren  <stric@ing.umu.se>

* sv.po: New file
1999-07-11 01:41:44 +00:00
Tomas Ögren
2256a9127f darn typo 1999-07-11 01:41:01 +00:00
Tomas Ögren
e6507a80be 1999-07-11 Tomas Ogren <stric@ing.umu.se>e
* configure.in: Added sv to ALL_LINGUAS
1999-07-11 01:40:47 +00:00
Tomas Ogren
8411e566b4 Fixed a tyop
1999-07-11  Tomas Ogren  <stric@ing.umu.se>

* sysdeps/names/procmem.c: Fixed a tyop
1999-07-11 01:35:40 +00:00
Martin Baulig
40854f4179 Set version number to 1.0.3 binary age 2, interface age 2.
1999-05-31  Martin Baulig  <martin@home-of-linux.org>

	* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2,
	interface age 2.
1999-05-31 14:11:07 +00:00
Martin Baulig
41062d0262 Released LibGTop 1.0.2. 1999-05-31 13:34:18 +00:00
Martin Baulig
58c882a860 Enable Timur's BSDI port by default. 1999-05-28 00:43:40 +00:00
Martin Baulig
789d156972 1.0.2. 1999-05-28 00:26:38 +00:00
Martin Baulig
19c24da036 **** Merged from HEAD ****
1999-05-07  Martin Baulig  <martin@home-of-linux.org>

	* server.c (main): There's some problem with uname () - some systems
	like Solaris or Digital Unix return a nonnegative value on success,
	some others like Linux return 0. Since all known systems seem to return
	a negative value on failure, we simply check whether the return value is
	not negative here.
1999-05-27 23:30:48 +00:00
Martin Baulig
929a025f53 **** Merged from HEAD ****
Use `(1L << feature)' instead of `(1 << feature)' to avoid problems
with integer overflows when we add more fields.
1999-05-27 23:30:11 +00:00
Martin Baulig
6a7c289305 *** empty log message *** 1999-05-27 23:26:43 +00:00
Martin Baulig
b65a4a7dcb **** Merged from HEAD **** 1999-05-27 23:23:30 +00:00
Martin Baulig
39b2fffe83 **** Merged from HEAD ****
1999-05-07  Martin Baulig  <martin@home-of-linux.org>

	* timings.c (timersub): Renamed this to `libgtop_timersub' and define
	it on all systems.
1999-05-27 23:19:38 +00:00
Martin Baulig
efb913acff **** Merged from HEAD ****
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-27 22:34:24 +00:00
Martin Baulig
79e756a2f7 **** Merged from HEAD ****
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.
1999-05-27 21:42:13 +00:00
Martin Baulig
b08968e644 **** Merged from HEAD **** 1999-05-27 21:23:18 +00:00
Martin Baulig
dff497d2fa **** Merged from HEAD ****
Use `(1L << feature)' instead of `(1 << feature)' to avoid problems
with integer overflows when we add more fields.
1999-05-27 19:30:30 +00:00
Martin Baulig
38de742ca4 **** Merged from HEAD ****
Merged everything from HEAD for the upcoming release.
1999-05-27 18:56:53 +00:00
Martin Baulig
e0d3401bc4 Only #include <sys/param.h> when inside LibGTop. 1999-05-27 18:41:50 +00:00
Martin Baulig
aae2b5a94d *** empty log message *** 1999-05-27 18:39:32 +00:00
Martin Baulig
a5bd38fc19 **** Merged from HEAD ****
Use `(1L << feature)' instead of `(1 << feature)' to avoid problems
with integer overflows when we add more fields.
1999-05-27 14:04:16 +00:00
Martin Baulig
931b8f065e Merged from HEAD. 1999-05-26 15:31:35 +00:00
Martin Baulig
f7885e488f Merged this from HEAD.
1999-05-26  Martin Baulig  <martin@home-of-linux.org>

	* configure.in (INCLUDES): Define `LIBGTOP_VERSION_CODE' here so we
	can use version conditionals in the sysdeps code.
1999-05-26 13:19:03 +00:00
Martin Baulig
8122db69ee Merged I4B fixes for NetBSD from the HEAD. 1999-05-25 17:32:08 +00:00
Martin Baulig
ab13d4919d Make that "dc" think a bit more clean. 1999-05-21 08:19:58 +00:00
Martin Baulig
1d955fbf1f *** empty log message *** 1999-05-20 10:10:32 +00:00
Martin Baulig
8af25a2003 Merged the LibGTop Manual from the HEAD.
1999-05-16  Martin Baulig  <martin@home-of-linux.org>

	* doc: Merged the LibGTop Manual from the HEAD.
1999-05-16 13:48:14 +00:00
Martin Baulig
12eb6a25ec Applied a patch from David Kaelbling:
some compilers (like the SGI IRIX 6.x native one) enfore the
  "casts are not lvalues" maxim.
1999-05-06 22:09:26 +00:00
Martin Baulig
77ced087a1 This is the `LIBGTOP_STABLE_1_0' branch in CVS; please do only commit bug
1999-05-03  Martin Baulig  <martin@home-of-linux.org>

	This is the `LIBGTOP_STABLE_1_0' branch in CVS; please do only
	commit bug fixes here.

	* LIBGTOP-VERSION: Set version number to 1.0.2 binary age 1,
	interface age 0.
1999-05-03 20:31:51 +00:00
Martin Baulig
983475d0c1 Minor Alpha fixes. 1999-05-03 20:27:25 +00:00
Martin Baulig
70b65c05e5 Merged a few bug fixes from the HEAD. 1999-05-03 20:06:40 +00:00
189 changed files with 15019 additions and 1252 deletions

View File

@@ -32,8 +32,3 @@ ABOUT-NLS
libgtop.spec libgtop.spec
libgtop-0.99.*.tar.gz libgtop-0.99.*.tar.gz
libgtop-0.99.* libgtop-0.99.*
install-sh
mkinstalldirs
missing
INSTALL
COPYING

View File

@@ -1,2 +1,2 @@
Martin Baulig (martin@home-of-linux.org) Martin Baulig (martin@home-of-linux.org)
Josh Sled <jsled@scam.XCF.Berkeley.EDU> Drazen Kacar (dave@srce.hr)

View File

@@ -1,41 +1,84 @@
1999-03-21 Martin Baulig <martin@home-of-linux.org> 1999-09-29 Martin Baulig <martin@home-of-linux.org>
Added a new sysctl () interface to the Linux Kernel. Released LibGTop 1.0.5.
1999-09-29 Martin Baulig <martin@home-of-linux.org>
* configure.in (libgtop_top_builddir): AC_SUBST this.
1999-09-24 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4,
interface age 4.
1999-09-24 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.0.4.
1999-09-22 Kjartan Maraas <kmaraas@online.no>
* configure.in: Added "da" to ALL_LINGUAS.
* kernel/sysctl: Imported. 1999-09-19 Martin Baulig <martin@home-of-linux.org>
* libgtop-sysdeps.m4: If `--enable-hacker-mode' is given, check
for my new sysctl () interface.
1999-03-20 Martin Baulig <martin@home-of-linux.org> * libgtopConf.sh.in: Added MODULE_VERSION on Miguel's
request (set it to "libgtop-@LIBGTOP_VERSION@").
Removed all traces of my old table () Linux kernel hack. 1999-09-18 Pablo Saratxaga <pablo@mandrakesoft.com>
* kernel: Removed. * configure.in, po/*.po: merged *.po files from HEAD CVS
* sysdeps/kernel: Removed.
* libgtop-sysdeps.m4: Don't check for table (); it does not
exist any longer.
1999-03-19 Martin Baulig <martin@home-of-linux.org> 1999-09-17 Martin Baulig <martin@home-of-linux.org>
This is *untested* - please read "sysdeps/freebsd/ChangeLog" ! * configure.in: Make it work if we have GNOME and the user
gave use --without-gnome (fixes bug #1735).
* libgtop-sysdeps.m4: Use the `freebsd' sysdeps directory for 1999-09-17 Martin Baulig <martin@home-of-linux.org>
BSDI as well if the `--enable-hacker-mode' parameter was given.
1999-03-18 Martin Baulig <martin@home-of-linux.org> * LIBGTOP-VERSION: Set version number to 1.0.4 binary age 3,
interface age 3.
* LIBGTOP-VERSION: Set version number to 1.0.2 binary age 1, 1999-09-16 Martin Baulig <martin@home-of-linux.org>
intergace age 1.
1999-03-17 Martin Baulig <martin@home-of-linux.org> Merged everything since May 31 from HEAD and released
LibGTop 1.0.3.
Imported first version of my Solaris port. 1999-07-29 Martin Baulig <martin@home-of-linux.org>
* configure.in: Check for `kstat_open' in `-lkstat'. * include/glibtop/error.h: Use G_GNUC_UNUSED.
* libgtop-sysdeps.m4: Recognize the `solaris' sysdeps directory * configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake
when the `--enable-hacker-mode' parameter was given. conditionals.
1999-07-11 Tomas Ogren <stric@ing.umu.se>
* configure.in: Added sv to ALL_LINGUAS
1999-07-11 Tomas Ogren <stric@ing.umu.se>
* sysdeps/names/procmem.c: Fixed a tyop
1999-05-31 Martin Baulig <martin@home-of-linux.org>
* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2,
interface age 2.
1999-05-31 Martin Baulig <martin@home-of-linux.org>
Released LibGTop 1.0.2.
1999-05-26 Martin Baulig <martin@home-of-linux.org>
* configure.in (INCLUDES): Define `LIBGTOP_VERSION_CODE' here so we
can use version conditionals in the sysdeps code.
1999-05-25 Martin Baulig <martin@home-of-linux.org>
* libgtop-sysdeps.m4: Make the I4B check work for NetBSD.
1999-05-16 Martin Baulig <martin@home-of-linux.org>
* doc: Merged the LibGTop Manual from the HEAD.
1999-03-01 Martin Baulig <martin@home-of-linux.org> 1999-03-01 Martin Baulig <martin@home-of-linux.org>

View File

@@ -8,10 +8,10 @@
# #
LIBGTOP_MAJOR_VERSION=1 LIBGTOP_MAJOR_VERSION=1
LIBGTOP_MINOR_VERSION=0 LIBGTOP_MINOR_VERSION=0
LIBGTOP_MICRO_VERSION=2 LIBGTOP_MICRO_VERSION=5
LIBGTOP_INTERFACE_AGE=1 LIBGTOP_INTERFACE_AGE=4
LIBGTOP_BINARY_AGE=1 LIBGTOP_BINARY_AGE=4
# Increase each time you change the client/server protocol. # Increase each time you change the client/server protocol.
LIBGTOP_SERVER_VERSION=5 LIBGTOP_SERVER_VERSION=5

View File

@@ -11,7 +11,7 @@ support = support
endif endif
SUBDIRS = po intl $(support) macros misc include sysdeps lib src \ SUBDIRS = po intl $(support) macros misc include sysdeps lib src \
$(examples_SUBDIRS) $(examples_SUBDIRS) doc
include_HEADERS = glibtop.h include_HEADERS = glibtop.h
@@ -31,6 +31,8 @@ confexecdir = $(libdir)
confexec_DATA = $(top_builddir)/libgtopConf.sh \ confexec_DATA = $(top_builddir)/libgtopConf.sh \
$(top_builddir)/libgtop-features.def $(top_builddir)/libgtop-features.def
CLEANFILES=libgtopConf.sh
bin_SCRIPTS = $(top_builddir)/libgtop-config bin_SCRIPTS = $(top_builddir)/libgtop-config
## to automatically rebuild aclocal.m4 if any of the macros in ## to automatically rebuild aclocal.m4 if any of the macros in

View File

@@ -138,7 +138,7 @@
#undef NEED_LIBGTOP #undef NEED_LIBGTOP
#undef HAVE_LINUX_SYSCTL #undef HAVE_LINUX_TABLE
#undef HAVE_LIBGTOP_SMP #undef HAVE_LIBGTOP_SMP
#undef HAVE_XAUTH #undef HAVE_XAUTH

View File

@@ -13,6 +13,12 @@ AC_MSG_ERROR([
*** The "dc" utility was not found on your system. *** The "dc" utility was not found on your system.
*** ***
*** When using RedHat Linux, you need to install the "bc" package. *** When using RedHat Linux, you need to install the "bc" package.
***
*** It is now part of the "bc" package, so you should look at
*** ftp://ftp.gnu.org/pub/gnu/bc/ if you want to compile it yourself.
***
*** Other systems and distributions may also have it in their "bc" package,
*** so if there's no "dc" one, please look for "bc".
***]) ***])
fi fi
@@ -47,6 +53,10 @@ AC_PROG_CC
AC_STDC_HEADERS AC_STDC_HEADERS
AC_ARG_PROGRAM AC_ARG_PROGRAM
dnl We need this at some places.
libgtop_top_builddir=`pwd`
AC_SUBST(libgtop_top_builddir)
dnl We don't use `AC_PROG_AWK' since it checks for mawk first which dnl We don't use `AC_PROG_AWK' since it checks for mawk first which
dnl does not work for libgtop. dnl does not work for libgtop.
AC_CHECK_PROGS(AWK, gawk awk, ) AC_CHECK_PROGS(AWK, gawk awk, )
@@ -91,10 +101,15 @@ if test "x$gnome_found" != xyes; then
fi fi
GNOME_SUPPORT_CHECKS GNOME_SUPPORT_CHECKS
else else
AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) if test "x$want_gnome" != xno ; then
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false)
else
GNOME_SUPPORT_CHECKS
fi
fi fi
AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
GNOME_LIBGTOP_SYSDEPS GNOME_LIBGTOP_SYSDEPS
GNOME_LIBGTOP_TYPES GNOME_LIBGTOP_TYPES
@@ -147,11 +162,14 @@ else
fi fi
if test "x$enable_static" != xno; then if test "x$enable_static" != xno; then
static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static $guile_static_examples $smp_static_examples" static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $guile_static_examples $smp_static_examples"
else else
static_targets="" static_targets=""
fi fi
AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes)
AC_SUBST(static_targets) AC_SUBST(static_targets)
AC_SUBST(smp_examples) AC_SUBST(smp_examples)
AC_SUBST(guile_examples) AC_SUBST(guile_examples)
@@ -183,9 +201,6 @@ AC_CHECK_HEADERS(string.h strings.h, break)
AC_REPLACE_FUNCS(strerror) AC_REPLACE_FUNCS(strerror)
AC_CHECK_LIB(kvm, kvm_open) AC_CHECK_LIB(kvm, kvm_open)
dnl Solaris 7
AC_CHECK_LIB(kstat, kstat_open)
dnl For DEC OSF1 dnl For DEC OSF1
AC_CHECK_LIB(mach, vm_statistics) AC_CHECK_LIB(mach, vm_statistics)
@@ -223,7 +238,7 @@ AC_FUNC_STRFTIME
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
dnl ## all 'es_??' are only needed for format numbers different of 'es' dnl ## all 'es_??' are only needed for format numbers different of 'es'
ALL_LINGUAS="de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fr ko no ja" 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 sv"
AM_GNOME_GETTEXT AM_GNOME_GETTEXT
AC_PATH_XTRA AC_PATH_XTRA
@@ -357,7 +372,7 @@ else
guile_def="" guile_def=""
fi fi
INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"' INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -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"'\"'
AC_SUBST(INCLUDES) AC_SUBST(INCLUDES)
@@ -402,12 +417,13 @@ sysdeps/stub_suid/Makefile
sysdeps/sun4/Makefile sysdeps/sun4/Makefile
sysdeps/osf1/Makefile sysdeps/osf1/Makefile
sysdeps/linux/Makefile sysdeps/linux/Makefile
sysdeps/kernel/Makefile
sysdeps/freebsd/Makefile sysdeps/freebsd/Makefile
sysdeps/solaris/Makefile
src/Makefile src/Makefile
src/daemon/Makefile src/daemon/Makefile
src/inodedb/Makefile src/inodedb/Makefile
lib/Makefile lib/Makefile
examples/Makefile examples/Makefile
doc/Makefile
support/Makefile support/Makefile
macros/Makefile]) macros/Makefile])

View File

@@ -13,3 +13,4 @@ second_static
second_linux second_linux
smp_static sysdeps_static netload_static procmap_static mountlist_static smp_static sysdeps_static netload_static procmap_static mountlist_static
smp sysdeps netload procmap mountlist smp sysdeps netload procmap mountlist
timings timings_static

View File

@@ -1,3 +1,22 @@
1999-05-28 Martin Baulig <martin@home-of-linux.org>
* first.c, second.c, sysdeps.c: Use LibGTop version conditionals
so we can more easily merge the code into LIBGTOP_STABLE_1_0.
1999-05-07 Martin Baulig <martin@home-of-linux.org>
* timings.c (timersub): Renamed this to `libgtop_timersub' and define
it on all systems.
Fri Apr 9 00:14:52 1999 Timur Bakeyev <timur@gnu.org>
* timings.c: Added timersub defenition, to make code compilable on
BSDI.
1999-03-24 Martin Baulig <martin@home-of-linux.org>
* timings.c: New example.
1999-03-17 Martin Baulig <martin@home-of-linux.org> 1999-03-17 Martin Baulig <martin@home-of-linux.org>
* first.c, second.c: Fixed a bug that caused a core dump when * first.c, second.c: Fixed a bug that caused a core dump when

View File

@@ -12,13 +12,14 @@ DEFS = @DEFS@
libgtopdir = $(libexecdir)/libgtop libgtopdir = $(libexecdir)/libgtop
libgtop_PROGRAMS = first second\ libgtop_PROGRAMS = first second\
mountlist procmap netload sysdeps\ mountlist procmap netload sysdeps timings \
@static_targets@ @guile_examples@ @smp_examples@ @static_targets@ @guile_examples@ @smp_examples@
EXTRA_PROGRAMS = first_static second_static \ EXTRA_PROGRAMS = first_static second_static \
mountlist_static procmap_static \ mountlist_static procmap_static \
third third_static smp smp_static \ third third_static smp smp_static \
netload_static sysdeps_static netload_static sysdeps_static \
timings_static
first_SOURCES = first.c first_SOURCES = first.c
first_LDADD = $(top_builddir)/lib/libgtop.la \ first_LDADD = $(top_builddir)/lib/libgtop.la \
@@ -108,3 +109,13 @@ smp_static_SOURCES = $(smp_SOURCES)
smp_static_LDADD = $(smp_LDADD) smp_static_LDADD = $(smp_LDADD)
smp_static_LDFLAGS = -static smp_static_LDFLAGS = -static
timings_SOURCES = timings.c
timings_LDADD = $(top_builddir)/lib/libgtop.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

@@ -116,9 +116,16 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_uptime (&data.uptime); 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", printf ("Uptime (0x%08lx): %f, %f\n",
(unsigned long) data.uptime.flags, (unsigned long) data.uptime.flags,
data.uptime.uptime, data.uptime.idletime); data.uptime.uptime, data.uptime.idletime);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_loadavg (&data.loadavg); glibtop_get_loadavg (&data.loadavg);
@@ -242,15 +249,52 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, pid); glibtop_get_proc_state (&data.proc_state, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_State PID %5d (0x%08lx): '%s', %u - "
"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
data.proc_state.uid, data.proc_state.gid,
data.proc_state.ruid, data.proc_state.rgid,
data.proc_state.has_cpu, data.proc_state.processor,
data.proc_state.last_processor);
#else
printf ("Proc_State PID %5d (0x%08lx): '%s', %c, %lu, %lu\n", printf ("Proc_State PID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
(int) pid, (unsigned long) data.proc_state.flags, (int) pid, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state, data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid, (unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid); (unsigned long) data.proc_state.gid);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, pid); 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): " printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid, "%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
(unsigned long) data.proc_uid.flags, (unsigned long) data.proc_uid.flags,
@@ -260,6 +304,7 @@ main (int argc, char *argv [])
data.proc_uid.pgrp, data.proc_uid.session, data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid, data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice); data.proc_uid.priority, data.proc_uid.nice);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, pid); glibtop_get_proc_mem (&data.proc_mem, pid);
@@ -277,6 +322,30 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, pid); glibtop_get_proc_segment (&data.proc_segment, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_data,
(unsigned long) data.proc_segment.end_data,
(unsigned long) data.proc_segment.start_brk,
(unsigned long) data.proc_segment.end_brk,
(unsigned long) data.proc_segment.start_stack,
(unsigned long) data.proc_segment.start_mmap,
(unsigned long) data.proc_segment.arg_start,
(unsigned long) data.proc_segment.arg_end,
(unsigned long) data.proc_segment.env_start,
(unsigned long) data.proc_segment.env_end);
#else
printf ("Proc_Segment PID %5d (0x%08lx): " printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_segment.flags, (unsigned long) data.proc_segment.flags,
@@ -288,6 +357,7 @@ main (int argc, char *argv [])
(unsigned long) data.proc_segment.start_code, (unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code, (unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack); (unsigned long) data.proc_segment.start_stack);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, pid); glibtop_get_proc_time (&data.proc_time, pid);
@@ -308,6 +378,19 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, pid); glibtop_get_proc_signal (&data.proc_signal, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal [0],
(unsigned long) data.proc_signal.signal [1],
(unsigned long) data.proc_signal.blocked [0],
(unsigned long) data.proc_signal.blocked [1],
(unsigned long) data.proc_signal.sigignore [0],
(unsigned long) data.proc_signal.sigignore [1],
(unsigned long) data.proc_signal.sigcatch [0],
(unsigned long) data.proc_signal.sigcatch [1]);
#else
printf ("Proc_Signal PID %5d (0x%08lx): " printf ("Proc_Signal PID %5d (0x%08lx): "
"%lu %lu %lu %lu\n", (int) pid, "%lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_signal.flags, (unsigned long) data.proc_signal.flags,
@@ -315,12 +398,13 @@ main (int argc, char *argv [])
(unsigned long) data.proc_signal.blocked, (unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore, (unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch); (unsigned long) data.proc_signal.sigcatch);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, pid); glibtop_get_proc_kernel (&data.proc_kernel, pid);
printf ("Proc_Kernel PID %5d (0x%08lx): " printf ("Proc_Kernel PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid, "%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
(unsigned long) data.proc_kernel.flags, (unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags, (unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt, (unsigned long) data.proc_kernel.min_flt,
@@ -353,15 +437,52 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, ppid); 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", printf ("Proc_State PPID %5d (0x%08lx): '%s', %c, %lu, %lu\n",
(int) ppid, (unsigned long) data.proc_state.flags, (int) ppid, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state, data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid, (unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid); (unsigned long) data.proc_state.gid);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, ppid); 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): " printf ("Proc_Uid PPID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid, "%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) ppid,
(unsigned long) data.proc_uid.flags, (unsigned long) data.proc_uid.flags,
@@ -371,6 +492,7 @@ main (int argc, char *argv [])
data.proc_uid.pgrp, data.proc_uid.session, data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid, data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice); data.proc_uid.priority, data.proc_uid.nice);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, ppid); glibtop_get_proc_mem (&data.proc_mem, ppid);
@@ -388,6 +510,30 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, ppid); 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): " printf ("Proc_Segment PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) ppid,
(unsigned long) data.proc_segment.flags, (unsigned long) data.proc_segment.flags,
@@ -399,6 +545,7 @@ main (int argc, char *argv [])
(unsigned long) data.proc_segment.start_code, (unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code, (unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack); (unsigned long) data.proc_segment.start_stack);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, ppid); glibtop_get_proc_time (&data.proc_time, ppid);
@@ -419,18 +566,32 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, ppid); 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", printf ("Proc_Signal PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
(int) ppid, (unsigned long) data.proc_signal.flags, (int) ppid, (unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal, (unsigned long) data.proc_signal.signal,
(unsigned long) data.proc_signal.blocked, (unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore, (unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch); (unsigned long) data.proc_signal.sigcatch);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, ppid); glibtop_get_proc_kernel (&data.proc_kernel, ppid);
printf ("Proc_Kernel PPID %5d (0x%08lx): " printf ("Proc_Kernel PPID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) ppid, "%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) ppid,
(unsigned long) data.proc_kernel.flags, (unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags, (unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt, (unsigned long) data.proc_kernel.min_flt,
@@ -463,15 +624,52 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_state (&data.proc_state, 1); 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, printf ("Proc_State INIT %5d (0x%08lx): '%s', %c, %lu, %lu\n", 1,
(unsigned long) data.proc_state.flags, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state, data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid, (unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid); (unsigned long) data.proc_state.gid);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_uid (&data.proc_uid, 1); 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): " printf ("Proc_Uid INIT %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", 1, "%d %d %d %d %d %d %d %d %d %d %d %d\n", 1,
(unsigned long) data.proc_uid.flags, (unsigned long) data.proc_uid.flags,
@@ -481,6 +679,7 @@ main (int argc, char *argv [])
data.proc_uid.pgrp, data.proc_uid.session, data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid, data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice); data.proc_uid.priority, data.proc_uid.nice);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_mem (&data.proc_mem, 1); glibtop_get_proc_mem (&data.proc_mem, 1);
@@ -498,6 +697,30 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_segment (&data.proc_segment, 1); 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): " printf ("Proc_Segment INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1, "%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_segment.flags, (unsigned long) data.proc_segment.flags,
@@ -509,6 +732,7 @@ main (int argc, char *argv [])
(unsigned long) data.proc_segment.start_code, (unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code, (unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack); (unsigned long) data.proc_segment.start_stack);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_time (&data.proc_time, 1); glibtop_get_proc_time (&data.proc_time, 1);
@@ -529,6 +753,19 @@ main (int argc, char *argv [])
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_signal (&data.proc_signal, 1); 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): " printf ("Proc_Signal INIT %5d (0x%08lx): "
"%lu %lu %lu %lu\n", 1, "%lu %lu %lu %lu\n", 1,
(unsigned long) data.proc_signal.flags, (unsigned long) data.proc_signal.flags,
@@ -536,12 +773,13 @@ main (int argc, char *argv [])
(unsigned long) data.proc_signal.blocked, (unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore, (unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch); (unsigned long) data.proc_signal.sigcatch);
#endif
for (c = 0; c < PROFILE_COUNT; c++) for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_kernel (&data.proc_kernel, 1); glibtop_get_proc_kernel (&data.proc_kernel, 1);
printf ("Proc_Kernel INIT %5d (0x%08lx): " printf ("Proc_Kernel INIT %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", 1, "%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", 1,
(unsigned long) data.proc_kernel.flags, (unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags, (unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt, (unsigned long) data.proc_kernel.min_flt,

View File

@@ -43,7 +43,7 @@ int
main (int argc, char *argv []) main (int argc, char *argv [])
{ {
glibtop_netload netload; glibtop_netload netload;
unsigned method, count, port, i; unsigned method, count, port;
struct in_addr addr, subnet; struct in_addr addr, subnet;
char *address_string, *subnet_string; char *address_string, *subnet_string;
char buffer [BUFSIZ]; char buffer [BUFSIZ];

View File

@@ -97,7 +97,7 @@ main (int argc, char *argv [])
unsigned device, device_major, device_minor; unsigned device, device_major, device_minor;
char perm [5]; char perm [5];
if (maps [i].flags & (1 << GLIBTOP_MAP_ENTRY_FILENAME)) if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME))
filename = maps [i].filename; filename = maps [i].filename;
#ifdef GLIBTOP_INODEDB #ifdef GLIBTOP_INODEDB
@@ -116,24 +116,41 @@ main (int argc, char *argv [])
device_minor = (device & 255); device_minor = (device & 255);
device_major = ((device >> 8) & 255); device_major = ((device >> 8) & 255);
if (filename) if (filename) {
fprintf (stderr, "%08lx-%08lx %08lx - " char *format;
"%02x:%02x %08lu - %4s - %s\n",
if (sizeof (void*) == 8)
format = "%016lx-%016lx %016lx - "
"%02x:%02x %08lu - %4s - %s\n";
else
format = "%08lx-%08lx %08lx - "
"%02x:%02x %08lu - %4s - %s\n";
fprintf (stderr, format,
(unsigned long) maps [i].start, (unsigned long) maps [i].start,
(unsigned long) maps [i].end, (unsigned long) maps [i].end,
(unsigned long) maps [i].offset, (unsigned long) maps [i].offset,
device_major, device_minor, device_major, device_minor,
(unsigned long) maps [i].inode, (unsigned long) maps [i].inode,
perm, filename); perm, filename);
else } else {
fprintf (stderr, "%08lx-%08lx %08lx - " char * format;
"%02x:%02x %08lu - %4s\n",
if (sizeof (void*) == 8)
format = "%016lx-%016lx %016lx - "
"%02x:%02x %08lu - %4s\n";
else
format = "%08lx-%08lx %08lx - "
"%02x:%02x %08lu - %4s\n";
fprintf (stderr, format,
(unsigned long) maps [i].start, (unsigned long) maps [i].start,
(unsigned long) maps [i].end, (unsigned long) maps [i].end,
(unsigned long) maps [i].offset, (unsigned long) maps [i].offset,
device_major, device_minor, device_major, device_minor,
(unsigned long) maps [i].inode, (unsigned long) maps [i].inode,
perm); perm);
}
if (filename && (filename != maps [i].filename)) if (filename && (filename != maps [i].filename))
glibtop_free (filename); glibtop_free (filename);

View File

@@ -31,8 +31,6 @@
#include <glibtop/union.h> #include <glibtop/union.h>
#include <glibtop/sysdeps.h> #include <glibtop/sysdeps.h>
#include <math.h>
static void static void
output (pid_t pid) output (pid_t pid)
{ {
@@ -52,16 +50,53 @@ output (pid_t pid)
printf ("\n"); printf ("\n");
glibtop_get_proc_state (&data.proc_state, pid); glibtop_get_proc_state (&data.proc_state, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_State PID %5d (0x%08lx): '%s', %u - "
"%u, %u, %u, %u - %u, %u, %u\n", (int) pid,
(unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state,
data.proc_state.uid, data.proc_state.gid,
data.proc_state.ruid, data.proc_state.rgid,
data.proc_state.has_cpu, data.proc_state.processor,
data.proc_state.last_processor);
#else
printf ("Proc_State PID %5d (0x%08lx): " printf ("Proc_State PID %5d (0x%08lx): "
"'%s', %c, %lu, %lu\n", (int) pid, "'%s', %c, %lu, %lu\n", (int) pid,
(unsigned long) data.proc_state.flags, (unsigned long) data.proc_state.flags,
data.proc_state.cmd, data.proc_state.state, data.proc_state.cmd, data.proc_state.state,
(unsigned long) data.proc_state.uid, (unsigned long) data.proc_state.uid,
(unsigned long) data.proc_state.gid); (unsigned long) data.proc_state.gid);
#endif
glibtop_get_proc_uid (&data.proc_uid, pid); 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): " printf ("Proc_Uid PID %5d (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid, "%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid,
(unsigned long) data.proc_uid.flags, (unsigned long) data.proc_uid.flags,
@@ -71,7 +106,8 @@ output (pid_t pid)
data.proc_uid.pgrp, data.proc_uid.session, data.proc_uid.pgrp, data.proc_uid.session,
data.proc_uid.tty, data.proc_uid.tpgid, data.proc_uid.tty, data.proc_uid.tpgid,
data.proc_uid.priority, data.proc_uid.nice); data.proc_uid.priority, data.proc_uid.nice);
#endif
glibtop_get_proc_mem (&data.proc_mem, pid); glibtop_get_proc_mem (&data.proc_mem, pid);
printf ("Proc_Mem PID %5d (0x%08lx): " printf ("Proc_Mem PID %5d (0x%08lx): "
@@ -86,6 +122,30 @@ output (pid_t pid)
glibtop_get_proc_segment (&data.proc_segment, pid); glibtop_get_proc_segment (&data.proc_segment, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx 0x%lx "
"0x%lx 0x%lx 0x%lx 0x%lx\n", (int) pid,
(unsigned long) data.proc_segment.flags,
(unsigned long) data.proc_segment.text_rss,
(unsigned long) data.proc_segment.shlib_rss,
(unsigned long) data.proc_segment.data_rss,
(unsigned long) data.proc_segment.stack_rss,
(unsigned long) data.proc_segment.dirty_size,
(unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_data,
(unsigned long) data.proc_segment.end_data,
(unsigned long) data.proc_segment.start_brk,
(unsigned long) data.proc_segment.end_brk,
(unsigned long) data.proc_segment.start_stack,
(unsigned long) data.proc_segment.start_mmap,
(unsigned long) data.proc_segment.arg_start,
(unsigned long) data.proc_segment.arg_end,
(unsigned long) data.proc_segment.env_start,
(unsigned long) data.proc_segment.env_end);
#else
printf ("Proc_Segment PID %5d (0x%08lx): " printf ("Proc_Segment PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_segment.flags, (unsigned long) data.proc_segment.flags,
@@ -97,6 +157,7 @@ output (pid_t pid)
(unsigned long) data.proc_segment.start_code, (unsigned long) data.proc_segment.start_code,
(unsigned long) data.proc_segment.end_code, (unsigned long) data.proc_segment.end_code,
(unsigned long) data.proc_segment.start_stack); (unsigned long) data.proc_segment.start_stack);
#endif
glibtop_get_proc_time (&data.proc_time, pid); glibtop_get_proc_time (&data.proc_time, pid);
@@ -115,6 +176,19 @@ output (pid_t pid)
glibtop_get_proc_signal (&data.proc_signal, pid); glibtop_get_proc_signal (&data.proc_signal, pid);
#if LIBGTOP_VERSION_CODE > 1001000
printf ("Proc_Signal PID %5d (0x%08lx): "
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
(unsigned long) data.proc_signal.flags,
(unsigned long) data.proc_signal.signal [0],
(unsigned long) data.proc_signal.signal [1],
(unsigned long) data.proc_signal.blocked [0],
(unsigned long) data.proc_signal.blocked [1],
(unsigned long) data.proc_signal.sigignore [0],
(unsigned long) data.proc_signal.sigignore [1],
(unsigned long) data.proc_signal.sigcatch [0],
(unsigned long) data.proc_signal.sigcatch [1]);
#else
printf ("Proc_Signal PID %5d (0x%08lx): " printf ("Proc_Signal PID %5d (0x%08lx): "
"%lu %lu %lu %lu\n", (int) pid, "%lu %lu %lu %lu\n", (int) pid,
(unsigned long) data.proc_signal.flags, (unsigned long) data.proc_signal.flags,
@@ -122,11 +196,12 @@ output (pid_t pid)
(unsigned long) data.proc_signal.blocked, (unsigned long) data.proc_signal.blocked,
(unsigned long) data.proc_signal.sigignore, (unsigned long) data.proc_signal.sigignore,
(unsigned long) data.proc_signal.sigcatch); (unsigned long) data.proc_signal.sigcatch);
#endif
glibtop_get_proc_kernel (&data.proc_kernel, pid); glibtop_get_proc_kernel (&data.proc_kernel, pid);
printf ("Proc_Kernel PID %5d (0x%08lx): " printf ("Proc_Kernel PID %5d (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid, "%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid,
(unsigned long) data.proc_kernel.flags, (unsigned long) data.proc_kernel.flags,
(unsigned long) data.proc_kernel.k_flags, (unsigned long) data.proc_kernel.k_flags,
(unsigned long) data.proc_kernel.min_flt, (unsigned long) data.proc_kernel.min_flt,

View File

@@ -27,8 +27,6 @@
#include <glibtop/cpu.h> #include <glibtop/cpu.h>
#include <glibtop/xmalloc.h> #include <glibtop/xmalloc.h>
#include <math.h>
int int
main (int argc, char *argv []) main (int argc, char *argv [])
{ {
@@ -67,7 +65,7 @@ main (int argc, char *argv [])
memset (separator, '-', 91); memset (separator, '-', 91);
separator [92] = '\0'; separator [92] = '\0';
sprintf (buffer, _("Ticks (%d per second):"), frequency); sprintf (buffer, _("Ticks (%ld per second):"), frequency);
printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer, printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer,
_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator); _("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator);

View File

@@ -38,7 +38,7 @@ int
main (int argc, char *argv []) main (int argc, char *argv [])
{ {
glibtop_sysdeps sysdeps; glibtop_sysdeps sysdeps;
unsigned method, count, port, i; unsigned method, count, port;
char buffer [BUFSIZ]; char buffer [BUFSIZ];
count = PROFILE_COUNT; count = PROFILE_COUNT;
@@ -69,10 +69,13 @@ main (int argc, char *argv [])
glibtop_get_sysdeps (&sysdeps); glibtop_get_sysdeps (&sysdeps);
#define FEATURE_CHECK(f) ((sysdeps.features & (1 << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0) #define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0)
printf ("Sysdeps (0x%08lx):\n\n" printf ("Sysdeps (0x%08lx):\n\n"
"\tfeatures:\t\t0x%08lx\n\n" "\tfeatures:\t\t0x%08lx\n\n"
#if LIBGTOP_VERSION_CODE > 1001000
"\tpointer_size:\t\t0x%08lx\n\n"
#endif
"\tcpu:\t\t%d\t0x%08lx\n" "\tcpu:\t\t%d\t0x%08lx\n"
"\tmem:\t\t%d\t0x%08lx\n" "\tmem:\t\t%d\t0x%08lx\n"
"\tswap:\t\t%d\t0x%08lx\n\n" "\tswap:\t\t%d\t0x%08lx\n\n"
@@ -97,6 +100,9 @@ main (int argc, char *argv [])
"\tppp:\t\t%d\t0x%08lx\n\n", "\tppp:\t\t%d\t0x%08lx\n\n",
(unsigned long) sysdeps.flags, (unsigned long) sysdeps.flags,
(unsigned long) sysdeps.features, (unsigned long) sysdeps.features,
#if LIBGTOP_VERSION_CODE > 1001000
(unsigned long) sysdeps.pointer_size,
#endif
FEATURE_CHECK(CPU), FEATURE_CHECK(CPU),
(unsigned long) sysdeps.cpu, (unsigned long) sysdeps.cpu,
FEATURE_CHECK(MEM), FEATURE_CHECK(MEM),

357
examples/timings.c Normal file
View File

@@ -0,0 +1,357 @@
/* $Id$ */
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
LibGTop is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
LibGTop is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LibGTop; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <locale.h>
#include <glibtop.h>
#include <glibtop/open.h>
#include <glibtop/close.h>
#include <glibtop/xmalloc.h>
#include <glibtop/parameter.h>
#include <glibtop/union.h>
#include <glibtop/sysdeps.h>
#include <sys/times.h>
#include <sys/resource.h>
#ifndef PROFILE_COUNT
#define PROFILE_COUNT 100000L
#endif
#ifndef PROFILE_COUNT_EXPENSIVE
#define PROFILE_COUNT_EXPENSIVE 10000L
#endif
#define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 + (unsigned long) elapsed_utime.tv_usec)
#define ELAPSED_STIME ((unsigned long) elapsed_stime.tv_sec * 1000000 + (unsigned long) elapsed_stime.tv_usec)
#define libgtop_timeradd(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
if ((vvp)->tv_usec >= 1000000) { \
(vvp)->tv_sec++; \
(vvp)->tv_usec -= 1000000; \
} \
} while (0)
#define libgtop_timersub(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
if ((vvp)->tv_usec < 0) { \
(vvp)->tv_sec--; \
(vvp)->tv_usec += 1000000; \
} \
} while (0)
int
main (int argc, char *argv [])
{
glibtop_union data;
unsigned c, count, *ptr;
struct rusage total_start, total_end;
struct rusage rusage_start, rusage_end;
struct timeval elapsed_utime, elapsed_stime;
pid_t pid;
count = PROFILE_COUNT;
setlocale (LC_ALL, "");
bindtextdomain (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

@@ -28,13 +28,22 @@
BEGIN_LIBGTOP_DECLS BEGIN_LIBGTOP_DECLS
#ifndef G_GNUC_UNUSED
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
#define G_GNUC_UNUSED \
__attribute__((unused))
#else /* !__GNUC__ */
#define G_GNUC_UNUSED
#endif /* !__GNUC__ */
#endif /* defined G_GNUC_UNUSED */
void glibtop_error_vr (glibtop *server, char *format, va_list args); void glibtop_error_vr (glibtop *server, char *format, va_list args);
void glibtop_warn_vr (glibtop *server, char *format, va_list args); void glibtop_warn_vr (glibtop *server, char *format, va_list args);
void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args); void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args);
void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args); void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args);
static void static void G_GNUC_UNUSED
glibtop_error_r (glibtop *server, char *format, ...) glibtop_error_r (glibtop *server, char *format, ...)
{ {
va_list args; va_list args;
@@ -44,7 +53,7 @@ glibtop_error_r (glibtop *server, char *format, ...)
va_end (args); va_end (args);
} }
static void static void G_GNUC_UNUSED
glibtop_warn_r (glibtop *server, char *format, ...) glibtop_warn_r (glibtop *server, char *format, ...)
{ {
va_list args; va_list args;
@@ -54,7 +63,7 @@ glibtop_warn_r (glibtop *server, char *format, ...)
va_end (args); va_end (args);
} }
static void static void G_GNUC_UNUSED
glibtop_error_io_r (glibtop *server, char *format, ...) glibtop_error_io_r (glibtop *server, char *format, ...)
{ {
va_list args; va_list args;
@@ -64,7 +73,7 @@ glibtop_error_io_r (glibtop *server, char *format, ...)
va_end (args); va_end (args);
} }
static void static void G_GNUC_UNUSED
glibtop_warn_io_r (glibtop *server, char *format, ...) glibtop_warn_io_r (glibtop *server, char *format, ...)
{ {
va_list args; va_list args;

38
include/glibtop/limits.h Normal file
View File

@@ -0,0 +1,38 @@
/* -*- 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_LIMITS_H__
#define __GLIBTOP_LIMITS_H__
#include <glibtop/global.h>
BEGIN_LIBGTOP_DECLS
/* Nobody should really be using more than 64 processors. */
#define GLIBTOP_NCPU 64
END_LIBGTOP_DECLS
#endif

14
kernel/ChangeLog Normal file
View File

@@ -0,0 +1,14 @@
1998-07-21 Martin Baulig <martin@home-of-linux.org>
* table20: New directory for 2.0.xx kernels.
* table21: New directory for 2.1.xx kernels.
* *: Moved into `table20' and `table21'.
1998-06-14 Martin Baulig <baulig@taurus.uni-trier.de>
* README: Added README.
* kernel.patch: Patch for the Linux kernel to add the
new system call.

1
kernel/sysctl/.cvsignore Normal file
View File

@@ -0,0 +1 @@
*.flags

File diff suppressed because it is too large Load Diff

View File

@@ -5,12 +5,19 @@
enum { enum {
LIBGTOP_VERSION = 1, LIBGTOP_VERSION = 1,
LIBGTOP_PROC,
LIBGTOP_UPDATE_EXPENSIVE, LIBGTOP_UPDATE_EXPENSIVE,
LIBGTOP_STAT, LIBGTOP_STAT = 101,
LIBGTOP_MEM, LIBGTOP_MEM,
LIBGTOP_SWAP, LIBGTOP_SWAP,
LIBGTOP_PROCLIST LIBGTOP_PROCLIST = 201,
LIBGTOP_PROC_STATE = 211,
LIBGTOP_PROC_KERNEL,
LIBGTOP_PROC_SEGMENT,
LIBGTOP_PROC_MEM,
LIBGTOP_PROC_SIGNAL,
LIBGTOP_PROC_ARGS = 251,
LIBGTOP_PROC_MAPS,
LIBGTOP_NETLOAD = 301
}; };
enum { enum {
@@ -23,12 +30,47 @@ enum {
LIBGTOP_PROCLIST_RUID LIBGTOP_PROCLIST_RUID
}; };
#define LIBGTOP_PROCLIST_MASK 15 #define LIBGTOP_NSIG 4
#define LIBGTOP_PROCLIST_MASK 15
#define LIBGTOP_MAX_GROUPS 32
#define LIBGTOP_EXCLUDE_IDLE 0x1000 #define LIBGTOP_EXCLUDE_IDLE 0x1000
#define LIBGTOP_EXCLUDE_SYSTEM 0x2000 #define LIBGTOP_EXCLUDE_SYSTEM 0x2000
#define LIBGTOP_EXCLUDE_NOTTY 0x4000 #define LIBGTOP_EXCLUDE_NOTTY 0x4000
#define LIBGTOP_TASK_RUNNING 1
#define LIBGTOP_TASK_INTERRUPTIBLE 2
#define LIBGTOP_TASK_UNINTERRUPTIBLE 4
#define LIBGTOP_TASK_ZOMBIE 8
#define LIBGTOP_TASK_STOPPED 16
#define LIBGTOP_TASK_SWAPPING 32
#define LIBGTOP_VM_READ 0x0001 /* currently active flags */
#define LIBGTOP_VM_WRITE 0x0002
#define LIBGTOP_VM_EXEC 0x0004
#define LIBGTOP_VM_SHARED 0x0008
#define LIBGTOP_VM_MAYREAD 0x0010 /* limits for mprotect() etc */
#define LIBGTOP_VM_MAYWRITE 0x0020
#define LIBGTOP_VM_MAYEXEC 0x0040
#define LIBGTOP_VM_MAYSHARE 0x0080
#define LIBGTOP_VM_GROWSDOWN 0x0100 /* general info on the segment */
#define LIBGTOP_VM_GROWSUP 0x0200
#define LIBGTOP_VM_SHM 0x0400 /* shared memory area, don't swap out */
#define LIBGTOP_VM_DENYWRITE 0x0800 /* ETXTBSY on write attempts.. */
#define LIBGTOP_VM_EXECUTABLE 0x1000
#define LIBGTOP_VM_LOCKED 0x2000
#define LIBGTOP_VM_IO 0x4000 /* Memory mapped I/O or similar */
#define LIBGTOP_MAP_PATH_LEN (PAGE_SIZE - sizeof (libgtop_proc_maps_header_t))
#ifndef min
#define min(a,b) ((a < b) ? a : b)
#endif
typedef struct libgtop_stat libgtop_stat_t; typedef struct libgtop_stat libgtop_stat_t;
typedef struct libgtop_cpu libgtop_cpu_t; typedef struct libgtop_cpu libgtop_cpu_t;
@@ -36,6 +78,17 @@ typedef struct libgtop_mem libgtop_mem_t;
typedef struct libgtop_swap libgtop_swap_t; typedef struct libgtop_swap libgtop_swap_t;
typedef struct libgtop_proclist libgtop_proclist_t; typedef struct libgtop_proclist libgtop_proclist_t;
typedef struct libgtop_proc_state libgtop_proc_state_t;
typedef struct libgtop_proc_kernel libgtop_proc_kernel_t;
typedef struct libgtop_proc_segment libgtop_proc_segment_t;
typedef struct libgtop_proc_mem libgtop_proc_mem_t;
typedef struct libgtop_proc_signal libgtop_proc_signal_t;
typedef struct libgtop_proc_maps_header libgtop_proc_maps_header_t;
typedef struct libgtop_proc_maps libgtop_proc_maps_t;
typedef struct libgtop_netload libgtop_netload_t;
struct libgtop_cpu struct libgtop_cpu
{ {
unsigned long total; /* Total CPU Time */ unsigned long total; /* Total CPU Time */
@@ -51,6 +104,7 @@ struct libgtop_mem
unsigned long freeram; /* Available memory size */ unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */ unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */ unsigned long bufferram; /* Memory used by buffers */
unsigned long cachedram;
}; };
struct libgtop_swap struct libgtop_swap
@@ -61,6 +115,7 @@ struct libgtop_swap
struct libgtop_proclist struct libgtop_proclist
{ {
int count;
int nr_running, nr_tasks, last_pid; int nr_running, nr_tasks, last_pid;
unsigned pids [NR_TASKS]; unsigned pids [NR_TASKS];
}; };
@@ -79,4 +134,109 @@ struct libgtop_stat
unsigned int pswpin, pswpout; /* # of swap pgs brought in/out */ unsigned int pswpin, pswpout; /* # of swap pgs brought in/out */
}; };
struct libgtop_proc_state
{
long state;
unsigned long flags;
char comm [16];
int uid, euid, suid, fsuid;
int gid, egid, sgid, fsgid;
int pid, pgrp, ppid;
int session;
unsigned int tty;
int tpgid;
long priority, counter, def_priority;
long utime, stime, cutime, cstime, start_time;
long per_cpu_utime [NR_CPUS], per_cpu_stime [NR_CPUS];
int has_cpu, processor, last_processor;
unsigned long context;
unsigned long start_code, end_code, start_data, end_data;
unsigned long start_brk, brk, start_stack, start_mmap;
unsigned long arg_start, arg_end, env_start, env_end;
unsigned long rss, rlim, total_vm, locked_vm;
unsigned long policy, rt_priority;
unsigned long it_real_value, it_prof_value, it_virt_value;
unsigned long it_real_incr, it_prof_incr, it_virt_incr;
unsigned long keip, kesp;
unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
unsigned long nswap, cnswap;
int ngroups, groups [LIBGTOP_MAX_GROUPS];
};
struct libgtop_proc_kernel
{
unsigned long wchan;
};
struct libgtop_proc_segment
{
unsigned long vsize, data, exec, stack, lib;
};
struct libgtop_proc_mem
{
libgtop_proc_segment_t segment;
int size, resident, share, trs, lrs, drs, dt;
unsigned long rss, rlim;
};
struct libgtop_proc_signal
{
unsigned long signal [LIBGTOP_NSIG];
unsigned long blocked [LIBGTOP_NSIG];
unsigned long ignore [LIBGTOP_NSIG];
unsigned long catch [LIBGTOP_NSIG];
};
struct libgtop_proc_maps_header
{
unsigned long start, end, offset, perm;
off_t filename_offset;
ino_t inode;
dev_t device;
} __attribute__ ((aligned (64)));
struct libgtop_proc_maps
{
libgtop_proc_maps_header_t header;
char filename [LIBGTOP_MAP_PATH_LEN];
};
struct libgtop_netload
{
unsigned long rx_packets; /* total packets received */
unsigned long tx_packets; /* total packets transmitted */
unsigned long rx_bytes; /* total bytes received */
unsigned long tx_bytes; /* total bytes transmitted */
unsigned long rx_errors; /* bad packets received */
unsigned long tx_errors; /* packet transmit problems */
unsigned long rx_dropped; /* no space in linux buffers */
unsigned long tx_dropped; /* no space available in linux */
unsigned long multicast; /* multicast packets received */
unsigned long collisions;
/* detailed rx_errors: */
unsigned long rx_length_errors;
unsigned long rx_over_errors; /* receiver ring buff overflow */
unsigned long rx_crc_errors; /* recved pkt with crc error */
unsigned long rx_frame_errors; /* recv'd frame alignment error */
unsigned long rx_fifo_errors; /* recv'r fifo overrun */
unsigned long rx_missed_errors; /* receiver missed packet */
/* detailed tx_errors */
unsigned long tx_aborted_errors;
unsigned long tx_carrier_errors;
unsigned long tx_fifo_errors;
unsigned long tx_heartbeat_errors;
unsigned long tx_window_errors;
/* for cslip etc */
unsigned long rx_compressed;
unsigned long tx_compressed;
};
#endif #endif

View File

@@ -15,6 +15,8 @@
extern unsigned long total_forks; extern unsigned long total_forks;
EXPORT_SYMBOL(task); EXPORT_SYMBOL(task);
EXPORT_SYMBOL(init_mm);
EXPORT_SYMBOL(pidhash);
EXPORT_SYMBOL(avenrun); EXPORT_SYMBOL(avenrun);
EXPORT_SYMBOL(nr_running); EXPORT_SYMBOL(nr_running);
EXPORT_SYMBOL(nr_tasks); EXPORT_SYMBOL(nr_tasks);
@@ -22,3 +24,7 @@ EXPORT_SYMBOL(last_pid);
EXPORT_SYMBOL(total_forks); EXPORT_SYMBOL(total_forks);
EXPORT_SYMBOL(si_swapinfo); EXPORT_SYMBOL(si_swapinfo);
extern void scheduling_functions_start_here(void);
extern void scheduling_functions_end_here(void);
EXPORT_SYMBOL(scheduling_functions_start_here);
EXPORT_SYMBOL(scheduling_functions_end_here);

188
kernel/table.h Normal file
View File

@@ -0,0 +1,188 @@
#ifndef _LINUX_TABLE_H
#define _LINUX_TABLE_H
#ifdef _KERNEL
#include <linux/types.h>
#else
#define NR_TASKS 512
#endif
#define TABLE_KERN_PROC_ALL 0 /* all processes */
#define TABLE_KERN_PROC_PID 1
#define TABLE_KERN_PROC_PGRP 2
#define TABLE_KERN_PROC_SESSION 3
#define TABLE_KERN_PROC_TTY 4
#define TABLE_KERN_PROC_UID 5
#define TABLE_KERN_PROC_RUID 6
#define TABLE_KERN_PROC_MASK 15
#define TABLE_EXCLUDE_IDLE 0x1000
#define TABLE_EXCLUDE_SYSTEM 0x2000
#define TABLE_EXCLUDE_NOTTY 0x4000
#define TABLE_VERSION 0
#define TABLE_CPU 1
#define TABLE_MEM 2
#define TABLE_SWAP 3
#define TABLE_LOADAVG 4
#define TABLE_UPTIME 5
#define TABLE_PROCLIST 6
#define TABLE_PROC_UID 7
#define TABLE_PROC_MEM 8
#define TABLE_PROC_SEGMENT 9
#define TABLE_PROC_TIME 10
#define TABLE_PROC_STATE 11
#define TABLE_PROC_SIGNAL 12
#define TABLE_PROC_KERNEL 13
/* CPU Usage (in jiffies = 1/100th seconds) */
struct table_cpu
{
unsigned long total; /* Total CPU Time */
unsigned long user; /* CPU Time in User Mode */
unsigned long nice; /* CPU Time in User Mode (nice) */
unsigned long sys; /* CPU Time in System Mode */
unsigned long idle; /* CPU Time in the Idle Task */
unsigned long frequency; /* Tick frequency */
};
/* Memory Usage (in bytes) */
struct table_mem
{
unsigned long total; /* Total physical memory */
unsigned long used; /* Used memory size */
unsigned long free; /* Free memory size */
unsigned long shared; /* Shared memory size */
unsigned long buffer; /* Size of buffers */
unsigned long cached; /* Size of cached memory */
};
/* Swap Space (in bytes) */
struct table_swap
{
unsigned long total; /* Total swap space */
unsigned long used; /* Used swap space */
unsigned long free; /* Free swap space */
unsigned long pagein; /* Total # of pages swapped in */
unsigned long pageout; /* Total # of pages swapped out */
};
/* Load average */
struct table_loadavg
{
double loadavg [3];
unsigned nr_running;
unsigned nr_tasks;
unsigned last_pid;
};
/* Uptime */
struct table_uptime
{
unsigned long uptime;
unsigned long idle;
};
/* Process list. */
struct proclist_args
{
int which, arg;
};
struct table_proclist
{
int nr_running, nr_tasks, last_pid;
unsigned pids [NR_TASKS];
};
/* Information about processes. */
struct table_proc_state
{
long state;
unsigned long flags;
char comm[16];
int uid, gid;
};
struct table_proc_uid
{
int uid, euid, suid, fsuid;
int gid, egid, sgid, fsgid;
int pid, pgrp, ppid;
int session;
unsigned int tty;
int tpgid;
long priority;
long counter;
long def_priority;
};
struct table_proc_mem
{
unsigned long context;
unsigned long start_code, end_code, start_data, end_data;
unsigned long start_brk, brk, start_stack, start_mmap;
unsigned long arg_start, arg_end, env_start, env_end;
unsigned long rss, rlim, total_vm, locked_vm;
};
struct table_proc_segment
{
unsigned long vsize;
unsigned long size, resident, shared;
unsigned long trs, lrs, drs, srs, dt;
};
struct table_proc_time
{
long utime, stime, cutime, cstime, start_time;
unsigned long timeout, policy, rt_priority;
unsigned long it_real_value, it_prof_value, it_virt_value;
unsigned long it_real_incr, it_prof_incr, it_virt_incr;
};
struct table_proc_signal
{
unsigned long long signal,
blocked, /* bitmap of masked signals */
ignored, /* mask of ignored signals */
caught; /* mask of caught signals */
};
struct table_proc_kernel
{
unsigned long keip, kesp, wchan;
unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
unsigned long nswap, cnswap;
};
/* Union */
union table
{
struct table_cpu cpu;
struct table_mem mem;
struct table_swap swap;
struct table_loadavg loadavg;
struct table_uptime uptime;
struct table_proclist proclist;
struct table_proc_uid proc_uid;
struct table_proc_mem proc_mem;
struct table_proc_segment proc_segment;
struct table_proc_time proc_time;
struct table_proc_state proc_state;
struct table_proc_signal proc_signal;
struct table_proc_kernel proc_kernel;
};
#endif /* _LINUX_IPC_H */

13
kernel/table20/Makefile Normal file
View File

@@ -0,0 +1,13 @@
#
# Makefile for the linux system information tables.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# Note 2! The CFLAGS definition is now in the main makefile...
O_TARGET := table.o
O_OBJS := main.o
include $(TOPDIR)/Rules.make

21
kernel/table20/README Normal file
View File

@@ -0,0 +1,21 @@
This is a new system call `table ()' for the Linux table. It is faster
than reading from /proc and can be used to fetch all information required
for libgtop until whe have some other function (extended sysctl, ...) in
standard kernels.
I didn't want to change sysctl or some other function myself cause this may
cause other applications relying upon those function to fail. This is
something for the ``real'' kernel gurus ...
To use this new system call for libgtop, do the following:
* Copy this directory to /usr/src/linux/table
* Make /usr/src/linux/include/linux/table.h symlink to /usr/src/linux/table/table.h
* Apply the patch `kernel.patch' to the kernel, compile, install and reboot
* Recompile libgtop (remove `config.cache' and run the `autogen.sh' again).
If you want to change and/or add something - feel free to do so !
Have fun,
Martin

706
kernel/table20/entry-i386.S Normal file
View File

@@ -0,0 +1,706 @@
/*
* linux/arch/i386/entry.S
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
/*
* entry.S contains the system-call and fault low-level handling routines.
* This also contains the timer-interrupt handler, as well as all interrupts
* and faults that can result in a task-switch.
*
* NOTE: This code handles signal-recognition, which happens every time
* after a timer-interrupt and after each system call.
*
* I changed all the .align's to 4 (16 byte alignment), as that's faster
* on a 486.
*
* Stack layout in 'ret_from_system_call':
* ptrace needs to have all regs on the stack.
* if the order here is changed, it needs to be
* updated in fork.c:copy_process, signal.c:do_signal,
* ptrace.c and ptrace.h
*
* 0(%esp) - %ebx
* 4(%esp) - %ecx
* 8(%esp) - %edx
* C(%esp) - %esi
* 10(%esp) - %edi
* 14(%esp) - %ebp
* 18(%esp) - %eax
* 1C(%esp) - %ds
* 20(%esp) - %es
* 24(%esp) - %fs
* 28(%esp) - %gs
* 2C(%esp) - orig_eax
* 30(%esp) - %eip
* 34(%esp) - %cs
* 38(%esp) - %eflags
* 3C(%esp) - %oldesp
* 40(%esp) - %oldss
*/
#include <linux/sys.h>
#include <linux/linkage.h>
#include <asm/segment.h>
#define ASSEMBLY
#include <asm/smp.h>
EBX = 0x00
ECX = 0x04
EDX = 0x08
ESI = 0x0C
EDI = 0x10
EBP = 0x14
EAX = 0x18
DS = 0x1C
ES = 0x20
FS = 0x24
GS = 0x28
ORIG_EAX = 0x2C
EIP = 0x30
CS = 0x34
EFLAGS = 0x38
OLDESP = 0x3C
OLDSS = 0x40
CF_MASK = 0x00000001
IF_MASK = 0x00000200
NT_MASK = 0x00004000
VM_MASK = 0x00020000
/*
* these are offsets into the task-struct.
*/
state = 0
counter = 4
priority = 8
signal = 12
blocked = 16
flags = 20
dbgreg6 = 52
dbgreg7 = 56
exec_domain = 60
ENOSYS = 38
#define SAVE_ALL \
cld; \
push %gs; \
push %fs; \
push %es; \
push %ds; \
pushl %eax; \
pushl %ebp; \
pushl %edi; \
pushl %esi; \
pushl %edx; \
pushl %ecx; \
pushl %ebx; \
movl $(KERNEL_DS),%edx; \
mov %dx,%ds; \
mov %dx,%es; \
movl $(USER_DS),%edx; \
mov %dx,%fs;
#ifdef __SMP__
#define GET_PROCESSOR_ID \
movl SYMBOL_NAME(apic_reg), %edx; \
movl 32(%edx), %eax;\
movl %eax,SYMBOL_NAME(apic_retval); \
shrl $24,%eax; \
andb $0x0F,%al;
/*
* Get the processor ID multiplied by 4
*/
#define GET_PROCESSOR_OFFSET(x) \
movl SYMBOL_NAME(apic_reg), x ; \
movl 32( x ), x ; \
shrl $22, x ; \
andl $0x3C, x ;
/* macro LEAVE_KERNEL decrements kernel_counter and resets kernel_flag and
saves processor variables if zero */
#define LEAVE_KERNEL \
pushfl; \
cli; \
GET_PROCESSOR_ID \
btrl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
decl SYMBOL_NAME(syscall_count); \
decl SYMBOL_NAME(kernel_counter); \
jnz 1f; \
movb SYMBOL_NAME(saved_active_kernel_processor), %al; \
movb %al, SYMBOL_NAME(active_kernel_processor); \
cmpb $(NO_PROC_ID), %al; \
jnz 1f; \
lock; \
btrl $0, SYMBOL_NAME(kernel_flag); \
1: popfl;
/* macro ENTER_KERNEL waits for entering the kernel, increments
kernel_counter, and reloads the processor variables if necessary
uses : %eax, %edx (pushed and popped)
Note: We go to great pains to minimise the number of locked operations.
We want to spin without locking, and lock when we attempt an update.
The pentium has a MESI cache so the spin without lock will exit when
another CPU write invalidates our cache, and the lock is avoided when
possible so we don't play ping-pong games with the cache line.
*/
#ifndef __SMP_PROF__
#define SMP_PROF_A
#define SMP_PROF_B
#else
#define SMP_PROF_A movl $0,SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
#define SMP_PROF_B incl SYMBOL_NAME(smp_spins_syscall)(,%eax,4); \
incl SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
#endif
#define ENTER_KERNEL \
pushl %eax; \
pushl %ebx; \
pushl %ecx; \
pushl %edx; \
pushfl; \
cli; \
movl $6000, %ebx; \
movl SYMBOL_NAME(smp_loops_per_tick), %ecx; \
GET_PROCESSOR_ID \
btsl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
SMP_PROF_A \
1: lock; \
btsl $0, SYMBOL_NAME(kernel_flag); \
jnc 3f; \
cmpb SYMBOL_NAME(active_kernel_processor), %al; \
je 4f; \
2: SMP_PROF_B \
btl %eax, SYMBOL_NAME(smp_invalidate_needed); \
jnc 5f; \
lock; \
btrl %eax, SYMBOL_NAME(smp_invalidate_needed); \
jnc 5f; \
movl %cr3,%edx; \
movl %edx,%cr3; \
5: sti; \
decl %ecx; \
cli; \
jne 7f; \
decl %ebx; \
jne 6f; \
call SYMBOL_NAME(non_irq_deadlock_detected); \
6: movl SYMBOL_NAME(smp_loops_per_tick), %ecx; \
cmpb SYMBOL_NAME(boot_cpu_id), %al; \
jne 7f; \
incl SYMBOL_NAME(jiffies); \
7: btl $0, SYMBOL_NAME(kernel_flag); \
jc 2b; \
jmp 1b; \
3: movb %al, SYMBOL_NAME(active_kernel_processor); \
4: incl SYMBOL_NAME(kernel_counter); \
incl SYMBOL_NAME(syscall_count); \
popfl; \
popl %edx; \
popl %ecx; \
popl %ebx; \
popl %eax;
#define RESTORE_ALL \
cmpw $(KERNEL_CS),CS(%esp); \
je 1f; \
GET_PROCESSOR_OFFSET(%edx) \
movl SYMBOL_NAME(current_set)(,%edx), %eax ; ; \
movl dbgreg7(%eax),%ebx; \
movl %ebx,%db7; \
1: LEAVE_KERNEL \
popl %ebx; \
popl %ecx; \
popl %edx; \
popl %esi; \
popl %edi; \
popl %ebp; \
popl %eax; \
pop %ds; \
pop %es; \
pop %fs; \
pop %gs; \
addl $4,%esp; \
iret
#else
#define RESTORE_ALL \
cmpw $(KERNEL_CS),CS(%esp); \
je 1f; \
movl SYMBOL_NAME(current_set),%eax; \
movl dbgreg7(%eax),%ebx; \
movl %ebx,%db7; \
1: \
popl %ebx; \
popl %ecx; \
popl %edx; \
popl %esi; \
popl %edi; \
popl %ebp; \
popl %eax; \
pop %ds; \
pop %es; \
pop %fs; \
pop %gs; \
addl $4,%esp; \
iret
#endif
ENTRY(lcall7)
pushfl # We get a different stack layout with call gates,
pushl %eax # which has to be cleaned up later..
SAVE_ALL
#ifdef __SMP__
ENTER_KERNEL
#endif
movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
movl CS(%esp),%edx # this is eip..
movl EFLAGS(%esp),%ecx # and this is cs..
movl %eax,EFLAGS(%esp) #
movl %edx,EIP(%esp) # Now we move them to their "normal" places
movl %ecx,CS(%esp) #
movl %esp,%eax
#ifdef __SMP__
GET_PROCESSOR_OFFSET(%edx) # Processor offset into edx
movl SYMBOL_NAME(current_set)(,%edx),%edx
#else
movl SYMBOL_NAME(current_set),%edx
#endif
pushl %eax
movl exec_domain(%edx),%edx # Get the execution domain
movl 4(%edx),%edx # Get the lcall7 handler for the domain
call *%edx
popl %eax
jmp ret_from_sys_call
ALIGN
handle_bottom_half:
incl SYMBOL_NAME(intr_count)
call SYMBOL_NAME(do_bottom_half)
decl SYMBOL_NAME(intr_count)
jmp 9f
ALIGN
reschedule:
pushl $ret_from_sys_call
jmp SYMBOL_NAME(schedule) # test
ENTRY(system_call)
pushl %eax # save orig_eax
SAVE_ALL
#ifdef __SMP__
ENTER_KERNEL
#endif
movl $-ENOSYS,EAX(%esp)
cmpl $(NR_syscalls),%eax
jae ret_from_sys_call
movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax
testl %eax,%eax
je ret_from_sys_call
#ifdef __SMP__
GET_PROCESSOR_OFFSET(%edx)
movl SYMBOL_NAME(current_set)(,%edx),%ebx
#else
movl SYMBOL_NAME(current_set),%ebx
#endif
andl $~CF_MASK,EFLAGS(%esp) # clear carry - assume no errors
movl %db6,%edx
movl %edx,dbgreg6(%ebx) # save current hardware debugging status
testb $0x20,flags(%ebx) # PF_TRACESYS
jne 1f
call *%eax
movl %eax,EAX(%esp) # save the return value
jmp ret_from_sys_call
ALIGN
1: call SYMBOL_NAME(syscall_trace)
movl ORIG_EAX(%esp),%eax
call SYMBOL_NAME(sys_call_table)(,%eax,4)
movl %eax,EAX(%esp) # save the return value
#ifdef __SMP__
GET_PROCESSOR_OFFSET(%eax)
movl SYMBOL_NAME(current_set)(,%eax),%eax
#else
movl SYMBOL_NAME(current_set),%eax
#endif
call SYMBOL_NAME(syscall_trace)
ALIGN
.globl ret_from_sys_call
ret_from_sys_call:
cmpl $0,SYMBOL_NAME(intr_count)
jne 2f
9: movl SYMBOL_NAME(bh_mask),%eax
andl SYMBOL_NAME(bh_active),%eax
jne handle_bottom_half
#ifdef __SMP__
cmpb $(NO_PROC_ID), SYMBOL_NAME(saved_active_kernel_processor)
jne 2f
#endif
movl EFLAGS(%esp),%eax # check VM86 flag: CS/SS are
testl $(VM_MASK),%eax # different then
jne 1f
cmpw $(KERNEL_CS),CS(%esp) # was old code segment supervisor ?
je 2f
1: sti
orl $(IF_MASK),%eax # these just try to make sure
andl $~NT_MASK,%eax # the program doesn't do anything
movl %eax,EFLAGS(%esp) # stupid
cmpl $0,SYMBOL_NAME(need_resched)
jne reschedule
#ifdef __SMP__
GET_PROCESSOR_OFFSET(%eax)
movl SYMBOL_NAME(current_set)(,%eax), %eax
#else
movl SYMBOL_NAME(current_set),%eax
#endif
cmpl SYMBOL_NAME(task),%eax # task[0] cannot have signals
je 2f
movl blocked(%eax),%ecx
movl %ecx,%ebx # save blocked in %ebx for signal handling
notl %ecx
andl signal(%eax),%ecx
jne signal_return
2: RESTORE_ALL
ALIGN
signal_return:
movl %esp,%ecx
pushl %ecx
testl $(VM_MASK),EFLAGS(%ecx)
jne v86_signal_return
pushl %ebx
call SYMBOL_NAME(do_signal)
popl %ebx
popl %ebx
RESTORE_ALL
ALIGN
v86_signal_return:
call SYMBOL_NAME(save_v86_state)
movl %eax,%esp
pushl %eax
pushl %ebx
call SYMBOL_NAME(do_signal)
popl %ebx
popl %ebx
RESTORE_ALL
ENTRY(divide_error)
pushl $0 # no error code
pushl $ SYMBOL_NAME(do_divide_error)
ALIGN
error_code:
push %fs
push %es
push %ds
pushl %eax
xorl %eax,%eax
pushl %ebp
pushl %edi
pushl %esi
pushl %edx
decl %eax # eax = -1
pushl %ecx
pushl %ebx
cld
xorl %ebx,%ebx # zero ebx
xchgl %eax, ORIG_EAX(%esp) # orig_eax (get the error code. )
mov %gs,%bx # get the lower order bits of gs
movl %esp,%edx
xchgl %ebx, GS(%esp) # get the address and save gs.
pushl %eax # push the error code
pushl %edx
movl $(KERNEL_DS),%edx
mov %dx,%ds
mov %dx,%es
movl $(USER_DS),%edx
mov %dx,%fs
#ifdef __SMP__
ENTER_KERNEL
GET_PROCESSOR_OFFSET(%eax)
movl SYMBOL_NAME(current_set)(,%eax), %eax
#else
movl SYMBOL_NAME(current_set),%eax
#endif
movl %db6,%edx
movl %edx,dbgreg6(%eax) # save current hardware debugging status
call *%ebx
addl $8,%esp
jmp ret_from_sys_call
ENTRY(coprocessor_error)
pushl $0
pushl $ SYMBOL_NAME(do_coprocessor_error)
jmp error_code
ENTRY(device_not_available)
pushl $-1 # mark this as an int
SAVE_ALL
#ifdef __SMP__
ENTER_KERNEL
#endif
pushl $ret_from_sys_call
movl %cr0,%eax
testl $0x4,%eax # EM (math emulation bit)
je SYMBOL_NAME(math_state_restore)
pushl $0 # temporary storage for ORIG_EIP
call SYMBOL_NAME(math_emulate)
addl $4,%esp
ret
ENTRY(debug)
pushl $0
pushl $ SYMBOL_NAME(do_debug)
jmp error_code
ENTRY(nmi)
pushl $0
pushl $ SYMBOL_NAME(do_nmi)
jmp error_code
ENTRY(int3)
pushl $0
pushl $ SYMBOL_NAME(do_int3)
jmp error_code
ENTRY(overflow)
pushl $0
pushl $ SYMBOL_NAME(do_overflow)
jmp error_code
ENTRY(bounds)
pushl $0
pushl $ SYMBOL_NAME(do_bounds)
jmp error_code
ENTRY(invalid_op)
pushl $0
pushl $ SYMBOL_NAME(do_invalid_op)
jmp error_code
ENTRY(coprocessor_segment_overrun)
pushl $0
pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
jmp error_code
ENTRY(reserved)
pushl $0
pushl $ SYMBOL_NAME(do_reserved)
jmp error_code
ENTRY(double_fault)
pushl $ SYMBOL_NAME(do_double_fault)
jmp error_code
ENTRY(invalid_TSS)
pushl $ SYMBOL_NAME(do_invalid_TSS)
jmp error_code
ENTRY(segment_not_present)
pushl $ SYMBOL_NAME(do_segment_not_present)
jmp error_code
ENTRY(stack_segment)
pushl $ SYMBOL_NAME(do_stack_segment)
jmp error_code
ENTRY(general_protection)
pushl $ SYMBOL_NAME(do_general_protection)
jmp error_code
ENTRY(alignment_check)
pushl $ SYMBOL_NAME(do_alignment_check)
jmp error_code
ENTRY(page_fault)
pushl $ SYMBOL_NAME(do_page_fault)
jmp error_code
ENTRY(spurious_interrupt_bug)
pushl $0
pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
jmp error_code
.data
ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_setup) /* 0 */
.long SYMBOL_NAME(sys_exit)
.long SYMBOL_NAME(sys_fork)
.long SYMBOL_NAME(sys_read)
.long SYMBOL_NAME(sys_write)
.long SYMBOL_NAME(sys_open) /* 5 */
.long SYMBOL_NAME(sys_close)
.long SYMBOL_NAME(sys_waitpid)
.long SYMBOL_NAME(sys_creat)
.long SYMBOL_NAME(sys_link)
.long SYMBOL_NAME(sys_unlink) /* 10 */
.long SYMBOL_NAME(sys_execve)
.long SYMBOL_NAME(sys_chdir)
.long SYMBOL_NAME(sys_time)
.long SYMBOL_NAME(sys_mknod)
.long SYMBOL_NAME(sys_chmod) /* 15 */
.long SYMBOL_NAME(sys_chown)
.long SYMBOL_NAME(sys_break)
.long SYMBOL_NAME(sys_stat)
.long SYMBOL_NAME(sys_lseek)
.long SYMBOL_NAME(sys_getpid) /* 20 */
.long SYMBOL_NAME(sys_mount)
.long SYMBOL_NAME(sys_umount)
.long SYMBOL_NAME(sys_setuid)
.long SYMBOL_NAME(sys_getuid)
.long SYMBOL_NAME(sys_stime) /* 25 */
.long SYMBOL_NAME(sys_ptrace)
.long SYMBOL_NAME(sys_alarm)
.long SYMBOL_NAME(sys_fstat)
.long SYMBOL_NAME(sys_pause)
.long SYMBOL_NAME(sys_utime) /* 30 */
.long SYMBOL_NAME(sys_stty)
.long SYMBOL_NAME(sys_gtty)
.long SYMBOL_NAME(sys_access)
.long SYMBOL_NAME(sys_nice)
.long SYMBOL_NAME(sys_ftime) /* 35 */
.long SYMBOL_NAME(sys_sync)
.long SYMBOL_NAME(sys_kill)
.long SYMBOL_NAME(sys_rename)
.long SYMBOL_NAME(sys_mkdir)
.long SYMBOL_NAME(sys_rmdir) /* 40 */
.long SYMBOL_NAME(sys_dup)
.long SYMBOL_NAME(sys_pipe)
.long SYMBOL_NAME(sys_times)
.long SYMBOL_NAME(sys_prof)
.long SYMBOL_NAME(sys_brk) /* 45 */
.long SYMBOL_NAME(sys_setgid)
.long SYMBOL_NAME(sys_getgid)
.long SYMBOL_NAME(sys_signal)
.long SYMBOL_NAME(sys_geteuid)
.long SYMBOL_NAME(sys_getegid) /* 50 */
.long SYMBOL_NAME(sys_acct)
.long SYMBOL_NAME(sys_phys)
.long SYMBOL_NAME(sys_lock)
.long SYMBOL_NAME(sys_ioctl)
.long SYMBOL_NAME(sys_fcntl) /* 55 */
.long SYMBOL_NAME(sys_mpx)
.long SYMBOL_NAME(sys_setpgid)
.long SYMBOL_NAME(sys_ulimit)
.long SYMBOL_NAME(sys_olduname)
.long SYMBOL_NAME(sys_umask) /* 60 */
.long SYMBOL_NAME(sys_chroot)
.long SYMBOL_NAME(sys_ustat)
.long SYMBOL_NAME(sys_dup2)
.long SYMBOL_NAME(sys_getppid)
.long SYMBOL_NAME(sys_getpgrp) /* 65 */
.long SYMBOL_NAME(sys_setsid)
.long SYMBOL_NAME(sys_sigaction)
.long SYMBOL_NAME(sys_sgetmask)
.long SYMBOL_NAME(sys_ssetmask)
.long SYMBOL_NAME(sys_setreuid) /* 70 */
.long SYMBOL_NAME(sys_setregid)
.long SYMBOL_NAME(sys_sigsuspend)
.long SYMBOL_NAME(sys_sigpending)
.long SYMBOL_NAME(sys_sethostname)
.long SYMBOL_NAME(sys_setrlimit) /* 75 */
.long SYMBOL_NAME(sys_getrlimit)
.long SYMBOL_NAME(sys_getrusage)
.long SYMBOL_NAME(sys_gettimeofday)
.long SYMBOL_NAME(sys_settimeofday)
.long SYMBOL_NAME(sys_getgroups) /* 80 */
.long SYMBOL_NAME(sys_setgroups)
.long SYMBOL_NAME(old_select)
.long SYMBOL_NAME(sys_symlink)
.long SYMBOL_NAME(sys_lstat)
.long SYMBOL_NAME(sys_readlink) /* 85 */
.long SYMBOL_NAME(sys_uselib)
.long SYMBOL_NAME(sys_swapon)
.long SYMBOL_NAME(sys_reboot)
.long SYMBOL_NAME(old_readdir)
.long SYMBOL_NAME(old_mmap) /* 90 */
.long SYMBOL_NAME(sys_munmap)
.long SYMBOL_NAME(sys_truncate)
.long SYMBOL_NAME(sys_ftruncate)
.long SYMBOL_NAME(sys_fchmod)
.long SYMBOL_NAME(sys_fchown) /* 95 */
.long SYMBOL_NAME(sys_getpriority)
.long SYMBOL_NAME(sys_setpriority)
.long SYMBOL_NAME(sys_profil)
.long SYMBOL_NAME(sys_statfs)
.long SYMBOL_NAME(sys_fstatfs) /* 100 */
.long SYMBOL_NAME(sys_ioperm)
.long SYMBOL_NAME(sys_socketcall)
.long SYMBOL_NAME(sys_syslog)
.long SYMBOL_NAME(sys_setitimer)
.long SYMBOL_NAME(sys_getitimer) /* 105 */
.long SYMBOL_NAME(sys_newstat)
.long SYMBOL_NAME(sys_newlstat)
.long SYMBOL_NAME(sys_newfstat)
.long SYMBOL_NAME(sys_uname)
.long SYMBOL_NAME(sys_iopl) /* 110 */
.long SYMBOL_NAME(sys_vhangup)
.long SYMBOL_NAME(sys_idle)
.long SYMBOL_NAME(sys_vm86old)
.long SYMBOL_NAME(sys_wait4)
.long SYMBOL_NAME(sys_swapoff) /* 115 */
.long SYMBOL_NAME(sys_sysinfo)
.long SYMBOL_NAME(sys_ipc)
.long SYMBOL_NAME(sys_fsync)
.long SYMBOL_NAME(sys_sigreturn)
.long SYMBOL_NAME(sys_clone) /* 120 */
.long SYMBOL_NAME(sys_setdomainname)
.long SYMBOL_NAME(sys_newuname)
.long SYMBOL_NAME(sys_modify_ldt)
.long SYMBOL_NAME(sys_adjtimex)
.long SYMBOL_NAME(sys_mprotect) /* 125 */
.long SYMBOL_NAME(sys_sigprocmask)
.long SYMBOL_NAME(sys_create_module)
.long SYMBOL_NAME(sys_init_module)
.long SYMBOL_NAME(sys_delete_module)
.long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
.long SYMBOL_NAME(sys_quotactl)
.long SYMBOL_NAME(sys_getpgid)
.long SYMBOL_NAME(sys_fchdir)
.long SYMBOL_NAME(sys_bdflush)
.long SYMBOL_NAME(sys_sysfs) /* 135 */
.long SYMBOL_NAME(sys_personality)
.long 0 /* for afs_syscall */
.long SYMBOL_NAME(sys_setfsuid)
.long SYMBOL_NAME(sys_setfsgid)
.long SYMBOL_NAME(sys_llseek) /* 140 */
.long SYMBOL_NAME(sys_getdents)
.long SYMBOL_NAME(sys_select)
.long SYMBOL_NAME(sys_flock)
.long SYMBOL_NAME(sys_msync)
.long SYMBOL_NAME(sys_readv) /* 145 */
.long SYMBOL_NAME(sys_writev)
.long SYMBOL_NAME(sys_getsid)
.long SYMBOL_NAME(sys_fdatasync)
.long SYMBOL_NAME(sys_sysctl)
.long SYMBOL_NAME(sys_mlock) /* 150 */
.long SYMBOL_NAME(sys_munlock)
.long SYMBOL_NAME(sys_mlockall)
.long SYMBOL_NAME(sys_munlockall)
.long SYMBOL_NAME(sys_sched_setparam)
.long SYMBOL_NAME(sys_sched_getparam) /* 155 */
.long SYMBOL_NAME(sys_sched_setscheduler)
.long SYMBOL_NAME(sys_sched_getscheduler)
.long SYMBOL_NAME(sys_sched_yield)
.long SYMBOL_NAME(sys_sched_get_priority_max)
.long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
.long SYMBOL_NAME(sys_sched_rr_get_interval)
.long SYMBOL_NAME(sys_nanosleep)
.long SYMBOL_NAME(sys_mremap)
.long 0,0
.long SYMBOL_NAME(sys_vm86)
.long 0,0,0,0 /* 170 */
.long 0,0,0,0,0,0,0,0,0,0 /* 180 */
.long 0,0,0,0,0,0,0
.long SYMBOL_NAME(sys_table)
.space (NR_syscalls-188)*4

View File

@@ -0,0 +1,51 @@
diff -ur linux-2.0.32/Makefile linux-hacked/Makefile
--- linux-2.0.32/Makefile Fri Nov 7 19:51:05 1997
+++ linux-hacked/Makefile Thu Jun 11 20:41:12 1998
@@ -87,7 +87,7 @@
# standard CFLAGS
#
-CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce
+CFLAGS = -Wall -Wstrict-prototypes -g -O2 -fomit-frame-pointer -fno-strength-reduce
ifdef CONFIG_CPP
CFLAGS := $(CFLAGS) -x c++
@@ -113,12 +113,12 @@
# Include the make variables (CC, etc...)
#
-ARCHIVES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o net/network.a
+ARCHIVES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o net/network.a table/table.o
FILESYSTEMS =fs/filesystems.a
DRIVERS =drivers/block/block.a \
drivers/char/char.a
LIBS =$(TOPDIR)/lib/lib.a
-SUBDIRS =kernel drivers mm fs net ipc lib
+SUBDIRS =kernel drivers mm fs net ipc lib table
ifeq ($(CONFIG_ISDN),y)
DRIVERS := $(DRIVERS) drivers/isdn/isdn.a
diff -ur linux-2.0.32/arch/i386/kernel/entry.S linux-hacked/arch/i386/kernel/entry.S
--- linux-2.0.32/arch/i386/kernel/entry.S Tue Sep 16 23:42:45 1997
+++ linux-hacked/arch/i386/kernel/entry.S Thu Jun 11 21:37:20 1998
@@ -699,4 +699,8 @@
.long SYMBOL_NAME(sys_mremap)
.long 0,0
.long SYMBOL_NAME(sys_vm86)
- .space (NR_syscalls-166)*4
+ .long 0,0,0,0 /* 170 */
+ .long 0,0,0,0,0,0,0,0,0,0 /* 180 */
+ .long 0,0,0,0,0,0,0
+ .long SYMBOL_NAME(sys_table)
+ .space (NR_syscalls-188)*4
diff -ur linux-2.0.32/include/asm-i386/unistd.h linux-hacked/include/asm-i386/unistd.h
--- linux-2.0.32/include/asm-i386/unistd.h Fri Mar 22 07:34:02 1996
+++ linux-hacked/include/asm-i386/unistd.h Thu Jun 11 21:37:03 1998
@@ -169,6 +169,7 @@
#define __NR_sched_rr_get_interval 161
#define __NR_nanosleep 162
#define __NR_mremap 163
+#define __NR_table 188
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
#define _syscall0(type,name) \

468
kernel/table20/main.c Normal file
View File

@@ -0,0 +1,468 @@
/*
* linux/table/table_impl.c
* Copyright (C) 1998 Martin Baulig
*/
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/kernel_stat.h>
#include <linux/tty.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/string.h>
#include <linux/mman.h>
#include <linux/proc_fs.h>
#include <linux/ioport.h>
#include <linux/config.h>
#include <linux/mm.h>
#include <linux/pagemap.h>
#include <linux/swap.h>
#include <asm/segment.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <linux/table.h>
#include "version.h"
#if defined(__i386__)
# define KSTK_EIP(tsk) (((unsigned long *)tsk->kernel_stack_page)[1019])
# define KSTK_ESP(tsk) (((unsigned long *)tsk->kernel_stack_page)[1022])
#elif defined(__alpha__)
/*
* See arch/alpha/kernel/ptrace.c for details.
*/
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
+ (long)&((struct pt_regs *)0)->reg)
# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc)))
# define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp)
#elif defined(__sparc__)
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
+ (long)&((struct pt_regs *)0)->reg)
# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc)))
# define KSTK_ESP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(u_regs[UREG_FP])))
#endif
static struct task_struct *
get_task (pid_t pid)
{
struct task_struct ** p;
p = task;
while (++p < task+NR_TASKS) {
if (*p && (*p)->pid == pid)
return *p;
}
return NULL;
}
static inline void statm_pte_range(pmd_t * pmd, unsigned long address, unsigned long size,
int * pages, int * shared, int * dirty, int * total)
{
pte_t * pte;
unsigned long end;
if (pmd_none(*pmd))
return;
if (pmd_bad(*pmd)) {
printk("statm_pte_range: bad pmd (%08lx)\n", pmd_val(*pmd));
pmd_clear(pmd);
return;
}
pte = pte_offset(pmd, address);
address &= ~PMD_MASK;
end = address + size;
if (end > PMD_SIZE)
end = PMD_SIZE;
do {
pte_t page = *pte;
address += PAGE_SIZE;
pte++;
if (pte_none(page))
continue;
++*total;
if (!pte_present(page))
continue;
++*pages;
if (pte_dirty(page))
++*dirty;
if (pte_page(page) >= high_memory)
continue;
if (mem_map[MAP_NR(pte_page(page))].count > 1)
++*shared;
} while (address < end);
}
static inline void statm_pmd_range(pgd_t * pgd, unsigned long address, unsigned long size,
int * pages, int * shared, int * dirty, int * total)
{
pmd_t * pmd;
unsigned long end;
if (pgd_none(*pgd))
return;
if (pgd_bad(*pgd)) {
printk("statm_pmd_range: bad pgd (%08lx)\n", pgd_val(*pgd));
pgd_clear(pgd);
return;
}
pmd = pmd_offset(pgd, address);
address &= ~PGDIR_MASK;
end = address + size;
if (end > PGDIR_SIZE)
end = PGDIR_SIZE;
do {
statm_pte_range(pmd, address, end - address, pages, shared, dirty, total);
address = (address + PMD_SIZE) & PMD_MASK;
pmd++;
} while (address < end);
}
static void statm_pgd_range(pgd_t * pgd, unsigned long address, unsigned long end,
int * pages, int * shared, int * dirty, int * total)
{
while (address < end) {
statm_pmd_range(pgd, address, end - address, pages, shared, dirty, total);
address = (address + PGDIR_SIZE) & PGDIR_MASK;
pgd++;
}
}
static unsigned long
get_wchan (struct task_struct *p)
{
if (!p || p == current || p->state == TASK_RUNNING)
return 0;
#if defined(__i386__)
{
unsigned long ebp, eip;
unsigned long stack_page;
int count = 0;
stack_page = p->kernel_stack_page;
if (!stack_page)
return 0;
ebp = p->tss.ebp;
do {
if (ebp < stack_page || ebp >= 4092+stack_page)
return 0;
eip = *(unsigned long *) (ebp+4);
if (eip < (unsigned long) interruptible_sleep_on
|| eip >= (unsigned long) add_timer)
return eip;
ebp = *(unsigned long *) ebp;
} while (count++ < 16);
}
#elif defined(__alpha__)
/*
* This one depends on the frame size of schedule(). Do a
* "disass schedule" in gdb to find the frame size. Also, the
* code assumes that sleep_on() follows immediately after
* interruptible_sleep_on() and that add_timer() follows
* immediately after interruptible_sleep(). Ugly, isn't it?
* Maybe adding a wchan field to task_struct would be better,
* after all...
*/
{
unsigned long schedule_frame;
unsigned long pc;
pc = thread_saved_pc(&p->tss);
if (pc >= (unsigned long) interruptible_sleep_on && pc < (unsigned long) add_timer) {
schedule_frame = ((unsigned long *)p->tss.ksp)[6];
return ((unsigned long *)schedule_frame)[12];
}
return pc;
}
#endif
return 0;
}
asmlinkage int
sys_table (int type, union table *buf, const void *param)
{
union table tbl;
struct sysinfo i;
struct task_struct *tsk = NULL;
struct ip_chain *chain;
struct ip_fwkernel *rule;
char devname [9];
int index, err;
pid_t pid;
if (type == TABLE_VERSION)
return _TABLE_VERSION;
if (!buf)
return -EFAULT;
memset (&tbl, 0, sizeof (union table));
/* For TABLE_PROC_*, read pid and get task_struct */
switch (type) {
case TABLE_PROC_UID:
case TABLE_PROC_MEM:
case TABLE_PROC_SEGMENT:
case TABLE_PROC_TIME:
case TABLE_PROC_STATE:
case TABLE_PROC_SIGNAL:
case TABLE_PROC_KERNEL:
err = verify_area (VERIFY_READ, param, sizeof (pid_t));
if (err)
return err;
memcpy_fromfs (&pid, param, sizeof (pid_t));
tsk = get_task (pid);
if (tsk == NULL)
return -ESRCH;
break;
case TABLE_NETACCT:
err = verify_area (VERIFY_READ, param, 5);
if (err)
return err;
copy_from_user (devname, param, 5);
devname [5] = 0;
break;
}
/* Main function dispatcher */
switch (type) {
case TABLE_PROCLIST:
tsk = task [0];
for (index = 0; index < nr_tasks; index++) {
tbl.proclist.pids [index] = tsk->pid;
tsk = tsk->next_task;
}
tbl.proclist.nr_running = nr_running;
tbl.proclist.nr_tasks = nr_tasks;
tbl.proclist.last_pid = last_pid;
break;
case TABLE_CPU:
tbl.cpu.total = jiffies;
tbl.cpu.user = kstat.cpu_user;
tbl.cpu.nice = kstat.cpu_nice;
tbl.cpu.sys = kstat.cpu_system;
tbl.cpu.idle = tbl.cpu.total -
(tbl.cpu.user + tbl.cpu.nice + tbl.cpu.sys);
tbl.cpu.frequency = HZ;
break;
case TABLE_MEM:
si_meminfo (&i);
tbl.mem.total = i.totalram;
tbl.mem.used = i.totalram - i.freeram;
tbl.mem.free = i.freeram;
tbl.mem.shared = i.sharedram;
tbl.mem.buffer = i.bufferram;
tbl.mem.cached = page_cache_size << PAGE_SHIFT;
break;
case TABLE_SWAP:
si_swapinfo (&i);
tbl.swap.total = i.totalswap;
tbl.swap.used = i.totalswap - i.freeswap;
tbl.swap.free = i.freeswap;
tbl.swap.pagein = kstat.pswpin;
tbl.swap.pageout = kstat.pswpout;
break;
case TABLE_LOADAVG:
tbl.loadavg.loadavg [0] = (double) avenrun [0] / (1 << FSHIFT);
tbl.loadavg.loadavg [1] = (double) avenrun [1] / (1 << FSHIFT);
tbl.loadavg.loadavg [2] = (double) avenrun [2] / (1 << FSHIFT);
tbl.loadavg.nr_running = nr_running;
tbl.loadavg.nr_tasks = nr_tasks;
tbl.loadavg.last_pid = last_pid;
break;
case TABLE_UPTIME:
tbl.uptime.uptime = jiffies;
tbl.uptime.idle = task[0]->utime + task[0]->stime;
break;
case TABLE_PROC_STATE:
tbl.proc_state.state = tsk->state;
tbl.proc_state.flags = tsk->flags;
memcpy (tbl.proc_state.comm, tsk->comm,
sizeof (tbl.proc_state.comm));
break;
case TABLE_PROC_UID:
tbl.proc_uid.uid = tsk->uid;
tbl.proc_uid.euid = tsk->euid;
tbl.proc_uid.suid = tsk->suid;
tbl.proc_uid.fsuid = tsk->fsuid;
tbl.proc_uid.gid = tsk->gid;
tbl.proc_uid.egid = tsk->egid;
tbl.proc_uid.sgid = tsk->sgid;
tbl.proc_uid.fsgid = tsk->fsgid;
tbl.proc_uid.pid = tsk->pid;
tbl.proc_uid.pgrp = tsk->pgrp;
tbl.proc_uid.ppid = tsk->p_pptr->pid;
tbl.proc_uid.session = tsk->session;
tbl.proc_uid.tty = tsk->tty ?
kdev_t_to_nr (tsk->tty->device) : 0;
tbl.proc_uid.tpgid = tsk->tty ? tsk->tty->pgrp : -1;
tbl.proc_uid.priority = tsk->priority;
tbl.proc_uid.counter = tsk->counter;
tbl.proc_uid.def_priority = DEF_PRIORITY;
break;
case TABLE_PROC_SIGNAL:
tbl.proc_signal.signal = tsk->signal;
tbl.proc_signal.blocked = tsk->blocked;
if (tsk->sig) {
struct sigaction * action = tsk->sig->action;
unsigned long sig_ign = 0, sig_caught = 0;
unsigned long bit = 1;
int i;
for (i = 0; i < 32; i++) {
switch((unsigned long) action->sa_handler) {
case 0:
break;
case 1:
sig_ign |= bit;
break;
default:
sig_caught |= bit;
}
bit <<= 1;
action++;
}
tbl.proc_signal.ignored = sig_ign;
tbl.proc_signal.caught = sig_caught;
} else {
tbl.proc_signal.ignored = 0;
tbl.proc_signal.caught = 0;
}
break;
case TABLE_PROC_MEM:
if (tsk->mm && tsk->mm != &init_mm) {
tbl.proc_mem.context = tsk->mm->context;
tbl.proc_mem.start_code = tsk->mm->start_code;
tbl.proc_mem.end_code = tsk->mm->end_code;
tbl.proc_mem.start_data = tsk->mm-> start_data;
tbl.proc_mem.end_data = tsk->mm->end_data;
tbl.proc_mem.start_brk = tsk->mm->start_brk;
tbl.proc_mem.brk = tsk->mm->brk;
tbl.proc_mem.start_stack = tsk->mm->start_stack;
tbl.proc_mem.start_mmap = tsk->mm->start_mmap;
tbl.proc_mem.arg_start = tsk->mm->arg_start;
tbl.proc_mem.arg_end = tsk->mm->arg_end;
tbl.proc_mem.env_start = tsk->mm->env_start;
tbl.proc_mem.env_end = tsk->mm->env_end;
tbl.proc_mem.rss = tsk->mm->rss;
tbl.proc_mem.total_vm = tsk->mm->total_vm;
tbl.proc_mem.locked_vm = tsk->mm->locked_vm;
}
tbl.proc_mem.rlim = tsk->rlim ?
tsk->rlim[RLIMIT_RSS].rlim_cur : 0;
break;
case TABLE_PROC_SEGMENT:
if (tsk->mm && tsk->mm != &init_mm) {
unsigned long vsize = 0;
int size = 0, resident = 0, share = 0;
int trs = 0, lrs = 0, drs = 0, dt = 0;
struct vm_area_struct * vma = tsk->mm->mmap;
while (vma) {
pgd_t *pgd = pgd_offset(tsk->mm, vma->vm_start);
int pages = 0, shared = 0, dirty = 0, total = 0;
vsize += vma->vm_end - vma->vm_start;
statm_pgd_range (pgd, vma->vm_start, vma->vm_end,
&pages, &shared, &dirty, &total);
resident += pages;
share += shared;
dt += dirty;
size += total;
if (vma->vm_flags & VM_EXECUTABLE)
trs += pages; /* text */
else if (vma->vm_flags & VM_GROWSDOWN)
drs += pages; /* stack */
else if (vma->vm_end > 0x60000000)
lrs += pages; /* library */
else
drs += pages;
vma = vma->vm_next;
}
tbl.proc_segment.vsize = vsize;
tbl.proc_segment.size = size;
tbl.proc_segment.resident = resident;
tbl.proc_segment.shared = share;
tbl.proc_segment.trs = trs;
tbl.proc_segment.lrs = lrs;
tbl.proc_segment.dt = dt;
}
break;
case TABLE_PROC_TIME:
tbl.proc_time.utime = tsk->utime;
tbl.proc_time.stime = tsk->stime;
tbl.proc_time.cutime = tsk->cutime;
tbl.proc_time.cstime = tsk->cstime;
tbl.proc_time.start_time = tsk->start_time;
tbl.proc_time.timeout = tsk->timeout;
tbl.proc_time.policy = tsk->policy;
tbl.proc_time.rt_priority = tsk->rt_priority;
tbl.proc_time.it_real_value = tsk->it_real_value;
tbl.proc_time.it_prof_value = tsk->it_prof_value;
tbl.proc_time.it_virt_value = tsk->it_virt_value;
tbl.proc_time.it_real_incr = tsk->it_real_incr;
tbl.proc_time.it_prof_incr = tsk->it_prof_incr;
tbl.proc_time.it_virt_incr = tsk->it_virt_incr;
break;
case TABLE_PROC_KERNEL:
tbl.proc_kernel.min_flt = tsk->min_flt;
tbl.proc_kernel.cmin_flt = tsk->cmin_flt;
tbl.proc_kernel.maj_flt = tsk->maj_flt;
tbl.proc_kernel.cmaj_flt = tsk->cmaj_flt;
tbl.proc_kernel.kesp = tsk->kernel_stack_page ? KSTK_EIP(tsk) : 0;
tbl.proc_kernel.keip = tsk->kernel_stack_page ? KSTK_ESP(tsk) : 0;
tbl.proc_kernel.nswap = tsk->nswap;
tbl.proc_kernel.cnswap = tsk->cnswap;
tbl.proc_kernel.wchan = get_wchan (tsk);
break;
case TABLE_NETACCT:
for (chain = ip_fw_chains; chain; chain = chain->next) {
for (rule = chain->chain; rule; rule = rule->next) {
const char *name = rule->ipfw.fw_vianame;
int k;
if (name [0] && !strncmp (param, name, 5))
continue;
for (k = 0; k < NUM_SLOTS; k++) {
tbl.netacct.packets +=
rule->counters[k].pcnt;
tbl.netacct.bytes +=
rule->counters[k].bcnt;
}
}
}
break;
default:
return -EINVAL;
}
err = verify_area (VERIFY_WRITE, buf, sizeof (struct table));
if (err)
return err;
memcpy_tofs (buf, &tbl, sizeof (union table));
return 0;
}

View File

@@ -0,0 +1,324 @@
#ifndef _ASM_I386_UNISTD_H_
#define _ASM_I386_UNISTD_H_
/*
* This file contains the system call numbers.
*/
#define __NR_setup 0 /* used only by init, to get system going */
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
#define __NR_open 5
#define __NR_close 6
#define __NR_waitpid 7
#define __NR_creat 8
#define __NR_link 9
#define __NR_unlink 10
#define __NR_execve 11
#define __NR_chdir 12
#define __NR_time 13
#define __NR_mknod 14
#define __NR_chmod 15
#define __NR_chown 16
#define __NR_break 17
#define __NR_oldstat 18
#define __NR_lseek 19
#define __NR_getpid 20
#define __NR_mount 21
#define __NR_umount 22
#define __NR_setuid 23
#define __NR_getuid 24
#define __NR_stime 25
#define __NR_ptrace 26
#define __NR_alarm 27
#define __NR_oldfstat 28
#define __NR_pause 29
#define __NR_utime 30
#define __NR_stty 31
#define __NR_gtty 32
#define __NR_access 33
#define __NR_nice 34
#define __NR_ftime 35
#define __NR_sync 36
#define __NR_kill 37
#define __NR_rename 38
#define __NR_mkdir 39
#define __NR_rmdir 40
#define __NR_dup 41
#define __NR_pipe 42
#define __NR_times 43
#define __NR_prof 44
#define __NR_brk 45
#define __NR_setgid 46
#define __NR_getgid 47
#define __NR_signal 48
#define __NR_geteuid 49
#define __NR_getegid 50
#define __NR_acct 51
#define __NR_phys 52
#define __NR_lock 53
#define __NR_ioctl 54
#define __NR_fcntl 55
#define __NR_mpx 56
#define __NR_setpgid 57
#define __NR_ulimit 58
#define __NR_oldolduname 59
#define __NR_umask 60
#define __NR_chroot 61
#define __NR_ustat 62
#define __NR_dup2 63
#define __NR_getppid 64
#define __NR_getpgrp 65
#define __NR_setsid 66
#define __NR_sigaction 67
#define __NR_sgetmask 68
#define __NR_ssetmask 69
#define __NR_setreuid 70
#define __NR_setregid 71
#define __NR_sigsuspend 72
#define __NR_sigpending 73
#define __NR_sethostname 74
#define __NR_setrlimit 75
#define __NR_getrlimit 76
#define __NR_getrusage 77
#define __NR_gettimeofday 78
#define __NR_settimeofday 79
#define __NR_getgroups 80
#define __NR_setgroups 81
#define __NR_select 82
#define __NR_symlink 83
#define __NR_oldlstat 84
#define __NR_readlink 85
#define __NR_uselib 86
#define __NR_swapon 87
#define __NR_reboot 88
#define __NR_readdir 89
#define __NR_mmap 90
#define __NR_munmap 91
#define __NR_truncate 92
#define __NR_ftruncate 93
#define __NR_fchmod 94
#define __NR_fchown 95
#define __NR_getpriority 96
#define __NR_setpriority 97
#define __NR_profil 98
#define __NR_statfs 99
#define __NR_fstatfs 100
#define __NR_ioperm 101
#define __NR_socketcall 102
#define __NR_syslog 103
#define __NR_setitimer 104
#define __NR_getitimer 105
#define __NR_stat 106
#define __NR_lstat 107
#define __NR_fstat 108
#define __NR_olduname 109
#define __NR_iopl 110
#define __NR_vhangup 111
#define __NR_idle 112
#define __NR_vm86 113
#define __NR_wait4 114
#define __NR_swapoff 115
#define __NR_sysinfo 116
#define __NR_ipc 117
#define __NR_fsync 118
#define __NR_sigreturn 119
#define __NR_clone 120
#define __NR_setdomainname 121
#define __NR_uname 122
#define __NR_modify_ldt 123
#define __NR_adjtimex 124
#define __NR_mprotect 125
#define __NR_sigprocmask 126
#define __NR_create_module 127
#define __NR_init_module 128
#define __NR_delete_module 129
#define __NR_get_kernel_syms 130
#define __NR_quotactl 131
#define __NR_getpgid 132
#define __NR_fchdir 133
#define __NR_bdflush 134
#define __NR_sysfs 135
#define __NR_personality 136
#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
#define __NR_setfsuid 138
#define __NR_setfsgid 139
#define __NR__llseek 140
#define __NR_getdents 141
#define __NR__newselect 142
#define __NR_flock 143
#define __NR_msync 144
#define __NR_readv 145
#define __NR_writev 146
#define __NR_getsid 147
#define __NR_fdatasync 148
#define __NR__sysctl 149
#define __NR_mlock 150
#define __NR_munlock 151
#define __NR_mlockall 152
#define __NR_munlockall 153
#define __NR_sched_setparam 154
#define __NR_sched_getparam 155
#define __NR_sched_setscheduler 156
#define __NR_sched_getscheduler 157
#define __NR_sched_yield 158
#define __NR_sched_get_priority_max 159
#define __NR_sched_get_priority_min 160
#define __NR_sched_rr_get_interval 161
#define __NR_nanosleep 162
#define __NR_mremap 163
#define __NR_table 188
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
#define _syscall0(type,name) \
type name(void) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name)); \
if (__res >= 0) \
return (type) __res; \
errno = -__res; \
return -1; \
}
#define _syscall1(type,name,type1,arg1) \
type name(type1 arg1) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1))); \
if (__res >= 0) \
return (type) __res; \
errno = -__res; \
return -1; \
}
#define _syscall2(type,name,type1,arg1,type2,arg2) \
type name(type1 arg1,type2 arg2) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
if (__res >= 0) \
return (type) __res; \
errno = -__res; \
return -1; \
}
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
type name(type1 arg1,type2 arg2,type3 arg3) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
"d" ((long)(arg3))); \
if (__res>=0) \
return (type) __res; \
errno=-__res; \
return -1; \
}
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
"d" ((long)(arg3)),"S" ((long)(arg4))); \
if (__res>=0) \
return (type) __res; \
errno=-__res; \
return -1; \
}
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
type5,arg5) \
type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
"d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \
if (__res>=0) \
return (type) __res; \
errno=-__res; \
return -1; \
}
#ifdef __KERNEL_SYSCALLS__
/*
* we need this inline - forking from kernel space will result
* in NO COPY ON WRITE (!!!), until an execve is executed. This
* is no problem, but for the stack. This is handled by not letting
* main() use the stack at all after fork(). Thus, no function
* calls - which means inline code for fork too, as otherwise we
* would use the stack upon exit from 'fork()'.
*
* Actually only pause and fork are needed inline, so that there
* won't be any messing with the stack from main(), but we define
* some others too.
*/
#define __NR__exit __NR_exit
static inline _syscall0(int,idle)
static inline _syscall0(int,fork)
static inline _syscall2(int,clone,unsigned long,flags,char *,esp)
static inline _syscall0(int,pause)
static inline _syscall0(int,setup)
static inline _syscall0(int,sync)
static inline _syscall0(pid_t,setsid)
static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
static inline _syscall1(int,dup,int,fd)
static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
static inline _syscall1(int,close,int,fd)
static inline _syscall1(int,_exit,int,exitcode)
static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
static inline pid_t wait(int * wait_stat)
{
return waitpid(-1,wait_stat,0);
}
/*
* This is the mechanism for creating a new kernel thread.
*
* NOTE! Only a kernel-only process(ie the swapper or direct descendants
* who haven't done an "execve()") should use this: it will work within
* a system call from a "real" process, but the process memory space will
* not be free'd until both the parent and the child have exited.
*/
static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
long retval;
__asm__ __volatile__(
"movl %%esp,%%esi\n\t"
"int $0x80\n\t" /* Linux/i386 system call */
"cmpl %%esp,%%esi\n\t" /* child or parent? */
"je 1f\n\t" /* parent - jump */
"pushl %3\n\t" /* push argument */
"call *%4\n\t" /* call fn */
"movl %2,%0\n\t" /* exit */
"int $0x80\n"
"1:\t"
:"=a" (retval)
:"0" (__NR_clone), "i" (__NR_exit),
"r" (arg), "r" (fn),
"b" (flags | CLONE_VM)
:"si");
return retval;
}
#endif
#endif /* _ASM_I386_UNISTD_H_ */

1
kernel/table20/version.h Normal file
View File

@@ -0,0 +1 @@
#define _TABLE_VERSION 1

View File

@@ -0,0 +1,4 @@
kernel.patch
.main.o.flags
.table.o.flags
.module.o.flags

16
kernel/table21/Makefile Normal file
View File

@@ -0,0 +1,16 @@
#
# Makefile for the linux system information tables.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# Note 2! The CFLAGS definition is now in the main makefile...
O_TARGET := table.o
OX_OBJS := main.o
M_TARGET := table_mod.o
MX_OBJS := module.o
include $(TOPDIR)/Rules.make

21
kernel/table21/README Normal file
View File

@@ -0,0 +1,21 @@
This is a new system call `table ()' for the Linux table. It is faster
than reading from /proc and can be used to fetch all information required
for libgtop until whe have some other function (extended sysctl, ...) in
standard kernels.
I didn't want to change sysctl or some other function myself cause this may
cause other applications relying upon those function to fail. This is
something for the ``real'' kernel gurus ...
To use this new system call for libgtop, do the following:
* Copy this directory to /usr/src/linux/table
* Make /usr/src/linux/include/linux/table.h symlink to /usr/src/linux/table/table.h
* Apply the patch `kernel.patch' to the kernel, compile, install and reboot
* Recompile libgtop (remove `config.cache' and run the `autogen.sh' again).
If you want to change and/or add something - feel free to do so !
Have fun,
Martin

571
kernel/table21/entry-i386.S Normal file
View File

@@ -0,0 +1,571 @@
/*
* linux/arch/i386/entry.S
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
/*
* entry.S contains the system-call and fault low-level handling routines.
* This also contains the timer-interrupt handler, as well as all interrupts
* and faults that can result in a task-switch.
*
* NOTE: This code handles signal-recognition, which happens every time
* after a timer-interrupt and after each system call.
*
* I changed all the .align's to 4 (16 byte alignment), as that's faster
* on a 486.
*
* Stack layout in 'ret_from_system_call':
* ptrace needs to have all regs on the stack.
* if the order here is changed, it needs to be
* updated in fork.c:copy_process, signal.c:do_signal,
* ptrace.c and ptrace.h
*
* 0(%esp) - %ebx
* 4(%esp) - %ecx
* 8(%esp) - %edx
* C(%esp) - %esi
* 10(%esp) - %edi
* 14(%esp) - %ebp
* 18(%esp) - %eax
* 1C(%esp) - %ds
* 20(%esp) - %es
* 24(%esp) - orig_eax
* 28(%esp) - %eip
* 2C(%esp) - %cs
* 30(%esp) - %eflags
* 34(%esp) - %oldesp
* 38(%esp) - %oldss
*
* "current" is in register %ebx during any slow entries.
*/
#include <linux/sys.h>
#include <linux/linkage.h>
#include <asm/segment.h>
#define ASSEMBLY
#include <asm/smp.h>
EBX = 0x00
ECX = 0x04
EDX = 0x08
ESI = 0x0C
EDI = 0x10
EBP = 0x14
EAX = 0x18
DS = 0x1C
ES = 0x20
ORIG_EAX = 0x24
EIP = 0x28
CS = 0x2C
EFLAGS = 0x30
OLDESP = 0x34
OLDSS = 0x38
CF_MASK = 0x00000001
IF_MASK = 0x00000200
NT_MASK = 0x00004000
VM_MASK = 0x00020000
/*
* these are offsets into the task-struct.
*/
state = 0
flags = 4
sigpending = 8
addr_limit = 12
exec_domain = 16
need_resched = 20
ENOSYS = 38
#define SAVE_ALL \
cld; \
pushl %es; \
pushl %ds; \
pushl %eax; \
pushl %ebp; \
pushl %edi; \
pushl %esi; \
pushl %edx; \
pushl %ecx; \
pushl %ebx; \
movl $(__KERNEL_DS),%edx; \
movl %dx,%ds; \
movl %dx,%es;
#define RESTORE_ALL \
popl %ebx; \
popl %ecx; \
popl %edx; \
popl %esi; \
popl %edi; \
popl %ebp; \
popl %eax; \
1: popl %ds; \
2: popl %es; \
3: addl $4,%esp; \
iret; \
.section fixup,"ax"; \
4: pushl $0; \
popl %ds; \
jmp 2b; \
5: pushl $0; \
popl %es; \
jmp 3b; \
.previous; \
.section __ex_table,"a";\
.align 4; \
.long 1b,4b; \
.long 2b,5b; \
.previous
#define GET_CURRENT(reg) \
movl %esp, reg; \
andl $-8192, reg;
ENTRY(lcall7)
pushfl # We get a different stack layout with call gates,
pushl %eax # which has to be cleaned up later..
SAVE_ALL
movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
movl CS(%esp),%edx # this is eip..
movl EFLAGS(%esp),%ecx # and this is cs..
movl %eax,EFLAGS(%esp) #
movl %edx,EIP(%esp) # Now we move them to their "normal" places
movl %ecx,CS(%esp) #
movl %esp,%ebx
pushl %ebx
andl $-8192,%ebx # GET_CURRENT
movl exec_domain(%ebx),%edx # Get the execution domain
movl 4(%edx),%edx # Get the lcall7 handler for the domain
call *%edx
popl %eax
jmp ret_from_sys_call
#ifdef __SMP__
ALIGN
.globl ret_from_smpfork
ret_from_smpfork:
GET_CURRENT(%ebx)
btrl $0, SYMBOL_NAME(scheduler_lock)
jmp ret_from_sys_call
#endif /* __SMP__ */
/*
* Return to user mode is not as complex as all this looks,
* but we want the default path for a system call return to
* go as quickly as possible which is why some of this is
* less clear than it otherwise should be.
*/
ENTRY(system_call)
pushl %eax # save orig_eax
SAVE_ALL
GET_CURRENT(%ebx)
cmpl $(NR_syscalls),%eax
jae badsys
testb $0x20,flags(%ebx) # PF_TRACESYS
jne tracesys
call *SYMBOL_NAME(sys_call_table)(,%eax,4)
movl %eax,EAX(%esp) # save the return value
ALIGN
.globl ret_from_sys_call
.globl ret_from_intr
ret_from_sys_call:
movl SYMBOL_NAME(bh_mask),%eax
andl SYMBOL_NAME(bh_active),%eax
jne handle_bottom_half
ret_with_reschedule:
cmpl $0,need_resched(%ebx)
jne reschedule
cmpl $0,sigpending(%ebx)
jne signal_return
RESTORE_ALL
ALIGN
signal_return:
testl $(VM_MASK),EFLAGS(%esp)
pushl %esp
jne v86_signal_return
pushl $0
call SYMBOL_NAME(do_signal)
addl $8,%esp
RESTORE_ALL
ALIGN
v86_signal_return:
call SYMBOL_NAME(save_v86_state)
movl %eax,%esp
pushl %eax
pushl $0
call SYMBOL_NAME(do_signal)
addl $8,%esp
RESTORE_ALL
ALIGN
tracesys:
movl $-ENOSYS,EAX(%esp)
call SYMBOL_NAME(syscall_trace)
movl ORIG_EAX(%esp),%eax
call *SYMBOL_NAME(sys_call_table)(,%eax,4)
movl %eax,EAX(%esp) # save the return value
call SYMBOL_NAME(syscall_trace)
jmp ret_from_sys_call
badsys:
movl $-ENOSYS,EAX(%esp)
jmp ret_from_sys_call
ALIGN
ret_from_exception:
movl SYMBOL_NAME(bh_mask),%eax
andl SYMBOL_NAME(bh_active),%eax
jne handle_bottom_half
ALIGN
ret_from_intr:
GET_CURRENT(%ebx)
movl EFLAGS(%esp),%eax # mix EFLAGS and CS
movb CS(%esp),%al
testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor?
jne ret_with_reschedule
RESTORE_ALL
ALIGN
handle_bottom_half:
pushl $ret_from_intr
jmp SYMBOL_NAME(do_bottom_half)
ALIGN
reschedule:
pushl $ret_from_sys_call
jmp SYMBOL_NAME(schedule) # test
ENTRY(divide_error)
pushl $0 # no error code
pushl $ SYMBOL_NAME(do_divide_error)
ALIGN
error_code:
pushl %ds
pushl %eax
xorl %eax,%eax
pushl %ebp
pushl %edi
pushl %esi
pushl %edx
decl %eax # eax = -1
pushl %ecx
pushl %ebx
#if 1
xorl %ecx,%ecx # zero ecx
cld
mov %es,%cx # get the lower order bits of es
#else
cld
# Some older processors leave the top 16 bits of the 32 bit destination
# register undefined, rather than zeroed in the following instruction.
# This won't matter when restoring or loading a segment register from the
# stack. It may be a problem if any code reads the full 32 bit value.
# dosemu? kernel? Would somebody like to verify that this way is really OK?
movl %es,%cx
#endif
xchgl %eax, ORIG_EAX(%esp) # orig_eax (get the error code. )
movl %esp,%edx
xchgl %ecx, ES(%esp) # get the address and save es.
pushl %eax # push the error code
pushl %edx
movl $(__KERNEL_DS),%edx
movl %dx,%ds
movl %dx,%es
GET_CURRENT(%ebx)
call *%ecx
addl $8,%esp
jmp ret_from_exception
ENTRY(coprocessor_error)
pushl $0
pushl $ SYMBOL_NAME(do_coprocessor_error)
jmp error_code
ENTRY(device_not_available)
pushl $-1 # mark this as an int
SAVE_ALL
GET_CURRENT(%ebx)
pushl $ret_from_exception
movl %cr0,%eax
testl $0x4,%eax # EM (math emulation bit)
je SYMBOL_NAME(math_state_restore)
pushl $0 # temporary storage for ORIG_EIP
call SYMBOL_NAME(math_emulate)
addl $4,%esp
ret
ENTRY(debug)
pushl $0
pushl $ SYMBOL_NAME(do_debug)
jmp error_code
ENTRY(nmi)
pushl $0
pushl $ SYMBOL_NAME(do_nmi)
jmp error_code
ENTRY(int3)
pushl $0
pushl $ SYMBOL_NAME(do_int3)
jmp error_code
ENTRY(overflow)
pushl $0
pushl $ SYMBOL_NAME(do_overflow)
jmp error_code
ENTRY(bounds)
pushl $0
pushl $ SYMBOL_NAME(do_bounds)
jmp error_code
ENTRY(invalid_op)
pushl $0
pushl $ SYMBOL_NAME(do_invalid_op)
jmp error_code
ENTRY(coprocessor_segment_overrun)
pushl $0
pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
jmp error_code
ENTRY(reserved)
pushl $0
pushl $ SYMBOL_NAME(do_reserved)
jmp error_code
ENTRY(double_fault)
pushl $ SYMBOL_NAME(do_double_fault)
jmp error_code
ENTRY(invalid_TSS)
pushl $ SYMBOL_NAME(do_invalid_TSS)
jmp error_code
ENTRY(segment_not_present)
pushl $ SYMBOL_NAME(do_segment_not_present)
jmp error_code
ENTRY(stack_segment)
pushl $ SYMBOL_NAME(do_stack_segment)
jmp error_code
ENTRY(general_protection)
pushl $ SYMBOL_NAME(do_general_protection)
jmp error_code
ENTRY(alignment_check)
pushl $ SYMBOL_NAME(do_alignment_check)
jmp error_code
ENTRY(page_fault)
pushl $ SYMBOL_NAME(do_page_fault)
jmp error_code
ENTRY(spurious_interrupt_bug)
pushl $0
pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
jmp error_code
.data
ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_setup) /* 0 */
.long SYMBOL_NAME(sys_exit)
.long SYMBOL_NAME(sys_fork)
.long SYMBOL_NAME(sys_read)
.long SYMBOL_NAME(sys_write)
.long SYMBOL_NAME(sys_open) /* 5 */
.long SYMBOL_NAME(sys_close)
.long SYMBOL_NAME(sys_waitpid)
.long SYMBOL_NAME(sys_creat)
.long SYMBOL_NAME(sys_link)
.long SYMBOL_NAME(sys_unlink) /* 10 */
.long SYMBOL_NAME(sys_execve)
.long SYMBOL_NAME(sys_chdir)
.long SYMBOL_NAME(sys_time)
.long SYMBOL_NAME(sys_mknod)
.long SYMBOL_NAME(sys_chmod) /* 15 */
.long SYMBOL_NAME(sys_lchown)
.long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
.long SYMBOL_NAME(sys_stat)
.long SYMBOL_NAME(sys_lseek)
.long SYMBOL_NAME(sys_getpid) /* 20 */
.long SYMBOL_NAME(sys_mount)
.long SYMBOL_NAME(sys_umount)
.long SYMBOL_NAME(sys_setuid)
.long SYMBOL_NAME(sys_getuid)
.long SYMBOL_NAME(sys_stime) /* 25 */
.long SYMBOL_NAME(sys_ptrace)
.long SYMBOL_NAME(sys_alarm)
.long SYMBOL_NAME(sys_fstat)
.long SYMBOL_NAME(sys_pause)
.long SYMBOL_NAME(sys_utime) /* 30 */
.long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
.long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
.long SYMBOL_NAME(sys_access)
.long SYMBOL_NAME(sys_nice)
.long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
.long SYMBOL_NAME(sys_sync)
.long SYMBOL_NAME(sys_kill)
.long SYMBOL_NAME(sys_rename)
.long SYMBOL_NAME(sys_mkdir)
.long SYMBOL_NAME(sys_rmdir) /* 40 */
.long SYMBOL_NAME(sys_dup)
.long SYMBOL_NAME(sys_pipe)
.long SYMBOL_NAME(sys_times)
.long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
.long SYMBOL_NAME(sys_brk) /* 45 */
.long SYMBOL_NAME(sys_setgid)
.long SYMBOL_NAME(sys_getgid)
.long SYMBOL_NAME(sys_signal)
.long SYMBOL_NAME(sys_geteuid)
.long SYMBOL_NAME(sys_getegid) /* 50 */
.long SYMBOL_NAME(sys_acct)
.long SYMBOL_NAME(sys_ni_syscall) /* old phys syscall holder */
.long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
.long SYMBOL_NAME(sys_ioctl)
.long SYMBOL_NAME(sys_fcntl) /* 55 */
.long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
.long SYMBOL_NAME(sys_setpgid)
.long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
.long SYMBOL_NAME(sys_olduname)
.long SYMBOL_NAME(sys_umask) /* 60 */
.long SYMBOL_NAME(sys_chroot)
.long SYMBOL_NAME(sys_ustat)
.long SYMBOL_NAME(sys_dup2)
.long SYMBOL_NAME(sys_getppid)
.long SYMBOL_NAME(sys_getpgrp) /* 65 */
.long SYMBOL_NAME(sys_setsid)
.long SYMBOL_NAME(sys_sigaction)
.long SYMBOL_NAME(sys_sgetmask)
.long SYMBOL_NAME(sys_ssetmask)
.long SYMBOL_NAME(sys_setreuid) /* 70 */
.long SYMBOL_NAME(sys_setregid)
.long SYMBOL_NAME(sys_sigsuspend)
.long SYMBOL_NAME(sys_sigpending)
.long SYMBOL_NAME(sys_sethostname)
.long SYMBOL_NAME(sys_setrlimit) /* 75 */
.long SYMBOL_NAME(sys_getrlimit)
.long SYMBOL_NAME(sys_getrusage)
.long SYMBOL_NAME(sys_gettimeofday)
.long SYMBOL_NAME(sys_settimeofday)
.long SYMBOL_NAME(sys_getgroups) /* 80 */
.long SYMBOL_NAME(sys_setgroups)
.long SYMBOL_NAME(old_select)
.long SYMBOL_NAME(sys_symlink)
.long SYMBOL_NAME(sys_lstat)
.long SYMBOL_NAME(sys_readlink) /* 85 */
.long SYMBOL_NAME(sys_uselib)
.long SYMBOL_NAME(sys_swapon)
.long SYMBOL_NAME(sys_reboot)
.long SYMBOL_NAME(old_readdir)
.long SYMBOL_NAME(old_mmap) /* 90 */
.long SYMBOL_NAME(sys_munmap)
.long SYMBOL_NAME(sys_truncate)
.long SYMBOL_NAME(sys_ftruncate)
.long SYMBOL_NAME(sys_fchmod)
.long SYMBOL_NAME(sys_fchown) /* 95 */
.long SYMBOL_NAME(sys_getpriority)
.long SYMBOL_NAME(sys_setpriority)
.long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
.long SYMBOL_NAME(sys_statfs)
.long SYMBOL_NAME(sys_fstatfs) /* 100 */
.long SYMBOL_NAME(sys_ioperm)
.long SYMBOL_NAME(sys_socketcall)
.long SYMBOL_NAME(sys_syslog)
.long SYMBOL_NAME(sys_setitimer)
.long SYMBOL_NAME(sys_getitimer) /* 105 */
.long SYMBOL_NAME(sys_newstat)
.long SYMBOL_NAME(sys_newlstat)
.long SYMBOL_NAME(sys_newfstat)
.long SYMBOL_NAME(sys_uname)
.long SYMBOL_NAME(sys_iopl) /* 110 */
.long SYMBOL_NAME(sys_vhangup)
.long SYMBOL_NAME(sys_idle)
.long SYMBOL_NAME(sys_vm86old)
.long SYMBOL_NAME(sys_wait4)
.long SYMBOL_NAME(sys_swapoff) /* 115 */
.long SYMBOL_NAME(sys_sysinfo)
.long SYMBOL_NAME(sys_ipc)
.long SYMBOL_NAME(sys_fsync)
.long SYMBOL_NAME(sys_sigreturn)
.long SYMBOL_NAME(sys_clone) /* 120 */
.long SYMBOL_NAME(sys_setdomainname)
.long SYMBOL_NAME(sys_newuname)
.long SYMBOL_NAME(sys_modify_ldt)
.long SYMBOL_NAME(sys_adjtimex)
.long SYMBOL_NAME(sys_mprotect) /* 125 */
.long SYMBOL_NAME(sys_sigprocmask)
.long SYMBOL_NAME(sys_create_module)
.long SYMBOL_NAME(sys_init_module)
.long SYMBOL_NAME(sys_delete_module)
.long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
.long SYMBOL_NAME(sys_quotactl)
.long SYMBOL_NAME(sys_getpgid)
.long SYMBOL_NAME(sys_fchdir)
.long SYMBOL_NAME(sys_bdflush)
.long SYMBOL_NAME(sys_sysfs) /* 135 */
.long SYMBOL_NAME(sys_personality)
.long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
.long SYMBOL_NAME(sys_setfsuid)
.long SYMBOL_NAME(sys_setfsgid)
.long SYMBOL_NAME(sys_llseek) /* 140 */
.long SYMBOL_NAME(sys_getdents)
.long SYMBOL_NAME(sys_select)
.long SYMBOL_NAME(sys_flock)
.long SYMBOL_NAME(sys_msync)
.long SYMBOL_NAME(sys_readv) /* 145 */
.long SYMBOL_NAME(sys_writev)
.long SYMBOL_NAME(sys_getsid)
.long SYMBOL_NAME(sys_fdatasync)
.long SYMBOL_NAME(sys_sysctl)
.long SYMBOL_NAME(sys_mlock) /* 150 */
.long SYMBOL_NAME(sys_munlock)
.long SYMBOL_NAME(sys_mlockall)
.long SYMBOL_NAME(sys_munlockall)
.long SYMBOL_NAME(sys_sched_setparam)
.long SYMBOL_NAME(sys_sched_getparam) /* 155 */
.long SYMBOL_NAME(sys_sched_setscheduler)
.long SYMBOL_NAME(sys_sched_getscheduler)
.long SYMBOL_NAME(sys_sched_yield)
.long SYMBOL_NAME(sys_sched_get_priority_max)
.long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
.long SYMBOL_NAME(sys_sched_rr_get_interval)
.long SYMBOL_NAME(sys_nanosleep)
.long SYMBOL_NAME(sys_mremap)
.long SYMBOL_NAME(sys_setresuid)
.long SYMBOL_NAME(sys_getresuid) /* 165 */
.long SYMBOL_NAME(sys_vm86)
.long SYMBOL_NAME(sys_query_module)
.long SYMBOL_NAME(sys_poll)
.long SYMBOL_NAME(sys_nfsservctl)
.long SYMBOL_NAME(sys_setresgid) /* 170 */
.long SYMBOL_NAME(sys_getresgid)
.long SYMBOL_NAME(sys_prctl)
.long SYMBOL_NAME(sys_rt_sigreturn)
.long SYMBOL_NAME(sys_rt_sigaction)
.long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
.long SYMBOL_NAME(sys_rt_sigpending)
.long SYMBOL_NAME(sys_rt_sigtimedwait)
.long SYMBOL_NAME(sys_rt_sigqueueinfo)
.long SYMBOL_NAME(sys_rt_sigsuspend)
.long SYMBOL_NAME(sys_pread) /* 180 */
.long SYMBOL_NAME(sys_pwrite)
.long SYMBOL_NAME(sys_chown)
.long SYMBOL_NAME(sys_getcwd)
.long SYMBOL_NAME(sys_capget)
.long SYMBOL_NAME(sys_capset) /* 185 */
.long SYMBOL_NAME(sys_sigaltstack)
.long SYMBOL_NAME(sys_sendfile)
.long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
.long SYMBOL_NAME(sys_table) /* 190 */
.rept NR_syscalls-190
.long SYMBOL_NAME(sys_ni_syscall)
.endr

61
kernel/table21/main.c Normal file
View File

@@ -0,0 +1,61 @@
/*
* linux/table/table_impl.c
* Copyright (C) 1998 Martin Baulig
*/
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/kernel_stat.h>
#include <linux/tty.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/string.h>
#include <linux/mman.h>
#include <linux/proc_fs.h>
#include <linux/ioport.h>
#include <linux/config.h>
#include <linux/mm.h>
#include <linux/pagemap.h>
#include <linux/swap.h>
#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/signal.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <linux/module.h>
#include <linux/table.h>
#include "version.h"
extern void scheduling_functions_start_here(void);
extern void scheduling_functions_end_here(void);
int (*table_function_ptr) (int, union table *, const void *) = 0;
EXPORT_SYMBOL(table_function_ptr);
EXPORT_SYMBOL(nr_running);
EXPORT_SYMBOL(pidhash);
EXPORT_SYMBOL(task);
EXPORT_SYMBOL(si_swapinfo);
EXPORT_SYMBOL(scheduling_functions_start_here);
EXPORT_SYMBOL(scheduling_functions_end_here);
EXPORT_SYMBOL(avenrun);
EXPORT_SYMBOL(nr_tasks);
EXPORT_SYMBOL(last_pid);
EXPORT_SYMBOL(page_cache_size);
EXPORT_SYMBOL(init_mm);
asmlinkage int
sys_table (int type, union table *buf, const void *param)
{
if (table_function_ptr == 0)
return -ENOSYS;
return (*table_function_ptr) (type, buf, param);
}

607
kernel/table21/module.c Normal file
View File

@@ -0,0 +1,607 @@
/*
* linux/table/table_impl.c
* Copyright (C) 1998 Martin Baulig
*/
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/kernel_stat.h>
#include <linux/tty.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/string.h>
#include <linux/mman.h>
#include <linux/proc_fs.h>
#include <linux/ioport.h>
#include <linux/config.h>
#include <linux/mm.h>
#include <linux/pagemap.h>
#include <linux/swap.h>
#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/signal.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <linux/module.h>
#include <linux/table.h>
#include "version.h"
extern int (*table_function_ptr) (int, union table *, const void *);
int table_fkt (int, union table *, const void *);
EXPORT_NO_SYMBOLS;
int
init_module(void)
{
printk ("init_module () = %p - %d, %d\n",
table_fkt, sizeof (union table), sizeof (sigset_t));
table_function_ptr = table_fkt;
return 0;
}
void
cleanup_module(void)
{
table_function_ptr = 0;
}
#define LOAD_INT(x) ((x) >> FSHIFT)
#define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
#ifdef CONFIG_DEBUG_MALLOC
int get_malloc(char * buffer);
#endif
static void collect_sigign_sigcatch(struct task_struct *p, sigset_t *ign,
sigset_t *catch)
{
struct k_sigaction *k;
int i;
sigemptyset(ign);
sigemptyset(catch);
#if 0
printk ("collect_sigign_sigcatch: %p - %p\n",
p, p->sig);
#endif
if (p->sig) {
k = p->sig->action;
for (i = 1; i <= _NSIG; ++i, ++k) {
#if 0
printk ("signal: %d - %p (%p, %p)\n",
i, k->sa.sa_handler, SIG_IGN, SIG_DFL);
#endif
if (k->sa.sa_handler == SIG_IGN)
sigaddset(ign, i);
else if (k->sa.sa_handler != SIG_DFL)
sigaddset(catch, i);
}
}
}
/*
* These bracket the sleeping functions..
*/
extern void scheduling_functions_start_here(void);
extern void scheduling_functions_end_here(void);
#define first_sched ((unsigned long) scheduling_functions_start_here)
#define last_sched ((unsigned long) scheduling_functions_end_here)
static unsigned long get_wchan(struct task_struct *p)
{
if (!p || p == current || p->state == TASK_RUNNING)
return 0;
#if defined(__i386__)
{
unsigned long ebp, eip;
unsigned long stack_page;
int count = 0;
stack_page = 4096 + (unsigned long)p;
if (!stack_page)
return 0;
ebp = p->tss.ebp;
do {
if (ebp < stack_page || ebp >= 4092+stack_page)
return 0;
eip = *(unsigned long *) (ebp+4);
if (eip < first_sched || eip >= last_sched)
return eip;
ebp = *(unsigned long *) ebp;
} while (count++ < 16);
}
#elif defined(__alpha__)
/*
* This one depends on the frame size of schedule(). Do a
* "disass schedule" in gdb to find the frame size. Also, the
* code assumes that sleep_on() follows immediately after
* interruptible_sleep_on() and that add_timer() follows
* immediately after interruptible_sleep(). Ugly, isn't it?
* Maybe adding a wchan field to task_struct would be better,
* after all...
*/
{
unsigned long schedule_frame;
unsigned long pc;
pc = thread_saved_pc(&p->tss);
if (pc >= first_sched && pc < last_sched) {
schedule_frame = ((unsigned long *)p->tss.ksp)[6];
return ((unsigned long *)schedule_frame)[12];
}
return pc;
}
#elif defined(__mc68000__)
{
unsigned long fp, pc;
unsigned long stack_page;
int count = 0;
extern int sys_pause (void);
stack_page = p->kernel_stack_page;
if (!stack_page)
return 0;
fp = ((struct switch_stack *)p->tss.ksp)->a6;
do {
if (fp < stack_page || fp >= 4088+stack_page)
return 0;
pc = ((unsigned long *)fp)[1];
/* FIXME: This depends on the order of these functions. */
if (pc < first_sched || pc >= last_sched)
return pc;
fp = *(unsigned long *) fp;
} while (count++ < 16);
}
#elif defined(__powerpc__)
return (p->tss.wchan);
#elif defined (CONFIG_ARM)
{
unsigned long fp, lr;
unsigned long stack_page;
int count = 0;
stack_page = 4096 + (unsigned long)p;
fp = get_css_fp (&p->tss);
do {
if (fp < stack_page || fp > 4092+stack_page)
return 0;
lr = pc_pointer (((unsigned long *)fp)[-1]);
if (lr < first_sched || lr > last_sched)
return lr;
fp = *(unsigned long *) (fp - 12);
} while (count ++ < 16);
}
#endif
return 0;
}
#if defined(__i386__)
# define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1019])
# define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022])
#elif defined(__alpha__)
/*
* See arch/alpha/kernel/ptrace.c for details.
*/
# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \
+ (long)&((struct pt_regs *)0)->reg)
# define KSTK_EIP(tsk) \
(*(unsigned long *)(PT_REG(pc) + PAGE_SIZE + (unsigned long)(tsk)))
# define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp)
#elif defined(CONFIG_ARM)
# define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022])
# define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1020])
#elif defined(__mc68000__)
#define KSTK_EIP(tsk) \
({ \
unsigned long eip = 0; \
if ((tsk)->tss.esp0 > PAGE_SIZE && \
MAP_NR((tsk)->tss.esp0) < max_mapnr) \
eip = ((struct pt_regs *) (tsk)->tss.esp0)->pc; \
eip; })
#define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp)
#elif defined(__powerpc__)
#define KSTK_EIP(tsk) ((tsk)->tss.regs->nip)
#define KSTK_ESP(tsk) ((tsk)->tss.regs->gpr[1])
#elif defined (__sparc_v9__)
# define KSTK_EIP(tsk) ((tsk)->tss.kregs->tpc)
# define KSTK_ESP(tsk) ((tsk)->tss.kregs->u_regs[UREG_FP])
#elif defined(__sparc__)
# define KSTK_EIP(tsk) ((tsk)->tss.kregs->pc)
# define KSTK_ESP(tsk) ((tsk)->tss.kregs->u_regs[UREG_FP])
#endif
/* Gcc optimizes away "strlen(x)" for constant x */
#define ADDBUF(buffer, string) \
do { memcpy(buffer, string, strlen(string)); \
buffer += strlen(string); } while (0)
static inline void statm_pte_range(pmd_t * pmd, unsigned long address, unsigned long size,
int * pages, int * shared, int * dirty, int * total)
{
pte_t * pte;
unsigned long end;
if (pmd_none(*pmd))
return;
if (pmd_bad(*pmd)) {
printk("statm_pte_range: bad pmd (%08lx)\n", pmd_val(*pmd));
pmd_clear(pmd);
return;
}
pte = pte_offset(pmd, address);
address &= ~PMD_MASK;
end = address + size;
if (end > PMD_SIZE)
end = PMD_SIZE;
do {
pte_t page = *pte;
address += PAGE_SIZE;
pte++;
if (pte_none(page))
continue;
++*total;
if (!pte_present(page))
continue;
++*pages;
if (pte_dirty(page))
++*dirty;
if (MAP_NR(pte_page(page)) >= max_mapnr)
continue;
if (atomic_read(&mem_map[MAP_NR(pte_page(page))].count) > 1)
++*shared;
} while (address < end);
}
static inline void statm_pmd_range(pgd_t * pgd, unsigned long address, unsigned long size,
int * pages, int * shared, int * dirty, int * total)
{
pmd_t * pmd;
unsigned long end;
if (pgd_none(*pgd))
return;
if (pgd_bad(*pgd)) {
printk("statm_pmd_range: bad pgd (%08lx)\n", pgd_val(*pgd));
pgd_clear(pgd);
return;
}
pmd = pmd_offset(pgd, address);
address &= ~PGDIR_MASK;
end = address + size;
if (end > PGDIR_SIZE)
end = PGDIR_SIZE;
do {
statm_pte_range(pmd, address, end - address, pages, shared, dirty, total);
address = (address + PMD_SIZE) & PMD_MASK;
pmd++;
} while (address < end);
}
static void statm_pgd_range(pgd_t * pgd, unsigned long address, unsigned long end,
int * pages, int * shared, int * dirty, int * total)
{
while (address < end) {
statm_pmd_range(pgd, address, end - address, pages, shared, dirty, total);
address = (address + PGDIR_SIZE) & PGDIR_MASK;
pgd++;
}
}
int
table_fkt (int type, union table *buf, const void *param)
{
union table tbl;
struct sysinfo i;
struct task_struct *tsk = NULL;
struct proclist_args plistargs;
int index, tindex, err, tty;
sigset_t sigign, sigcatch;
pid_t pid;
if (type == TABLE_VERSION)
return _TABLE_VERSION;
if (!buf)
return -EFAULT;
memset (&tbl, 0, sizeof (union table));
/* For TABLE_PROC_*, read pid and get task_struct */
switch (type) {
case TABLE_PROC_UID:
case TABLE_PROC_MEM:
case TABLE_PROC_SEGMENT:
case TABLE_PROC_TIME:
case TABLE_PROC_STATE:
case TABLE_PROC_SIGNAL:
case TABLE_PROC_KERNEL:
err = verify_area (VERIFY_READ, param, sizeof (pid_t));
if (err)
return err;
copy_from_user (&pid, param, sizeof (pid_t));
read_lock (&tasklist_lock);
tsk = find_task_by_pid (pid);
/* FIXME!! This should be done after the last use */
read_unlock(&tasklist_lock);
if (tsk == NULL)
return -ESRCH;
break;
case TABLE_PROCLIST:
err = verify_area (VERIFY_READ, param,
sizeof (struct proclist_args));
if (err)
return err;
copy_from_user (&plistargs, param,
sizeof (struct proclist_args));
break;
}
/* Main function dispatcher */
switch (type) {
case TABLE_PROCLIST:
tsk = task [0];
read_lock (&tasklist_lock);
for (index = tindex = 0; index < nr_tasks;
index++, tsk = tsk->next_task) {
if (tsk->pid == 0) continue;
switch (plistargs.which & TABLE_KERN_PROC_MASK) {
case TABLE_KERN_PROC_PID:
if (tsk->pid != plistargs.arg) continue;
break;
case TABLE_KERN_PROC_PGRP:
if (tsk->pgrp != plistargs.arg) continue;
break;
case TABLE_KERN_PROC_SESSION:
if (tsk->session != plistargs.arg) continue;
case TABLE_KERN_PROC_TTY:
tty = tsk->tty ?
kdev_t_to_nr (tsk->tty->device) : 0;
if (tty != plistargs.arg) continue;
break;
case TABLE_KERN_PROC_UID:
if (tsk->uid != plistargs.arg) continue;
break;
case TABLE_KERN_PROC_RUID:
if (tsk->euid != plistargs.arg) continue;
break;
}
if ((plistargs.which & TABLE_EXCLUDE_IDLE) &&
(tsk->state != 0))
continue;
if ((plistargs.which & TABLE_EXCLUDE_NOTTY) &&
(tsk->tty == NULL))
continue;
tbl.proclist.pids [tindex++] = tsk->pid;
}
tbl.proclist.nr_running = nr_running;
tbl.proclist.last_pid = last_pid;
tbl.proclist.nr_tasks = tindex;
read_unlock(&tasklist_lock);
break;
case TABLE_CPU:
tbl.cpu.total = jiffies;
tbl.cpu.user = kstat.cpu_user;
tbl.cpu.nice = kstat.cpu_nice;
tbl.cpu.sys = kstat.cpu_system;
tbl.cpu.idle = tbl.cpu.total -
(tbl.cpu.user + tbl.cpu.nice + tbl.cpu.sys);
tbl.cpu.frequency = HZ;
break;
case TABLE_MEM:
si_meminfo (&i);
tbl.mem.total = i.totalram;
tbl.mem.used = i.totalram - i.freeram;
tbl.mem.free = i.freeram;
tbl.mem.shared = i.sharedram;
tbl.mem.buffer = i.bufferram;
tbl.mem.cached = page_cache_size << PAGE_SHIFT;
break;
case TABLE_SWAP:
si_swapinfo (&i);
tbl.swap.total = i.totalswap;
tbl.swap.used = i.totalswap - i.freeswap;
tbl.swap.free = i.freeswap;
break;
case TABLE_LOADAVG:
tbl.loadavg.loadavg [0] = (double) avenrun [0] / (1 << FSHIFT);
tbl.loadavg.loadavg [1] = (double) avenrun [1] / (1 << FSHIFT);
tbl.loadavg.loadavg [2] = (double) avenrun [2] / (1 << FSHIFT);
tbl.loadavg.nr_running = nr_running;
tbl.loadavg.nr_tasks = nr_tasks;
tbl.loadavg.last_pid = last_pid;
break;
case TABLE_UPTIME:
tbl.uptime.uptime = jiffies;
tbl.uptime.idle = task[0]->times.tms_utime +
task[0]->times.tms_stime;
break;
case TABLE_PROC_STATE:
tbl.proc_state.uid = tsk->uid;
tbl.proc_state.gid = tsk->gid;
tbl.proc_state.state = tsk->state;
tbl.proc_state.flags = tsk->flags;
memcpy (tbl.proc_state.comm, tsk->comm,
sizeof (tbl.proc_state.comm));
break;
case TABLE_PROC_UID:
tbl.proc_uid.uid = tsk->uid;
tbl.proc_uid.euid = tsk->euid;
tbl.proc_uid.suid = tsk->suid;
tbl.proc_uid.fsuid = tsk->fsuid;
tbl.proc_uid.gid = tsk->gid;
tbl.proc_uid.egid = tsk->egid;
tbl.proc_uid.sgid = tsk->sgid;
tbl.proc_uid.fsgid = tsk->fsgid;
tbl.proc_uid.pid = tsk->pid;
tbl.proc_uid.pgrp = tsk->pgrp;
tbl.proc_uid.ppid = tsk->p_pptr->pid;
tbl.proc_uid.session = tsk->session;
tbl.proc_uid.tty = tsk->tty ?
kdev_t_to_nr (tsk->tty->device) : 0;
tbl.proc_uid.tpgid = tsk->tty ? tsk->tty->pgrp : -1;
tbl.proc_uid.priority = tsk->priority;
tbl.proc_uid.counter = tsk->counter;
tbl.proc_uid.def_priority = DEF_PRIORITY;
break;
case TABLE_PROC_SIGNAL:
memcpy (&tbl.proc_signal.signal, &tsk->signal,
sizeof (tbl.proc_signal.signal));
memcpy (&tbl.proc_signal.blocked, &tsk->blocked,
sizeof (tbl.proc_signal.blocked));
collect_sigign_sigcatch (tsk, &sigign, &sigcatch);
memcpy (&tbl.proc_signal.ignored, &sigign,
sizeof (tbl.proc_signal.ignored));
memcpy (&tbl.proc_signal.caught, &sigcatch,
sizeof (tbl.proc_signal.caught));
#if 0
printk ("PROC_SIGNAL: (%lu, %lu) - (%lu, %lu)\n",
tbl.proc_signal.ignored.sig [0],
tbl.proc_signal.ignored.sig [1],
tbl.proc_signal.caught.sig [0],
tbl.proc_signal.caught.sig [1]);
#endif
break;
case TABLE_PROC_MEM:
if (tsk->mm && tsk->mm != &init_mm) {
tbl.proc_mem.context = tsk->mm->context;
tbl.proc_mem.start_code = tsk->mm->start_code;
tbl.proc_mem.end_code = tsk->mm->end_code;
tbl.proc_mem.start_data = tsk->mm-> start_data;
tbl.proc_mem.end_data = tsk->mm->end_data;
tbl.proc_mem.start_brk = tsk->mm->start_brk;
tbl.proc_mem.brk = tsk->mm->brk;
tbl.proc_mem.start_stack = tsk->mm->start_stack;
tbl.proc_mem.start_mmap = tsk->mm->mmap ?
tsk->mm->mmap->vm_start : 0;
tbl.proc_mem.arg_start = tsk->mm->arg_start;
tbl.proc_mem.arg_end = tsk->mm->arg_end;
tbl.proc_mem.env_start = tsk->mm->env_start;
tbl.proc_mem.env_end = tsk->mm->env_end;
tbl.proc_mem.rss = tsk->mm->rss << PAGE_SHIFT;
tbl.proc_mem.total_vm = tsk->mm->total_vm;
tbl.proc_mem.locked_vm = tsk->mm->locked_vm;
}
tbl.proc_mem.rlim = tsk->rlim ? tsk->rlim[RLIMIT_RSS].rlim_cur : 0;
break;
case TABLE_PROC_SEGMENT:
if (tsk->mm && tsk->mm != &init_mm) {
unsigned long vsize = 0;
int size = 0, resident = 0, share = 0;
int trs = 0, lrs = 0, drs = 0, srs = 0, dt = 0;
struct vm_area_struct * vma = tsk->mm->mmap;
while (vma) {
pgd_t *pgd = pgd_offset(tsk->mm, vma->vm_start);
int pages = 0, shared = 0, dirty = 0, total = 0;
vsize += vma->vm_end - vma->vm_start;
statm_pgd_range (pgd, vma->vm_start, vma->vm_end,
&pages, &shared, &dirty, &total);
resident += pages;
share += shared;
dt += dirty;
size += total;
/* Well, shared library seem to get mapped
* above 0x40000000 and are executable,
* so I use this hack to get their size.
*/
if (vma->vm_flags & VM_GROWSDOWN)
srs += pages; /* stack */
else if ((vma->vm_flags & VM_EXEC) &&
(vma->vm_start > 0x40000000))
lrs += pages; /* library */
else if (vma->vm_flags & VM_EXECUTABLE)
trs += pages; /* text */
else
drs += pages;
vma = vma->vm_next;
}
tbl.proc_segment.vsize = vsize;
tbl.proc_segment.size = size << PAGE_SHIFT;
tbl.proc_segment.resident = resident << PAGE_SHIFT;
tbl.proc_segment.shared = share << PAGE_SHIFT;
tbl.proc_segment.trs = trs << PAGE_SHIFT;
tbl.proc_segment.lrs = lrs << PAGE_SHIFT;
tbl.proc_segment.drs = drs << PAGE_SHIFT;
tbl.proc_segment.srs = srs << PAGE_SHIFT;
tbl.proc_segment.dt = dt << PAGE_SHIFT;
}
break;
case TABLE_PROC_TIME:
tbl.proc_time.utime = tsk->times.tms_utime;
tbl.proc_time.stime = tsk->times.tms_stime;
tbl.proc_time.cutime = tsk->times.tms_cutime;
tbl.proc_time.cstime = tsk->times.tms_cstime;
tbl.proc_time.start_time = tsk->start_time;
tbl.proc_time.timeout = tsk->timeout;
tbl.proc_time.policy = tsk->policy;
tbl.proc_time.rt_priority = tsk->rt_priority;
tbl.proc_time.it_real_value = tsk->it_real_value;
tbl.proc_time.it_prof_value = tsk->it_prof_value;
tbl.proc_time.it_virt_value = tsk->it_virt_value;
tbl.proc_time.it_real_incr = tsk->it_real_incr;
tbl.proc_time.it_prof_incr = tsk->it_prof_incr;
tbl.proc_time.it_virt_incr = tsk->it_virt_incr;
break;
case TABLE_PROC_KERNEL:
tbl.proc_kernel.min_flt = tsk->min_flt;
tbl.proc_kernel.cmin_flt = tsk->cmin_flt;
tbl.proc_kernel.maj_flt = tsk->maj_flt;
tbl.proc_kernel.cmaj_flt = tsk->cmaj_flt;
tbl.proc_kernel.kesp = KSTK_ESP(tsk);
tbl.proc_kernel.keip = KSTK_EIP(tsk);
tbl.proc_kernel.nswap = tsk->nswap;
tbl.proc_kernel.cnswap = tsk->cnswap;
tbl.proc_kernel.wchan = get_wchan (tsk);
break;
default:
return -EINVAL;
}
err = verify_area (VERIFY_WRITE, buf, sizeof (struct table));
if (err)
return err;
copy_to_user (buf, &tbl, sizeof (union table));
return 0;
}

View File

@@ -0,0 +1,344 @@
#ifndef _ASM_I386_UNISTD_H_
#define _ASM_I386_UNISTD_H_
/*
* This file contains the system call numbers.
*/
#define __NR_setup 0 /* used only by init, to get system going */
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
#define __NR_open 5
#define __NR_close 6
#define __NR_waitpid 7
#define __NR_creat 8
#define __NR_link 9
#define __NR_unlink 10
#define __NR_execve 11
#define __NR_chdir 12
#define __NR_time 13
#define __NR_mknod 14
#define __NR_chmod 15
#define __NR_lchown 16
#define __NR_break 17
#define __NR_oldstat 18
#define __NR_lseek 19
#define __NR_getpid 20
#define __NR_mount 21
#define __NR_umount 22
#define __NR_setuid 23
#define __NR_getuid 24
#define __NR_stime 25
#define __NR_ptrace 26
#define __NR_alarm 27
#define __NR_oldfstat 28
#define __NR_pause 29
#define __NR_utime 30
#define __NR_stty 31
#define __NR_gtty 32
#define __NR_access 33
#define __NR_nice 34
#define __NR_ftime 35
#define __NR_sync 36
#define __NR_kill 37
#define __NR_rename 38
#define __NR_mkdir 39
#define __NR_rmdir 40
#define __NR_dup 41
#define __NR_pipe 42
#define __NR_times 43
#define __NR_prof 44
#define __NR_brk 45
#define __NR_setgid 46
#define __NR_getgid 47
#define __NR_signal 48
#define __NR_geteuid 49
#define __NR_getegid 50
#define __NR_acct 51
#define __NR_phys 52
#define __NR_lock 53
#define __NR_ioctl 54
#define __NR_fcntl 55
#define __NR_mpx 56
#define __NR_setpgid 57
#define __NR_ulimit 58
#define __NR_oldolduname 59
#define __NR_umask 60
#define __NR_chroot 61
#define __NR_ustat 62
#define __NR_dup2 63
#define __NR_getppid 64
#define __NR_getpgrp 65
#define __NR_setsid 66
#define __NR_sigaction 67
#define __NR_sgetmask 68
#define __NR_ssetmask 69
#define __NR_setreuid 70
#define __NR_setregid 71
#define __NR_sigsuspend 72
#define __NR_sigpending 73
#define __NR_sethostname 74
#define __NR_setrlimit 75
#define __NR_getrlimit 76
#define __NR_getrusage 77
#define __NR_gettimeofday 78
#define __NR_settimeofday 79
#define __NR_getgroups 80
#define __NR_setgroups 81
#define __NR_select 82
#define __NR_symlink 83
#define __NR_oldlstat 84
#define __NR_readlink 85
#define __NR_uselib 86
#define __NR_swapon 87
#define __NR_reboot 88
#define __NR_readdir 89
#define __NR_mmap 90
#define __NR_munmap 91
#define __NR_truncate 92
#define __NR_ftruncate 93
#define __NR_fchmod 94
#define __NR_fchown 95
#define __NR_getpriority 96
#define __NR_setpriority 97
#define __NR_profil 98
#define __NR_statfs 99
#define __NR_fstatfs 100
#define __NR_ioperm 101
#define __NR_socketcall 102
#define __NR_syslog 103
#define __NR_setitimer 104
#define __NR_getitimer 105
#define __NR_stat 106
#define __NR_lstat 107
#define __NR_fstat 108
#define __NR_olduname 109
#define __NR_iopl 110
#define __NR_vhangup 111
#define __NR_idle 112
#define __NR_vm86old 113
#define __NR_wait4 114
#define __NR_swapoff 115
#define __NR_sysinfo 116
#define __NR_ipc 117
#define __NR_fsync 118
#define __NR_sigreturn 119
#define __NR_clone 120
#define __NR_setdomainname 121
#define __NR_uname 122
#define __NR_modify_ldt 123
#define __NR_adjtimex 124
#define __NR_mprotect 125
#define __NR_sigprocmask 126
#define __NR_create_module 127
#define __NR_init_module 128
#define __NR_delete_module 129
#define __NR_get_kernel_syms 130
#define __NR_quotactl 131
#define __NR_getpgid 132
#define __NR_fchdir 133
#define __NR_bdflush 134
#define __NR_sysfs 135
#define __NR_personality 136
#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
#define __NR_setfsuid 138
#define __NR_setfsgid 139
#define __NR__llseek 140
#define __NR_getdents 141
#define __NR__newselect 142
#define __NR_flock 143
#define __NR_msync 144
#define __NR_readv 145
#define __NR_writev 146
#define __NR_getsid 147
#define __NR_fdatasync 148
#define __NR__sysctl 149
#define __NR_mlock 150
#define __NR_munlock 151
#define __NR_mlockall 152
#define __NR_munlockall 153
#define __NR_sched_setparam 154
#define __NR_sched_getparam 155
#define __NR_sched_setscheduler 156
#define __NR_sched_getscheduler 157
#define __NR_sched_yield 158
#define __NR_sched_get_priority_max 159
#define __NR_sched_get_priority_min 160
#define __NR_sched_rr_get_interval 161
#define __NR_nanosleep 162
#define __NR_mremap 163
#define __NR_setresuid 164
#define __NR_getresuid 165
#define __NR_vm86 166
#define __NR_query_module 167
#define __NR_poll 168
#define __NR_nfsservctl 169
#define __NR_setresgid 170
#define __NR_getresgid 171
#define __NR_prctl 172
#define __NR_rt_sigreturn 173
#define __NR_rt_sigaction 174
#define __NR_rt_sigprocmask 175
#define __NR_rt_sigpending 176
#define __NR_rt_sigtimedwait 177
#define __NR_rt_sigqueueinfo 178
#define __NR_rt_sigsuspend 179
#define __NR_pread 180
#define __NR_pwrite 181
#define __NR_chown 182
#define __NR_getcwd 183
#define __NR_capget 184
#define __NR_capset 185
#define __NR_sigaltstack 186
#define __NR_sendfile 187
#define __NR_streams1 188 /* some people actually want it */
#define __NR_streams2 189 /* some people actually want it */
#define __NR_table 190
/* user-visible error numbers are in the range -1 - -122: see <asm-i386/errno.h> */
#define __syscall_return(type, res) \
do { \
if ((unsigned long)(res) >= (unsigned long)(-125)) { \
errno = -(res); \
res = -1; \
} \
return (type) (res); \
} while (0)
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
#define _syscall0(type,name) \
type name(void) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name)); \
__syscall_return(type,__res); \
}
#define _syscall1(type,name,type1,arg1) \
type name(type1 arg1) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1))); \
__syscall_return(type,__res); \
}
#define _syscall2(type,name,type1,arg1,type2,arg2) \
type name(type1 arg1,type2 arg2) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
__syscall_return(type,__res); \
}
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
type name(type1 arg1,type2 arg2,type3 arg3) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
"d" ((long)(arg3))); \
__syscall_return(type,__res); \
}
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
"d" ((long)(arg3)),"S" ((long)(arg4))); \
__syscall_return(type,__res); \
}
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
type5,arg5) \
type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
"d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \
__syscall_return(type,__res); \
}
#ifdef __KERNEL_SYSCALLS__
/*
* we need this inline - forking from kernel space will result
* in NO COPY ON WRITE (!!!), until an execve is executed. This
* is no problem, but for the stack. This is handled by not letting
* main() use the stack at all after fork(). Thus, no function
* calls - which means inline code for fork too, as otherwise we
* would use the stack upon exit from 'fork()'.
*
* Actually only pause and fork are needed inline, so that there
* won't be any messing with the stack from main(), but we define
* some others too.
*/
#define __NR__exit __NR_exit
static inline _syscall0(int,idle)
static inline _syscall0(int,pause)
static inline _syscall1(int,setup,int,magic)
static inline _syscall0(int,sync)
static inline _syscall0(pid_t,setsid)
static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
static inline _syscall1(int,dup,int,fd)
static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
static inline _syscall1(int,close,int,fd)
static inline _syscall1(int,_exit,int,exitcode)
static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
static inline _syscall1(int,delete_module,const char *,name)
static inline pid_t wait(int * wait_stat)
{
return waitpid(-1,wait_stat,0);
}
/*
* This is the mechanism for creating a new kernel thread.
*
* NOTE! Only a kernel-only process(ie the swapper or direct descendants
* who haven't done an "execve()") should use this: it will work within
* a system call from a "real" process, but the process memory space will
* not be free'd until both the parent and the child have exited.
*/
static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
long retval;
__asm__ __volatile__(
"movl %%esp,%%esi\n\t"
"int $0x80\n\t" /* Linux/i386 system call */
"cmpl %%esp,%%esi\n\t" /* child or parent? */
"je 1f\n\t" /* parent - jump */
"pushl %3\n\t" /* push argument */
"call *%4\n\t" /* call fn */
"movl %2,%0\n\t" /* exit */
"int $0x80\n"
"1:\t"
:"=a" (retval)
:"0" (__NR_clone), "i" (__NR_exit),
"r" (arg), "r" (fn),
"b" (flags | CLONE_VM)
:"si");
return retval;
}
#endif
#endif /* _ASM_I386_UNISTD_H_ */

1
kernel/table21/version.h Normal file
View File

@@ -0,0 +1 @@
#define _TABLE_VERSION 1

1
kernel/version.h Normal file
View File

@@ -0,0 +1 @@
#define _TABLE_VERSION 1

View File

@@ -46,14 +46,16 @@ print "\t\t*required &= present;";
print "\tcase GLIBTOP_ERROR_METHOD_WARN:"; print "\tcase GLIBTOP_ERROR_METHOD_WARN:";
print "\t\tglibtop_warn_r (server,"; print "\t\tglibtop_warn_r (server,";
print "\t\t\t\t_(\"glibtop_get_%s (): Client requested \""; print "\t\t\t\t_(\"glibtop_get_%s (): Client requested \"";
print "\t\t\t\t \"field mask %05Lx, but only have %05Lx.\"),"; print "\t\t\t\t \"field mask %05lx, but only have %05lx.\"),";
print "\t\t\t\t feature, old_required, present);"; print "\t\t\t\t feature, (unsigned long) old_required,";
print "\t\t\t\t (unsigned long) present);";
print "\t\tbreak;"; print "\t\tbreak;";
print "\tcase GLIBTOP_ERROR_METHOD_ABORT:"; print "\tcase GLIBTOP_ERROR_METHOD_ABORT:";
print "\t\tglibtop_error_r (server,"; print "\t\tglibtop_error_r (server,";
print "\t\t\t\t _(\"glibtop_get_%s (): Client requested \""; print "\t\t\t\t _(\"glibtop_get_%s (): Client requested \"";
print "\t\t\t\t \"field mask %05x, but only have %05x.\"),"; print "\t\t\t\t \"field mask %05lx, but only have %05lx.\"),";
print "\t\t\t\t feature, old_required, present);"; print "\t\t\t\t feature, (unsigned long) old_required,";
print "\t\t\t\t (unsigned long) present);";
print "\t\tbreak;"; print "\t\tbreak;";
print "\t}"; print "\t}";
print '}'; print '}';

View File

@@ -30,6 +30,7 @@ do_read (int s, void *ptr, size_t total_size)
{ {
int nread; int nread;
size_t already_read = 0, remaining = total_size; size_t already_read = 0, remaining = total_size;
char *tmp_ptr;
while (already_read < total_size) { while (already_read < total_size) {
nread = recv (s, ptr, remaining, 0); nread = recv (s, ptr, remaining, 0);
@@ -46,7 +47,10 @@ do_read (int s, void *ptr, size_t total_size)
already_read += nread; already_read += nread;
remaining -= nread; remaining -= nread;
(char *) ptr += nread; /* (char *) ptr += nread; */
tmp_ptr = ptr;
tmp_ptr += nread;
ptr = tmp_ptr;
} }
} }

View File

@@ -40,6 +40,7 @@ GLIBTOP_SUID_PROC_TIME +
GLIBTOP_SUID_PROC_SIGNAL + GLIBTOP_SUID_PROC_SIGNAL +
GLIBTOP_SUID_PROC_KERNEL + GLIBTOP_SUID_PROC_KERNEL +
GLIBTOP_SUID_PROC_SEGMENT + GLIBTOP_SUID_PROC_SEGMENT +
GLIBTOP_SUID_PROC_ARGS +
GLIBTOP_SUID_PROC_MAP + GLIBTOP_SUID_PROC_MAP +
GLIBTOP_SUID_NETLOAD + GLIBTOP_SUID_NETLOAD +
GLIBTOP_SUID_PPP; GLIBTOP_SUID_PPP;

View File

@@ -15,44 +15,45 @@ AC_DEFUN([LIBGTOP_HACKER_TESTS],[
case "$host_os" in case "$host_os" in
linux*) linux*)
AC_ARG_WITH(linux-sysctl, AC_ARG_WITH(linux-table,
[ --with-linux-sysctl Use the sysctl () interface from Martin Baulig],[ [ --with-linux-table Use the table () function from Martin Baulig],[
linux_sysctl="$withval"],[linux_sysctl=auto]) linux_table="$withval"],[linux_table=auto])
if test $linux_sysctl = yes ; then if test $linux_table = yes ; then
AC_CHECK_HEADER(linux/libgtop.h, linux_sysctl=yes, linux_sysctl=no) AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no)
elif test $linux_sysctl = auto ; then elif test $linux_table = auto ; then
AC_MSG_CHECKING(for LibGTop sysctl support in Linux Kernel) AC_MSG_CHECKING(for table function in Linux Kernel)
AC_TRY_RUN([ AC_TRY_RUN([
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <sys/sysctl.h> #include <unistd.h>
#include <linux/libgtop.h> #include <linux/unistd.h>
#include <linux/table.h>
#define SIZE(x) sizeof(x)/sizeof(x[0]) #include <syscall.h>
int name[2] = { CTL_LIBGTOP, LIBGTOP_VERSION }; static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param);
int int
main (void) main (void)
{ {
unsigned version; union table tbl;
size_t size = sizeof (version); int ret;
if (sysctl (name, SIZE (name), &version, &size, NULL, 0)) ret = table (TABLE_VERSION, NULL, NULL);
exit (1);
else if (version < 1) if (ret == -1)
exit (2); exit (-errno);
else
exit (0); exit (ret < 1 ? ret : 0);
} }
], linux_sysctl=yes, linux_sysctl=no, linux_sysctl=no) ], linux_table=yes, linux_table=no, linux_table=no)
AC_MSG_RESULT($linux_sysctl) AC_MSG_RESULT($linux_table)
fi fi
if test $linux_sysctl = yes ; then if test $linux_table = yes ; then
AC_DEFINE(HAVE_LINUX_SYSCTL) AC_DEFINE(HAVE_LINUX_TABLE)
fi fi
AM_CONDITIONAL(LINUX_SYSCTL, test $linux_sysctl = yes) AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes)
;; ;;
esac esac
]) ])
@@ -107,17 +108,17 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
case "$host_os" in case "$host_os" in
linux*) linux*)
if test x$linux_sysctl = xyes ; then if test x$linux_table = xyes ; then
libgtop_sysdeps_dir=kernel libgtop_sysdeps_dir=kernel
libgtop_use_machine_h=no libgtop_use_machine_h=no
else else
libgtop_sysdeps_dir=linux libgtop_sysdeps_dir=linux
libgtop_use_machine_h=no libgtop_use_machine_h=no
libgtop_have_sysinfo=yes
fi fi
libgtop_have_sysinfo=yes
libgtop_need_server=no libgtop_need_server=no
;; ;;
freebsd*|netbsd*|openbsd*) freebsd*|netbsd*|openbsd*|bsdi*)
libgtop_sysdeps_dir=freebsd libgtop_sysdeps_dir=freebsd
libgtop_use_machine_h=yes libgtop_use_machine_h=yes
libgtop_need_server=yes libgtop_need_server=yes
@@ -126,20 +127,9 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
*) *)
if test x$hacker_mode = xyes ; then if test x$hacker_mode = xyes ; then
case "$host_os" in case "$host_os" in
bsdi*)
libgtop_sysdeps_dir=freebsd
libgtop_use_machine_h=yes
libgtop_need_server=yes
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
;;
solaris*)
libgtop_sysdeps_dir=solaris
libgtop_use_machine_h=yes
libgtop_need_server=no
;;
sunos4*) sunos4*)
libgtop_sysdeps_dir=sun4 libgtop_sysdeps_dir=sun4
libgtop_use_machine_h=yes libgtop_use_machine_h=yes
libgtop_need_server=yes libgtop_need_server=yes
;; ;;
osf*) osf*)
@@ -187,7 +177,7 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
#include <net/netisr.h> #include <net/netisr.h>
#include <net/route.h> #include <net/route.h>
#ifdef __FreeBSD__ #if (defined __FreeBSD__) || (defined __NetBSD__)
#include <net/if_sppp.h> #include <net/if_sppp.h>
#else #else
#include <i4b/sppp/if_sppp.h> #include <i4b/sppp/if_sppp.h>
@@ -213,7 +203,7 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
#include <net/netisr.h> #include <net/netisr.h>
#include <net/route.h> #include <net/route.h>
#ifdef __FreeBSD__ #if defined(__FreeBSD__) || defined(__NetBSD__)
#include <net/if_sppp.h> #include <net/if_sppp.h>
#else #else
#include <i4b/sppp/if_sppp.h> #include <i4b/sppp/if_sppp.h>

View File

@@ -1,6 +1,7 @@
# Note that this is NOT a relocatable package # Note that this is NOT a relocatable package
%define ver @VERSION@ %define ver @VERSION@
%define rel SNAP %define RELEASE SNAP
%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE}
%define prefix /usr %define prefix /usr
Summary: LibGTop library Summary: LibGTop library
@@ -122,4 +123,4 @@ rm -rf $RPM_BUILD_ROOT
%files examples %files examples
%defattr(-,root,root) %defattr(-,root,root)
%{prefix}/libexec/libgtop/* %{prefix}/libexec/libgtop

View File

@@ -31,6 +31,8 @@ LIBGTOP_MICRO_VERSION="@LIBGTOP_MICRO_VERSION@"
LIBGTOP_VERSION="@LIBGTOP_VERSION@" LIBGTOP_VERSION="@LIBGTOP_VERSION@"
LIBGTOP_VERSION_CODE="@LIBGTOP_VERSION_CODE@" LIBGTOP_VERSION_CODE="@LIBGTOP_VERSION_CODE@"
MODULE_VERSION="libgtop-@LIBGTOP_VERSION@"
LIBGTOP_SERVER_VERSION="@LIBGTOP_SERVER_VERSION@" LIBGTOP_SERVER_VERSION="@LIBGTOP_SERVER_VERSION@"
libgtop_sysdeps_dir="@libgtop_sysdeps_dir@" libgtop_sysdeps_dir="@libgtop_sysdeps_dir@"

View File

@@ -0,0 +1,26 @@
This statistics were made on a PPRO 200 running Linux 2.2.1
reading everything from /proc while the system was idle.
Feature (Flags ): Count - utime - stime
----------------------------------------------------------
CPU (0x000007ff): 100000 - 13.90 - 181.80
Memory (0x0000007f): 10000 - 32.00 - 8061.00
Swap (0x0000001f): 10000 - 46.00 - 8130.00
Uptime (0x00000003): 100000 - 19.60 - 72.20
Loadavg (0x0000000f): 100000 - 32.40 - 77.10
Proclist (0x00000007): 10000 - 2250.00 - 4419.00
Proc_State (0x0000000f): 100000 - 40.70 - 221.00
Proc_Uid (0x00000fff): 100000 - 72.40 - 327.30
Proc_Mem (0x0000003f): 100000 - 65.70 - 283.90
Proc_Segment (0x000000f5): 100000 - 76.50 - 281.10
Proc_Time (0x000001ff): 100000 - 37.00 - 160.90
Proc_Signal (0x0000000f): 100000 - 52.50 - 148.50
Proc_Kernel (0x0000017f): 100000 - 56.70 - 153.50
----------------------------------------------------------
TOTAL 70030000 - 396830000
All timings are in clock ticks (1000000 ticks per second).

View File

@@ -0,0 +1,27 @@
This statistics were made on a PPRO 200 running Linux 2.2.1
(the same machine I made the timings.linux-proc on) with my
new sysctl () based kernel module.
Feature (Flags ): Count - utime - stime
----------------------------------------------------------
CPU (0x0000003f): 100000 - 3.50 - 5.40
Memory (0x0000003f): 10000 - 3.00 - 6.00
Swap (0x0000001f): 10000 - 10.00 - 7.00
Uptime (0x00000003): 100000 - 2.30 - 7.00
Loadavg (0x00000001): 100000 - 3.00 - 5.60
Proclist (0x00000007): 10000 - 13.00 - 46.00
Proc_State (0x0000000d): 100000 - 3.20 - 7.70
Proc_Uid (0x00000fff): 100000 - 3.60 - 7.40
Proc_Mem (0x0000003f): 100000 - 4.10 - 34.30
Proc_Segment (0x000000ff): 100000 - 5.90 - 41.50
Proc_Time (0x0000013d): 100000 - 3.50 - 7.50
Proc_Signal (0x0000000f): 100000 - 2.70 - 8.80
Proc_Kernel (0x000000fe): 100000 - 4.00 - 13.30
----------------------------------------------------------
TOTAL 3840000 - 14440000
All timings are in clock ticks (1000000 ticks per second).

View File

@@ -2,6 +2,6 @@ Makefile
Makefile.in Makefile.in
POTFILES POTFILES
cat-id-tbl.c cat-id-tbl.c
*.gmo *.mo *.gmo
libgtop.pot libgtop.pot
Makefile.in.in Makefile.in.in

View File

@@ -1,3 +1,36 @@
1999-09-29 Kenneth ll<6C>phaane Christiansen <kenneth@ripen.dk>
* da.po: Updated.
1999-09-27 Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>
* pl.po: Added translation.
1999-09-22 Kjartan Maraas <kmaraas@online.no>
* da.po: Added Danish translation from Kenneth
Christiansen <kenneth@ripen.dk>.
1999-09-20 Vincent Renardias <vincent@ldsol.com>
* fr.po: 100% complete. removed ~40 old translations.
1999-09-17 Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>
* pl.po: Added translation.
1999-09-16 Tomas Ogren <stric@ing.umu.se>
* sv.po: Synced
1999-07-11 Kjartan Maraas <kmaraas@online.no>
* no.po: Updated translation.
1999-07-11 Tomas Ogren <stric@ing.umu.se>
* sv.po: New file
1999-01-27 Kjartan Maraas <kmaraas@fib.hl.no> 1999-01-27 Kjartan Maraas <kmaraas@fib.hl.no>
* no.po: Updated translation * no.po: Updated translation

1481
po/da.po Normal file

File diff suppressed because it is too large Load Diff

281
po/de.po
View File

@@ -1,12 +1,11 @@
# libgtop de.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) 1998 Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# Martin Baulig <martin@home-of-linux.org>, 1998. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: libgtop VERSION\n" "Project-Id-Version: libgtop VERSION\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1999-07-11 12:44+02:00\n"
"Last-Translator: Martin Baulig <martin@home-of-linux.org>\n" "Last-Translator: Martin Baulig <martin@home-of-linux.org>\n"
"Language-Team: Martin Baulig <martin@home-of-linux.org>\n" "Language-Team: Martin Baulig <martin@home-of-linux.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -297,6 +296,17 @@ msgid ""
"\n" "\n"
"The math bit should be a decimal 4, and the traced bit is decimal 10." "The math bit should be a decimal 4, and the traced bit is decimal 10."
msgstr "" msgstr ""
"Kernelflags des Prozesses.\n"
"\n"
"Auf Linux hat momentan jedes Flag ein gesetztes Math-Bit, da crt0.s\n"
"auf Mathematikemulation pr<70>ft, also wird dies in der Ausgabe nicht\n"
"ausgegeben.\n"
"\n"
"Dies ist wahrscheinlich ein Fehler, da nicht jeder Prozess ein\n"
"compiliertes C-Programm ist.\n"
"\n"
"Das Math-Bit sollte eine dezimale 4 sein, und das Traced-Bit ist\n"
"dezimal 10. "
#. Min_Flt #. Min_Flt
#: sysdeps/names/prockernel.c:59 #: sysdeps/names/prockernel.c:59
@@ -396,8 +406,8 @@ msgid "Number of pages of virtual memory"
msgstr "Anzahl virtueller Speicherseiten" msgstr "Anzahl virtueller Speicherseiten"
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "Anzahl nichtausgelagerter Speicherseiten" msgstr "Anzahl residenter (nicht ausgelagerter) Speicherseiten"
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
msgid "Number of pages of shared (mmap'd) memory" msgid "Number of pages of shared (mmap'd) memory"
@@ -544,11 +554,11 @@ msgstr "Prozessstatus (S=schl
#: sysdeps/names/procstate.c:47 #: sysdeps/names/procstate.c:47
msgid "UID of process" msgid "UID of process"
msgstr "UID des Prozesses" msgstr "echte UID des Prozesses"
#: sysdeps/names/procstate.c:48 #: sysdeps/names/procstate.c:48
msgid "GID of process" msgid "GID of process"
msgstr "GID des Prozesses" msgstr "echte GID des Prozesses"
#: sysdeps/names/proctime.c:44 #: sysdeps/names/proctime.c:44
msgid "Start_Time" msgid "Start_Time"
@@ -588,11 +598,11 @@ msgstr "Frequenz"
#: sysdeps/names/proctime.c:46 #: sysdeps/names/proctime.c:46
msgid "XCPU_UTime" msgid "XCPU_UTime"
msgstr "" msgstr "XCPU_UTime"
#: sysdeps/names/proctime.c:46 #: sysdeps/names/proctime.c:46
msgid "XCPU_STime" msgid "XCPU_STime"
msgstr "" msgstr "XCPU_STime"
#: sysdeps/names/proctime.c:51 #: sysdeps/names/proctime.c:51
msgid "Start time of process in seconds since the epoch" msgid "Start time of process in seconds since the epoch"
@@ -745,63 +755,63 @@ msgstr "Standard UNIX 'nice' Wert des Prozesses"
#: sysdeps/names/sem_limits.c:42 sysdeps/names/sem_limits.c:56 #: sysdeps/names/sem_limits.c:42 sysdeps/names/sem_limits.c:56
msgid "Number of entries in semaphore map" msgid "Number of entries in semaphore map"
msgstr "" msgstr "Anzahl Eintr<74>ge in der Semaphortabelle"
#: sysdeps/names/sem_limits.c:43 sysdeps/names/sem_limits.c:57 #: sysdeps/names/sem_limits.c:43 sysdeps/names/sem_limits.c:57
msgid "Max number of arrays" msgid "Max number of arrays"
msgstr "" msgstr "Maximale Anzahl Arrays"
#: sysdeps/names/sem_limits.c:44 sysdeps/names/sem_limits.c:58 #: sysdeps/names/sem_limits.c:44 sysdeps/names/sem_limits.c:58
msgid "Max semaphores system wide" msgid "Max semaphores system wide"
msgstr "" msgstr "Maximale Anzahl Semaphore im System"
#: sysdeps/names/sem_limits.c:45 sysdeps/names/sem_limits.c:59 #: sysdeps/names/sem_limits.c:45 sysdeps/names/sem_limits.c:59
msgid "Number of undo structures system wide" msgid "Number of undo structures system wide"
msgstr "" msgstr "Anzahl Undo-Strukturen im System"
#: sysdeps/names/sem_limits.c:46 sysdeps/names/sem_limits.c:60 #: sysdeps/names/sem_limits.c:46 sysdeps/names/sem_limits.c:60
msgid "Max semaphores per array" msgid "Max semaphores per array"
msgstr "" msgstr "Maximale Anzahl Semaphore pro Array"
#: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61 #: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61
msgid "Max ops per semop call" msgid "Max ops per semop call"
msgstr "" msgstr "Maximale Anzahl Operationen pro semop-Aufruf"
#: sysdeps/names/sem_limits.c:48 sysdeps/names/sem_limits.c:62 #: sysdeps/names/sem_limits.c:48 sysdeps/names/sem_limits.c:62
msgid "Max number of undo entries per process" msgid "Max number of undo entries per process"
msgstr "" msgstr "Maximale Anzahl Undo-Eintr<74>ge pro Prozess"
#: sysdeps/names/sem_limits.c:49 sysdeps/names/sem_limits.c:63 #: sysdeps/names/sem_limits.c:49 sysdeps/names/sem_limits.c:63
msgid "sizeof struct sem_undo" msgid "sizeof struct sem_undo"
msgstr "" msgstr "sizeof struct sem_undo"
#: sysdeps/names/sem_limits.c:50 sysdeps/names/sem_limits.c:64 #: sysdeps/names/sem_limits.c:50 sysdeps/names/sem_limits.c:64
msgid "Semaphore max value" msgid "Semaphore max value"
msgstr "" msgstr "Semaphor-Maximalwert"
#: sysdeps/names/sem_limits.c:51 sysdeps/names/sem_limits.c:65 #: sysdeps/names/sem_limits.c:51 sysdeps/names/sem_limits.c:65
msgid "Adjust on exit max value" msgid "Adjust on exit max value"
msgstr "" msgstr "Maximaler Adjust-on-Exit-Wert"
#: sysdeps/names/shm_limits.c:39 sysdeps/names/shm_limits.c:48 #: sysdeps/names/shm_limits.c:39 sysdeps/names/shm_limits.c:48
msgid "Max segment size" msgid "Max segment size"
msgstr "" msgstr "Maximale Segmentgr<67><72>e"
#: sysdeps/names/shm_limits.c:40 sysdeps/names/shm_limits.c:49 #: sysdeps/names/shm_limits.c:40 sysdeps/names/shm_limits.c:49
msgid "Min segment size" msgid "Min segment size"
msgstr "" msgstr "Minimale Segmentgr<67><72>e"
#: sysdeps/names/shm_limits.c:41 sysdeps/names/shm_limits.c:50 #: sysdeps/names/shm_limits.c:41 sysdeps/names/shm_limits.c:50
msgid "Max number of segments" msgid "Max number of segments"
msgstr "" msgstr "Maximale Anzahl Segmente"
#: sysdeps/names/shm_limits.c:42 sysdeps/names/shm_limits.c:51 #: sysdeps/names/shm_limits.c:42 sysdeps/names/shm_limits.c:51
msgid "Max shared segments per process" msgid "Max shared segments per process"
msgstr "" msgstr "Maximale Anzahl gemeinsame Segmente pro Prozess"
#: sysdeps/names/shm_limits.c:43 sysdeps/names/shm_limits.c:52 #: sysdeps/names/shm_limits.c:43 sysdeps/names/shm_limits.c:52
msgid "Max total shared memory" msgid "Max total shared memory"
msgstr "" msgstr "Maximaler gesamter gemeinsamer Speicher"
#: sysdeps/names/swap.c:39 sysdeps/names/swap.c:48 #: sysdeps/names/swap.c:39 sysdeps/names/swap.c:48
msgid "Total Swap Space" msgid "Total Swap Space"
@@ -869,7 +879,7 @@ msgstr "Limits f
#: sysdeps/names/sysdeps.c:57 sysdeps/names/sysdeps.c:84 #: sysdeps/names/sysdeps.c:57 sysdeps/names/sysdeps.c:84
msgid "Semaphore Set Limits" msgid "Semaphore Set Limits"
msgstr "" msgstr "Semaphor-Setzbegrenzungen"
#: sysdeps/names/sysdeps.c:58 sysdeps/names/sysdeps.c:85 #: sysdeps/names/sysdeps.c:58 sysdeps/names/sysdeps.c:85
msgid "List of running Processes" msgid "List of running Processes"
@@ -889,36 +899,35 @@ msgstr "Speicherbelegung des Prozesses"
#: sysdeps/names/sysdeps.c:62 sysdeps/names/sysdeps.c:89 #: sysdeps/names/sysdeps.c:62 sysdeps/names/sysdeps.c:89
msgid "Process Time information" msgid "Process Time information"
msgstr "" msgstr "Prozess-Zeitinformation"
#: sysdeps/names/sysdeps.c:63 sysdeps/names/sysdeps.c:90 #: sysdeps/names/sysdeps.c:63 sysdeps/names/sysdeps.c:90
msgid "Process Signal information" msgid "Process Signal information"
msgstr "" msgstr "Prozess-Signalinformation"
#: sysdeps/names/sysdeps.c:64 sysdeps/names/sysdeps.c:91 #: sysdeps/names/sysdeps.c:64 sysdeps/names/sysdeps.c:91
msgid "Process Kernel Data information" msgid "Process Kernel Data information"
msgstr "" msgstr "Prozess-Kerneldateninformation"
#: sysdeps/names/sysdeps.c:65 sysdeps/names/sysdeps.c:92 #: sysdeps/names/sysdeps.c:65 sysdeps/names/sysdeps.c:92
msgid "Process Segment information" msgid "Process Segment information"
msgstr "" msgstr "Prozess-Segmentinformation"
#: sysdeps/names/sysdeps.c:66 #: sysdeps/names/sysdeps.c:66
#, fuzzy
msgid "Process Arguments" msgid "Process Arguments"
msgstr "Prozessgruppen-ID" msgstr "Prozessargumente"
#: sysdeps/names/sysdeps.c:67 sysdeps/names/sysdeps.c:94 #: sysdeps/names/sysdeps.c:67 sysdeps/names/sysdeps.c:94
msgid "Process Memory Map" msgid "Process Memory Map"
msgstr "" msgstr "Prozess-Speicherplan"
#: sysdeps/names/sysdeps.c:68 #: sysdeps/names/sysdeps.c:68
msgid "Mount List" msgid "Mount List"
msgstr "" msgstr "Mountliste"
#: sysdeps/names/sysdeps.c:69 sysdeps/names/sysdeps.c:96 #: sysdeps/names/sysdeps.c:69 sysdeps/names/sysdeps.c:96
msgid "File System Usage" msgid "File System Usage"
msgstr "" msgstr "Dateisystemnutzung"
#: sysdeps/names/sysdeps.c:70 sysdeps/names/sysdeps.c:97 #: sysdeps/names/sysdeps.c:70 sysdeps/names/sysdeps.c:97
msgid "Network Load" msgid "Network Load"
@@ -938,7 +947,7 @@ msgstr "Liste gegenw
#: sysdeps/names/uptime.c:38 #: sysdeps/names/uptime.c:38
msgid "Uptime" msgid "Uptime"
msgstr "" msgstr "Uptime"
#: sysdeps/names/uptime.c:39 #: sysdeps/names/uptime.c:39
msgid "Idletime" msgid "Idletime"
@@ -951,6 +960,7 @@ msgstr "Zeit in Sekunden seit System-Boot"
#: sysdeps/names/uptime.c:45 #: sysdeps/names/uptime.c:45
msgid "Time in seconds the system spent in the idle task since system boot" msgid "Time in seconds the system spent in the idle task since system boot"
msgstr "" msgstr ""
"Zeit in Sekunden, die das System seit dem Booten im Leerlauf verbracht hat"
#: support/error.c:109 #: support/error.c:109
msgid "Unknown system error" msgid "Unknown system error"
@@ -959,116 +969,245 @@ msgstr "Unbekannter Systemfehler"
#: support/getopt.c:669 #: support/getopt.c:669
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "" msgstr "%s: option `%s' ist mehrdeutig\n"
#: support/getopt.c:693 #: support/getopt.c:693
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "" msgstr "%s: option `--%s' erlaubt kein Argument\n"
#: support/getopt.c:698 #: support/getopt.c:698
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "" msgstr "%s: option `%c%s' erlaubt kein Argument\n"
#: support/getopt.c:715 support/getopt.c:888 #: support/getopt.c:715 support/getopt.c:888
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "" msgstr "%s: option `%s' ben<65>tigt ein Argument\n"
#. --option #. --option
#: support/getopt.c:744 #: support/getopt.c:744
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "" msgstr "%s: unbekannte Option: `--%s'\n"
#. +option or -option #. +option or -option
#: support/getopt.c:748 #: support/getopt.c:748
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "" msgstr "%s: unbekannte Option: `%c%s'\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: support/getopt.c:774 #: support/getopt.c:774
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "" msgstr "%s: illegale Option -- %c\n"
#: support/getopt.c:777 #: support/getopt.c:777
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "" msgstr "%s: ung<6E>ltige Option -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: support/getopt.c:807 support/getopt.c:937 #: support/getopt.c:807 support/getopt.c:937
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "" msgstr "%s: option ben<65>tigt ein Argument -- %c\n"
#: support/getopt.c:854 #: support/getopt.c:854
#, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "" msgstr "%s: Option `-W %s' ist mehrdeutig\n"
#: support/getopt.c:872 #: support/getopt.c:872
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr "%s: Option `-W %s' erlaubt kein Argument\n"
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr "%d bytes gelesen"
#: lib/read_data.c:49 #: lib/read_data.c:49
msgid "read data size" msgid "read data size"
msgstr "" msgstr "lese Datenmenge"
#: lib/read_data.c:66 #: lib/read_data.c:66
#, c-format #, c-format
msgid "read data %d bytes" msgid "read data %d bytes"
msgstr "" msgstr "%d Datenbytes gelesen"
#: lib/write.c:48 #: lib/write.c:48
#, c-format #, c-format
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr "schreibe %d bytes"
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr "Fehlerdiagnose einschalten"
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr "DIAGNOSE"
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr "Gespr<EFBFBD>chige Ausgabe einschalten"
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr "GESPRAECHIG"
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr "Nicht in den Hintergrund abforken"
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr "KEIN-D<>MON"
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr "Durch inetd aufgerufen"
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr "INETD"
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"
"Run '%s --help' to see a full list of available command line options.\n" "Run '%s --help' to see a full list of available command line options.\n"
msgstr "" msgstr ""
"Fehler bei Option %s: %s.\n"
"F<>hren Sie `%s --help' aus, um eine volle Liste der verf<72>gbaren Optionen zu "
"sehen.\n"
#~ msgid "Boot time (seconds sice epoch)"
#~ msgstr "Startzeit (Sekunden seit Epoche)"
#~ msgid "Boot time"
#~ msgstr "Startzeit"
#~ msgid "Pointer Size on the Server (in bits)"
#~ msgstr "Zeigergr<67><72>e auf dem Server (in Bits)"
#~ msgid "Pointer Size"
#~ msgstr "Zeigergr<67><72>e"
#~ msgid "Additional process groups"
#~ msgstr "Zus<75>tzliche Prozessgruppen"
#~ msgid "Number of additional process groups"
#~ msgstr "Anzahl zus<75>tzlicher Proze<7A>gruppen"
#~ msgid "Filesystem Group ID"
#~ msgstr "Dateisystem-Gruppen-ID"
#~ msgid "Filesystem User ID"
#~ msgstr "Dateisystem-Benutzer-ID"
#~ msgid "Saved Group ID"
#~ msgstr "Gespeicherte Gruppen-ID"
#~ msgid "Saved User ID"
#~ msgstr "Gespeicherte Benutzer-ID"
#~ msgid "Groups"
#~ msgstr "Gruppen"
#~ msgid "NGroups"
#~ msgstr "NGruppen"
#~ msgid "FsGid"
#~ msgstr "FsGid"
#~ msgid "FsUid"
#~ msgstr "FsUid"
#~ msgid "SGid"
#~ msgstr "SGid"
#~ msgid "SUid"
#~ msgstr "SUid"
#~ msgid "XCPU_Flags"
#~ msgstr "XCPU_Flags"
#~ msgid "last_processor"
#~ msgstr "last_processor"
#~ msgid "processor"
#~ msgstr "processor"
#~ msgid "has_cpu"
#~ msgstr "has_cpu"
#~ msgid "effective GID of process"
#~ msgstr "effektive GID des Prozesses"
#~ msgid "effective UID of process"
#~ msgstr "effektive UID des Prozesses"
#~ msgid "Last Processor"
#~ msgstr "Letzter Prozessor"
#~ msgid "Processor"
#~ msgstr "Prozessor"
#~ msgid "Has CPU"
#~ msgstr "Hat CPU"
#~ msgid "RGID"
#~ msgstr "RGID"
#~ msgid "RUID"
#~ msgstr "RUID"
#~ msgid "Start of mmap()ed areas"
#~ msgstr "Start der mmap()-Zonen"
#~ msgid "Brk_End"
#~ msgstr "Brk_Ende"
#~ msgid "Brk_Start"
#~ msgstr "Brk_Start"
#~ msgid "Address of end of data segment"
#~ msgstr "Addresse, an der das Datensegment aufh<66>rt"
#~ msgid "Address of beginning of data segment"
#~ msgstr "Adresse, an der das Datensegment anf<6E>ngt"
#~ msgid "Env_End"
#~ msgstr "Env_Ende"
#~ msgid "Env_Start"
#~ msgstr "Env_Start"
#~ msgid "Arg_End"
#~ msgstr "Arg_Ende"
#~ msgid "Arg_Start"
#~ msgstr "Arg_Start"
#~ msgid "Start_MMap"
#~ msgstr "Start_MMap"
#~ msgid "Brk"
#~ msgstr "Brk"
#~ msgid "Start_Brk"
#~ msgstr "Start_Brk"
#~ msgid "End_Data"
#~ msgstr "Ende_Daten"
#~ msgid "Start_Data"
#~ msgstr "Start_Daten"
#~ msgid "SMP CPU Flags"
#~ msgstr "SMP-CPU-Flags"

254
po/es.po
View File

@@ -1,7 +1,12 @@
# Translation into spanish of glibtop
#
# FIXME: the strings still left empty are the ones I've no idea how
# to translate them; if anyone has a suggestion...
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: glibtop 1.0.0\n" "Project-Id-Version: glibtop 1.1.1\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: 1998-12-13 04:38+0100\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
@@ -9,50 +14,6 @@ msgstr ""
"Content-Type: text/plain; charset=iso-8859-1\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Date: 1998-12-13 01:56:01+0100\n" "Date: 1998-12-13 01:56:01+0100\n"
"From: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Xgettext-Options: --default-domain=libgtop --directory=.. --add-comments "
"--keyword=_ --keyword=N_ --files-from=./POTFILES.in\n"
"Files: sysdeps/names/cpu.c sysdeps/names/fsusage.c sysdeps/names/loadavg.c "
"sysdeps/names/mem.c sysdeps/names/mountlist.c sysdeps/names/msg_limits.c "
"sysdeps/names/prockernel.c sysdeps/names/proclist.c sysdeps/names/procmap.c "
"sysdeps/names/procmem.c sysdeps/names/procsegment.c "
"sysdeps/names/procsignal.c sysdeps/names/procstate.c "
"sysdeps/names/proctime.c sysdeps/names/procuid.c sysdeps/names/sem_limits.c "
"sysdeps/names/shm_limits.c sysdeps/names/swap.c sysdeps/names/sysdeps.c "
"sysdeps/names/uptime.c support/argp-fmtstream.h support/argp-parse.c "
"support/argp.h support/easy-vsnprintf.c support/error.c support/error.h "
"support/getopt.c lib/close.c lib/command.c lib/init.c lib/open.c "
"lib/parameter.c lib/read.c lib/read_data.c lib/sysdeps.c lib/write.c "
"include/glibtop/close.h include/glibtop/command.h include/glibtop/cpu.h "
"include/glibtop/error.h include/glibtop/fsusage.h include/glibtop/global.h "
"include/glibtop/gnuserv.h include/glibtop/inodedb.h "
"include/glibtop/loadavg.h include/glibtop/mem.h include/glibtop/mountlist.h "
"include/glibtop/msg_limits.h include/glibtop/open.h "
"include/glibtop/parameter.h include/glibtop/prockernel.h "
"include/glibtop/proclist.h include/glibtop/procmap.h "
"include/glibtop/procmem.h include/glibtop/procsegment.h "
"include/glibtop/procsignal.h include/glibtop/procstate.h "
"include/glibtop/proctime.h include/glibtop/procuid.h include/glibtop/read.h "
"include/glibtop/read_data.h include/glibtop/sem_limits.h "
"include/glibtop/shm_limits.h include/glibtop/signal.h include/glibtop/swap.h "
"include/glibtop/sysdeps.h include/glibtop/sysinfo.h include/glibtop/types.h "
"include/glibtop/union.h include/glibtop/uptime.h include/glibtop/version.h "
"include/glibtop/write.h include/glibtop/xmalloc.h "
"src/inodedb/file_by_inode.c src/inodedb/mkinodedb.c src/daemon/gnuserv.c "
"src/daemon/io.c src/daemon/main.c src/daemon/server.c src/daemon/slave.c "
"src/daemon/version.c sysdeps/common/error.c sysdeps/common/fsusage.c "
"sysdeps/common/gnuslib.c sysdeps/common/inodedb.c sysdeps/common/mountlist.c "
"sysdeps/common/sysdeps_suid.c sysdeps/common/xmalloc.c "
"sysdeps/common/fsusage.h sysdeps/common/mountlist.h sysdeps/linux/close.c "
"sysdeps/linux/cpu.c sysdeps/linux/loadavg.c sysdeps/linux/mem.c "
"sysdeps/linux/msg_limits.c sysdeps/linux/open.c sysdeps/linux/prockernel.c "
"sysdeps/linux/proclist.c sysdeps/linux/procmap.c sysdeps/linux/procmem.c "
"sysdeps/linux/procsegment.c sysdeps/linux/procsignal.c "
"sysdeps/linux/procstate.c sysdeps/linux/proctime.c sysdeps/linux/procuid.c "
"sysdeps/linux/sem_limits.c sysdeps/linux/shm_limits.c "
"sysdeps/linux/siglist.c sysdeps/linux/swap.c sysdeps/linux/sysinfo.c "
"sysdeps/linux/uptime.c sysdeps/linux/glibtop_machine.h "
"sysdeps/linux/glibtop_server.h\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -292,39 +253,39 @@ msgstr "Cantidad de cabeceras de mensajes sistema"
#: sysdeps/names/prockernel.c:42 #: sysdeps/names/prockernel.c:42
msgid "K_Flags" msgid "K_Flags"
msgstr "" msgstr "K_Flags"
#: sysdeps/names/prockernel.c:42 #: sysdeps/names/prockernel.c:42
msgid "Min_Flt" msgid "Min_Flt"
msgstr "" msgstr "Min_Flt"
#: sysdeps/names/prockernel.c:42 #: sysdeps/names/prockernel.c:42
msgid "Maj_Flt" msgid "Maj_Flt"
msgstr "" msgstr "Maj_Flt"
#: sysdeps/names/prockernel.c:42 #: sysdeps/names/prockernel.c:42
msgid "CMin_Flt" msgid "CMin_Flt"
msgstr "" msgstr "CMin_Flt"
#: sysdeps/names/prockernel.c:43 #: sysdeps/names/prockernel.c:43
msgid "CMaj_Flt" msgid "CMaj_Flt"
msgstr "" msgstr "CMaj_Flt"
#: sysdeps/names/prockernel.c:43 #: sysdeps/names/prockernel.c:43
msgid "KStk_ESP" msgid "KStk_ESP"
msgstr "" msgstr "KStk_ESP"
#: sysdeps/names/prockernel.c:43 #: sysdeps/names/prockernel.c:43
msgid "KStk_EIP" msgid "KStk_EIP"
msgstr "" msgstr "KStk_EIP"
#: sysdeps/names/prockernel.c:43 #: sysdeps/names/prockernel.c:43
msgid "NWChan" msgid "NWChan"
msgstr "" msgstr "NWChan"
#: sysdeps/names/prockernel.c:44 #: sysdeps/names/prockernel.c:44
msgid "WChan" msgid "WChan"
msgstr "" msgstr "WChan"
#. K_Flags #. K_Flags
#: sysdeps/names/prockernel.c:50 #: sysdeps/names/prockernel.c:50
@@ -442,8 +403,8 @@ msgid "Number of pages of virtual memory"
msgstr "Cantidad de p<>ginas de memoria virtual" msgstr "Cantidad de p<>ginas de memoria virtual"
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "Cantidad de p<>ginas de conjuntos compartidos (que no estan en swap)" msgstr "Cantidad de p<>ginas de conjuntos residentes (que no estan en swap)"
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
msgid "Number of pages of shared (mmap'd) memory" msgid "Number of pages of shared (mmap'd) memory"
@@ -470,19 +431,19 @@ msgstr ""
#: sysdeps/names/procsegment.c:42 #: sysdeps/names/procsegment.c:42
msgid "Text_RSS" msgid "Text_RSS"
msgstr "" msgstr "Text_RSS"
#: sysdeps/names/procsegment.c:42 #: sysdeps/names/procsegment.c:42
msgid "ShLib_RSS" msgid "ShLib_RSS"
msgstr "" msgstr "ShLib_RSS"
#: sysdeps/names/procsegment.c:42 #: sysdeps/names/procsegment.c:42
msgid "Data_RSS" msgid "Data_RSS"
msgstr "" msgstr "Data_RSS"
#: sysdeps/names/procsegment.c:42 #: sysdeps/names/procsegment.c:42
msgid "Stack_RSS" msgid "Stack_RSS"
msgstr "" msgstr "Stack_RSS"
#: sysdeps/names/procsegment.c:43 #: sysdeps/names/procsegment.c:43
msgid "Dirty Size" msgid "Dirty Size"
@@ -490,15 +451,15 @@ msgstr ""
#: sysdeps/names/procsegment.c:43 #: sysdeps/names/procsegment.c:43
msgid "Start_Code" msgid "Start_Code"
msgstr "" msgstr "Inicio_C<EFBFBD>digo"
#: sysdeps/names/procsegment.c:43 #: sysdeps/names/procsegment.c:43
msgid "End_Code" msgid "End_Code"
msgstr "" msgstr "Fin_C<EFBFBD>digo"
#: sysdeps/names/procsegment.c:43 #: sysdeps/names/procsegment.c:43
msgid "Start_Stack" msgid "Start_Stack"
msgstr "" msgstr "Inicio_Pila"
#: sysdeps/names/procsegment.c:48 #: sysdeps/names/procsegment.c:48
msgid "Text resident set size" msgid "Text resident set size"
@@ -566,7 +527,7 @@ msgstr "M
#: sysdeps/names/procstate.c:40 #: sysdeps/names/procstate.c:40
msgid "Cmd" msgid "Cmd"
msgstr "" msgstr "Cmd"
#: sysdeps/names/procstate.c:40 #: sysdeps/names/procstate.c:40
msgid "State" msgid "State"
@@ -574,11 +535,11 @@ msgstr "Estado"
#: sysdeps/names/procstate.c:40 #: sysdeps/names/procstate.c:40
msgid "UID" msgid "UID"
msgstr "" msgstr "UID"
#: sysdeps/names/procstate.c:40 #: sysdeps/names/procstate.c:40
msgid "GID" msgid "GID"
msgstr "" msgstr "GID"
#: sysdeps/names/procstate.c:45 #: sysdeps/names/procstate.c:45
msgid "Basename of executable file in call to exec()" msgid "Basename of executable file in call to exec()"
@@ -598,7 +559,7 @@ msgstr "GID del proceso"
#: sysdeps/names/proctime.c:44 #: sysdeps/names/proctime.c:44
msgid "Start_Time" msgid "Start_Time"
msgstr "" msgstr "Tiempo_inicio"
#: sysdeps/names/proctime.c:44 #: sysdeps/names/proctime.c:44
msgid "RTime" msgid "RTime"
@@ -806,7 +767,7 @@ msgstr "Cantidad m
#: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61 #: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61
msgid "Max ops per semop call" msgid "Max ops per semop call"
msgstr "" msgstr "Cantidad m<>xima de ops por llamada semop"
#: sysdeps/names/sem_limits.c:48 sysdeps/names/sem_limits.c:62 #: sysdeps/names/sem_limits.c:48 sysdeps/names/sem_limits.c:62
msgid "Max number of undo entries per process" msgid "Max number of undo entries per process"
@@ -1057,7 +1018,7 @@ msgstr "%s: la opci
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: la opci<63>n `-W %s' no admite argumentos\n" msgstr "%s: la opci<63>n `-W %s' no admite argumentos\n"
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "le<6C>dos %d bytes" msgstr "le<6C>dos %d bytes"
@@ -1076,39 +1037,39 @@ msgstr "le
msgid "write %d bytes" msgid "write %d bytes"
msgstr "escritos %d bytes" msgstr "escritos %d bytes"
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "Activar depuraci<63>n" msgstr "Activar depuraci<63>n"
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "DEPURACI<43>N" msgstr "DEPURACI<43>N"
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "Activa salida detallada" msgstr "Activa salida detallada"
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr "DETALLADO"
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "No abrir un proceso de fondo" msgstr "No abrir un proceso de fondo"
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr "NO-DAEMON"
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "Invocado desde inetd" msgstr "Invocado desde inetd"
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "INETD" msgstr "INETD"
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"
@@ -1117,26 +1078,125 @@ msgstr ""
"Error con la opci<63>n %s: %s.\n" "Error con la opci<63>n %s: %s.\n"
"Lance '%s --help' para ver una lista completa de las opciones disponibles.\n" "Lance '%s --help' para ver una lista completa de las opciones disponibles.\n"
#~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgid "SMP CPU Flags"
#~ msgstr "(ERROR PROGRAMA) <20><>La opci<63>n deber<65>a haber sido reconocida!?" #~ msgstr "Banderas de CPU SMP"
#~ msgid "%s: Too many arguments\n" #~ msgid "Brk"
#~ msgstr "%s: Demasiados argumentos\n" #~ msgstr "Brk"
#~ msgid "(PROGRAM ERROR) No version known!?" #~ msgid "End_Data"
#~ msgstr "(ERROR PROGRAMA) <20><> Sin versi<73>n !?" #~ msgstr "Fin_Datos"
#~ msgid "Print program version" #~ msgid "Start_Brk"
#~ msgstr "Muestra la versi<73>n del programa" #~ msgstr "Inicio_Brk"
#~ msgid "Hang for SECS seconds (default 3600)" #~ msgid "Start_Data"
#~ msgstr "Colgar por SECS segundos (3600 por omisi<73>n)" #~ msgstr "Inicio_Datos"
#~ msgid "Set the program name" #~ msgid "Arg_Start"
#~ msgstr "Define el nombre del programa" #~ msgstr "Inicio_Arg"
#~ msgid "Give a short usage message" #~ msgid "Start_MMap"
#~ msgstr "Muestra una s<>ntesis del uso de la memoria" #~ msgstr "Inicio_MMap"
#~ msgid "Give this help list" #~ msgid "Arg_End"
#~ msgstr "Muestra esta lista de ayuda" #~ msgstr "Fin_Arg"
#~ msgid "Env_End"
#~ msgstr "Fin_Entorno"
#~ msgid "Env_Start"
#~ msgstr "Inicio_Entorno"
#~ msgid "Address of beginning of data segment"
#~ msgstr "Direcci<63>n de inicio del segmento de datos"
#~ msgid "Address of end of data segment"
#~ msgstr "Direcci<63>n de fin del segmento de datos"
#~ msgid "Brk_Start"
#~ msgstr "Inicio_Brk"
#~ msgid "Brk_End"
#~ msgstr "Fin_Brk"
#~ msgid "Start of mmap()ed areas"
#~ msgstr "Inicio de las areas mmap()eadas"
#~ msgid "RUID"
#~ msgstr "RUID"
#~ msgid "Has CPU"
#~ msgstr "Tiene CPU"
#~ msgid "Processor"
#~ msgstr "Procesador"
#~ msgid "RGID"
#~ msgstr "RGID"
#~ msgid "Last Processor"
#~ msgstr "<22>ltimo procesador"
#~ msgid "effective UID of process"
#~ msgstr "UID efectivo del proceso"
#~ msgid "effective GID of process"
#~ msgstr "GID efectivo del proceso"
#~ msgid "has_cpu"
#~ msgstr "tiene_cpu"
#~ msgid "processor"
#~ msgstr "procesador"
#~ msgid "last_processor"
#~ msgstr "<22>ltimo_procesador"
#~ msgid "SUid"
#~ msgstr "SUid"
#~ msgid "FsGid"
#~ msgstr "FsGid"
#~ msgid "FsUid"
#~ msgstr "FsUid"
#~ msgid "SGid"
#~ msgstr "SGid"
#~ msgid "NGroups"
#~ msgstr "NGrupos"
#~ msgid "Groups"
#~ msgstr "Grupos"
#~ msgid "Saved User ID"
#~ msgstr "ID de usuario guardado"
#~ msgid "Saved Group ID"
#~ msgstr "ID de grupo guardado"
#~ msgid "Filesystem User ID"
#~ msgstr "ID de usuario del sistema de archivos"
#~ msgid "Filesystem Group ID"
#~ msgstr "ID de grupo del sistema de archivos"
#~ msgid "Number of additional process groups"
#~ msgstr "Cantidad de grupos de procesos adicionales"
#~ msgid "Additional process groups"
#~ msgstr "Grupos de procesos adicionales"
#~ msgid "Pointer Size"
#~ msgstr "Tama<6D>o del puntero"
#~ msgid "Pointer Size on the Server (in bits)"
#~ msgstr "Tama<6D>o del puntero en el servidor (en bits)"
#~ msgid "Boot time"
#~ msgstr "Momento de arranque"
#~ msgid "Boot time (seconds sice epoch)"
#~ msgstr "Momento de arranque (en segundos des \"la <20>poca\")"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

View File

@@ -2,17 +2,16 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: glibtop cvs\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 1998-12-13 04:38+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Pablo Saratxaga <srtxg@chanae.alphanet.ch>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
#: sysdeps/names/cpu.c:43 #: sysdeps/names/cpu.c:43
msgid "Total CPU Time" msgid "Total CPU Time"
@@ -380,7 +379,7 @@ msgid "Number of pages of virtual memory"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "" msgstr ""
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -992,7 +991,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1011,39 +1010,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

1078
po/fi.po Normal file

File diff suppressed because it is too large Load Diff

445
po/fr.po

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: libgtop VERSION\n" "Project-Id-Version: libgtop VERSION\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: 1998-12-11 06:53+09:00\n" "PO-Revision-Date: 1998-12-11 06:53+09:00\n"
"Last-Translator: Eiichiro ITANI <emu@ceres.dti.ne.jp>\n" "Last-Translator: Eiichiro ITANI <emu@ceres.dti.ne.jp>\n"
"Language-Team: <gnome@lists.hypercore.co.jp>\n" "Language-Team: <gnome@lists.hypercore.co.jp>\n"
@@ -396,7 +396,8 @@ msgid "Number of pages of virtual memory"
msgstr "<22><><EFBFBD>ۥ<EFBFBD><DBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υڡ<CEA5><DAA1><EFBFBD><EFBFBD><EFBFBD>" msgstr "<22><><EFBFBD>ۥ<EFBFBD><DBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υڡ<CEA5><DAA1><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" #, fuzzy
msgid "Number of resident set (non-swapped) pages"
msgstr "<22><><EFBFBD>󥻥å<F3A5BBA5>(<28><><EFBFBD><EFBFBD><EFBFBD>åפ<C3A5><D7A4><EFBFBD><EFBFBD>ʤ<EFBFBD>)<29>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD><EFBFBD>" msgstr "<22><><EFBFBD>󥻥å<F3A5BBA5>(<28><><EFBFBD><EFBFBD><EFBFBD>åפ<C3A5><D7A4><EFBFBD><EFBFBD>ʤ<EFBFBD>)<29>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -1004,7 +1005,7 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "" msgstr ""
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -1023,39 +1024,39 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

211
po/ko.po
View File

@@ -4,9 +4,9 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: libgtop VERSION\n" "Project-Id-Version: libgtop 1.0.2\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: 1999-02-04 14:31:38+0900\n" "PO-Revision-Date: 1999-03-30 10:40:01+0900\n"
"Last-Translator: Sung-Hyun Nam <namsh@lgic.co.kr>\n" "Last-Translator: Sung-Hyun Nam <namsh@lgic.co.kr>\n"
"Language-Team: Korean <ko@li.org>\n" "Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -295,6 +295,15 @@ msgid ""
"\n" "\n"
"The math bit should be a decimal 4, and the traced bit is decimal 10." "The math bit should be a decimal 4, and the traced bit is decimal 10."
msgstr "" msgstr ""
"<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF> <20>÷<EFBFBD><C3B7><EFBFBD>.\n"
"\n"
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. crt0.s<><73> <20><><EFBFBD><EFBFBD> "
"<22><><EFBFBD>ķ<EFBFBD><C4B7>̼<EFBFBD><CCBC><EFBFBD> üũ<C3BC>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD>°<EFBFBD><C2B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.\n"
"\n"
"<22>̰<EFBFBD><CCB0><EFBFBD> <20><><EFBFBD>׶<EFBFBD><D7B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>, <20>װ<EFBFBD><D7B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> C <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ¥<><C2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> "
"<22>ƴϱ<C6B4> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.\n"
"\n"
"<22><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4<>̾<EFBFBD><CCBE><EFBFBD> <20>ϸ<EFBFBD>, <20><><EFBFBD><EFBFBD>(trace) <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31>̾<EFBFBD><CCBE><EFBFBD> <20>մϴ<D5B4>."
#. Min_Flt #. Min_Flt
#: sysdeps/names/prockernel.c:59 #: sysdeps/names/prockernel.c:59
@@ -302,6 +311,8 @@ msgid ""
"The number of minor faults the process has made, those which have not " "The number of minor faults the process has made, those which have not "
"required loading a memory page from disk." "required loading a memory page from disk."
msgstr "" msgstr ""
"<22><><EFBFBD><EFBFBD>ũ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>޸<EFBFBD><DEB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD> "
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD>"
#. Maj_Flt #. Maj_Flt
#: sysdeps/names/prockernel.c:62 #: sysdeps/names/prockernel.c:62
@@ -309,16 +320,18 @@ msgid ""
"The number of major faults the process has made, those which have required " "The number of major faults the process has made, those which have required "
"loading a memory page from disk." "loading a memory page from disk."
msgstr "" msgstr ""
"<22><><EFBFBD><EFBFBD>ũ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>޸<EFBFBD><DEB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>ʿ<EFBFBD><CABF><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD> <20>ߴ<EFBFBD><DFB4><EFBFBD> "
"<22><>Ʈ <20><><EFBFBD><EFBFBD>"
#. CMin_Flt #. CMin_Flt
#: sysdeps/names/prockernel.c:65 #: sysdeps/names/prockernel.c:65
msgid "The number of minor faults that the process and its children have made." msgid "The number of minor faults that the process and its children have made."
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD>"
#. CMaj_Flt #. CMaj_Flt
#: sysdeps/names/prockernel.c:68 #: sysdeps/names/prockernel.c:68
msgid "The number of major faults that the process and its children have made." msgid "The number of major faults that the process and its children have made."
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD> <20>ߴ<EFBFBD><DFB4><EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD>"
#. KStk_ESP #. KStk_ESP
#: sysdeps/names/prockernel.c:71 #: sysdeps/names/prockernel.c:71
@@ -326,11 +339,12 @@ msgid ""
"The current value of esp (32-bit stack pointer), as found in the kernel " "The current value of esp (32-bit stack pointer), as found in the kernel "
"stack page for the process." "stack page for the process."
msgstr "" msgstr ""
"<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<><C3A3><EFBFBD><EFBFBD> esp (32<33><32>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><> <20><><EFBFBD><EFBFBD> <20><>"
#. KStk_EIP #. KStk_EIP
#: sysdeps/names/prockernel.c:74 #: sysdeps/names/prockernel.c:74
msgid "The current EIP (32-bit instruction pointer)." msgid "The current EIP (32-bit instruction pointer)."
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EIP (32<33><32>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)."
#. NWChan #. NWChan
#: sysdeps/names/prockernel.c:76 #: sysdeps/names/prockernel.c:76
@@ -340,51 +354,56 @@ msgid ""
"textual name. (If you have an up-to-date /etc/psdatabase, then try ps -l to " "textual name. (If you have an up-to-date /etc/psdatabase, then try ps -l to "
"see the WCHAN field in action)" "see the WCHAN field in action)"
msgstr "" msgstr ""
"<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD> <20>ִ<EFBFBD> \"ä<><C3A4>\". <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD><D6BC≯<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD> <20><> "
"<22≯<EFBFBD><CCB8><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ã<><C3A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. (<28><><EFBFBD><EFBFBD> "
"/etc/psdatabase<73><65> <20>ֱٿ<D6B1> <20><><EFBFBD>ŵǾ<C5B5><C7BE>ٸ<EFBFBD> ps -l<><6C> <20><><EFBFBD><EFBFBD> WCHAN <20>ʵ带 <20><> <20><> <20><><EFBFBD><EFBFBD> "
"<22>̴ϴ<CCB4>."
#. WChan #. WChan
#: sysdeps/names/prockernel.c:81 #: sysdeps/names/prockernel.c:81
msgid "This is the textual name of the `nwchan' field." msgid "This is the textual name of the `nwchan' field."
msgstr "" msgstr "<EFBFBD>̰<EFBFBD><EFBFBD><EFBFBD> `nwchan' <20>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD> <20><> <20≯<EFBFBD><CCB8>Դϴ<D4B4>."
#: sysdeps/names/procmem.c:47 #: sysdeps/names/procmem.c:47
msgid "Size" msgid "Size"
msgstr "" msgstr "ũ<EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:47 #: sysdeps/names/procmem.c:47
msgid "Virtual" msgid "Virtual"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:47 #: sysdeps/names/procmem.c:47
msgid "Resident" msgid "Resident"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:47 #: sysdeps/names/procmem.c:47
msgid "Share" msgid "Share"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:48 #: sysdeps/names/procmem.c:48
msgid "Resident Set Size" msgid "Resident Set Size"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9>"
#: sysdeps/names/procmem.c:48 #: sysdeps/names/procmem.c:48
msgid "Resident Set Size Limit" msgid "Resident Set Size Limit"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9> <20><><EFBFBD><EFBFBD>"
#: sysdeps/names/procmem.c:53 #: sysdeps/names/procmem.c:53
msgid "Total # of pages of memory" msgid "Total # of pages of memory"
msgstr "" msgstr "<EFBFBD>޸𸮿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>"
#: sysdeps/names/procmem.c:54 #: sysdeps/names/procmem.c:54
msgid "Number of pages of virtual memory" msgid "Number of pages of virtual memory"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޸𸮿<DEB8><F0B8AEBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>"
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" #, fuzzy
msgstr "" msgid "Number of resident set (non-swapped) pages"
msgstr "<22><><EFBFBD><EFBFBD> <20><>Ʈ (<28><><EFBFBD>Ҿʵ<D2BE>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>"
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
msgid "Number of pages of shared (mmap'd) memory" msgid "Number of pages of shared (mmap'd) memory"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (mmap'd) <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>"
#: sysdeps/names/procmem.c:57 #: sysdeps/names/procmem.c:57
msgid "" msgid ""
@@ -393,11 +412,15 @@ msgid ""
"space. This does not include pages which have not been demand-loaded in, or " "space. This does not include pages which have not been demand-loaded in, or "
"which are swapped out." "which are swapped out."
msgstr "" msgstr ""
"<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޸𸮿<DEB8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>μ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3<><33> <20><> "
"<22><><EFBFBD>Դϴ<D4B4>. <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>, <20><><EFBFBD><EFBFBD>Ÿ Ȥ<><C8A4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD≯<EFBFBD> <20><EFBFBD><E4B1B8> <20><><EFBFBD><EFBFBD> "
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD> <20><><EFBFBD>ҵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>."
#: sysdeps/names/procmem.c:62 #: sysdeps/names/procmem.c:62
msgid "" msgid ""
"Current limit in bytes on the rss of the process (usually 2,147,483,647)." "Current limit in bytes on the rss of the process (usually 2,147,483,647)."
msgstr "" msgstr ""
"<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ ũ<><20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ (<28><><EFBFBD><EFBFBD> 2,147,483,647)."
#: sysdeps/names/procsegment.c:42 #: sysdeps/names/procsegment.c:42
msgid "Text_RSS" msgid "Text_RSS"
@@ -433,39 +456,39 @@ msgstr ""
#: sysdeps/names/procsegment.c:48 #: sysdeps/names/procsegment.c:48
msgid "Text resident set size" msgid "Text resident set size"
msgstr "" msgstr "<EFBFBD>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9>"
#: sysdeps/names/procsegment.c:49 #: sysdeps/names/procsegment.c:49
msgid "Shared-Lib resident set size" msgid "Shared-Lib resident set size"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺귯<CCBA><EAB7AF> <20><><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9>"
#: sysdeps/names/procsegment.c:50 #: sysdeps/names/procsegment.c:50
msgid "Data resident set size" msgid "Data resident set size"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9>"
#: sysdeps/names/procsegment.c:51 #: sysdeps/names/procsegment.c:51
msgid "Stack resident set size" msgid "Stack resident set size"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9>"
#: sysdeps/names/procsegment.c:52 #: sysdeps/names/procsegment.c:52
msgid "Total size of dirty pages" msgid "Total size of dirty pages"
msgstr "" msgstr "<EFBFBD><EFBFBD>Ƽ(dirty) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ũ<><C5A9>"
#: sysdeps/names/procsegment.c:53 #: sysdeps/names/procsegment.c:53
msgid "Address of beginning of code segment" msgid "Address of beginning of code segment"
msgstr "" msgstr "<EFBFBD>ڵ<EFBFBD> <20><><EFBFBD>׸<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD>"
#: sysdeps/names/procsegment.c:54 #: sysdeps/names/procsegment.c:54
msgid "Address of end of code segment" msgid "Address of end of code segment"
msgstr "" msgstr "<EFBFBD>ڵ<EFBFBD> <20><><EFBFBD>׸<EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20>ּ<EFBFBD>"
#: sysdeps/names/procsegment.c:55 #: sysdeps/names/procsegment.c:55
msgid "Address of the bottom of stack segment" msgid "Address of the bottom of stack segment"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>׸<EFBFBD>Ʈ<EFBFBD><C6AE> <20>ٴ<EFBFBD> <20>ּ<EFBFBD>"
#: sysdeps/names/procsignal.c:40 #: sysdeps/names/procsignal.c:40
msgid "Signal" msgid "Signal"
msgstr "" msgstr "<EFBFBD>ñ׳<EFBFBD>"
#: sysdeps/names/procsignal.c:40 #: sysdeps/names/procsignal.c:40
msgid "Blocked" msgid "Blocked"
@@ -513,19 +536,21 @@ msgstr ""
#: sysdeps/names/procstate.c:45 #: sysdeps/names/procstate.c:45
msgid "Basename of executable file in call to exec()" msgid "Basename of executable file in call to exec()"
msgstr "" msgstr "exec()<29><><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>"
#: sysdeps/names/procstate.c:46 #: sysdeps/names/procstate.c:46
msgid "Single-Char code for process state (S=sleeping)" msgid "Single-Char code for process state (S=sleeping)"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ϲ<EFBFBD><CFB9><EFBFBD> <20>ڵ<EFBFBD> (S=sleeping)"
#: sysdeps/names/procstate.c:47 #: sysdeps/names/procstate.c:47
#, fuzzy
msgid "UID of process" msgid "UID of process"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UID"
#: sysdeps/names/procstate.c:48 #: sysdeps/names/procstate.c:48
#, fuzzy
msgid "GID of process" msgid "GID of process"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GID"
#: sysdeps/names/proctime.c:44 #: sysdeps/names/proctime.c:44
msgid "Start_Time" msgid "Start_Time"
@@ -573,19 +598,19 @@ msgstr ""
#: sysdeps/names/proctime.c:51 #: sysdeps/names/proctime.c:51
msgid "Start time of process in seconds since the epoch" msgid "Start time of process in seconds since the epoch"
msgstr "" msgstr "<EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۵<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʷ<EFBFBD> <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>"
#: sysdeps/names/proctime.c:52 #: sysdeps/names/proctime.c:52
msgid "Real time accumulated by process (should be utime + stime)" msgid "Real time accumulated by process (should be utime + stime)"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (utime + stime<6D>̾<EFBFBD><CCBE><EFBFBD> <20><>)"
#: sysdeps/names/proctime.c:53 #: sysdeps/names/proctime.c:53
msgid "user-mode CPU time accumulated by process" msgid "user-mode CPU time accumulated by process"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> CPU <20>ð<EFBFBD>"
#: sysdeps/names/proctime.c:54 #: sysdeps/names/proctime.c:54
msgid "kernel-mode CPU time accumulated by process" msgid "kernel-mode CPU time accumulated by process"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF> <20><><EFBFBD><EFBFBD> CPU <20>ð<EFBFBD>"
#: sysdeps/names/proctime.c:55 #: sysdeps/names/proctime.c:55
msgid "cumulative utime of process and reaped children" msgid "cumulative utime of process and reaped children"
@@ -607,7 +632,7 @@ msgstr ""
#: sysdeps/names/proctime.c:60 #: sysdeps/names/proctime.c:60
msgid "Tick frequency" msgid "Tick frequency"
msgstr "" msgstr "ƽ <20><><EFBFBD>ļ<EFBFBD>"
#: sysdeps/names/proctime.c:61 #: sysdeps/names/proctime.c:61
msgid "SMP user-mode CPU time accumulated by process" msgid "SMP user-mode CPU time accumulated by process"
@@ -647,7 +672,7 @@ msgstr ""
#: sysdeps/names/procuid.c:57 #: sysdeps/names/procuid.c:57
msgid "Session" msgid "Session"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/procuid.c:57 #: sysdeps/names/procuid.c:57
msgid "Tty" msgid "Tty"
@@ -667,35 +692,35 @@ msgstr ""
#: sysdeps/names/procuid.c:63 #: sysdeps/names/procuid.c:63
msgid "User ID" msgid "User ID"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID"
#: sysdeps/names/procuid.c:64 #: sysdeps/names/procuid.c:64
msgid "Effective User ID" msgid "Effective User ID"
msgstr "" msgstr "<EFBFBD><EFBFBD>ȿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID"
#: sysdeps/names/procuid.c:65 #: sysdeps/names/procuid.c:65
msgid "Group ID" msgid "Group ID"
msgstr "" msgstr "<EFBFBD>׷<EFBFBD> ID"
#: sysdeps/names/procuid.c:66 #: sysdeps/names/procuid.c:66
msgid "Effective Group ID" msgid "Effective Group ID"
msgstr "" msgstr "<EFBFBD><EFBFBD>ȿ<EFBFBD><EFBFBD> <20>׷<EFBFBD> ID"
#: sysdeps/names/procuid.c:67 #: sysdeps/names/procuid.c:67
msgid "Process ID" msgid "Process ID"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD> ID"
#: sysdeps/names/procuid.c:68 #: sysdeps/names/procuid.c:68
msgid "PID of parent process" msgid "PID of parent process"
msgstr "" msgstr "<EFBFBD>θ<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> PID"
#: sysdeps/names/procuid.c:69 #: sysdeps/names/procuid.c:69
msgid "Process group ID" msgid "Process group ID"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD> <20>׷<EFBFBD> ID"
#: sysdeps/names/procuid.c:70 #: sysdeps/names/procuid.c:70
msgid "Session ID" msgid "Session ID"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID"
#: sysdeps/names/procuid.c:71 #: sysdeps/names/procuid.c:71
msgid "Full device number of controlling terminal" msgid "Full device number of controlling terminal"
@@ -703,15 +728,15 @@ msgstr ""
#: sysdeps/names/procuid.c:72 #: sysdeps/names/procuid.c:72
msgid "Terminal process group ID" msgid "Terminal process group ID"
msgstr "" msgstr "<EFBFBD>͹̳<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20>׷<EFBFBD> ID"
#: sysdeps/names/procuid.c:73 #: sysdeps/names/procuid.c:73
msgid "Kernel scheduling priority" msgid "Kernel scheduling priority"
msgstr "" msgstr "Ŀ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD><ECBCB1><EFBFBD><EFBFBD>"
#: sysdeps/names/procuid.c:74 #: sysdeps/names/procuid.c:74
msgid "Standard unix nice level of process" msgid "Standard unix nice level of process"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5> <20><><EFBFBD>н<EFBFBD> <20><><EFBFBD>̽<EFBFBD> <20><><EFBFBD><EFBFBD>"
#: sysdeps/names/sem_limits.c:42 sysdeps/names/sem_limits.c:56 #: sysdeps/names/sem_limits.c:42 sysdeps/names/sem_limits.c:56
msgid "Number of entries in semaphore map" msgid "Number of entries in semaphore map"
@@ -719,11 +744,11 @@ msgstr ""
#: sysdeps/names/sem_limits.c:43 sysdeps/names/sem_limits.c:57 #: sysdeps/names/sem_limits.c:43 sysdeps/names/sem_limits.c:57
msgid "Max number of arrays" msgid "Max number of arrays"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>"
#: sysdeps/names/sem_limits.c:44 sysdeps/names/sem_limits.c:58 #: sysdeps/names/sem_limits.c:44 sysdeps/names/sem_limits.c:58
msgid "Max semaphores system wide" msgid "Max semaphores system wide"
msgstr "" msgstr "<EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/sem_limits.c:45 sysdeps/names/sem_limits.c:59 #: sysdeps/names/sem_limits.c:45 sysdeps/names/sem_limits.c:59
msgid "Number of undo structures system wide" msgid "Number of undo structures system wide"
@@ -731,7 +756,7 @@ msgstr ""
#: sysdeps/names/sem_limits.c:46 sysdeps/names/sem_limits.c:60 #: sysdeps/names/sem_limits.c:46 sysdeps/names/sem_limits.c:60
msgid "Max semaphores per array" msgid "Max semaphores per array"
msgstr "" msgstr "<EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61 #: sysdeps/names/sem_limits.c:47 sysdeps/names/sem_limits.c:61
msgid "Max ops per semop call" msgid "Max ops per semop call"
@@ -980,7 +1005,7 @@ msgstr "%s: `-W %s'
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: `-W %s' <20>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>\n" msgstr "%s: `-W %s' <20>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>\n"
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "" msgstr ""
@@ -999,41 +1024,105 @@ msgstr ""
msgid "write %d bytes" msgid "write %d bytes"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "" msgstr ""
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"
"Run '%s --help' to see a full list of available command line options.\n" "Run '%s --help' to see a full list of available command line options.\n"
msgstr "" msgstr ""
#, fuzzy
#~ msgid "Address of beginning of data segment"
#~ msgstr "<22>ڵ<EFBFBD> <20><><EFBFBD>׸<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD>"
#, fuzzy
#~ msgid "Address of end of data segment"
#~ msgstr "<22>ڵ<EFBFBD> <20><><EFBFBD>׸<EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20>ּ<EFBFBD>"
#, fuzzy
#~ msgid "Processor"
#~ msgstr "<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> ID"
#, fuzzy
#~ msgid "effective UID of process"
#~ msgstr "<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> UID"
#, fuzzy
#~ msgid "effective GID of process"
#~ msgstr "<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> GID"
#, fuzzy
#~ msgid "processor"
#~ msgstr "<22><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> ID"
#, fuzzy
#~ msgid "NGroups"
#~ msgstr "<22>׷<EFBFBD> ID"
#, fuzzy
#~ msgid "Groups"
#~ msgstr "<22>׷<EFBFBD> ID"
#, fuzzy
#~ msgid "Saved User ID"
#~ msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID"
#, fuzzy
#~ msgid "Saved Group ID"
#~ msgstr "<22>׷<EFBFBD> ID"
#, fuzzy
#~ msgid "Filesystem User ID"
#~ msgstr "<22><><EFBFBD><EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD>"
#, fuzzy
#~ msgid "Filesystem Group ID"
#~ msgstr "<22><>ȿ<EFBFBD><C8BF> <20>׷<EFBFBD> ID"
#, fuzzy
#~ msgid "Number of additional process groups"
#~ msgstr "<22>͹̳<CDB9> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20>׷<EFBFBD> ID"
#, fuzzy
#~ msgid "Additional process groups"
#~ msgstr "<22>͹̳<CDB9> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20>׷<EFBFBD> ID"
#, fuzzy
#~ msgid "Pointer Size"
#~ msgstr "<22><><EFBFBD><EFBFBD> <20><>Ʈ ũ<><C5A9>"
#, fuzzy
#~ msgid "Boot time (seconds sice epoch)"
#~ msgstr "<22>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۵<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʷ<EFBFBD> <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>"

1083
po/nl.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,13 @@
# Norwegian translation for Libgtop (bokm<6B>l dialect) # Norwegian translation for Libgtop (bokm<6B>l dialect)
# Copyright (C) 1998 Free Software Foundation, Inc. # Copyright (C) 1998 Free Software Foundation, Inc.
# Kjartan Maraas <kmaraas@fib.hl.no>, 1998,1999. # Kjartan Maraas <kmaraas@online.no>, 1998,1999.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: libgtop 0.99.3\n" "Project-Id-Version: libgtop 0.99.3\n"
"POT-Creation-Date: 1999-03-01 22:58+0100\n" "POT-Creation-Date: 1999-09-29 01:00+0200\n"
"PO-Revision-Date: 1999-01-27 23:22+0100\n" "PO-Revision-Date: 1999-07-11 14:25+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@fib.hl.no>\n" "Last-Translator: Kjartan Maraas <kmaraas@online.no>\n"
"Language-Team: Norwegian <no@li.org>\n" "Language-Team: Norwegian <no@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n" "Content-Type: text/plain; charset=iso-8859-1\n"
@@ -397,7 +397,7 @@ msgid "Number of pages of virtual memory"
msgstr "Antall sider virtuelt minne" msgstr "Antall sider virtuelt minne"
#: sysdeps/names/procmem.c:55 #: sysdeps/names/procmem.c:55
msgid "Number of residnet set (non-swapped) pages" msgid "Number of resident set (non-swapped) pages"
msgstr "Antallet resident sett (ikke swappete) sider" msgstr "Antallet resident sett (ikke swappete) sider"
#: sysdeps/names/procmem.c:56 #: sysdeps/names/procmem.c:56
@@ -1004,7 +1004,7 @@ msgstr "%s: flagget `-W %s' er flertydig\n"
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: flagget `-W %s' tar ikke argumenter\n" msgstr "%s: flagget `-W %s' tar ikke argumenter\n"
#: lib/read.c:71 #: lib/read.c:75
#, c-format #, c-format
msgid "read %d bytes" msgid "read %d bytes"
msgstr "les %d bytes" msgstr "les %d bytes"
@@ -1023,39 +1023,39 @@ msgstr "les data %d bytes"
msgid "write %d bytes" msgid "write %d bytes"
msgstr "skriv %d bytes" msgstr "skriv %d bytes"
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "Enable debugging" msgid "Enable debugging"
msgstr "Sl<53> p<> avlusing" msgstr "Sl<53> p<> avlusing"
#: src/daemon/gnuserv.c:445 #: src/daemon/gnuserv.c:446
msgid "DEBUG" msgid "DEBUG"
msgstr "DEBUG" msgstr "DEBUG"
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "Enable verbose output" msgid "Enable verbose output"
msgstr "Sl<53> p<> utfyllende utskrift" msgstr "Sl<53> p<> utfyllende utskrift"
#: src/daemon/gnuserv.c:447 #: src/daemon/gnuserv.c:448
msgid "VERBOSE" msgid "VERBOSE"
msgstr "VERBOSE" msgstr "VERBOSE"
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "Don't fork into background" msgid "Don't fork into background"
msgstr "Ikke forgren til bakgrunnen" msgstr "Ikke forgren til bakgrunnen"
#: src/daemon/gnuserv.c:449 #: src/daemon/gnuserv.c:450
msgid "NO-DAEMON" msgid "NO-DAEMON"
msgstr "NO-DAEMON" msgstr "NO-DAEMON"
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "Invoked from inetd" msgid "Invoked from inetd"
msgstr "Kalt fra inetd" msgstr "Kalt fra inetd"
#: src/daemon/gnuserv.c:451 #: src/daemon/gnuserv.c:452
msgid "INETD" msgid "INETD"
msgstr "INETD" msgstr "INETD"
#: src/daemon/gnuserv.c:485 #: src/daemon/gnuserv.c:486
#, c-format #, c-format
msgid "" msgid ""
"Error on option %s: %s.\n" "Error on option %s: %s.\n"

1046
po/pl.po Normal file

File diff suppressed because it is too large Load Diff

1068
po/sv.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
Makefile.in Makefile.in
Makefile Makefile
libgtop_daemon libgtop_daemon
libgtop_server
server.conf server.conf
.libs .libs
.deps .deps

View File

@@ -1,3 +1,16 @@
1999-07-29 Martin Baulig <martin@home-of-linux.org>
* Makefile.am: Link the `libgtop_daemon' and the `libgtop_server'
statically if possible.
1999-05-07 Martin Baulig <martin@home-of-linux.org>
* server.c (main): There's some problem with uname () - some systems
like Solaris or Digital Unix return a nonnegative value on success,
some others like Linux return 0. Since all known systems seem to return
a negative value on failure, we simply check whether the return value is
not negative here.
1999-02-19 Martin Baulig <martin@home-of-linux.org> 1999-02-19 Martin Baulig <martin@home-of-linux.org>
* Makefile.am (LIBGTOP_COMPILE_SYSTEM): Hardcoded system name. * Makefile.am (LIBGTOP_COMPILE_SYSTEM): Hardcoded system name.

View File

@@ -41,11 +41,19 @@ libgtop_daemon_LDADD = $(top_builddir)/lib/libgtop.la \
$(GLIB_LIBS)\ $(GLIB_LIBS)\
@LIBSUPPORT@ @INTLLIBS@ @libs_xauth@ @LIBSUPPORT@ @INTLLIBS@ @libs_xauth@
if ENABLE_STATIC
libgtop_daemon_LDFLAGS = -static
endif
libgtop_server_SOURCES = server.c slave.c io.c version.c daemon.h libgtop_server_SOURCES = server.c slave.c io.c version.c daemon.h
libgtop_server_LDADD = $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \ libgtop_server_LDADD = $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \
$(top_builddir)/sysdeps/common/libgtop_suid_common.la \ $(top_builddir)/sysdeps/common/libgtop_suid_common.la \
@LIBSUPPORT@ @LIBSUPPORT@
if ENABLE_STATIC
libgtop_server_LDFLAGS = -static
endif
EXTRA_DIST = server_config.h.in server_config.pl EXTRA_DIST = server_config.h.in server_config.pl
install-exec-hook: install-exec-hook:

View File

@@ -219,7 +219,7 @@ permitted (u_long host_addr, int fd)
* GNU_SECURE protocol.... * GNU_SECURE protocol....
*/ */
if (verbose_output) if (verbose_output) {
if (changed_uid || invoked_from_inetd) if (changed_uid || invoked_from_inetd)
syslog_message (LOG_WARNING, syslog_message (LOG_WARNING,
"Xauth authentication not allowed, " "Xauth authentication not allowed, "
@@ -228,6 +228,7 @@ permitted (u_long host_addr, int fd)
syslog_message (LOG_WARNING, syslog_message (LOG_WARNING,
"Xauth authentication failed, " "Xauth authentication failed, "
"trying GNU_SECURE auth..."); "trying GNU_SECURE auth...");
}
} }
/* Other auth protocols go here, and should execute only if /* Other auth protocols go here, and should execute only if
@@ -243,7 +244,7 @@ permitted (u_long host_addr, int fd)
if (enable_debug) if (enable_debug)
syslog_message (LOG_DEBUG, "Trying %lx - %lx", syslog_message (LOG_DEBUG, "Trying %lx - %lx",
host_addr, permitted_hosts [i]); host_addr, permitted_hosts [i]);
if (permitted_hosts [i] == NULL) if (permitted_hosts [i] == 0L)
return (FALSE); return (FALSE);
if (host_addr == permitted_hosts [i]) if (host_addr == permitted_hosts [i])
return (TRUE); return (TRUE);

View File

@@ -62,6 +62,7 @@ int
do_read (int s, void *ptr, size_t total_size) do_read (int s, void *ptr, size_t total_size)
{ {
int nread; int nread;
char *tmp_ptr;
size_t already_read = 0, remaining = total_size; size_t already_read = 0, remaining = total_size;
while (already_read < total_size) { while (already_read < total_size) {
@@ -82,7 +83,10 @@ do_read (int s, void *ptr, size_t total_size)
already_read += nread; already_read += nread;
remaining -= nread; remaining -= nread;
(char *) ptr += nread; /* (char *) ptr += nread; */
tmp_ptr = ptr;
tmp_ptr += nread;
ptr = tmp_ptr;
#ifdef REAL_DEBUG #ifdef REAL_DEBUG
fprintf (stderr, "READ (%d): %d - %d - %d\n", fprintf (stderr, "READ (%d): %d - %d - %d\n",

View File

@@ -68,7 +68,7 @@ main(int argc, char *argv[])
uid = getuid (); euid = geteuid (); uid = getuid (); euid = geteuid ();
gid = getgid (); egid = getegid (); gid = getgid (); egid = getegid ();
if (uname (&uts)) _exit (1); if (uname (&uts) < 0) _exit (1);
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) || if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) || strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||

View File

@@ -26,12 +26,12 @@
void void
handle_slave_connection (int input, int output) handle_slave_connection (int input, int output)
{ {
glibtop *server = glibtop_global_server; glibtop *server G_GNUC_UNUSED = glibtop_global_server;
int64_t *param_ptr; int64_t *param_ptr G_GNUC_UNUSED;
const void *ptr; const void *ptr G_GNUC_UNUSED;
unsigned short max_len; unsigned short max_len G_GNUC_UNUSED;
pid_t pid; pid_t pid G_GNUC_UNUSED;
glibtop_response _resp, *resp = &_resp; glibtop_response _resp, *resp = &_resp;
glibtop_command _cmnd, *cmnd = &_cmnd; glibtop_command _cmnd, *cmnd = &_cmnd;
@@ -119,8 +119,8 @@ handle_slave_command (glibtop_command *cmnd, glibtop_response *resp,
const void *parameter) const void *parameter)
{ {
glibtop *server = glibtop_global_server; glibtop *server = glibtop_global_server;
unsigned device; unsigned device G_GNUC_UNUSED;
pid_t pid; pid_t pid G_GNUC_UNUSED;
switch (cmnd->command) { switch (cmnd->command) {
case GLIBTOP_CMND_SYSDEPS: case GLIBTOP_CMND_SYSDEPS:
@@ -128,7 +128,7 @@ handle_slave_command (glibtop_command *cmnd, glibtop_response *resp,
sizeof (glibtop_sysdeps)); sizeof (glibtop_sysdeps));
resp->u.sysdeps.features = glibtop_server_features; resp->u.sysdeps.features = glibtop_server_features;
resp->u.sysdeps.flags = glibtop_server_features | resp->u.sysdeps.flags = glibtop_server_features |
(1 << GLIBTOP_SYSDEPS_FEATURES); (1L << GLIBTOP_SYSDEPS_FEATURES);
resp->offset = _offset_union (sysdeps); resp->offset = _offset_union (sysdeps);
break; break;
#if GLIBTOP_SUID_CPU #if GLIBTOP_SUID_CPU

View File

@@ -6,5 +6,5 @@ endif
SUBDIRS = @sysdeps_dir@ common names $(guile_SUBDIRS) SUBDIRS = @sysdeps_dir@ common names $(guile_SUBDIRS)
DIST_SUBDIRS = common guile linux names osf1 \ DIST_SUBDIRS = common guile linux kernel names osf1 \
stub stub_suid sun4 freebsd solaris stub stub_suid sun4 freebsd

View File

@@ -2,24 +2,5 @@
.libs .libs
Makefile Makefile
Makefile.in Makefile.in
close.lo *.lo
cpu.lo *.la
init.lo
libgtop_sysdeps.la
loadavg.lo
mem.lo
msg_limits.lo
open.lo
prockernel.lo
proclist.lo
procmem.lo
procsegment.lo
procsignal.lo
procstate.lo
proctime.lo
procuid.lo
sem_limits.lo
shm_limits.lo
swap.lo
sysdeps.lo
uptime.lo

View File

@@ -1 +1,2 @@
Josh Sled <jsled@scam.XCF.Berkeley.EDU> Martin Baulig (martin@home-of-linux.org)
Josh Sled (jsled@scam.XCF.Berkeley.EDU)

View File

@@ -1,3 +1,41 @@
1999-07-29 Martin Baulig <martin@home-of-linux.org>
* proctime.c (glibtop_get_proc_time_p): Fix bug reported by
Takis Psarogiannakopoulos: `start_time' are seconds since the
epoch as it is stated in the manual.
Tue Jun 15 16:04:10 1999 Timur Bakeyev <mc@bat.ru>
* procuid.c: A fix to a ommitted case, when nor NetBSD, nor
LibGTop >= 1.1.0. This should be investigated closely to cover
more cases....
1999-05-26 Martin Baulig <martin@home-of-linux.org>
More NetBSD 1.4 fixes.
* mem.c, procmap.c, procmem.c: Make this work with the new UVM code.
[FIXME: This following most likely works on all BSD systems, but
this needs to be tested; I made it conditional to NetBSD 1.4 at
the moment. Please extend the conditionals to any other systems
where this works ...]
* procstate.c: Added `ruid' and `rgid' for LibGTop >= 1.1.0.
* procuid.c: Added `ngroups' and `groups' for LibGTop >= 1.1.0.
1999-05-25 Martin Baulig <martin@home-of-linux.org>
* ppp.c: Make this work on NetBSD.
Thu Apr 8 23:47:29 1999 Timur Bakeyev <timur@gnu.org>
* cpu.c, mem.c, netload.c, procargs.c, procstate.c, proctime.c,
sem_limits.c, shm_limits.c, swap.c: Added initial port for BSD/OS
(aka BSDI) 2.x and 3.x. 4.x should also(?) work.
Still, this port require more close look and extended check.
1999-03-19 Martin Baulig <martin@home-of-linux.org> 1999-03-19 Martin Baulig <martin@home-of-linux.org>
Added basic support for BSDI. It compiles without problems on Added basic support for BSDI. It compiles without problems on

View File

@@ -28,13 +28,17 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
static const unsigned long _glibtop_sysdeps_cpu = static const unsigned long _glibtop_sysdeps_cpu =
(1 << GLIBTOP_CPU_TOTAL) + (1 << GLIBTOP_CPU_USER) + (1L << GLIBTOP_CPU_TOTAL) + (1L << GLIBTOP_CPU_USER) +
(1 << GLIBTOP_CPU_NICE) + (1 << GLIBTOP_CPU_SYS) + (1L << GLIBTOP_CPU_NICE) + (1L << GLIBTOP_CPU_SYS) +
(1 << GLIBTOP_CPU_IDLE) + (1 << GLIBTOP_CPU_FREQUENCY); (1L << GLIBTOP_CPU_IDLE) + (1L << GLIBTOP_CPU_FREQUENCY);
/* nlist structure for kernel access */ /* nlist structure for kernel access */
static struct nlist nlst [] = { static struct nlist nlst [] = {
#ifdef __bsdi__
{ "_cpustats" },
#else
{ "_cp_time" }, { "_cp_time" },
#endif
{ 0 } { 0 }
}; };
@@ -66,7 +70,7 @@ glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf)
struct clockinfo ci; struct clockinfo ci;
size_t length; size_t length;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_CPU), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_CPU), 0);
memset (buf, 0, sizeof (glibtop_cpu)); memset (buf, 0, sizeof (glibtop_cpu));

View File

@@ -26,6 +26,10 @@
BEGIN_LIBGTOP_DECLS BEGIN_LIBGTOP_DECLS
#if _IN_LIBGTOP
#include <sys/param.h>
#endif
#define KI_PROC(ki) (&(ki))->kp_proc) #define KI_PROC(ki) (&(ki))->kp_proc)
#define KI_EPROC(ki) (&(ki))->kp_eproc) #define KI_EPROC(ki) (&(ki))->kp_eproc)

View File

@@ -28,7 +28,7 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
static const unsigned long _glibtop_sysdeps_loadavg = static const unsigned long _glibtop_sysdeps_loadavg =
(1 << GLIBTOP_LOADAVG_LOADAVG); (1L << GLIBTOP_LOADAVG_LOADAVG);
/* Init function. */ /* Init function. */
@@ -46,7 +46,7 @@ glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf)
double ldavg[3]; double ldavg[3];
int i; int i;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_LOADAVG), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_LOADAVG), 0);
memset (buf, 0, sizeof (glibtop_loadavg)); memset (buf, 0, sizeof (glibtop_loadavg));

View File

@@ -28,22 +28,22 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
#include <sys/sysctl.h> #include <sys/sysctl.h>
#ifndef __bsdi__
#include <sys/vmmeter.h> #include <sys/vmmeter.h>
#endif
#include <vm/vm_param.h> #include <vm/vm_param.h>
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
#include <uvm/uvm_extern.h>
#endif
static const unsigned long _glibtop_sysdeps_mem = static const unsigned long _glibtop_sysdeps_mem =
(1 << GLIBTOP_MEM_TOTAL) + (1 << GLIBTOP_MEM_USED) + (1L << GLIBTOP_MEM_TOTAL) + (1L << GLIBTOP_MEM_USED) +
(1 << GLIBTOP_MEM_FREE) + (1L << GLIBTOP_MEM_FREE) +
#ifndef __bsdi__ (1L << GLIBTOP_MEM_SHARED) +
(1 << GLIBTOP_MEM_SHARED) + (1L << GLIBTOP_MEM_BUFFER) +
#endif
(1 << GLIBTOP_MEM_BUFFER) +
#ifdef __FreeBSD__ #ifdef __FreeBSD__
(1 << GLIBTOP_MEM_CACHED) + (1L << GLIBTOP_MEM_CACHED) +
#endif #endif
(1 << GLIBTOP_MEM_USER) + (1 << GLIBTOP_MEM_LOCKED); (1L << GLIBTOP_MEM_USER) + (1L << GLIBTOP_MEM_LOCKED);
#ifndef LOG1024 #ifndef LOG1024
#define LOG1024 10 #define LOG1024 10
@@ -57,20 +57,33 @@ static int pageshift; /* log base 2 of the pagesize */
/* nlist structure for kernel access */ /* nlist structure for kernel access */
static struct nlist nlst [] = { static struct nlist nlst [] = {
{ "_cnt" }, #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
#ifdef __FreeBSD__ { "_bufpages" },
{ 0 }
#else
#if defined(__bsdi__)
{ "_bufcachemem" },
#elif defined(__FreeBSD__)
{ "_bufspace" }, { "_bufspace" },
#else #else
{ "_bufpages" }, { "_bufpages" },
#endif #endif
{ "_cnt" },
{ 0 } { 0 }
#endif
}; };
#ifndef __bsdi__
/* MIB array for sysctl */ /* MIB array for sysctl */
/* static int mib_length=2; */ static int mib_length=2;
#ifdef __bsdi__
static int mib [] = { CTL_VM, VM_TOTAL };
#else
static int mib [] = { CTL_VM, VM_METER }; static int mib [] = { CTL_VM, VM_METER };
#endif /* __bsdi__ */ #endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
static int mib_uvmexp [] = { CTL_VM, VM_UVMEXP };
#endif
/* Init function. */ /* Init function. */
@@ -102,23 +115,26 @@ glibtop_init_mem_p (glibtop *server)
void void
glibtop_get_mem_p (glibtop *server, glibtop_mem *buf) glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
{ {
#ifndef __bsdi__
struct vmtotal vmt; struct vmtotal vmt;
size_t length_vmt; size_t length_vmt;
#endif #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
struct uvmexp uvmexp;
size_t length_uvmexp;
#else
struct vmmeter vmm; struct vmmeter vmm;
#endif
u_int v_used_count; u_int v_used_count;
u_int v_total_count; u_int v_total_count;
u_int v_free_count;
int bufspace; int bufspace;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_MEM), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_MEM), 0);
memset (buf, 0, sizeof (glibtop_mem)); memset (buf, 0, sizeof (glibtop_mem));
if (server->sysdeps.mem == 0) if (server->sysdeps.mem == 0)
return; return;
#ifndef __bsdi__
/* [FIXME: On FreeBSD 2.2.6, sysctl () returns an incorrect /* [FIXME: On FreeBSD 2.2.6, sysctl () returns an incorrect
* value for `vmt.vm'. We use some code from Unix top * value for `vmt.vm'. We use some code from Unix top
* here.] */ * here.] */
@@ -126,19 +142,26 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
/* Get the data from sysctl */ /* Get the data from sysctl */
length_vmt = sizeof (vmt); length_vmt = sizeof (vmt);
if (sysctl (mib, 2, &vmt, &length_vmt, NULL, 0)) { if (sysctl (mib, 2, &vmt, &length_vmt, NULL, 0)) {
glibtop_warn_io_r (server, "sysctl"); glibtop_warn_io_r (server, "sysctl (vmt)");
return; return;
} }
#endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
length_uvmexp = sizeof (uvmexp);
if (sysctl (mib_uvmexp, 2, &uvmexp, &length_uvmexp, NULL, 0)) {
glibtop_warn_io_r (server, "sysctl (uvmexp)");
return;
}
#else
/* Get the data from kvm_* */ /* Get the data from kvm_* */
if (kvm_read (server->machine.kd, nlst[0].n_value, if (kvm_read (server->machine.kd, nlst[1].n_value,
&vmm, sizeof (vmm)) != sizeof (vmm)) { &vmm, sizeof (vmm)) != sizeof (vmm)) {
glibtop_warn_io_r (server, "kvm_read (cnt)"); glibtop_warn_io_r (server, "kvm_read (cnt)");
return; return;
} }
#endif
if (kvm_read (server->machine.kd, nlst[1].n_value, if (kvm_read (server->machine.kd, nlst[0].n_value,
&bufspace, sizeof (bufspace)) != sizeof (bufspace)) { &bufspace, sizeof (bufspace)) != sizeof (bufspace)) {
glibtop_warn_io_r (server, "kvm_read (bufspace)"); glibtop_warn_io_r (server, "kvm_read (bufspace)");
return; return;
@@ -146,29 +169,45 @@ glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
/* convert memory stats to Kbytes */ /* convert memory stats to Kbytes */
#ifdef __FreeBSD__ #if defined(__FreeBSD__)
v_total_count = vmm.v_page_count; v_total_count = vmm.v_page_count;
#else
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
v_total_count = uvmexp.reserve_kernel +
uvmexp.reserve_pagedaemon +
uvmexp.free + uvmexp.wired + uvmexp.active +
uvmexp.inactive;
#else #else
v_total_count = vmm.v_kernel_pages + v_total_count = vmm.v_kernel_pages +
vmm.v_free_count + vmm.v_wire_count + vmm.v_free_count + vmm.v_wire_count +
vmm.v_active_count + vmm.v_inactive_count; vmm.v_active_count + vmm.v_inactive_count;
#endif #endif
#endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
v_used_count = uvmexp.active + uvmexp.inactive;
v_free_count = uvmexp.free;
#else
v_used_count = vmm.v_active_count + vmm.v_inactive_count; v_used_count = vmm.v_active_count + vmm.v_inactive_count;
v_free_count = vmm.v_free_count;
#endif
buf->total = (u_int64_t) pagetok (v_total_count) << LOG1024; buf->total = (u_int64_t) pagetok (v_total_count) << LOG1024;
buf->used = (u_int64_t) pagetok (v_used_count) << LOG1024; buf->used = (u_int64_t) pagetok (v_used_count) << LOG1024;
buf->free = (u_int64_t) pagetok (vmm.v_free_count) << LOG1024; buf->free = (u_int64_t) pagetok (v_free_count) << LOG1024;
#ifdef __FreeBSD__ #ifdef __FreeBSD__
buf->cached = (u_int64_t) pagetok (vmm.v_cache_count) << LOG1024; buf->cached = (u_int64_t) pagetok (vmm.v_cache_count) << LOG1024;
#endif #endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
buf->locked = (u_int64_t) pagetok (uvmexp.wired) << LOG1024;
#else
buf->locked = (u_int64_t) pagetok (vmm.v_wire_count) << LOG1024; buf->locked = (u_int64_t) pagetok (vmm.v_wire_count) << LOG1024;
#ifndef __bsdi__
buf->shared = (u_int64_t) pagetok (vmt.t_rmshr) << LOG1024;
#endif #endif
buf->shared = (u_int64_t) pagetok (vmt.t_rmshr) << LOG1024;
#if __FreeBSD__ #if __FreeBSD__
buf->buffer = (u_int64_t) bufspace; buf->buffer = (u_int64_t) bufspace;
#else #else

View File

@@ -37,7 +37,7 @@ glibtop_init_msg_limits_p (glibtop *server)
void void
glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf) glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_MSG_LIMITS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_MSG_LIMITS), 0);
memset (buf, 0, sizeof (glibtop_msg_limits)); memset (buf, 0, sizeof (glibtop_msg_limits));
} }
@@ -56,9 +56,9 @@ glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
#include <sys/msg.h> #include <sys/msg.h>
static const unsigned long _glibtop_sysdeps_msg_limits = static const unsigned long _glibtop_sysdeps_msg_limits =
(1 << GLIBTOP_IPC_MSGMAX) + (1 << GLIBTOP_IPC_MSGMNI) + (1L << GLIBTOP_IPC_MSGMAX) + (1L << GLIBTOP_IPC_MSGMNI) +
(1 << GLIBTOP_IPC_MSGMNB) + (1 << GLIBTOP_IPC_MSGTQL) + (1L << GLIBTOP_IPC_MSGMNB) + (1L << GLIBTOP_IPC_MSGTQL) +
(1 << GLIBTOP_IPC_MSGSSZ); (1L << GLIBTOP_IPC_MSGSSZ);
/* The values in this structure never change at runtime, so we only /* The values in this structure never change at runtime, so we only
* read it once during initialization. We have to use the name `_msginfo' * read it once during initialization. We have to use the name `_msginfo'
@@ -95,7 +95,7 @@ glibtop_init_msg_limits_p (glibtop *server)
void void
glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf) glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_MSG_LIMITS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_MSG_LIMITS), 0);
memset (buf, 0, sizeof (glibtop_msg_limits)); memset (buf, 0, sizeof (glibtop_msg_limits));

View File

@@ -39,20 +39,20 @@
#include <netinet/in_var.h> #include <netinet/in_var.h>
static const unsigned long _glibtop_sysdeps_netload = static const unsigned long _glibtop_sysdeps_netload =
(1 << GLIBTOP_NETLOAD_IF_FLAGS) + (1L << GLIBTOP_NETLOAD_IF_FLAGS) +
(1 << GLIBTOP_NETLOAD_MTU) + (1L << GLIBTOP_NETLOAD_MTU) +
(1 << GLIBTOP_NETLOAD_SUBNET) + (1L << GLIBTOP_NETLOAD_SUBNET) +
(1 << GLIBTOP_NETLOAD_ADDRESS) + (1L << GLIBTOP_NETLOAD_ADDRESS) +
(1 << GLIBTOP_NETLOAD_PACKETS_IN) + (1L << GLIBTOP_NETLOAD_PACKETS_IN) +
(1 << GLIBTOP_NETLOAD_PACKETS_OUT) + (1L << GLIBTOP_NETLOAD_PACKETS_OUT) +
(1 << GLIBTOP_NETLOAD_PACKETS_TOTAL) + (1L << GLIBTOP_NETLOAD_PACKETS_TOTAL) +
(1 << GLIBTOP_NETLOAD_BYTES_IN) + (1L << GLIBTOP_NETLOAD_BYTES_IN) +
(1 << GLIBTOP_NETLOAD_BYTES_OUT) + (1L << GLIBTOP_NETLOAD_BYTES_OUT) +
(1 << GLIBTOP_NETLOAD_BYTES_TOTAL) + (1L << GLIBTOP_NETLOAD_BYTES_TOTAL) +
(1 << GLIBTOP_NETLOAD_ERRORS_IN) + (1L << GLIBTOP_NETLOAD_ERRORS_IN) +
(1 << GLIBTOP_NETLOAD_ERRORS_OUT) + (1L << GLIBTOP_NETLOAD_ERRORS_OUT) +
(1 << GLIBTOP_NETLOAD_ERRORS_TOTAL) + (1L << GLIBTOP_NETLOAD_ERRORS_TOTAL) +
(1 << GLIBTOP_NETLOAD_COLLISIONS); (1L << GLIBTOP_NETLOAD_COLLISIONS);
/* nlist structure for kernel access */ /* nlist structure for kernel access */
static struct nlist nlst [] = { static struct nlist nlst [] = {
@@ -87,7 +87,7 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
struct in_ifaddr in; struct in_ifaddr in;
} ifaddr; } ifaddr;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_NETLOAD), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_NETLOAD), 0);
memset (buf, 0, sizeof (glibtop_netload)); memset (buf, 0, sizeof (glibtop_netload));
@@ -107,7 +107,7 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
sizeof (ifnet)) != sizeof (ifnet)) sizeof (ifnet)) != sizeof (ifnet))
glibtop_error_io_r (server, "kvm_read (ifnetaddr)"); glibtop_error_io_r (server, "kvm_read (ifnetaddr)");
#if (defined __FreeBSD__) || (defined __bsdi__) #if defined(__FreeBSD__) || defined(__bsdi__)
if (kvm_read (server->machine.kd, (u_long) ifnet.if_name, if (kvm_read (server->machine.kd, (u_long) ifnet.if_name,
tname, 16) != 16) tname, 16) != 16)
glibtop_error_io_r (server, "kvm_read (if_name)"); glibtop_error_io_r (server, "kvm_read (if_name)");
@@ -116,9 +116,9 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
tname [15] = 0; tname [15] = 0;
#endif #endif
#if (defined __FreeBSD__) && (__FreeBSD_version >= 300000) #if defined(__FreeBSD__) && (__FreeBSD_version >= 300000)
ifaddraddr = (u_long) ifnet.if_addrhead.tqh_first; ifaddraddr = (u_long) ifnet.if_addrhead.tqh_first;
#elif (defined __FreeBSD__) || (defined __bsdi__) #elif defined(__FreeBSD__) || defined(__bsdi__)
ifaddraddr = (u_long) ifnet.if_addrlist; ifaddraddr = (u_long) ifnet.if_addrlist;
#else #else
ifaddraddr = (u_long) ifnet.if_addrlist.tqh_first; ifaddraddr = (u_long) ifnet.if_addrlist.tqh_first;
@@ -194,18 +194,18 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
return; return;
} }
#if (defined __FreeBSD__) && (__FreeBSD_version >= 300000) #if defined(__FreeBSD__) && (__FreeBSD_version >= 300000)
ifaddraddr = (u_long)ifaddr.ifa.ifa_link.tqe_next; ifaddraddr = (u_long)ifaddr.ifa.ifa_link.tqe_next;
#elif (defined __FreeBSD__) || (defined __bsdi__) #elif defined(__FreeBSD__) || defined(__bsdi__)
ifaddraddr = (u_long)ifaddr.ifa.ifa_next; ifaddraddr = (u_long)ifaddr.ifa.ifa_next;
#else #else
ifaddraddr = (u_long)ifaddr.ifa.ifa_list.tqe_next; ifaddraddr = (u_long)ifaddr.ifa.ifa_list.tqe_next;
#endif #endif
} }
#if (defined __FreeBSD__) && (__FreeBSD_version >= 300000) #if defined(__FreeBSD__) && (__FreeBSD_version >= 300000)
ifnetaddr = (u_long) ifnet.if_link.tqe_next; ifnetaddr = (u_long) ifnet.if_link.tqe_next;
#elif (defined __FreeBSD__) || (defined __bsdi__) #elif defined(__FreeBSD__) || defined(__bsdi__)
ifnetaddr = (u_long) ifnet.if_next; ifnetaddr = (u_long) ifnet.if_next;
#else #else
ifnetaddr = (u_long) ifnet.if_list.tqe_next; ifnetaddr = (u_long) ifnet.if_list.tqe_next;

View File

@@ -39,7 +39,7 @@
#include <net/netisr.h> #include <net/netisr.h>
#include <net/route.h> #include <net/route.h>
#ifdef __FreeBSD__ #if defined(__FreeBSD__) || defined(__NetBSD__)
#include <net/if_sppp.h> #include <net/if_sppp.h>
#else #else
#include <i4b/sppp/if_sppp.h> #include <i4b/sppp/if_sppp.h>
@@ -51,11 +51,11 @@
#endif #endif
static const unsigned long _glibtop_sysdeps_ppp = static const unsigned long _glibtop_sysdeps_ppp =
(1 << GLIBTOP_PPP_STATE); (1L << GLIBTOP_PPP_STATE);
#ifdef HAVE_I4B_ACCT #ifdef HAVE_I4B_ACCT
static const unsigned long _glibtop_sysdeps_ppp_acct = static const unsigned long _glibtop_sysdeps_ppp_acct =
(1 << GLIBTOP_PPP_BYTES_IN) + (1 << GLIBTOP_PPP_BYTES_OUT); (1L << GLIBTOP_PPP_BYTES_IN) + (1L << GLIBTOP_PPP_BYTES_OUT);
#endif #endif
#endif /* HAVE_I4B */ #endif /* HAVE_I4B */
@@ -99,7 +99,7 @@ glibtop_get_ppp_p (glibtop *server, glibtop_ppp *buf, unsigned short device)
#endif #endif
int phase; int phase;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PPP), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PPP), 0);
memset (buf, 0, sizeof (glibtop_ppp)); memset (buf, 0, sizeof (glibtop_ppp));

View File

@@ -33,7 +33,7 @@
#include <sys/proc.h> #include <sys/proc.h>
static const unsigned long _glibtop_sysdeps_proc_args = static const unsigned long _glibtop_sysdeps_proc_args =
(1 << GLIBTOP_PROC_ARGS_SIZE); (1L << GLIBTOP_PROC_ARGS_SIZE);
/* Init function. */ /* Init function. */
@@ -54,18 +54,22 @@ glibtop_get_proc_args_p (glibtop *server, glibtop_proc_args *buf,
unsigned size = 0, pos = 0; unsigned size = 0, pos = 0;
int count; int count;
#ifndef __bsdi__
char filename [BUFSIZ]; char filename [BUFSIZ];
struct stat statb; struct stat statb;
#endif
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_ARGS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_ARGS), 0);
memset (buf, 0, sizeof (glibtop_proc_args)); memset (buf, 0, sizeof (glibtop_proc_args));
/* swapper, init, pagedaemon, vmdaemon, update - this doen't work. */ /* swapper, init, pagedaemon, vmdaemon, update - this doen't work. */
if (pid < 5) return NULL; if (pid < 5) return NULL;
#ifndef __bsdi__
sprintf (filename, "/proc/%d/mem", pid); sprintf (filename, "/proc/%d/mem", pid);
if (stat (filename, &statb)) return NULL; if (stat (filename, &statb)) return NULL;
#endif
glibtop_suid_enter (server); glibtop_suid_enter (server);

View File

@@ -28,7 +28,7 @@
#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z) #define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z)
#define BIT_SHIFT(x) (1 << (x % 32)) #define BIT_SHIFT(x) (1L << (x % 64))
static const unsigned long _glibtop_sysdeps_procdata_0 = static const unsigned long _glibtop_sysdeps_procdata_0 =
BIT_SHIFT(GLIBTOP_PROCDATA_CMD) + BIT_SHIFT(GLIBTOP_PROCDATA_CMD) +

View File

@@ -49,18 +49,18 @@
#endif #endif
static const unsigned long _glibtop_sysdeps_proc_kernel_pstats = static const unsigned long _glibtop_sysdeps_proc_kernel_pstats =
(1 << GLIBTOP_PROC_KERNEL_MIN_FLT) + (1L << GLIBTOP_PROC_KERNEL_MIN_FLT) +
(1 << GLIBTOP_PROC_KERNEL_MAJ_FLT) + (1L << GLIBTOP_PROC_KERNEL_MAJ_FLT) +
(1 << GLIBTOP_PROC_KERNEL_CMIN_FLT) + (1L << GLIBTOP_PROC_KERNEL_CMIN_FLT) +
(1 << GLIBTOP_PROC_KERNEL_CMAJ_FLT); (1L << GLIBTOP_PROC_KERNEL_CMAJ_FLT);
static const unsigned long _glibtop_sysdeps_proc_kernel_pcb = static const unsigned long _glibtop_sysdeps_proc_kernel_pcb =
(1 << GLIBTOP_PROC_KERNEL_KSTK_EIP) + (1L << GLIBTOP_PROC_KERNEL_KSTK_EIP) +
(1 << GLIBTOP_PROC_KERNEL_KSTK_ESP); (1L << GLIBTOP_PROC_KERNEL_KSTK_ESP);
static const unsigned long _glibtop_sysdeps_proc_kernel_wchan = static const unsigned long _glibtop_sysdeps_proc_kernel_wchan =
(1 << GLIBTOP_PROC_KERNEL_NWCHAN) + (1L << GLIBTOP_PROC_KERNEL_NWCHAN) +
(1 << GLIBTOP_PROC_KERNEL_WCHAN); (1L << GLIBTOP_PROC_KERNEL_WCHAN);
/* Init function. */ /* Init function. */
@@ -86,7 +86,7 @@ glibtop_get_proc_kernel_p (glibtop *server,
char filename [BUFSIZ]; char filename [BUFSIZ];
struct stat statb; struct stat statb;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_KERNEL), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_KERNEL), 0);
memset (buf, 0, sizeof (glibtop_proc_kernel)); memset (buf, 0, sizeof (glibtop_proc_kernel));
@@ -102,13 +102,13 @@ glibtop_get_proc_kernel_p (glibtop *server,
glibtop_error_io_r (server, "kvm_getprocs (%d)", pid); glibtop_error_io_r (server, "kvm_getprocs (%d)", pid);
buf->nwchan = (unsigned long) pinfo [0].kp_proc.p_wchan &~ KERNBASE; buf->nwchan = (unsigned long) pinfo [0].kp_proc.p_wchan &~ KERNBASE;
buf->flags |= (1 << GLIBTOP_PROC_KERNEL_NWCHAN); buf->flags |= (1L << GLIBTOP_PROC_KERNEL_NWCHAN);
if (pinfo [0].kp_proc.p_wchan && pinfo [0].kp_proc.p_wmesg) { if (pinfo [0].kp_proc.p_wchan && pinfo [0].kp_proc.p_wmesg) {
strncpy (buf->wchan, pinfo [0].kp_eproc.e_wmesg, strncpy (buf->wchan, pinfo [0].kp_eproc.e_wmesg,
sizeof (buf->wchan) - 1); sizeof (buf->wchan) - 1);
buf->wchan [sizeof (buf->wchan) - 1] = 0; buf->wchan [sizeof (buf->wchan) - 1] = 0;
buf->flags |= (1 << GLIBTOP_PROC_KERNEL_WCHAN); buf->flags |= (1L << GLIBTOP_PROC_KERNEL_WCHAN);
} else { } else {
buf->wchan [0] = 0; buf->wchan [0] = 0;
} }

View File

@@ -29,8 +29,8 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
static const unsigned long _glibtop_sysdeps_proclist = static const unsigned long _glibtop_sysdeps_proclist =
(1 << GLIBTOP_PROCLIST_TOTAL) + (1 << GLIBTOP_PROCLIST_NUMBER) + (1L << GLIBTOP_PROCLIST_TOTAL) + (1L << GLIBTOP_PROCLIST_NUMBER) +
(1 << GLIBTOP_PROCLIST_SIZE); (1L << GLIBTOP_PROCLIST_SIZE);
/* Fetch list of currently running processes. /* Fetch list of currently running processes.
* The interface of this function is a little bit different from the others: * The interface of this function is a little bit different from the others:
@@ -67,7 +67,7 @@ glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
int which, count; int which, count;
int i,j; int i,j;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROCLIST), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROCLIST), 0);
memset (buf, 0, sizeof (glibtop_proclist)); memset (buf, 0, sizeof (glibtop_proclist));

View File

@@ -48,14 +48,22 @@
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <vm/vm.h> #include <vm/vm.h>
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
/* Fixme ... */
#undef _KERNEL
#define _UVM_UVM_AMAP_I_H_ 1
#define _UVM_UVM_MAP_I_H_ 1
#include <uvm/uvm.h>
#endif
static const unsigned long _glibtop_sysdeps_proc_map = static const unsigned long _glibtop_sysdeps_proc_map =
(1 << GLIBTOP_PROC_MAP_TOTAL) + (1 << GLIBTOP_PROC_MAP_NUMBER) + (1L << GLIBTOP_PROC_MAP_TOTAL) + (1L << GLIBTOP_PROC_MAP_NUMBER) +
(1 << GLIBTOP_PROC_MAP_SIZE); (1L << GLIBTOP_PROC_MAP_SIZE);
static const unsigned long _glibtop_sysdeps_map_entry = static const unsigned long _glibtop_sysdeps_map_entry =
(1 << GLIBTOP_MAP_ENTRY_START) + (1 << GLIBTOP_MAP_ENTRY_END) + (1L << GLIBTOP_MAP_ENTRY_START) + (1L << GLIBTOP_MAP_ENTRY_END) +
(1 << GLIBTOP_MAP_ENTRY_OFFSET) + (1 << GLIBTOP_MAP_ENTRY_PERM) + (1L << GLIBTOP_MAP_ENTRY_OFFSET) + (1L << GLIBTOP_MAP_ENTRY_PERM) +
(1 << GLIBTOP_MAP_ENTRY_INODE) + (1 << GLIBTOP_MAP_ENTRY_DEVICE); (1L << GLIBTOP_MAP_ENTRY_INODE) + (1L << GLIBTOP_MAP_ENTRY_DEVICE);
/* Init function. */ /* Init function. */
@@ -74,15 +82,22 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
struct kinfo_proc *pinfo; struct kinfo_proc *pinfo;
struct vm_map_entry entry, *first; struct vm_map_entry entry, *first;
struct vmspace vmspace; struct vmspace vmspace;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
struct vnode vnode;
struct inode inode;
#else
struct vm_object object; struct vm_object object;
#endif
glibtop_map_entry *maps; glibtop_map_entry *maps;
#if defined __FreeBSD__
struct vnode vnode; struct vnode vnode;
struct inode inode; struct inode inode;
struct mount mount; struct mount mount;
#endif
int count, i = 0; int count, i = 0;
int update = 0; int update = 0;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_MAP), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_MAP), 0);
memset (buf, 0, sizeof (glibtop_proc_map)); memset (buf, 0, sizeof (glibtop_proc_map));
@@ -147,9 +162,14 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
if (entry.eflags & (MAP_ENTRY_IS_A_MAP|MAP_ENTRY_IS_SUB_MAP)) if (entry.eflags & (MAP_ENTRY_IS_A_MAP|MAP_ENTRY_IS_SUB_MAP))
continue; continue;
#endif #endif
#else
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
if (UVM_ET_ISSUBMAP (&entry))
continue;
#else #else
if (entry.is_a_map || entry.is_sub_map) if (entry.is_a_map || entry.is_sub_map)
continue; continue;
#endif
#endif #endif
maps [i].flags = _glibtop_sysdeps_map_entry; maps [i].flags = _glibtop_sysdeps_map_entry;
@@ -169,6 +189,19 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
i++; i++;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
if (!entry.object.uvm_obj)
continue;
/* We're only interested in vnodes */
if (kvm_read (server->machine.kd,
(unsigned long) entry.object.uvm_obj,
&vnode, sizeof (vnode)) != sizeof (vnode)) {
glibtop_warn_io_r (server, "kvm_read (vnode)");
return NULL;
}
#else
if (!entry.object.vm_object) if (!entry.object.vm_object)
continue; continue;
@@ -178,6 +211,24 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
(unsigned long) entry.object.vm_object, (unsigned long) entry.object.vm_object,
&object, sizeof (object)) != sizeof (object)) &object, sizeof (object)) != sizeof (object))
glibtop_error_io_r (server, "kvm_read (object)"); glibtop_error_io_r (server, "kvm_read (object)");
#endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
if (!vnode.v_uvm.u_flags & UVM_VNODE_VALID)
continue;
if ((vnode.v_type != VREG) || (vnode.v_tag != VT_UFS) ||
!vnode.v_data) continue;
if (kvm_read (server->machine.kd,
(unsigned long) vnode.v_data,
&inode, sizeof (inode)) != sizeof (inode))
glibtop_error_io_r (server, "kvm_read (inode)");
maps [i-1].inode = inode.i_number;
maps [i-1].device = inode.i_dev;
#endif
#ifdef __FreeBSD__ #ifdef __FreeBSD__
/* If the object is of type vnode, add its size */ /* If the object is of type vnode, add its size */

View File

@@ -45,13 +45,29 @@
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <vm/vm.h> #include <vm/vm.h>
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
/* Fixme ... */
#undef _KERNEL
#define _UVM_UVM_AMAP_I_H_ 1
#define _UVM_UVM_MAP_I_H_ 1
#include <uvm/uvm.h>
#endif
static const unsigned long _glibtop_sysdeps_proc_mem = static const unsigned long _glibtop_sysdeps_proc_mem =
(1 << GLIBTOP_PROC_MEM_SIZE) + (1L << GLIBTOP_PROC_MEM_SIZE) +
(1 << GLIBTOP_PROC_MEM_VSIZE) + (1L << GLIBTOP_PROC_MEM_VSIZE) +
(1 << GLIBTOP_PROC_MEM_SHARE) + (1L << GLIBTOP_PROC_MEM_RESIDENT) +
(1 << GLIBTOP_PROC_MEM_RESIDENT) + (1L << GLIBTOP_PROC_MEM_RSS) +
(1 << GLIBTOP_PROC_MEM_RSS) + (1L << GLIBTOP_PROC_MEM_RSS_RLIM);
(1 << GLIBTOP_PROC_MEM_RSS_RLIM);
static const unsigned long _glibtop_sysdeps_proc_mem_share =
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
(1L << GLIBTOP_PROC_MEM_SHARE);
#elif defined(__FreeBSD__)
(1L << GLIBTOP_PROC_MEM_SHARE);
#else
0;
#endif
#ifndef LOG1024 #ifndef LOG1024
#define LOG1024 10 #define LOG1024 10
@@ -82,7 +98,8 @@ glibtop_init_proc_mem_p (glibtop *server)
/* we only need the amount of log(2)1024 for our conversion */ /* we only need the amount of log(2)1024 for our conversion */
pageshift -= LOG1024; pageshift -= LOG1024;
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem; server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem |
_glibtop_sysdeps_proc_mem_share;
} }
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
@@ -94,11 +111,16 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
struct kinfo_proc *pinfo; struct kinfo_proc *pinfo;
struct vm_map_entry entry, *first; struct vm_map_entry entry, *first;
struct vmspace *vms, vmspace; struct vmspace *vms, vmspace;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
struct vnode vnode;
struct inode inode;
#else
struct vm_object object; struct vm_object object;
#endif
struct plimit plimit; struct plimit plimit;
int count; int count;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_MEM), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_MEM), 0);
memset (buf, 0, sizeof (glibtop_proc_mem)); memset (buf, 0, sizeof (glibtop_proc_mem));
@@ -173,11 +195,29 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
if (entry.eflags & (MAP_ENTRY_IS_A_MAP|MAP_ENTRY_IS_SUB_MAP)) if (entry.eflags & (MAP_ENTRY_IS_A_MAP|MAP_ENTRY_IS_SUB_MAP))
continue; continue;
#endif #endif
#else
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
if (UVM_ET_ISSUBMAP (&entry))
continue;
#else #else
if (entry.is_a_map || entry.is_sub_map) if (entry.is_a_map || entry.is_sub_map)
continue; continue;
#endif #endif
#endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
if (!entry.object.uvm_obj)
continue;
/* We're only interested in vnodes */
if (kvm_read (server->machine.kd,
(unsigned long) entry.object.uvm_obj,
&vnode, sizeof (vnode)) != sizeof (vnode)) {
glibtop_warn_io_r (server, "kvm_read (vnode)");
return;
}
#else
if (!entry.object.vm_object) if (!entry.object.vm_object)
continue; continue;
@@ -189,18 +229,31 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
glibtop_warn_io_r (server, "kvm_read (object)"); glibtop_warn_io_r (server, "kvm_read (object)");
return; return;
} }
#endif
/* If the object is of type vnode, add its size */ /* If the object is of type vnode, add its size */
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
if (!vnode.v_uvm.u_flags & UVM_VNODE_VALID)
continue;
if ((vnode.v_type != VREG) || (vnode.v_tag != VT_UFS) ||
!vnode.v_data) continue;
/* Reference count must be at least two. */
if (vnode.v_uvm.u_obj.uo_refs <= 1)
continue;
buf->share += pagetok (vnode.v_uvm.u_obj.uo_npages) << LOG1024;
#endif
#ifdef __FreeBSD__ #ifdef __FreeBSD__
if (object.type != OBJT_VNODE) if (object.type != OBJT_VNODE)
continue; continue;
buf->share += object.un_pager.vnp.vnp_size; buf->share += object.un_pager.vnp.vnp_size;
#else
buf->share += object.size;
#endif #endif
} }
buf->flags = _glibtop_sysdeps_proc_mem; buf->flags = _glibtop_sysdeps_proc_mem |
_glibtop_sysdeps_proc_mem_share;
} }

View File

@@ -48,7 +48,7 @@ glibtop_get_proc_segment_p (glibtop *server,
glibtop_proc_segment *buf, glibtop_proc_segment *buf,
pid_t pid) pid_t pid)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_SEGMENT), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_SEGMENT), 0);
memset (buf, 0, sizeof (glibtop_proc_segment)); memset (buf, 0, sizeof (glibtop_proc_segment));

View File

@@ -28,10 +28,10 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
static const unsigned long _glibtop_sysdeps_proc_signal = static const unsigned long _glibtop_sysdeps_proc_signal =
(1 << GLIBTOP_PROC_SIGNAL_SIGNAL) + (1L << GLIBTOP_PROC_SIGNAL_SIGNAL) +
(1 << GLIBTOP_PROC_SIGNAL_BLOCKED) + (1L << GLIBTOP_PROC_SIGNAL_BLOCKED) +
(1 << GLIBTOP_PROC_SIGNAL_SIGIGNORE) + (1L << GLIBTOP_PROC_SIGNAL_SIGIGNORE) +
(1 << GLIBTOP_PROC_SIGNAL_SIGCATCH); (1L << GLIBTOP_PROC_SIGNAL_SIGCATCH);
/* Init function. */ /* Init function. */
@@ -49,7 +49,7 @@ glibtop_get_proc_signal_p (glibtop *server,
struct kinfo_proc *pinfo; struct kinfo_proc *pinfo;
int count = 0; int count = 0;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_SIGNAL), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_SIGNAL), 0);
memset (buf, 0, sizeof (glibtop_proc_signal)); memset (buf, 0, sizeof (glibtop_proc_signal));

View File

@@ -27,20 +27,29 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
#if (!defined __OpenBSD__) && (!defined __bsdi__) #if !defined(__OpenBSD__)
//&& (!defined __bsdi__)
#include <sys/user.h> #include <sys/user.h>
#endif #endif
static const unsigned long _glibtop_sysdeps_proc_state = static const unsigned long _glibtop_sysdeps_proc_state =
(1 << GLIBTOP_PROC_STATE_CMD) + (1 << GLIBTOP_PROC_STATE_STATE) + (1L << GLIBTOP_PROC_STATE_CMD) + (1L << GLIBTOP_PROC_STATE_UID) +
(1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID); (1L << GLIBTOP_PROC_STATE_GID);
static const unsigned long _glibtop_sysdeps_proc_state_new =
#if LIBGTOP_VERSION_CODE >= 1001000
(1L << GLIBTOP_PROC_STATE_RUID) + (1L << GLIBTOP_PROC_STATE_RGID);
#else
0;
#endif
/* Init function. */ /* Init function. */
void void
glibtop_init_proc_state_p (glibtop *server) glibtop_init_proc_state_p (glibtop *server)
{ {
server->sysdeps.proc_state = _glibtop_sysdeps_proc_state; server->sysdeps.proc_state = _glibtop_sysdeps_proc_state |
_glibtop_sysdeps_proc_state_new;
} }
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
@@ -53,7 +62,7 @@ glibtop_get_proc_state_p (glibtop *server,
struct kinfo_proc *pinfo; struct kinfo_proc *pinfo;
int count = 0; int count = 0;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_STATE), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_STATE), 0);
memset (buf, 0, sizeof (glibtop_proc_state)); memset (buf, 0, sizeof (glibtop_proc_state));
@@ -73,27 +82,34 @@ glibtop_get_proc_state_p (glibtop *server,
buf->uid = pinfo [0].kp_eproc.e_pcred.p_svuid; buf->uid = pinfo [0].kp_eproc.e_pcred.p_svuid;
buf->gid = pinfo [0].kp_eproc.e_pcred.p_svgid; buf->gid = pinfo [0].kp_eproc.e_pcred.p_svgid;
switch (pinfo [0].kp_proc.p_stat) { #if LIBGTOP_VERSION_CODE >= 1001000
case SIDL: buf->ruid = pinfo [0].kp_eproc.e_pcred.p_ruid;
buf->state = 'I'; buf->rgid = pinfo [0].kp_eproc.e_pcred.p_rgid;
break; #endif
case SRUN:
buf->state = 'R';
break;
case SSLEEP:
buf->state = 'S';
break;
case SSTOP:
buf->state = 'T';
break;
case SZOMB:
buf->state = 'Z';
break;
default:
buf->state = '?';
break;
}
/* Set the flags for the data we're about to return*/ /* Set the flags for the data we're about to return*/
buf->flags = _glibtop_sysdeps_proc_state; buf->flags = _glibtop_sysdeps_proc_state |
_glibtop_sysdeps_proc_state_new;
switch (pinfo [0].kp_proc.p_stat) {
case SIDL:
buf->state = 0;
break;
case SRUN:
buf->state = GLIBTOP_PROCESS_RUNNING;
break;
case SSLEEP:
buf->state = GLIBTOP_PROCESS_INTERRUPTIBLE;
break;
case SSTOP:
buf->state = GLIBTOP_PROCESS_STOPPED;
break;
case SZOMB:
buf->state = GLIBTOP_PROCESS_ZOMBIE;
break;
default:
return;
}
buf->flags |= (1L << GLIBTOP_PROC_STATE_STATE);
} }

View File

@@ -32,11 +32,12 @@
#endif #endif
static const unsigned long _glibtop_sysdeps_proc_time = static const unsigned long _glibtop_sysdeps_proc_time =
(1 << GLIBTOP_PROC_TIME_RTIME) + (1 << GLIBTOP_PROC_TIME_FREQUENCY); (1L << GLIBTOP_PROC_TIME_RTIME) + (1L << GLIBTOP_PROC_TIME_FREQUENCY);
static const unsigned long _glibtop_sysdeps_proc_time_user = static const unsigned long _glibtop_sysdeps_proc_time_user =
(1 << GLIBTOP_PROC_TIME_UTIME) + (1 << GLIBTOP_PROC_TIME_STIME) + (1L << GLIBTOP_PROC_TIME_UTIME) + (1L << GLIBTOP_PROC_TIME_STIME) +
(1 << GLIBTOP_PROC_TIME_CUTIME) + (1 << GLIBTOP_PROC_TIME_CSTIME); (1L << GLIBTOP_PROC_TIME_CUTIME) + (1L << GLIBTOP_PROC_TIME_CSTIME) +
(1L << GLIBTOP_PROC_TIME_START_TIME);
#define tv2sec(tv) (((u_int64_t) tv.tv_sec * 1000000) + (u_int64_t) tv.tv_usec) #define tv2sec(tv) (((u_int64_t) tv.tv_sec * 1000000) + (u_int64_t) tv.tv_usec)
@@ -123,31 +124,74 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
pid_t pid) pid_t pid)
{ {
struct kinfo_proc *pinfo; struct kinfo_proc *pinfo;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
register struct rusage *rup;
#else
struct user *u_addr = (struct user *)USRSTACK; struct user *u_addr = (struct user *)USRSTACK;
#endif
struct pstats pstats; struct pstats pstats;
int count; int count;
char filename [BUFSIZ]; char filename [BUFSIZ];
struct stat statb; struct stat statb;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_TIME), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_TIME), 0);
memset (buf, 0, sizeof (glibtop_proc_time)); memset (buf, 0, sizeof (glibtop_proc_time));
if (server->sysdeps.proc_time == 0)
return;
/* It does not work for the swapper task. */ /* It does not work for the swapper task. */
if (pid == 0) return; if (pid == 0) return;
#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
if (server->sysdeps.proc_time == 0)
return;
#ifndef __bsdi__
sprintf (filename, "/proc/%d/mem", (int) pid); sprintf (filename, "/proc/%d/mem", (int) pid);
if (stat (filename, &statb)) return; if (stat (filename, &statb)) return;
#endif
#endif
/* Get the process information */ /* Get the process information */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count); pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
if ((pinfo == NULL) || (count != 1)) if ((pinfo == NULL) || (count != 1))
glibtop_error_io_r (server, "kvm_getprocs (%d)", pid); glibtop_error_io_r (server, "kvm_getprocs (%d)", pid);
#if (defined __FreeBSD__) && (__FreeBSD_version >= 300003)
buf->rtime = pinfo [0].kp_proc.p_runtime;
#else
buf->rtime = tv2sec (pinfo [0].kp_proc.p_rtime);
#endif
buf->frequency = 1000000;
buf->flags = _glibtop_sysdeps_proc_time;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
glibtop_suid_enter (server);
if (kvm_read (server->machine.kd,
(unsigned long) pinfo [0].kp_proc.p_stats,
&pstats, sizeof (pstats)) != sizeof (pstats)) {
glibtop_warn_io_r (server, "kvm_read (pstats)");
return;
}
glibtop_suid_leave (server);
rup = &pstats.p_ru;
calcru(&(pinfo [0]).kp_proc,
&rup->ru_utime, &rup->ru_stime, NULL);
buf->utime = tv2sec (pstats.p_ru.ru_utime);
buf->stime = tv2sec (pstats.p_ru.ru_stime);
buf->cutime = tv2sec (pstats.p_cru.ru_utime);
buf->cstime = tv2sec (pstats.p_cru.ru_stime);
buf->start_time = (u_int64_t) pstats.p_start.tv_sec;
buf->flags |= _glibtop_sysdeps_proc_time_user;
#else
glibtop_suid_enter (server); glibtop_suid_enter (server);
if ((pinfo [0].kp_proc.p_flag & P_INMEM) && if ((pinfo [0].kp_proc.p_flag & P_INMEM) &&
@@ -180,15 +224,6 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
} }
glibtop_suid_leave (server); glibtop_suid_leave (server);
#if (defined __FreeBSD__) && (__FreeBSD_version >= 300003)
buf->rtime = pinfo [0].kp_proc.p_runtime;
#else
buf->rtime = tv2sec (pinfo [0].kp_proc.p_rtime);
#endif #endif
buf->frequency = 1000000;
buf->flags |= _glibtop_sysdeps_proc_time;
} }

View File

@@ -28,18 +28,30 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
static const unsigned long _glibtop_sysdeps_proc_uid = static const unsigned long _glibtop_sysdeps_proc_uid =
(1 << GLIBTOP_PROC_UID_UID) + (1 << GLIBTOP_PROC_UID_EUID) + (1L << GLIBTOP_PROC_UID_UID) + (1L << GLIBTOP_PROC_UID_EUID) +
(1 << GLIBTOP_PROC_UID_EGID) + (1 << GLIBTOP_PROC_UID_PID) + (1L << GLIBTOP_PROC_UID_EGID) + (1L << GLIBTOP_PROC_UID_PID) +
(1 << GLIBTOP_PROC_UID_PPID) + (1 << GLIBTOP_PROC_UID_PGRP) + (1L << GLIBTOP_PROC_UID_PPID) + (1L << GLIBTOP_PROC_UID_PGRP) +
(1 << GLIBTOP_PROC_UID_TPGID) + (1 << GLIBTOP_PROC_UID_PRIORITY) + (1L << GLIBTOP_PROC_UID_TPGID) + (1L << GLIBTOP_PROC_UID_PRIORITY) +
(1 << GLIBTOP_PROC_UID_NICE); (1L << GLIBTOP_PROC_UID_NICE);
static const unsigned long _glibtop_sysdeps_proc_uid_groups =
#if LIBGTOP_VERSION_CODE >= 1001000
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
(1L << GLIBTOP_PROC_UID_NGROUPS) + (1L << GLIBTOP_PROC_UID_GROUPS);
#else
0L;
#endif
#else /* LIBGTOP_VERSION_CODE < 1001000 */
0L;
#endif
/* Init function. */ /* Init function. */
void void
glibtop_init_proc_uid_p (glibtop *server) glibtop_init_proc_uid_p (glibtop *server)
{ {
server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid; server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid |
_glibtop_sysdeps_proc_uid_groups;
} }
/* Provides detailed information about a process. */ /* Provides detailed information about a process. */
@@ -51,7 +63,14 @@ glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_uid *buf,
struct kinfo_proc *pinfo; struct kinfo_proc *pinfo;
int count = 0; int count = 0;
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_UID), 0); #if LIBGTOP_VERSION_CODE >= 1001000
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
struct ucred ucred;
void *ucred_ptr;
#endif
#endif
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_UID), 0);
memset (buf, 0, sizeof (glibtop_proc_uid)); memset (buf, 0, sizeof (glibtop_proc_uid));
@@ -80,4 +99,30 @@ glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_uid *buf,
/* Set the flags for the data we're about to return*/ /* Set the flags for the data we're about to return*/
buf->flags = _glibtop_sysdeps_proc_uid; buf->flags = _glibtop_sysdeps_proc_uid;
/* Use LibGTop conditionals here so we can more easily merge this
* code into the LIBGTOP_STABLE_1_0 branch. */
#if LIBGTOP_VERSION_CODE >= 1001000
/* This probably also works with other versions, but not yet
* tested. Please remove the conditional if this is true. */
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
ucred_ptr = (void *) pinfo [0].kp_eproc.e_pcred.pc_ucred;
if (ucred_ptr) {
if (kvm_read (server->machine.kd, (unsigned long) ucred_ptr,
&ucred, sizeof (ucred)) != sizeof (ucred)) {
glibtop_warn_io_r (server, "kvm_read (ucred)");
} else {
int count = (ucred.cr_ngroups < GLIBTOP_MAX_GROUPS) ?
ucred.cr_ngroups : GLIBTOP_MAX_GROUPS;
int i;
for (i = 0; i < count; i++)
buf->groups [i] = ucred.cr_groups [i];
buf->ngroups = count;
buf->flags |= _glibtop_sysdeps_proc_uid_groups;
}
}
#endif
#endif
} }

View File

@@ -27,7 +27,7 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
#if (defined __bsdi__) && (_BSDI_VERSION < 199700) #if defined(__bsdi__) && (_BSDI_VERSION < 199700)
/* Older versions of BSDI don't seem to have this. */ /* Older versions of BSDI don't seem to have this. */
void void
@@ -37,7 +37,7 @@ glibtop_init_sem_limits_p (glibtop *server)
void void
glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf) glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SEM_LIMITS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SEM_LIMITS), 0);
memset (buf, 0, sizeof (glibtop_sem_limits)); memset (buf, 0, sizeof (glibtop_sem_limits));
} }
@@ -46,7 +46,7 @@ glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
/* #define KERNEL to get declaration of `struct seminfo'. */ /* #define KERNEL to get declaration of `struct seminfo'. */
#if (defined __FreeBSD__) || (defined __bsdi__) #if defined(__FreeBSD__) || defined(__bsdi__)
#define KERNEL 1 #define KERNEL 1
#else #else
#define _KERNEL 1 #define _KERNEL 1
@@ -56,11 +56,11 @@ glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
#include <sys/sem.h> #include <sys/sem.h>
static unsigned long _glibtop_sysdeps_sem_limits = static unsigned long _glibtop_sysdeps_sem_limits =
(1 << GLIBTOP_IPC_SEMMAP) + (1 << GLIBTOP_IPC_SEMMNI) + (1L << GLIBTOP_IPC_SEMMAP) + (1L << GLIBTOP_IPC_SEMMNI) +
(1 << GLIBTOP_IPC_SEMMNS) + (1 << GLIBTOP_IPC_SEMMNU) + (1L << GLIBTOP_IPC_SEMMNS) + (1L << GLIBTOP_IPC_SEMMNU) +
(1 << GLIBTOP_IPC_SEMMSL) + (1 << GLIBTOP_IPC_SEMOPM) + (1L << GLIBTOP_IPC_SEMMSL) + (1L << GLIBTOP_IPC_SEMOPM) +
(1 << GLIBTOP_IPC_SEMUME) + (1 << GLIBTOP_IPC_SEMUSZ) + (1L << GLIBTOP_IPC_SEMUME) + (1L << GLIBTOP_IPC_SEMUSZ) +
(1 << GLIBTOP_IPC_SEMVMX) + (1 << GLIBTOP_IPC_SEMAEM); (1L << GLIBTOP_IPC_SEMVMX) + (1L << GLIBTOP_IPC_SEMAEM);
/* The values in this structure never change at runtime, so we only /* The values in this structure never change at runtime, so we only
* read it once during initialization. We have to use the name `_seminfo' * read it once during initialization. We have to use the name `_seminfo'
@@ -97,7 +97,7 @@ glibtop_init_sem_limits_p (glibtop *server)
void void
glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf) glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SEM_LIMITS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SEM_LIMITS), 0);
memset (buf, 0, sizeof (glibtop_sem_limits)); memset (buf, 0, sizeof (glibtop_sem_limits));

View File

@@ -27,7 +27,7 @@
#include <glibtop_suid.h> #include <glibtop_suid.h>
#if (defined __bsdi__) && (_BSDI_VERSION < 199700) #if defined(__bsdi__) && (_BSDI_VERSION < 199700)
/* Older versions of BSDI don't seem to have this. */ /* Older versions of BSDI don't seem to have this. */
void void
@@ -37,7 +37,7 @@ glibtop_init_shm_limits_p (glibtop *server)
void void
glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf) glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SHM_LIMITS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SHM_LIMITS), 0);
memset (buf, 0, sizeof (glibtop_shm_limits)); memset (buf, 0, sizeof (glibtop_shm_limits));
} }
@@ -46,7 +46,7 @@ glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
/* #define KERNEL to get declaration of `struct shminfo'. */ /* #define KERNEL to get declaration of `struct shminfo'. */
#if (defined __FreeBSD__) || (defined __bsdi__) #if defined(__FreeBSD__) || defined(__bsdi__)
#define KERNEL 1 #define KERNEL 1
#else #else
#define _KERNEL 1 #define _KERNEL 1
@@ -56,9 +56,9 @@ glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
#include <sys/shm.h> #include <sys/shm.h>
static unsigned long _glibtop_sysdeps_shm_limits = static unsigned long _glibtop_sysdeps_shm_limits =
(1 << GLIBTOP_IPC_SHMMAX) + (1 << GLIBTOP_IPC_SHMMIN) + (1L << GLIBTOP_IPC_SHMMAX) + (1L << GLIBTOP_IPC_SHMMIN) +
(1 << GLIBTOP_IPC_SHMMNI) + (1 << GLIBTOP_IPC_SHMSEG) + (1L << GLIBTOP_IPC_SHMMNI) + (1L << GLIBTOP_IPC_SHMSEG) +
(1 << GLIBTOP_IPC_SHMALL); (1L << GLIBTOP_IPC_SHMALL);
/* The values in this structure never change at runtime, so we only /* The values in this structure never change at runtime, so we only
* read it once during initialization. We have to use the name `_shminfo' * read it once during initialization. We have to use the name `_shminfo'
@@ -95,7 +95,7 @@ glibtop_init_shm_limits_p (glibtop *server)
void void
glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf) glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
{ {
glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SHM_LIMITS), 0); glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_SHM_LIMITS), 0);
memset (buf, 0, sizeof (glibtop_shm_limits)); memset (buf, 0, sizeof (glibtop_shm_limits));

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