Compare commits
83 Commits
gnome-2-28
...
LIBGTOP_2_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6762719e43 | ||
|
|
ad7dc16d89 | ||
|
|
f2e57d9fec | ||
|
|
1481823085 | ||
|
|
4e57a6222d | ||
|
|
cf531d3faf | ||
|
|
b447260691 | ||
|
|
1dbe133a24 | ||
|
|
5ee8d4cb58 | ||
|
|
3bd720ad81 | ||
|
|
6acebf416d | ||
|
|
51fd022bdd | ||
|
|
6239438dce | ||
|
|
0099cbb6b4 | ||
|
|
cd5649f326 | ||
|
|
d8a5e2162d | ||
|
|
185396d674 | ||
|
|
90f0e40395 | ||
|
|
172f0a50ba | ||
|
|
887092a05d | ||
|
|
b2a2f6b5c2 | ||
|
|
6bdb9a76eb | ||
|
|
fd29dae933 | ||
|
|
65c5ca842f | ||
|
|
edd08e6fd6 | ||
|
|
82ff91b74c | ||
|
|
ca6cabe41d | ||
|
|
4fb241097f | ||
|
|
214c3635da | ||
|
|
fba67da65d | ||
|
|
119049b8c0 | ||
|
|
1908c00d32 | ||
|
|
70640d297e | ||
|
|
c33623c097 | ||
|
|
6fe3b94f13 | ||
|
|
f1a01a543c | ||
|
|
758862e272 | ||
|
|
6941e7e22f | ||
|
|
ee2ac6d563 | ||
|
|
4c0632ccbd | ||
|
|
71c7d65b1d | ||
|
|
94aa63f796 | ||
|
|
931a8364ff | ||
|
|
598764c171 | ||
|
|
aa7f9df00e | ||
|
|
4c4466292e | ||
|
|
fcc1d9d957 | ||
|
|
0580b2fb2c | ||
|
|
a206cfc728 | ||
|
|
58ca70eaee | ||
|
|
421419fdbf | ||
|
|
ebb7f9d5e2 | ||
|
|
1f3b08e6dc | ||
|
|
a870dfc8f2 | ||
|
|
e0244ad3fc | ||
|
|
1156794b33 | ||
|
|
874771ec1c | ||
|
|
16f262985d | ||
|
|
0a94dc7992 | ||
|
|
50b5dea402 | ||
|
|
f4b23ef0c6 | ||
|
|
1f41349a7e | ||
|
|
548f104f35 | ||
|
|
4808aac8ef | ||
|
|
f04ce61b80 | ||
|
|
c7f7e5a1c6 | ||
|
|
e2348c24a0 | ||
|
|
f76b37be1b | ||
|
|
b2fee3e111 | ||
|
|
7b2416a8d1 | ||
|
|
d006da7e54 | ||
|
|
a93dc2526d | ||
|
|
a3a16707b5 | ||
|
|
fd53595189 | ||
|
|
0057bbbc47 | ||
|
|
e6d776ee61 | ||
|
|
c68e077909 | ||
|
|
72e46fc6b4 | ||
|
|
2ea8a156f3 | ||
|
|
40e1a86d52 | ||
|
|
a101d6b27a | ||
|
|
9770db12d2 | ||
|
|
a61052dc59 |
67
.gitignore
vendored
67
.gitignore
vendored
@@ -1,46 +1,34 @@
|
||||
sysdeps/Makefile
|
||||
sysdeps/Makefile.in
|
||||
sysdeps/*/Makefile
|
||||
sysdeps/*/Makefile.in
|
||||
sysdeps/*/.deps
|
||||
sysdeps/*/.libs
|
||||
sysdeps/*/*.o
|
||||
sysdeps/*/*.lo
|
||||
sysdeps/*/*.la
|
||||
src/*/Makefile
|
||||
src/*/Makefile.in
|
||||
src/*/.deps
|
||||
src/Makefile
|
||||
src/Makefile.in
|
||||
*~
|
||||
*.o
|
||||
*.out
|
||||
*.a
|
||||
*.gmo
|
||||
*.lo
|
||||
*.la
|
||||
*.core
|
||||
*.s
|
||||
*.stamp
|
||||
.libs
|
||||
.deps
|
||||
Makefile
|
||||
Makefile.in
|
||||
src/daemon/libgtop_daemon2
|
||||
src/daemon/libgtop_server2
|
||||
stamp-h1
|
||||
po/*.gmo
|
||||
po/stamp-it
|
||||
po/POTFILES
|
||||
po/Makefile.in.in
|
||||
po/Makefile.in
|
||||
po/Makefile
|
||||
missing
|
||||
misc/Makefile
|
||||
misc/Makefile.in
|
||||
m4/
|
||||
ltmain.sh
|
||||
libtool
|
||||
libgtopconfig.h
|
||||
libgtop.spec
|
||||
libgtop-2.0.pc
|
||||
lib/Makefile
|
||||
lib/Makefile.in
|
||||
lib/.deps
|
||||
lib/.libs
|
||||
lib/*.o
|
||||
lib/*.lo
|
||||
lib/*.la
|
||||
lib/lib.c
|
||||
lib/GTop-2.0.gir
|
||||
lib/GTop-2.0.typelib
|
||||
INSTALL
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
config.guess
|
||||
@@ -52,30 +40,29 @@ config.sub
|
||||
configure
|
||||
compile
|
||||
depcomp
|
||||
doc/Makefile
|
||||
doc/Makefile.in
|
||||
doc/libgtop2.info
|
||||
doc/mdate-sh
|
||||
doc/reference/Makefile
|
||||
doc/reference/Makefile.in
|
||||
doc/reference/html/
|
||||
doc/reference/libgtop-decl-list.txt
|
||||
doc/reference/libgtop-decl.txt
|
||||
doc/reference/libgtop-undeclared.txt
|
||||
doc/reference/libgtop-undocumented.txt
|
||||
doc/reference/libgtop-unused.txt
|
||||
doc/reference/libgtop.args
|
||||
doc/reference/libgtop.hierarchy
|
||||
doc/reference/libgtop.interfaces
|
||||
doc/reference/libgtop.prerequisites
|
||||
doc/reference/libgtop.signals
|
||||
doc/reference/tmpl/
|
||||
doc/reference/version.xml
|
||||
doc/reference/xml/
|
||||
doc/stamp-vti
|
||||
doc/texinfo.tex
|
||||
doc/version.texi
|
||||
examples/.deps/
|
||||
examples/.libs/
|
||||
examples/*.o
|
||||
examples/Makefile
|
||||
examples/Makefile.in
|
||||
examples/affinity
|
||||
examples/df
|
||||
examples/first
|
||||
examples/mem
|
||||
examples/free
|
||||
examples/mountlist
|
||||
examples/netlist
|
||||
examples/netload
|
||||
@@ -90,10 +77,6 @@ examples/sysdeps
|
||||
examples/timings
|
||||
examples/wd
|
||||
gtk-doc.make
|
||||
include/Makefile
|
||||
include/Makefile.in
|
||||
include/glibtop/Makefile
|
||||
include/glibtop/Makefile.in
|
||||
install-sh
|
||||
intltool-extract.in
|
||||
intltool-merge.in
|
||||
|
||||
29
NEWS
29
NEWS
@@ -1,3 +1,32 @@
|
||||
5 August 2015: Overview of changes in 2.31.4
|
||||
=============================================
|
||||
* 71 commits !
|
||||
* Implement a proper --enable-debug mode.
|
||||
* FreeBSD:
|
||||
- procstate: set process name for kernel (pid=0)
|
||||
- procmap: get dev/inode for ZFS (no filename yet)
|
||||
- mem: rework memory usage to something more meaningful
|
||||
- proclist: don't report threads
|
||||
- proctime: fix CPU times
|
||||
* Linux:
|
||||
- mem: use MemAvailable when available
|
||||
- mem: match `free`, report Slab as Cached.
|
||||
- support for x.y versionsmemory to match `free`
|
||||
* Fix a lot of GI tags: it now works without crashing.
|
||||
* Server and daemon binaries are now dynamically linked against their libgtop.
|
||||
* Update a lot of examples/.
|
||||
* Clean up some very old code.
|
||||
* Updated translations.
|
||||
|
||||
Special thanks to Ting-Wei Lan for providing patches and feedback on FreeBSD.
|
||||
|
||||
22 June 2015: Overview of changes in 2.31.3
|
||||
=============================================
|
||||
* Numerous OpenBSD backend fixes.
|
||||
* Fixed FreeBSD build issues.
|
||||
* Implemented procaffinity support for NetBSD.
|
||||
* Updated translations
|
||||
|
||||
19 August 2013: Overview of changes in 2.28.5
|
||||
=============================================
|
||||
* Fix numerous bugs in the OpenBSD backend.
|
||||
|
||||
17
configure.ac
17
configure.ac
@@ -3,8 +3,8 @@ dnl Configure script for the Gnome library
|
||||
dnl
|
||||
|
||||
m4_define([libgtop_major_version], [2])
|
||||
m4_define([libgtop_minor_version], [28])
|
||||
m4_define([libgtop_micro_version], [6])
|
||||
m4_define([libgtop_minor_version], [31])
|
||||
m4_define([libgtop_micro_version], [4])
|
||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
||||
|
||||
dnl increment if the interface has additions, changes, removals.
|
||||
@@ -34,6 +34,7 @@ AC_CONFIG_HEADERS(config.h)
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
AM_INIT_AUTOMAKE([-Wno-portability tar-ustar no-dist-gzip dist-xz])
|
||||
AM_SILENT_RULES([yes])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
GOBJECT_INTROSPECTION_CHECK([0.6.7])
|
||||
|
||||
@@ -262,7 +263,8 @@ dnl Debugging
|
||||
AC_ARG_ENABLE(debug,
|
||||
AS_HELP_STRING([--enable-debug],
|
||||
[Turn on debugging @<:@default=no@:>@]),
|
||||
AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 1, [Define to enable debugging]))
|
||||
AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 1, [Define to enable debugging]),
|
||||
AC_DEFINE(LIBGTOP_ENABLE_DEBUG, 0, [Define to disable debugging]))
|
||||
AC_ARG_ENABLE(fatal-warnings,
|
||||
AS_HELP_STRING([--enable-fatal-warnings],
|
||||
[Make all warnings fatal @<:@debug=no@:>@]),
|
||||
@@ -277,10 +279,6 @@ if test x$libgtop_use_machine_h = xyes ; then
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H"
|
||||
fi
|
||||
|
||||
if test x$libgtop_smp = xyes ; then
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SMP"
|
||||
fi
|
||||
|
||||
if test x$libgtop_have_sysinfo = xyes ; then
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
|
||||
fi
|
||||
@@ -319,14 +317,13 @@ if test "$GCC" = "yes" ; then
|
||||
CFLAGS="\
|
||||
-Winline \
|
||||
-Wall \
|
||||
-std=gnu89 \
|
||||
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
||||
-Wnested-externs -Wpointer-arith \
|
||||
-Wcast-align -Wsign-compare \
|
||||
$CFLAGS"
|
||||
fi
|
||||
|
||||
INCLUDES="-I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $X_CFLAGS"
|
||||
AM_CPPFLAGS="-I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $GLIB_CFLAGS $X_CFLAGS"
|
||||
|
||||
# Add various defines to the config.h file ...
|
||||
AH_VERBATIM([_GNU_SOURCE],
|
||||
@@ -345,7 +342,7 @@ AC_DEFINE([LIBGTOP_VERSION_CODE], [libgtop_version_code],
|
||||
AC_DEFINE_UNQUOTED([LIBGTOP_SERVER], ["$LIBGTOP_SERVER"],
|
||||
[The path to the libgtop server])
|
||||
|
||||
AC_SUBST(INCLUDES)
|
||||
AC_SUBST(AM_CPPFLAGS)
|
||||
|
||||
AC_SUBST(LIBGTOP_EXTRA_LIBS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
|
||||
@@ -46,9 +46,9 @@ HTML_IMAGES=
|
||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||
# signals and properties.
|
||||
# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||
# e.g. AM_CPPFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||
INCLUDES=
|
||||
AM_CPPFLAGS=
|
||||
GTKDOC_LIBS=
|
||||
|
||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||
|
||||
@@ -4,7 +4,7 @@ AM_LDFLAGS = $(LIBGTOP_EXTRA_LIBS)
|
||||
|
||||
noinst_PROGRAMS = first second pprint procargs df netlist \
|
||||
mountlist procmap netload sysdeps timings \
|
||||
openfiles smp proclist mem wd affinity
|
||||
openfiles smp proclist free wd affinity
|
||||
|
||||
first_SOURCES = first.c
|
||||
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
@@ -51,8 +51,8 @@ proclist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
wd_SOURCES = wd.c
|
||||
wd_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
mem_SOURCE = mem.c
|
||||
mem_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
free_SOURCE = mem.c
|
||||
free_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
affinity_SOURCES = affinity.c
|
||||
affinity_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
@@ -13,19 +13,36 @@ static void print_fsusage(const char *mountpoint)
|
||||
{
|
||||
glibtop_fsusage buf;
|
||||
|
||||
enum { SIZE, USED, FREE, AVAIL, READ, WRITE, MAX };
|
||||
char **a = g_new0(char*, MAX);
|
||||
|
||||
glibtop_get_fsusage(&buf, mountpoint);
|
||||
|
||||
printf("%-30s %10llu %10llu %10llu %5.1f %10llu %10llu\n",
|
||||
mountpoint,
|
||||
buf.blocks * buf.block_size >> 20,
|
||||
(buf.blocks - buf.bavail) * buf.block_size >> 20,
|
||||
buf.bavail * buf.block_size >> 20,
|
||||
(buf.blocks - buf.bavail) * 100.0 / (buf.blocks ? buf.blocks : 1.0),
|
||||
buf.read,
|
||||
buf.write
|
||||
);
|
||||
}
|
||||
|
||||
#define I(X) a[(X)]
|
||||
I(SIZE) = g_format_size_full(buf.blocks * buf.block_size, G_FORMAT_SIZE_IEC_UNITS);
|
||||
I(USED) = g_format_size_full((buf.blocks - buf.bavail) * buf.block_size, G_FORMAT_SIZE_IEC_UNITS);
|
||||
I(FREE) = g_format_size_full(buf.bfree * buf.block_size, G_FORMAT_SIZE_IEC_UNITS);
|
||||
I(AVAIL) = g_format_size_full(buf.bavail * buf.block_size, G_FORMAT_SIZE_IEC_UNITS);
|
||||
I(READ) = g_format_size_full(buf.read, G_FORMAT_SIZE_IEC_UNITS);
|
||||
I(WRITE) = g_format_size_full(buf.write, G_FORMAT_SIZE_IEC_UNITS);
|
||||
|
||||
printf("%#7x %10s %10s %10s %10s %5.1f%% %10s %10s %8lu %8lu %s\n",
|
||||
(unsigned)buf.flags,
|
||||
I(SIZE),
|
||||
I(USED),
|
||||
I(FREE),
|
||||
I(AVAIL),
|
||||
(buf.blocks - buf.bavail) * 100.0 / (buf.blocks ? buf.blocks : 1.0),
|
||||
I(READ),
|
||||
I(WRITE),
|
||||
(unsigned long)buf.files,
|
||||
(unsigned long)buf.ffree,
|
||||
mountpoint
|
||||
);
|
||||
|
||||
g_strfreev(a);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
@@ -33,8 +50,8 @@ int main(int argc, char **argv)
|
||||
|
||||
glibtop_init();
|
||||
|
||||
printf("%-30s %10s %10s %10s %5s %10s %10s\n",
|
||||
"Filesystem", "Size", "Used", "Avail", "Use%", "Read", "Write");
|
||||
printf("%-6s %10s %10s %10s %10s %5s %10s %10s %10s %10s %s\n",
|
||||
"(flags)", "Size", "Used", "Free", "Avail", "Use%", "Read", "Write", "Files", "Files Free", "Mountpoint");
|
||||
|
||||
if (argc > 1) {
|
||||
while (*++argv)
|
||||
|
||||
44
examples/free.c
Normal file
44
examples/free.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/mem.h>
|
||||
#include <glibtop/swap.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static unsigned mb(guint64 n)
|
||||
{
|
||||
return n >> 20;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
glibtop_mem mem;
|
||||
glibtop_swap swap;
|
||||
|
||||
glibtop_init();
|
||||
|
||||
glibtop_get_mem(&mem);
|
||||
glibtop_get_swap(&swap);
|
||||
|
||||
printf(" total used free shared buff/cache available\n");
|
||||
|
||||
printf("%-7s %11u %11u %11u %11u %11u %11u\n",
|
||||
"Mem:",
|
||||
mb(mem.total),
|
||||
mb(mem.used - mem.buffer - mem.cached),
|
||||
mb(mem.free),
|
||||
mb(mem.shared),
|
||||
mb(mem.buffer + mem.cached),
|
||||
mb(mem.total - mem.user));
|
||||
|
||||
printf("%-7s %11u %11u %11u\n",
|
||||
"Swap:",
|
||||
mb(swap.total),
|
||||
mb(swap.used),
|
||||
mb(swap.free));
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/mem.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
glibtop_mem buf;
|
||||
|
||||
glibtop_init();
|
||||
|
||||
g_print("%lx\n", glibtop_global_server->features);
|
||||
|
||||
glibtop_get_mem(&buf);
|
||||
|
||||
glibtop_close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ static char* hwaddress_format_for_display(glibtop_netload *buf)
|
||||
|
||||
for(i = 0; i < sizeof buf->hwaddress; ++i)
|
||||
g_string_append_printf(repr, "%02X:",
|
||||
(unsigned) ((char*)buf->hwaddress)[i]);
|
||||
((unsigned char*)buf->hwaddress)[i]);
|
||||
|
||||
repr->str [ repr->len - 1] = ' ';
|
||||
str = g_string_free(repr, FALSE);
|
||||
|
||||
@@ -21,14 +21,21 @@
|
||||
#define PPRINT(DATA, FORMAT) printf("\t%4lu B %3lu " #DATA " = " FORMAT "\n", \
|
||||
(unsigned long) sizeof buf.DATA, (unsigned long) buf_offsetof(DATA), buf.DATA)
|
||||
|
||||
#define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do { \
|
||||
size_t i; \
|
||||
printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \
|
||||
(unsigned long) sizeof buf.ARRAY, (unsigned long) buf_offsetof(ARRAY),\
|
||||
(unsigned long) G_N_ELEMENTS(buf.ARRAY)); \
|
||||
for(i = 0; i < (SIZE - 1); ++i) printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]); \
|
||||
printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \
|
||||
} while(0)
|
||||
#define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do { \
|
||||
size_t i; \
|
||||
printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \
|
||||
(unsigned long) sizeof buf.ARRAY, \
|
||||
(unsigned long) buf_offsetof(ARRAY), \
|
||||
(unsigned long) G_N_ELEMENTS(buf.ARRAY)); \
|
||||
for (i = 0; i < (SIZE); ++i) { \
|
||||
printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]); \
|
||||
if (!buf.ARRAY[i] && i < (SIZE - 1) && !buf.ARRAY[i + 1]) { \
|
||||
do { i++; } while (i < SIZE && !buf.ARRAY[i]); \
|
||||
printf("..., "); \
|
||||
} \
|
||||
} \
|
||||
printf("}\n"); \
|
||||
} while(0)
|
||||
|
||||
#define PPRINT_ENTRY_ARRAY(ARRAY, SIZE) do { \
|
||||
size_t i; \
|
||||
@@ -36,9 +43,11 @@ printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \
|
||||
(unsigned long) sizeof buf->ARRAY, 0,\
|
||||
(unsigned long) G_N_ELEMENTS(buf->ARRAY)); \
|
||||
for(i = 0; i < SIZE; ++i) { \
|
||||
printf ("[ ");\
|
||||
PPRINT_HASHTABLE(buf->ARRAY[i].values); \
|
||||
printf ("]\n");\
|
||||
if (buf->ARRAY[i].values) { \
|
||||
printf ("[ "); \
|
||||
PPRINT_HASHTABLE(buf->ARRAY[i].values); \
|
||||
printf ("]\n"); \
|
||||
} \
|
||||
} \
|
||||
printf("} "); \
|
||||
} while(0)
|
||||
@@ -319,6 +328,28 @@ static void pprint_get_proc_mem(pid_t pid)
|
||||
}
|
||||
|
||||
|
||||
static void pprint_get_proc_affinity(pid_t pid)
|
||||
{
|
||||
glibtop_proc_affinity buf;
|
||||
guint32 i;
|
||||
guint16* cpus;
|
||||
|
||||
cpus = glibtop_get_proc_affinity(&buf, pid);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_proc_affinity);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(number, "%u");
|
||||
PPRINT(all, "%d");
|
||||
|
||||
printf("\taffinity=");
|
||||
for (i = 0; i < buf.number; i++) {
|
||||
printf("%d, ", cpus[i]);
|
||||
}
|
||||
putchar('\n');
|
||||
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
@@ -351,6 +382,7 @@ int main()
|
||||
|
||||
pprint_get_proc_kernel(getpid());
|
||||
pprint_get_proc_mem(getpid());
|
||||
pprint_get_proc_affinity(getpid());
|
||||
|
||||
glibtop_close();
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/proclist.h>
|
||||
#include <glibtop/procstate.h>
|
||||
#include <glibtop/proctime.h>
|
||||
#include <glibtop/procuid.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
@@ -17,14 +20,28 @@ static void print_pids(guint64 which, guint64 arg)
|
||||
|
||||
pids = glibtop_get_proclist(&buf, which, arg);
|
||||
|
||||
printf("glibtop_get_proclist(%#llx, %llu) -> %lu processes\n",
|
||||
which, arg, (unsigned long)buf.number);
|
||||
for (i = 0; i < buf.number; ++i) {
|
||||
glibtop_proc_time ptime;
|
||||
glibtop_proc_uid puid;
|
||||
glibtop_proc_state pstate;
|
||||
|
||||
for (i = 0; i < buf.number; ++i)
|
||||
printf("%u ", pids[i]);
|
||||
pid_t p = pids[i];
|
||||
|
||||
putchar('\n');
|
||||
putchar('\n');
|
||||
glibtop_get_proc_time(&ptime, p);
|
||||
glibtop_get_proc_uid(&puid, p);
|
||||
glibtop_get_proc_state(&pstate, p);
|
||||
|
||||
/* almost equivalent to ps -x -o user,pid,time,usertime,systime,start,command */
|
||||
printf("%u pid=%u real=%.2f user=%.2f sys=%.2f start=%lu %s (%lx)\n",
|
||||
puid.uid,
|
||||
p,
|
||||
(double)ptime.rtime / ptime.frequency,
|
||||
(double)ptime.utime / ptime.frequency,
|
||||
(double)ptime.stime / ptime.frequency,
|
||||
(unsigned long)ptime.start_time,
|
||||
pstate.cmd,
|
||||
(long)ptime.flags);
|
||||
}
|
||||
|
||||
g_free(pids);
|
||||
}
|
||||
@@ -34,7 +51,6 @@ int main()
|
||||
{
|
||||
glibtop_init();
|
||||
|
||||
print_pids(GLIBTOP_KERN_PROC_ALL, 0);
|
||||
print_pids(GLIBTOP_KERN_PROC_UID, getuid());
|
||||
|
||||
glibtop_close();
|
||||
|
||||
@@ -39,10 +39,36 @@
|
||||
#include <sys/resource.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
|
||||
#ifndef PROFILE_COUNT
|
||||
#define PROFILE_COUNT 1
|
||||
#endif
|
||||
|
||||
static void
|
||||
try_mmap(const char *path)
|
||||
{
|
||||
struct stat buf;
|
||||
int fd;
|
||||
|
||||
if ((fd = open(path, O_RDONLY)) < 0)
|
||||
goto out;
|
||||
|
||||
if (fstat(fd, &buf) < 0)
|
||||
goto out;
|
||||
|
||||
if (mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fd, 0) == MAP_FAILED)
|
||||
goto out;
|
||||
|
||||
close(fd);
|
||||
|
||||
return;
|
||||
|
||||
out:
|
||||
fprintf(stderr, "Failed to test mmap with '%s'\n", path);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
{
|
||||
@@ -78,8 +104,18 @@ main (int argc, char *argv [])
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||
|
||||
if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
||||
g_error ("Usage: %s pid", argv [0]);
|
||||
if (argc == 1) {
|
||||
pid = getpid();
|
||||
}
|
||||
else if ((argc != 2) || (sscanf (argv [1], "%d", (int *) &pid) != 1))
|
||||
g_error ("Usage: %s [pid]", argv [0]);
|
||||
|
||||
if (pid == getpid()) {
|
||||
/* let's map something for a try */
|
||||
try_mmap("/etc/passwd");
|
||||
try_mmap("/etc/resolv.conf");
|
||||
try_mmap(argv[0]);
|
||||
}
|
||||
|
||||
fprintf (stderr, "Getting memory maps for pid %d.\n\n", (int) pid);
|
||||
|
||||
@@ -87,6 +123,7 @@ main (int argc, char *argv [])
|
||||
|
||||
for (i = 0; i < procmap.number; i++) {
|
||||
const char *filename = NULL;
|
||||
char * format;
|
||||
unsigned device, device_major, device_minor;
|
||||
char perm [5];
|
||||
|
||||
@@ -103,42 +140,27 @@ main (int argc, char *argv [])
|
||||
device_minor = (device & 255);
|
||||
device_major = ((device >> 8) & 255);
|
||||
|
||||
if (sizeof (void*) == 8)
|
||||
format = "%016lx-%016lx +%016lx (%8lu bytes mapped) - "
|
||||
"%02x:%02x % 8lu - %.*s";
|
||||
else
|
||||
format = "%08lx-%08lx +%08lx (%8lu bytes mapped) - "
|
||||
"%02x:%02x % 8lu - %.*s";
|
||||
|
||||
fprintf (stderr, format,
|
||||
(unsigned long) maps [i].start,
|
||||
(unsigned long) maps [i].end,
|
||||
(unsigned long) maps [i].offset,
|
||||
(unsigned long) (maps [i].end - (maps [i].start + maps [i].offset)),
|
||||
device_major, device_minor,
|
||||
(unsigned long) maps [i].inode,
|
||||
sizeof perm, perm);
|
||||
|
||||
if (filename) {
|
||||
char *format;
|
||||
|
||||
if (sizeof (void*) == 8)
|
||||
format = "%016lx-%016lx %016lx - "
|
||||
"%02x:%02x %08lu - %5.5s - %s\n";
|
||||
else
|
||||
format = "%08lx-%08lx %08lx - "
|
||||
"%02x:%02x %08lu - %5.5s - %s\n";
|
||||
|
||||
fprintf (stderr, format,
|
||||
(unsigned long) maps [i].start,
|
||||
(unsigned long) maps [i].end,
|
||||
(unsigned long) maps [i].offset,
|
||||
device_major, device_minor,
|
||||
(unsigned long) maps [i].inode,
|
||||
perm, filename);
|
||||
} else {
|
||||
char * format;
|
||||
|
||||
if (sizeof (void*) == 8)
|
||||
format = "%016lx-%016lx %016lx - "
|
||||
"%02x:%02x %08lu - %4s\n";
|
||||
else
|
||||
format = "%08lx-%08lx %08lx - "
|
||||
"%02x:%02x %08lu - %4s\n";
|
||||
|
||||
fprintf (stderr, format,
|
||||
(unsigned long) maps [i].start,
|
||||
(unsigned long) maps [i].end,
|
||||
(unsigned long) maps [i].offset,
|
||||
device_major, device_minor,
|
||||
(unsigned long) maps [i].inode,
|
||||
perm);
|
||||
fprintf(stderr, " - %s", filename);
|
||||
}
|
||||
|
||||
fputc('\n', stderr);
|
||||
|
||||
g_print("smaps flags:%#llx size:%lluKiB rss:%lluKiB "
|
||||
"shared_clean:%lluKib shared_dirty:%lluKiB "
|
||||
|
||||
@@ -42,14 +42,12 @@ output (pid_t pid)
|
||||
char *args;
|
||||
unsigned i;
|
||||
|
||||
#if HAVE_LIBGTOP_SMP
|
||||
unsigned long total;
|
||||
double p_total, p_utime, p_stime;
|
||||
double b_total, b_utime, b_stime;
|
||||
double s_total, s_utime, s_stime;
|
||||
double my_utime, my_stime;
|
||||
unsigned int ncpu;
|
||||
#endif
|
||||
|
||||
printf ("\n");
|
||||
|
||||
@@ -158,7 +156,6 @@ output (pid_t pid)
|
||||
|
||||
printf ("\n");
|
||||
|
||||
#if HAVE_LIBGTOP_SMP
|
||||
ncpu = glibtop_global_server->ncpu;
|
||||
|
||||
glibtop_get_proc_time (&data.proc_time, pid);
|
||||
@@ -231,7 +228,6 @@ output (pid_t pid)
|
||||
s_utime * 100.0 / my_utime, s_stime * 100.0 / my_stime);
|
||||
|
||||
printf ("\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
@@ -69,6 +69,21 @@
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
static void display_self_times(void)
|
||||
{
|
||||
printf("-- Overview using `ps` --------------------"
|
||||
"---------------\n");
|
||||
printf("-- this client is %8u ----------------"
|
||||
"---------------\n", (unsigned)getpid());
|
||||
printf("-- this server is %8u ----------------"
|
||||
"---------------\n", (unsigned)glibtop_global_server->pid);
|
||||
system("ps xjf | egrep 'timings|libgtop_server'");
|
||||
printf("-------------------------------------------"
|
||||
"---------------\n");
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
{
|
||||
@@ -85,13 +100,16 @@ main (int argc, char *argv [])
|
||||
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||
|
||||
display_self_times();
|
||||
|
||||
printf ("%-12s (%-10s): %7s - %9s - %9s\n",
|
||||
"Feature", "Flags", "Count", "utime", "stime");
|
||||
printf ("-------------------------------------------"
|
||||
"---------------\n");
|
||||
|
||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||
|
||||
getrusage (RUSAGE_SELF, &total_start);
|
||||
|
||||
getrusage (RUSAGE_SELF, &rusage_start);
|
||||
@@ -411,6 +429,8 @@ main (int argc, char *argv [])
|
||||
printf ("All timings are in clock ticks "
|
||||
"(1000000 ticks per second).\n\n");
|
||||
|
||||
display_self_times();
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
exit (0);
|
||||
|
||||
52
features.def
52
features.def
@@ -1,27 +1,27 @@
|
||||
void|cpu|ulong(total,user,nice,sys,idle,iowait,irq,softirq,frequency,xcpu_total[4],xcpu_user[4],xcpu_nice[4],xcpu_sys[4],xcpu_idle[4],xcpu_iowait[4],xcpu_irq[4],xcpu_softirq[4])
|
||||
void|mem|ulong(total,used,free,shared,buffer,cached,user,locked)
|
||||
void|swap|ulong(total,used,free,pagein,pageout)
|
||||
void|uptime|double(uptime,idletime)
|
||||
void|loadavg|double(loadavg[3]):ulong(nr_running,nr_tasks,last_pid)
|
||||
void|shm_limits|ulong(shmmax,shmmin,shmmni,shmseg,shmall)
|
||||
void|msg_limits|ulong(msgpool,msgmap,msgmax,msgmnb,msgmni,msgssz,msgtql)
|
||||
void|sem_limits|ulong(semmap,semmni,semmns,semmnu,semmsl,semopm,semume,semusz,semvmx,semaem)
|
||||
pid_t*|proclist|ulong(number,size,total)|long(which,arg)
|
||||
void|proc_state|str(cmd):char(state):ulong(uid,gid)|pid_t(pid)
|
||||
void|proc_uid|long(uid,euid,gid,egid,pid,ppid,pgrp,session,tty,tpgid,priority,nice)|pid_t(pid)
|
||||
void|proc_mem|long(size,vsize,resident,share,rss,rss_rlim)|pid_t(pid)
|
||||
void|proc_time|long(start_time,rtime,utime,stime,cutime,cstime,timeout,it_real_value,frequency,xcpu_utime[4],xcpu_stime[4])|pid_t(pid)
|
||||
void|proc_signal|ulong(signal[2],blocked[2],sigignore[2],sigcatch[2])|pid_t(pid)
|
||||
void|proc_kernel|ulong(k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt,kstk_esp,kstk_eip,nwchan):str(wchan)|pid_t(pid)
|
||||
void|proc_segment|ulong(text_rss,shlib_rss,data_rss,stack_rss,dirty_size,start_code,end_code,start_stack)|pid_t(pid)
|
||||
char *|proc_args|ulong(size)|pid_t(pid):unsigned(max_len)
|
||||
glibtop_map_entry *|proc_map|ulong(number,size,total)|pid_t(pid)
|
||||
glibtop_open_files_entry *|proc_open_files|ulong(number)|pid_t(pid)
|
||||
glibtop_mountentry *|@mountlist|ulong(number,size,total)|int(all_fs)
|
||||
void|@fsusage|ulong(blocks,bfree,bavail,files,ffree)|string|mount_dir
|
||||
void|netload|ulong(if_flags,mtu,subnet,address,packets_in,packets_out,packets_total,bytes_in,bytes_out,bytes_total,errors_in,errors_out,errors_total,collisions)|string|interface
|
||||
void|ppp|ulong(state,bytes_in,bytes_out)|ushort(device)
|
||||
char **|netlist|unsigned(number)
|
||||
char **|proc_wd|ulong(number),str(root),str(exe)|pid_t(pid)
|
||||
guint16*|proc_affinity|ulong(number),int(all)|pid_t(pid)
|
||||
void|cpu
|
||||
void|mem
|
||||
void|swap
|
||||
void|uptime
|
||||
void|loadavg
|
||||
void|shm_limits
|
||||
void|msg_limits
|
||||
void|sem_limits
|
||||
pid_t*|proclist|long(which,arg)
|
||||
void|proc_state|pid_t(pid)
|
||||
void|proc_uid|pid_t(pid)
|
||||
void|proc_mem|pid_t(pid)
|
||||
void|proc_time|pid_t(pid)
|
||||
void|proc_signal|pid_t(pid)
|
||||
void|proc_kernel|pid_t(pid)
|
||||
void|proc_segment|pid_t(pid)
|
||||
char *|proc_args|pid_t(pid):unsigned(max_len)
|
||||
glibtop_map_entry *|proc_map|pid_t(pid)
|
||||
glibtop_open_files_entry *|proc_open_files|pid_t(pid)
|
||||
glibtop_mountentry *|@mountlist|int(all_fs)
|
||||
void|@fsusage|string|mount_dir
|
||||
void|netload|string|interface
|
||||
void|ppp|ushort(device)
|
||||
char **|netlist
|
||||
char **|proc_wd|pid_t(pid)
|
||||
guint16*|proc_affinity|pid_t(pid)
|
||||
|
||||
|
||||
23
glibtop.h
23
glibtop.h
@@ -126,14 +126,37 @@ extern glibtop *glibtop_global_server;
|
||||
|
||||
extern const unsigned long glibtop_server_features;
|
||||
|
||||
/**
|
||||
* glibtop_init:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
glibtop *
|
||||
glibtop_init (void);
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_init_r:
|
||||
* @server_ptr: (out):
|
||||
* @features:
|
||||
* @flags:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
glibtop *
|
||||
glibtop_init_r (glibtop **server_ptr,
|
||||
unsigned long features,
|
||||
unsigned flags);
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_init_s:
|
||||
* @server_ptr: (out):
|
||||
* @features:
|
||||
* @flags:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
glibtop *
|
||||
glibtop_init_s (glibtop **server_ptr,
|
||||
unsigned long features,
|
||||
|
||||
@@ -46,6 +46,18 @@ void glibtop_warn (const char *format, ...) G_GNUC_PRINTF(1, 2);
|
||||
void glibtop_error_io (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
|
||||
void glibtop_warn_io (const char *format, ...) G_GNUC_PRINTF(1, 2);
|
||||
|
||||
/* FIXME: C99 */
|
||||
#define glibtop_debug_r(server, fmt, ...) \
|
||||
G_STMT_START { \
|
||||
if (LIBGTOP_ENABLE_DEBUG) \
|
||||
glibtop_debug_r_real(server, fmt, ##__VA_ARGS__); \
|
||||
} G_STMT_END
|
||||
|
||||
#define glibtop_debug(...) glibtop_debug_r(glibtop_global_server, __VA_ARGS__)
|
||||
|
||||
void glibtop_debug_vr (glibtop *server, const char *format, va_list args);
|
||||
void glibtop_debug_r_real (glibtop *server, const char *format, ...) G_GNUC_PRINTF(2, 3);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,12 +31,23 @@ G_BEGIN_DECLS
|
||||
|
||||
typedef struct _glibtop_netlist glibtop_netlist;
|
||||
|
||||
/**
|
||||
* glibtop_netlist:
|
||||
* @number: Number of entries in the returned list.
|
||||
*/
|
||||
struct _glibtop_netlist
|
||||
{
|
||||
guint64 flags;
|
||||
guint32 number;
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_netlist:
|
||||
* @buf: a #glibtop_netlist
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer none): an array of network
|
||||
* interface names.
|
||||
*/
|
||||
char** glibtop_get_netlist(glibtop_netlist *buf);
|
||||
|
||||
#if GLIBTOP_SUID_NETLIST
|
||||
@@ -45,13 +56,39 @@ char** glibtop_get_netlist(glibtop_netlist *buf);
|
||||
#define glibtop_get_netlist_r glibtop_get_netlist_s
|
||||
#endif
|
||||
|
||||
/**
|
||||
* glibtop_get_netlist_l:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_netlist
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer none): an array of network
|
||||
* interface names.
|
||||
*/
|
||||
char** glibtop_get_netlist_l (glibtop *server, glibtop_netlist *buf);
|
||||
|
||||
#if GLIBTOP_SUID_NETLIST
|
||||
void _glibtop_init_netlist_p (glibtop *server);
|
||||
|
||||
/**
|
||||
* glibtop_get_netlist_p:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_netlist
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer none): an array of network
|
||||
* interface names.
|
||||
*/
|
||||
char** glibtop_get_netlist_p (glibtop *server, glibtop_netlist *buf);
|
||||
#else
|
||||
void _glibtop_init_netlist_s (glibtop *server);
|
||||
|
||||
/**
|
||||
* glibtop_get_netlist_s:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_netlist
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer none): an array of network
|
||||
* interface names.
|
||||
*/
|
||||
char** glibtop_get_netlist_s (glibtop *server, glibtop_netlist *buf);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -94,7 +94,6 @@ glibtop_get_proc_map(glibtop_proc_map *buf, pid_t pid);
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_map:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
|
||||
@@ -96,36 +96,8 @@ struct _glibtop_proc_open_files
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files_l:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files_p:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files_l:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
@@ -139,12 +111,32 @@ glibtop_get_proc_open_files(glibtop_proc_open_files *buf, pid_t pid);
|
||||
#define glibtop_get_proc_open_files_r glibtop_get_proc_open_files_s
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files_l:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
|
||||
glibtop_open_files_entry *
|
||||
glibtop_get_proc_open_files_l (glibtop *server, glibtop_proc_open_files *buf, pid_t pid);
|
||||
|
||||
#if GLIBTOP_SUID_PROC_FILE
|
||||
void _glibtop_init_proc_open_files_p (glibtop *server);
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files_p:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
|
||||
glibtop_open_files_entry *
|
||||
glibtop_get_proc_open_files_p (glibtop *server, glibtop_proc_open_files *buf, pid_t pid);
|
||||
#else
|
||||
|
||||
@@ -37,6 +37,9 @@ G_BEGIN_DECLS
|
||||
|
||||
typedef struct _glibtop_shm_limits glibtop_shm_limits;
|
||||
|
||||
/**
|
||||
* glibtop_shm_limits:
|
||||
*/
|
||||
struct _glibtop_shm_limits
|
||||
{
|
||||
guint64 flags;
|
||||
@@ -47,6 +50,10 @@ struct _glibtop_shm_limits
|
||||
guint64 shmall; /* GLIBTOP_IPC_SHMALL */
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_shm_limits:
|
||||
* @buf: a #glibtop_shm_limits
|
||||
*/
|
||||
void glibtop_get_shm_limits(glibtop_shm_limits *buf);
|
||||
|
||||
#if GLIBTOP_SUID_SHM_LIMITS
|
||||
@@ -55,13 +62,28 @@ void glibtop_get_shm_limits(glibtop_shm_limits *buf);
|
||||
#define glibtop_get_shm_limits_r glibtop_get_shm_limits_s
|
||||
#endif
|
||||
|
||||
/**
|
||||
* glibtop_get_shm_limits_l:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_shm_limits
|
||||
*/
|
||||
void glibtop_get_shm_limits_l (glibtop *server, glibtop_shm_limits *buf);
|
||||
|
||||
#if GLIBTOP_SUID_SHM_LIMITS
|
||||
void _glibtop_init_shm_limits_p (glibtop *server);
|
||||
/**
|
||||
* glibtop_get_shm_limits_p:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_shm_limits
|
||||
*/
|
||||
void glibtop_get_shm_limits_p (glibtop *, glibtop_shm_limits *buf);
|
||||
#else
|
||||
void _glibtop_init_shm_limits_s (glibtop *server);
|
||||
/**
|
||||
* glibtop_get_shm_limits_s:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_shm_limits
|
||||
*/
|
||||
void glibtop_get_shm_limits_s (glibtop *server, glibtop_shm_limits *buf);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -56,6 +56,9 @@ G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_MAX_SYSDEPS 27
|
||||
|
||||
/* The 'features' args to glibtop_init_* is an unsigned long */
|
||||
G_STATIC_ASSERT((1UL << (GLIBTOP_MAX_SYSDEPS - 1)) <= ULONG_MAX);
|
||||
|
||||
#define GLIBTOP_SYSDEPS_ALL ((1 << GLIBTOP_MAX_SYSDEPS) - 1)
|
||||
|
||||
typedef struct _glibtop_sysdeps glibtop_sysdeps;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
lib_LTLIBRARIES = libgtop-2.0.la
|
||||
|
||||
@@ -39,8 +39,8 @@ introspection_sources = $(libgtop_2_0_la_SOURCES) lib.c ../glibtop.h \
|
||||
../include/glibtop/netlist.h ../include/glibtop/procopenfiles.h ../include/glibtop/open.h
|
||||
|
||||
GTop-2.0.gir: libgtop-2.0.la
|
||||
GTop_2_0_gir_INCLUDES = GObject-2.0
|
||||
GTop_2_0_gir_CFLAGS = $(INCLUDES)
|
||||
GTop_2_0_gir_AM_CPPFLAGS = GObject-2.0
|
||||
GTop_2_0_gir_CFLAGS = $(AM_CPPFLAGS)
|
||||
GTop_2_0_gir_LIBS = libgtop-2.0.la
|
||||
GTop_2_0_gir_FILES = $(introspection_sources)
|
||||
INTROSPECTION_GIRS += GTop-2.0.gir
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <glibtop/error.h>
|
||||
#include <glibtop/read.h>
|
||||
#include <glibtop/write.h>
|
||||
#include <glibtop/read_data.h>
|
||||
@@ -35,6 +36,43 @@ glibtop_call_l (glibtop *server, unsigned command, size_t send_size,
|
||||
|
||||
glibtop_init_r (&server, 0, 0);
|
||||
|
||||
g_assert(command >= GLIBTOP_CMND_QUIT && command < GLIBTOP_MAX_CMND);
|
||||
|
||||
switch (command) {
|
||||
#define CHECK_CMND(CMND) case (CMND): glibtop_debug("CALL: command %s sending %lu bytes", #CMND, (unsigned long)send_size); break
|
||||
CHECK_CMND(GLIBTOP_CMND_QUIT);
|
||||
CHECK_CMND(GLIBTOP_CMND_SYSDEPS);
|
||||
CHECK_CMND(GLIBTOP_CMND_CPU);
|
||||
CHECK_CMND(GLIBTOP_CMND_MEM);
|
||||
CHECK_CMND(GLIBTOP_CMND_SWAP);
|
||||
CHECK_CMND(GLIBTOP_CMND_UPTIME);
|
||||
CHECK_CMND(GLIBTOP_CMND_LOADAVG);
|
||||
CHECK_CMND(GLIBTOP_CMND_SHM_LIMITS);
|
||||
CHECK_CMND(GLIBTOP_CMND_MSG_LIMITS);
|
||||
CHECK_CMND(GLIBTOP_CMND_SEM_LIMITS);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROCLIST);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_STATE);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_UID);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_MEM);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_TIME);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_SIGNAL);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_KERNEL);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_SEGMENT);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_ARGS);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_MAP);
|
||||
CHECK_CMND(GLIBTOP_CMND_MOUNTLIST);
|
||||
CHECK_CMND(GLIBTOP_CMND_FSUSAGE);
|
||||
CHECK_CMND(GLIBTOP_CMND_NETLOAD);
|
||||
CHECK_CMND(GLIBTOP_CMND_PPP);
|
||||
CHECK_CMND(GLIBTOP_CMND_NETLIST);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_OPEN_FILES);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_WD);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_AFFINITY);
|
||||
default:
|
||||
glibtop_error_r(server, "CALL: command UNKNOWN(%d) sending %lu bytes", command, (unsigned long)send_size); break;
|
||||
}
|
||||
#undef CHECK_CMND
|
||||
|
||||
cmnd.command = command;
|
||||
|
||||
/* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we
|
||||
@@ -52,10 +90,8 @@ glibtop_call_l (glibtop *server, unsigned command, size_t send_size,
|
||||
|
||||
glibtop_read_l (server, sizeof (glibtop_response), &response);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "RESPONSE: %lu - %d\n",
|
||||
glibtop_debug ("RESPONSE: offset=%lu - data_size=%lu",
|
||||
response.offset, response.data_size);
|
||||
#endif
|
||||
|
||||
if (recv_buf)
|
||||
memcpy (recv_buf, ((char *) &response) + response.offset,
|
||||
|
||||
@@ -141,7 +141,7 @@ _init_server (glibtop *server, const unsigned features)
|
||||
|
||||
/* Open pipe to server. */
|
||||
server->method = GLIBTOP_METHOD_PIPE;
|
||||
|
||||
server->server_command = g_strdup(LIBGTOP_SERVER);
|
||||
} else {
|
||||
|
||||
glibtop_error_r (server, "Unknown server method '%s'",
|
||||
@@ -209,7 +209,7 @@ glibtop_init_r (glibtop **server_ptr, unsigned long features, unsigned flags)
|
||||
/* Open server, but only if not already opened. */
|
||||
|
||||
if ((server->flags & _GLIBTOP_INIT_STATE_OPEN) == 0)
|
||||
glibtop_open_l (glibtop_global_server, "glibtop",
|
||||
glibtop_open_l (server, "glibtop",
|
||||
features, flags);
|
||||
|
||||
return server;
|
||||
|
||||
39
lib/lib.pl
39
lib/lib.pl
@@ -88,7 +88,7 @@ sub output {
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
$param_def = $line_fields[3];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
@@ -106,16 +106,16 @@ sub output {
|
||||
}
|
||||
|
||||
if ($param_def eq 'string') {
|
||||
$call_param = ', ' . $line_fields[5];
|
||||
$call_param = ', ' . $line_fields[4];
|
||||
$param_buf = '';
|
||||
$buf_set = '';
|
||||
$param_decl = ",\n " . $space . ' const char *' .
|
||||
|
||||
$line_fields[5];
|
||||
$send_ptr = "\n\tconst void *send_ptr = " . $line_fields[5] . ';';
|
||||
$line_fields[4];
|
||||
$send_ptr = "\n\tconst void *send_ptr = " . $line_fields[4] . ';';
|
||||
$send_size = "\n\tconst size_t send_size =\n\t\tstrlen (" .
|
||||
|
||||
$line_fields[5] . ') + 1;';
|
||||
$line_fields[4] . ') + 1;';
|
||||
}
|
||||
else {
|
||||
$call_param = '';
|
||||
@@ -126,7 +126,7 @@ sub output {
|
||||
$buf_set = '';
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
if ($nr_params) {
|
||||
$param_buf = "\n\tstruct {\n";
|
||||
$param_buf = "\t\tstruct {\n";
|
||||
}
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
@@ -138,8 +138,8 @@ sub output {
|
||||
|
||||
if ($count > 0) {
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
$param_buf .= "\t\t$convert{$type} buf_$fields[$field];\n";
|
||||
$buf_set .= "\tparam_buf.buf_$fields[$field] = $fields[$field];\n";
|
||||
$param_buf .= "\t\t\t$convert{$type} buf_$fields[$field];\n";
|
||||
$buf_set .= "\t\tparam_buf.buf_$fields[$field] = $fields[$field];\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,19 +155,19 @@ sub output {
|
||||
$fields[$field];
|
||||
$call_param = $call_param . ', ' . $fields[$field];
|
||||
if ($send_ptr eq '') {
|
||||
$send_ptr = "\n\tconst void *send_ptr = ¶m_buf;";
|
||||
$send_ptr = "\t\tconst void *send_ptr = ¶m_buf;";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($nr_params) {
|
||||
$param_buf .= "\t} param_buf;";
|
||||
$send_size = "\n\tconst size_t send_size = sizeof param_buf;";
|
||||
$param_buf .= "\t\t} param_buf;\n";
|
||||
$send_size = "\t\tconst size_t send_size = sizeof param_buf;";
|
||||
}
|
||||
else {
|
||||
$send_size = "\n\tconst size_t send_size = 0;";
|
||||
$send_size = "\t\tconst size_t send_size = 0;";
|
||||
}
|
||||
if ($send_ptr eq '') {
|
||||
$send_ptr = "\n\tconst void *send_ptr = NULL;";
|
||||
$send_ptr = "\t\tconst void *send_ptr = NULL;";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,13 +175,11 @@ sub output {
|
||||
|
||||
$feature . ' *buf' . $param_decl . ')';
|
||||
|
||||
print "{" . $param_buf;
|
||||
print "{";
|
||||
|
||||
print $send_ptr . '' . $send_size;
|
||||
if ($retval !~ /^void$/) {
|
||||
print "\t" . $retval . ' retval = (' . $retval . ') 0;';
|
||||
}
|
||||
print $buf_set;
|
||||
|
||||
print "\tglibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_" .
|
||||
|
||||
@@ -198,6 +196,15 @@ sub output {
|
||||
&toupper($feature) . ')))';
|
||||
print "\t{";
|
||||
|
||||
if ($param_buf) {
|
||||
print $param_buf;
|
||||
print $buf_set;
|
||||
}
|
||||
|
||||
print $send_ptr;
|
||||
print $send_size;
|
||||
print '';
|
||||
|
||||
print "\t\t" . $prefix . 'glibtop_call_l (server, GLIBTOP_CMND_' .
|
||||
|
||||
&toupper($feature) . ',';
|
||||
|
||||
38
lib/open.c
38
lib/open.c
@@ -47,56 +47,44 @@ glibtop_open_l (glibtop *server, const char *program_name,
|
||||
|
||||
server->error_method = GLIBTOP_ERROR_METHOD_DEFAULT;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "SIZEOF: %u - %u - %u - %u - %u - %u\n",
|
||||
glibtop_debug ("SIZEOF: %zu - %zu - %zu - %zu - %zu - %zu",
|
||||
sizeof (glibtop_command), sizeof (glibtop_response),
|
||||
sizeof (glibtop_mountentry), sizeof (glibtop_union),
|
||||
sizeof (glibtop_sysdeps), sizeof (glibtop_response_union));
|
||||
#endif
|
||||
|
||||
switch (server->method) {
|
||||
case GLIBTOP_METHOD_DIRECT:
|
||||
server->features = 0;
|
||||
break;
|
||||
case GLIBTOP_METHOD_INET:
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Connecting to '%s' port %ld.\n",
|
||||
glibtop_debug ("Connecting to '%s' port %ld.",
|
||||
server->server_host, server->server_port);
|
||||
#endif
|
||||
|
||||
connect_type = glibtop_make_connection
|
||||
(server->server_host, server->server_port,
|
||||
&server->socket);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Connect Type is %d.\n", connect_type);
|
||||
#endif
|
||||
glibtop_debug ("Connect Type is %d.", connect_type);
|
||||
|
||||
server->flags |= _GLIBTOP_INIT_STATE_SERVER;
|
||||
|
||||
server->features = -1;
|
||||
break;
|
||||
case GLIBTOP_METHOD_UNIX:
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Connecting to Unix Domain Socket.\n");
|
||||
#endif
|
||||
glibtop_debug ("Connecting to Unix Domain Socket.");
|
||||
|
||||
connect_type = glibtop_make_connection
|
||||
("unix", 0, &server->socket);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Connect Type is %d.\n", connect_type);
|
||||
#endif
|
||||
glibtop_debug ("Connect Type is %d.", connect_type);
|
||||
|
||||
server->flags |= _GLIBTOP_INIT_STATE_SERVER;
|
||||
|
||||
server->features = -1;
|
||||
break;
|
||||
case GLIBTOP_METHOD_PIPE:
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Opening pipe to server (%s).\n",
|
||||
LIBGTOP_SERVER);
|
||||
#endif
|
||||
glibtop_debug ("Opening pipe to server (%s).",
|
||||
server->server_command);
|
||||
|
||||
if (pipe (server->input) || pipe (server->output))
|
||||
glibtop_error_io_r (server, "cannot make a pipe");
|
||||
@@ -110,9 +98,9 @@ glibtop_open_l (glibtop *server, const char *program_name,
|
||||
close (server->input [0]); close (server->output [1]);
|
||||
dup2 (server->input [1], 1);
|
||||
dup2 (server->output [0], 0);
|
||||
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
|
||||
execl (server->server_command, "libgtop-server", NULL);
|
||||
glibtop_error_io_r (server, "execl (%s)",
|
||||
LIBGTOP_SERVER);
|
||||
server->server_command);
|
||||
_exit (2);
|
||||
}
|
||||
|
||||
@@ -165,18 +153,14 @@ glibtop_open_l (glibtop *server, const char *program_name,
|
||||
|
||||
memcpy (&server->sysdeps, &sysdeps, sizeof (glibtop_sysdeps));
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Server features are %lu.\n",
|
||||
glibtop_debug ("Server features are %lu.",
|
||||
server->features);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* In any case, we call the open functions of our own sysdeps
|
||||
* directory. */
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Calling sysdeps open function.\n");
|
||||
#endif
|
||||
glibtop_debug ("Calling sysdeps open function.");
|
||||
|
||||
glibtop_init_s (&server, features, flags);
|
||||
}
|
||||
|
||||
@@ -33,9 +33,7 @@ glibtop_read_l (glibtop *server, size_t size, void *buf)
|
||||
int fd;
|
||||
glibtop_init_r (&server, 0, 0);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really reading %d bytes.\n", (int)size);
|
||||
#endif
|
||||
glibtop_debug("LIBRARY: really reading %d bytes.", (int)size);
|
||||
|
||||
fd = server->socket ? server->socket : server->input[0];
|
||||
|
||||
|
||||
@@ -36,10 +36,8 @@ glibtop_read_data_l (glibtop *server)
|
||||
|
||||
glibtop_init_r (&server, 0, 0);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: reading %lu data bytes.\n",
|
||||
glibtop_debug ("LIBRARY: reading %lu data bytes.",
|
||||
(unsigned long) sizeof (size_t));
|
||||
#endif
|
||||
|
||||
if (server->socket) {
|
||||
ret = recv (server->socket, &size, sizeof (size_t), 0);
|
||||
@@ -50,10 +48,8 @@ glibtop_read_data_l (glibtop *server)
|
||||
if (ret < 0)
|
||||
glibtop_error_io_r (server, _("read data size"));
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really reading %lu data bytes (ret = %d).\n",
|
||||
glibtop_debug ("LIBRARY: really reading %lu data bytes (ret = %d).",
|
||||
(unsigned long) size, ret);
|
||||
#endif
|
||||
|
||||
if (!size) return NULL;
|
||||
|
||||
|
||||
@@ -37,9 +37,7 @@ glibtop_write_l (glibtop *server, size_t size, void *buf)
|
||||
|
||||
if (size == 0) return;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", (int)size);
|
||||
#endif
|
||||
glibtop_debug("LIBRARY: really writing %d bytes.", (int)size);
|
||||
|
||||
fd = server->socket ? server->socket : server->output[1];
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ dnl * 'libgtop_sysdeps_dir' - sysdeps dir for libgtop.
|
||||
dnl * 'libgtop_use_machine_h' - some of system dependend parts of libgtop provide
|
||||
dnl their own header file. In this case we need to
|
||||
dnl define 'HAVE_GLIBTOP_MACHINE_H'.
|
||||
dnl * 'libgtop_need_server' - is the server really needed? Defines 'NEED_LIBGTOP'
|
||||
dnl if true; defines conditional 'NEED_LIBGTOP'.
|
||||
dnl * 'libgtop_need_server' - is the server really needed? Defines 'LIBGTOP_NEED_SERVER'
|
||||
dnl if true; defines conditional 'LIBGTOP_NEED_SERVER'.
|
||||
|
||||
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
@@ -31,33 +31,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
|
||||
AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes)
|
||||
|
||||
AC_ARG_WITH(libgtop-smp,
|
||||
AS_HELP_STRING([--with-libgtop-smp],
|
||||
[Enable SMP support @<:@default-auto@:>@]),[
|
||||
libgtop_smp="$withval"],[libgtop_smp=auto])
|
||||
|
||||
if test $libgtop_smp = auto ; then
|
||||
AC_MSG_CHECKING(whether to enable SMP support)
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
libgtop_smp=yes
|
||||
;;
|
||||
aix*)
|
||||
libgtop_smp=yes
|
||||
;;
|
||||
*)
|
||||
libgtop_smp=no
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT($libgtop_smp)
|
||||
fi
|
||||
|
||||
if test $libgtop_smp = yes ; then
|
||||
AC_DEFINE(HAVE_LIBGTOP_SMP, 1, [Define if libgtop supports SMP])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes)
|
||||
|
||||
AC_MSG_CHECKING(for libgtop sysdeps directory)
|
||||
|
||||
case "$host_os" in
|
||||
@@ -311,7 +284,7 @@ main (void)
|
||||
AC_MSG_RESULT($libgtop_need_server)
|
||||
|
||||
if test x$libgtop_need_server = xyes ; then
|
||||
AC_DEFINE(NEED_LIBGTOP, 1, [Define if libgtop is required])
|
||||
AC_DEFINE(LIBGTOP_NEED_SERVER, 1, [Define if libgtop server is required])
|
||||
fi
|
||||
|
||||
if test x$libgtop_use_machine_h = xyes ; then
|
||||
@@ -319,7 +292,7 @@ main (void)
|
||||
[Define if machine.h in libgtop sysdeps dir])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
|
||||
AM_CONDITIONAL(LIBGTOP_NEED_SERVER, test x$libgtop_need_server = xyes)
|
||||
AM_CONDITIONAL(LIBGTOP_SYSDEPS_PRIVATE_MOUNTLIST, test x$libgtop_sysdeps_private_mountlist = xyes)
|
||||
AM_CONDITIONAL(LIBGTOP_SYSDEPS_PRIVATE_FSUSAGE, test x$libgtop_sysdeps_private_fsusage = xyes)
|
||||
])
|
||||
|
||||
193
po/oc.po
193
po/oc.po
@@ -1,187 +1,194 @@
|
||||
# Occitan translation of libgtop.
|
||||
# Copyright (C) 1998-2004, 2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1998-2004 Free Software Foundation, Inc.
|
||||
# This file is distributed under the GNU General Public License Version 2.
|
||||
#
|
||||
# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org> - 2006-2007
|
||||
#
|
||||
#
|
||||
#
|
||||
# Cédric Valmary (Tot en Òc) <cvalmary@yahoo.fr>, 2015.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: oc\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-03-07 10:22+0100\n"
|
||||
"PO-Revision-Date: 2007-11-20 14:32+0100\n"
|
||||
"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
|
||||
"Language-Team: Occitan (post 1500) <ubuntu-l10n-oci@lists.ubuntu.com>\n"
|
||||
"Project-Id-Version: libgtop 2.9.91\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=libgto"
|
||||
"p&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-12-19 14:39+0000\n"
|
||||
"PO-Revision-Date: 2015-04-30 09:46+0200\n"
|
||||
"Last-Translator: Cédric Valmary (Tot en Òc) <cvalmary@yahoo.fr>\n"
|
||||
"Language-Team: www.totenoc.eu\n"
|
||||
"Language: oc\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Virtaal 0.7.0\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../lib/read.c:51
|
||||
#, c-format
|
||||
#: ../lib/read.c:51
|
||||
#, c-format
|
||||
msgid "read %d byte"
|
||||
msgid_plural "read %d bytes"
|
||||
msgstr[0] "a legit %d octet"
|
||||
msgstr[1] "a legits %d octets"
|
||||
msgstr[0] "%d octet legit"
|
||||
msgstr[1] "%d octets legits"
|
||||
|
||||
#: ../lib/read_data.c:51
|
||||
#: ../lib/read_data.c:51
|
||||
msgid "read data size"
|
||||
msgstr ""
|
||||
msgstr "talha de las donadas legidas"
|
||||
|
||||
#: ../lib/read_data.c:70
|
||||
#, c-format
|
||||
#: ../lib/read_data.c:70
|
||||
#, c-format
|
||||
msgid "read %lu byte of data"
|
||||
msgid_plural "read %lu bytes of data"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "lectura de %lu octet de donadas"
|
||||
msgstr[1] "lectura de %lu octets de donadas"
|
||||
|
||||
#: ../lib/write.c:51
|
||||
#, c-format
|
||||
#: ../lib/write.c:51
|
||||
#, c-format
|
||||
msgid "wrote %d byte"
|
||||
msgid_plural "wrote %d bytes"
|
||||
msgstr[0] "a escrich %d octet"
|
||||
msgstr[1] "a escriches %d octets"
|
||||
msgstr[0] "escritura de %d octet"
|
||||
msgstr[1] "escritura de %d octets"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:458
|
||||
#: ../src/daemon/gnuserv.c:455
|
||||
msgid "Enable debugging"
|
||||
msgstr ""
|
||||
msgstr "Activa lo desbugatge"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:460
|
||||
#: ../src/daemon/gnuserv.c:457
|
||||
msgid "Enable verbose output"
|
||||
msgstr ""
|
||||
msgstr "Activa la sortida charraira"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:462
|
||||
#: ../src/daemon/gnuserv.c:459
|
||||
msgid "Don't fork into background"
|
||||
msgstr ""
|
||||
msgstr "Aviar pas en prètzfach de fons"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:464
|
||||
#: ../src/daemon/gnuserv.c:461
|
||||
msgid "Invoked from inetd"
|
||||
msgstr ""
|
||||
msgstr "Invocat a partir de inetd"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:498
|
||||
#, c-format
|
||||
#: ../src/daemon/gnuserv.c:495
|
||||
#, c-format
|
||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr ""
|
||||
msgstr "Aviar « %s --help » per afichar la lista de las opcions de la linha de "
|
||||
"comanda.\n"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
|
||||
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
|
||||
msgid "Hangup"
|
||||
msgstr ""
|
||||
msgstr "Hangup"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
|
||||
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
|
||||
msgid "Interrupt"
|
||||
msgstr ""
|
||||
msgstr "Interrupcion"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
|
||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
|
||||
msgid "Quit"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
|
||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
|
||||
msgid "Illegal instruction"
|
||||
msgstr ""
|
||||
msgstr "Instruccion illegala"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
|
||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
|
||||
msgid "Trace trap"
|
||||
msgstr ""
|
||||
msgstr "Punt d'arrèst rencontrat"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
|
||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
|
||||
msgid "Abort"
|
||||
msgstr "Abandonar"
|
||||
msgstr "Anullacion"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
|
||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
|
||||
msgid "EMT error"
|
||||
msgstr ""
|
||||
msgstr "Error EMT"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
|
||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
|
||||
msgid "Floating-point exception"
|
||||
msgstr ""
|
||||
msgstr "Excepcion virgula flotanta"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
|
||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
|
||||
msgid "Kill"
|
||||
msgstr "Tuar"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
|
||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
|
||||
msgid "Bus error"
|
||||
msgstr ""
|
||||
msgstr "Error bus"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
|
||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
|
||||
msgid "Segmentation violation"
|
||||
msgstr ""
|
||||
msgstr "Violacion de segmentacion"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
|
||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
|
||||
msgid "Bad argument to system call"
|
||||
msgstr ""
|
||||
msgstr "Marrit argument d'apèl sistèma"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
|
||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
|
||||
msgid "Broken pipe"
|
||||
msgstr ""
|
||||
msgstr "Tub copat"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
|
||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
|
||||
msgid "Alarm clock"
|
||||
msgstr ""
|
||||
msgstr "Alarma de relòtge"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
|
||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
|
||||
msgid "Termination"
|
||||
msgstr ""
|
||||
msgstr "Senhal de fin"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
|
||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
|
||||
msgid "Urgent condition on socket"
|
||||
msgstr ""
|
||||
msgstr "Condicion urgenta sus socket"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
|
||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
|
||||
msgid "Stop"
|
||||
msgstr "Arrestar"
|
||||
msgstr "Arrèst"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
|
||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
|
||||
msgid "Keyboard stop"
|
||||
msgstr ""
|
||||
msgstr "Arrèst dempuèi lo clavièr"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
|
||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
|
||||
msgid "Continue"
|
||||
msgstr "Contunhar"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
|
||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
|
||||
msgid "Child status has changed"
|
||||
msgstr ""
|
||||
msgstr "L'estat del filh a cambiat"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
|
||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
|
||||
msgid "Background read from tty"
|
||||
msgstr ""
|
||||
msgstr "Lectura sus tty en rèire plan"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
|
||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
|
||||
msgid "Background write to tty"
|
||||
msgstr ""
|
||||
msgstr "Escritura sus tty en rèire plan"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
|
||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
|
||||
msgid "I/O now possible"
|
||||
msgstr ""
|
||||
msgstr "E/S ara possibla"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
|
||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
|
||||
msgid "CPU limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Limit de temps CPU depassat"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
|
||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
|
||||
msgid "File size limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Talha de fichièr excessiva"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
|
||||
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
|
||||
msgid "Virtual alarm clock"
|
||||
msgstr ""
|
||||
msgstr "Alarma virtuala"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
|
||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
|
||||
msgid "Profiling alarm clock"
|
||||
msgstr ""
|
||||
msgstr "Perfil de l'alarma"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
|
||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
|
||||
msgid "Window size change"
|
||||
msgstr ""
|
||||
msgstr "Redimensionament de la fenèstra"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
|
||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
|
||||
msgid "Information request"
|
||||
msgstr ""
|
||||
msgstr "Demanda d'informacion"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
|
||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
|
||||
msgid "User defined signal 1"
|
||||
msgstr ""
|
||||
msgstr "Senhal utilizaire 1"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
|
||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
|
||||
msgid "User defined signal 2"
|
||||
msgstr ""
|
||||
msgstr "Senhal utilizaire 2"
|
||||
|
||||
24
po/pt.po
24
po/pt.po
@@ -3,19 +3,23 @@
|
||||
# Distributed under the same licence as the libgtop package
|
||||
# Duarte Loreto <happyguy_pt@hotmail.com>, 2001, 2002, 2003, 2004, 2005, 2007, 2013.
|
||||
#
|
||||
# Pedro Albuquerque <palbuquerque73@openmailbox.com>, 2015.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 3.8\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-03-17 01:06+0000\n"
|
||||
"PO-Revision-Date: 2013-03-17 01:10+0000\n"
|
||||
"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
|
||||
"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=libgtop&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-02-08 10:53+0000\n"
|
||||
"PO-Revision-Date: 2015-06-25 09:38+0100\n"
|
||||
"Last-Translator: Pedro Albuquerque <palbuquerque73@openmailbox.com>\n"
|
||||
"Language-Team: Português <palbuquerque73@openmailbox.com>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#: ../lib/read.c:51
|
||||
#, c-format
|
||||
@@ -32,8 +36,8 @@ msgstr "tamanho dos dados lidos"
|
||||
#, c-format
|
||||
msgid "read %lu byte of data"
|
||||
msgid_plural "read %lu bytes of data"
|
||||
msgstr[0] "%lu byte lido"
|
||||
msgstr[1] "%lu bytes lidos"
|
||||
msgstr[0] "%lu byte de dados lido"
|
||||
msgstr[1] "%lu bytes de dados lidos"
|
||||
|
||||
#: ../lib/write.c:51
|
||||
#, c-format
|
||||
@@ -83,7 +87,7 @@ msgstr "Instrução ilegal"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
|
||||
msgid "Trace trap"
|
||||
msgstr "Armadilha de trace"
|
||||
msgstr "Armadilha de rasto"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
|
||||
msgid "Abort"
|
||||
@@ -123,7 +127,7 @@ msgstr "Alarme"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
|
||||
msgid "Termination"
|
||||
msgstr "Terminar"
|
||||
msgstr "Terminação"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
|
||||
msgid "Urgent condition on socket"
|
||||
@@ -155,7 +159,7 @@ msgstr "Escrita em fundo para a tty"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
|
||||
msgid "I/O now possible"
|
||||
msgstr "I/O agora possível"
|
||||
msgstr "E/S agora possível"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
|
||||
msgid "CPU limit exceeded"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
if NEED_LIBGTOP
|
||||
if LIBGTOP_NEED_SERVER
|
||||
daemon_SUBDIRS = daemon
|
||||
else
|
||||
daemon_SUBDIRS =
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
## Martin <martin@home-of-linux.org>
|
||||
##
|
||||
|
||||
INCLUDES = $(LIBGTOP_CFLAGS) @INCLUDES@ -D_BSD \
|
||||
AM_CPPFLAGS = $(LIBGTOP_CFLAGS) @AM_CPPFLAGS@ -D_BSD \
|
||||
-DLIBGTOP_COMPILE_SYSTEM="\"`uname -s`\"" \
|
||||
-DLIBGTOP_COMPILE_RELEASE="\"`uname -r`\"" \
|
||||
-DLIBGTOP_COMPILE_VERSION="\"`uname -v`\"" \
|
||||
-DLIBGTOP_COMPILE_MACHINE="\"`uname -m`\""
|
||||
|
||||
if NEED_LIBGTOP
|
||||
if LIBGTOP_NEED_SERVER
|
||||
suid_sysdeps = $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid-2.0.la
|
||||
suid_common = $(top_builddir)/sysdeps/common/libgtop_suid_common-2.0.la
|
||||
else
|
||||
@@ -41,8 +41,13 @@ libgtop_daemon2_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||
@libs_xauth@
|
||||
|
||||
libgtop_server2_SOURCES = server.c slave.c io.c version.c daemon.h
|
||||
libgtop_server2_LDADD = $(GLIB_LIBS) $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid-2.0.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_suid_common-2.0.la
|
||||
libgtop_server2_LDADD = $(top_builddir)/lib/libgtop-2.0.la \
|
||||
$(top_builddir)/sysdeps/common/libgtop_common-2.0.la \
|
||||
$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \
|
||||
@sysdeps_suid_lib@ \
|
||||
$(suid_sysdeps) $(suid_common) \
|
||||
$(LIBGTOP_LIBS) \
|
||||
@libs_xauth@
|
||||
|
||||
EXTRA_DIST = server_config.h.in server_config.pl
|
||||
|
||||
|
||||
@@ -27,10 +27,8 @@ void
|
||||
do_output (int s, glibtop_response *resp, off_t offset,
|
||||
size_t data_size, const void *data)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Really writing %d bytes at offset %lu.\n",
|
||||
glibtop_debug ("Really writing %d bytes at offset %lu.",
|
||||
sizeof (glibtop_response), offset);
|
||||
#endif
|
||||
|
||||
resp->offset = offset;
|
||||
resp->data_size = data_size;
|
||||
@@ -44,9 +42,7 @@ do_output (int s, glibtop_response *resp, off_t offset,
|
||||
}
|
||||
|
||||
if (resp->data_size) {
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "Writing %d bytes of data.\n", resp->data_size);
|
||||
#endif
|
||||
glibtop_debug ("Writing %d bytes of data.", resp->data_size);
|
||||
|
||||
if (s == 0) {
|
||||
if (write (1, data, resp->data_size) < 0)
|
||||
@@ -88,10 +84,8 @@ do_read (int s, void *ptr, size_t total_size)
|
||||
tmp_ptr += nread;
|
||||
ptr = tmp_ptr;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "READ (%d): %d - %d - %d\n",
|
||||
glibtop_debug ("READ (%d): %d - %d - %d",
|
||||
nread, already_read, remaining, total_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
return already_read;
|
||||
|
||||
@@ -26,9 +26,6 @@
|
||||
#ifndef PARENT_DEBUG
|
||||
#define PARENT_DEBUG 1
|
||||
#endif
|
||||
#ifndef DEBUG
|
||||
#define DEBUG 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void
|
||||
|
||||
@@ -22,40 +22,12 @@
|
||||
#include <config.h>
|
||||
#include "daemon.h"
|
||||
|
||||
static glibtop _glibtop_global_server;
|
||||
glibtop *glibtop_global_server = &_glibtop_global_server;
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/union.h>
|
||||
#include <glibtop/sysdeps.h>
|
||||
|
||||
#include <sys/utsname.h>
|
||||
|
||||
const unsigned long glibtop_server_features =
|
||||
GLIBTOP_SUID_CPU +
|
||||
GLIBTOP_SUID_MEM +
|
||||
GLIBTOP_SUID_SWAP +
|
||||
GLIBTOP_SUID_UPTIME +
|
||||
GLIBTOP_SUID_LOADAVG +
|
||||
GLIBTOP_SUID_SHM_LIMITS +
|
||||
GLIBTOP_SUID_MSG_LIMITS +
|
||||
GLIBTOP_SUID_SEM_LIMITS +
|
||||
GLIBTOP_SUID_PROCLIST +
|
||||
GLIBTOP_SUID_PROC_STATE +
|
||||
GLIBTOP_SUID_PROC_UID +
|
||||
GLIBTOP_SUID_PROC_MEM +
|
||||
GLIBTOP_SUID_PROC_TIME +
|
||||
GLIBTOP_SUID_PROC_SIGNAL +
|
||||
GLIBTOP_SUID_PROC_KERNEL +
|
||||
GLIBTOP_SUID_PROC_SEGMENT +
|
||||
GLIBTOP_SUID_PROC_ARGS +
|
||||
GLIBTOP_SUID_PROC_MAP +
|
||||
GLIBTOP_SUID_NETLOAD +
|
||||
GLIBTOP_SUID_NETLIST +
|
||||
GLIBTOP_SUID_PROC_WD +
|
||||
GLIBTOP_SUID_PROC_AFFINITY +
|
||||
GLIBTOP_SUID_PPP;
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
|
||||
|
||||
@@ -27,11 +27,12 @@ void
|
||||
handle_slave_connection (int input, int output)
|
||||
{
|
||||
glibtop *server G_GNUC_UNUSED = glibtop_global_server;
|
||||
gint64 *param_ptr G_GNUC_UNUSED;
|
||||
const void *ptr G_GNUC_UNUSED;
|
||||
|
||||
unsigned short max_len G_GNUC_UNUSED;
|
||||
pid_t pid G_GNUC_UNUSED;
|
||||
gint64 proc_which G_GNUC_UNUSED;
|
||||
gint64 proc_arg G_GNUC_UNUSED;
|
||||
|
||||
glibtop_response _resp, *resp = &_resp;
|
||||
glibtop_command _cmnd, *cmnd = &_cmnd;
|
||||
@@ -40,10 +41,8 @@ handle_slave_connection (int input, int output)
|
||||
glibtop_send_version (glibtop_global_server, output);
|
||||
|
||||
while (do_read (input, cmnd, sizeof (glibtop_command))) {
|
||||
#ifdef SLAVE_DEBUG
|
||||
fprintf (stderr, "Slave %d received command "
|
||||
"%llu from client.\n", getpid (), cmnd->command);
|
||||
#endif
|
||||
glibtop_debug ("Slave %d received command "
|
||||
"%llu from client.", getpid (), cmnd->command);
|
||||
|
||||
if (cmnd->data_size >= BUFSIZ)
|
||||
glibtop_error ("Client sent %llu bytes, "
|
||||
@@ -55,10 +54,8 @@ handle_slave_connection (int input, int output)
|
||||
memset (parameter, 0, sizeof (parameter));
|
||||
|
||||
if (cmnd->data_size) {
|
||||
#ifdef SLAVE_DEBUG
|
||||
fprintf (stderr, "Client has %llu bytes of data.\n",
|
||||
glibtop_debug ("Client has %llu bytes of data.",
|
||||
cmnd->data_size);
|
||||
#endif
|
||||
|
||||
do_read (input, parameter, cmnd->data_size);
|
||||
|
||||
@@ -72,10 +69,11 @@ handle_slave_connection (int input, int output)
|
||||
return;
|
||||
#if GLIBTOP_SUID_PROCLIST
|
||||
case GLIBTOP_CMND_PROCLIST:
|
||||
param_ptr = (gint64 *) parameter;
|
||||
memcpy(&proc_which, parameter, sizeof proc_which);
|
||||
memcpy(&proc_arg, parameter + sizeof proc_which, sizeof proc_arg);
|
||||
ptr = glibtop_get_proclist_p
|
||||
(server, &resp->u.data.proclist,
|
||||
param_ptr [0], param_ptr [1]);
|
||||
proc_which, proc_arg);
|
||||
do_output (output, resp, _offset_data (proclist),
|
||||
resp->u.data.proclist.total, ptr);
|
||||
g_free (ptr);
|
||||
|
||||
@@ -35,16 +35,14 @@ glibtop_send_version (glibtop *server, int fd)
|
||||
|
||||
sprintf (buffer, LIBGTOP_VERSION_STRING,
|
||||
LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
|
||||
sizeof (glibtop_command),
|
||||
sizeof (glibtop_response),
|
||||
sizeof (glibtop_union),
|
||||
sizeof (glibtop_sysdeps));
|
||||
(unsigned) sizeof (glibtop_command),
|
||||
(unsigned) sizeof (glibtop_response),
|
||||
(unsigned) sizeof (glibtop_union),
|
||||
(unsigned) sizeof (glibtop_sysdeps));
|
||||
|
||||
size = strlen (buffer) + 1;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "SERVER ID: |%s|\n", buffer);
|
||||
#endif
|
||||
glibtop_debug ("SERVER ID: |%s|", buffer);
|
||||
|
||||
if (fd == 0) {
|
||||
if (write (1, (const void *) &size, sizeof (size)) < 0)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
@@ -10,7 +10,8 @@ libgtop_sysdeps_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
|
||||
libgtop_sysdeps_suid_2_0_la_LIBADD = $(KVM_LIBS)
|
||||
libgtop_sysdeps_suid_2_0_la_SOURCES = open.c close.c cpu.c mem.c swap.c \
|
||||
uptime.c loadavg.c shm_limits.c msg_limits.c \
|
||||
sem_limits.c proclist.c procstate.c procuid.c \
|
||||
sem_limits.c procaffinity.c \
|
||||
proclist.c procstate.c procuid.c \
|
||||
proctime.c procmem.c procsignal.c prockernel.c \
|
||||
procsegment.c procargs.c procmap.c netlist.c \
|
||||
netload.c ppp.c procopenfiles.c fsusage.c
|
||||
|
||||
@@ -45,6 +45,8 @@ G_BEGIN_DECLS
|
||||
#define GLIBTOP_SUID_NETLOAD (1 << GLIBTOP_SYSDEPS_NETLOAD)
|
||||
#define GLIBTOP_SUID_NETLIST 0
|
||||
#define GLIBTOP_SUID_PPP (1 << GLIBTOP_SYSDEPS_PPP)
|
||||
#define GLIBTOP_SUID_PROC_WD 0
|
||||
#define GLIBTOP_SUID_PROC_AFFINITY 0
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ glibtop_open_p (glibtop *server, const char *program_name,
|
||||
const unsigned long features,
|
||||
const unsigned flags)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
#ifdef LIBGTOP_ENABLE_DEBUG
|
||||
fprintf (stderr, "DEBUG (%d): glibtop_open_p ()\n", getpid ());
|
||||
#endif
|
||||
|
||||
|
||||
87
sysdeps/bsd/procaffinity.c
Normal file
87
sysdeps/bsd/procaffinity.c
Normal file
@@ -0,0 +1,87 @@
|
||||
/* Copyright (C) 2008 Juan Romero Pardines <xtraeme@gmail.com>
|
||||
|
||||
This file is part of LibGTop 2.
|
||||
|
||||
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 <config.h>
|
||||
#include <glibtop/procaffinity.h>
|
||||
#include <glibtop/error.h>
|
||||
|
||||
#include <sys/param.h>
|
||||
#if __NetBSD_Version__ >= 499007200 /* 4.99.72 to play safe */
|
||||
#include <sched.h>
|
||||
#endif
|
||||
|
||||
void
|
||||
_glibtop_init_proc_affinity_s(glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_affinity =
|
||||
(1 << GLIBTOP_PROC_AFFINITY_NUMBER) |
|
||||
(1 << GLIBTOP_PROC_AFFINITY_ALL);
|
||||
|
||||
}
|
||||
|
||||
|
||||
guint16 *
|
||||
glibtop_get_proc_affinity_s(glibtop *server, glibtop_proc_affinity *buf, pid_t pid)
|
||||
{
|
||||
#if __NetBSD_Version__ >= 499007200
|
||||
cpuset_t *cpuset;
|
||||
size_t i;
|
||||
GArray* cpus;
|
||||
|
||||
memset(buf, 0, sizeof *buf);
|
||||
|
||||
/* create the cpuset(3) */
|
||||
cpuset = cpuset_create();
|
||||
if (cpuset == NULL) {
|
||||
glibtop_error_r(server, "cpuset_getaffinity (cpuset_create) failed");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* get the affinity for _this_ pid, I assume that we always want lid 0 */
|
||||
if ((_sched_getaffinity(pid, 0, cpuset_size(cpuset), cpuset)) != 0) {
|
||||
cpuset_destroy(cpuset);
|
||||
glibtop_error_r(server, "cpuset_getaffinity (_sched_getaffinity) failed");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cpus = g_array_new(FALSE, FALSE, sizeof(guint16));
|
||||
|
||||
for (i = 0; i < MIN(cpuset_size(cpuset), (size_t)(server->ncpu + 1)); i++) {
|
||||
if (cpuset_isset(i, cpuset)) {
|
||||
guint16 n = i;
|
||||
g_array_append_val(cpus, n);
|
||||
}
|
||||
}
|
||||
|
||||
buf->number = cpus->len;
|
||||
buf->all = (cpus->len == (size_t)(server->ncpu + 1));
|
||||
buf->flags = (1 << GLIBTOP_PROC_AFFINITY_NUMBER)
|
||||
| (1 << GLIBTOP_PROC_AFFINITY_ALL);
|
||||
|
||||
/* we are done */
|
||||
cpuset_destroy(cpuset);
|
||||
|
||||
return (guint16*) g_array_free(cpus, FALSE);
|
||||
#else
|
||||
memset(buf, 0, sizeof *buf);
|
||||
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_common-2.0.la libgtop_suid_common-2.0.la
|
||||
|
||||
|
||||
@@ -26,24 +26,66 @@
|
||||
|
||||
#include <glibtop/error.h>
|
||||
|
||||
enum MESSAGE_LEVEL {
|
||||
MESSAGE_DEBUG,
|
||||
MESSAGE_WARNING,
|
||||
MESSAGE_ERROR
|
||||
};
|
||||
|
||||
#define DEFAULT_NAME "LibGTop-Server"
|
||||
|
||||
/* Prints error message and exits. */
|
||||
|
||||
static void
|
||||
print_server_name (const glibtop *server)
|
||||
print_message (const glibtop *server, int message_level, const char *format, int error, va_list args)
|
||||
{
|
||||
fprintf (stderr, "%s: ", server && server->name
|
||||
? server->name
|
||||
: DEFAULT_NAME);
|
||||
const char *level;
|
||||
GString* message;
|
||||
|
||||
message = g_string_new(NULL);
|
||||
|
||||
g_string_printf(message, "%s", (server && server->name ? server->name : DEFAULT_NAME));
|
||||
|
||||
if (server->pid) {
|
||||
g_string_append_printf(message, "(c=%u/s=%u)", getpid(), server->pid);
|
||||
}
|
||||
else {
|
||||
g_string_append_printf(message, "(c=%u)", getpid());
|
||||
}
|
||||
|
||||
switch (message_level) {
|
||||
case MESSAGE_DEBUG:
|
||||
level = "DEBUG";
|
||||
break;
|
||||
case MESSAGE_WARNING:
|
||||
level = "WARNING";
|
||||
break;
|
||||
case MESSAGE_ERROR:
|
||||
level = "ERROR";
|
||||
break;
|
||||
default:
|
||||
level = "UNKNOWN";
|
||||
}
|
||||
|
||||
g_string_append_printf(message, ": [%s] ", level);
|
||||
|
||||
g_string_append_vprintf(message, format, args);
|
||||
|
||||
if (error) {
|
||||
g_string_append_printf(message, ": %s", g_strerror(error));
|
||||
}
|
||||
|
||||
g_string_append_c(message, '\n');
|
||||
|
||||
fputs(message->str, stderr);
|
||||
|
||||
g_string_free(message, TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_vr (glibtop *server, const char *format, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fputc('\n', stderr);
|
||||
print_message (server, MESSAGE_ERROR, format, 0, args);
|
||||
|
||||
#ifdef LIBGTOP_ENABLE_DEBUG
|
||||
abort ();
|
||||
@@ -55,9 +97,7 @@ glibtop_error_vr (glibtop *server, const char *format, va_list args)
|
||||
void
|
||||
glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fprintf (stderr, ": %s\n", g_strerror (error));
|
||||
print_message (server, MESSAGE_ERROR, format, error, args);
|
||||
|
||||
#ifdef LIBGTOP_ENABLE_DEBUG
|
||||
abort ();
|
||||
@@ -69,9 +109,7 @@ glibtop_error_io_vr (glibtop *server, const char *format, int error, va_list arg
|
||||
void
|
||||
glibtop_warn_vr (glibtop *server, const char *format, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fputc('\n', stderr);
|
||||
print_message (server, MESSAGE_WARNING, format, 0, args);
|
||||
|
||||
#ifdef LIBGTOP_FATAL_WARNINGS
|
||||
abort ();
|
||||
@@ -81,9 +119,7 @@ glibtop_warn_vr (glibtop *server, const char *format, va_list args)
|
||||
void
|
||||
glibtop_warn_io_vr (glibtop *server, const char *format, int error, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fprintf (stderr, ": %s\n", g_strerror (error));
|
||||
print_message (server, MESSAGE_WARNING, format, error, args);
|
||||
|
||||
#ifdef LIBGTOP_FATAL_WARNINGS
|
||||
abort ();
|
||||
@@ -133,6 +169,23 @@ glibtop_warn_io_r (glibtop *server, const char *format, ...)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
glibtop_debug_vr (glibtop *server, const char *format, va_list args)
|
||||
{
|
||||
print_message (server, MESSAGE_DEBUG, format, 0, args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_debug_r_real (glibtop *server, const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_debug_vr (server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
glibtop_error (const char *format, ...)
|
||||
{
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
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., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <glibtop/error.h>
|
||||
|
||||
#define DEFAULT_NAME "LibGTop-Server"
|
||||
|
||||
/* Prints error message and exits. */
|
||||
|
||||
static void
|
||||
print_server_name (glibtop_server *server)
|
||||
{
|
||||
fprintf (stderr, "%s: ", server ?
|
||||
(server->name ? server->name : DEFAULT_NAME)
|
||||
: DEFAULT_NAME);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_vr (glibtop_server *server, char *format, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fprintf (stderr, "\n");
|
||||
|
||||
#ifdef LIBGTOP_ENABLE_DEBUG
|
||||
abort ();
|
||||
#else
|
||||
exit (1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_io_vr (glibtop_server *server, char *format, int error, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fprintf (stderr, ": %s\n", g_strerror (error));
|
||||
|
||||
#ifdef LIBGTOP_ENABLE_DEBUG
|
||||
abort ();
|
||||
#else
|
||||
exit (1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_vr (glibtop_server *server, char *format, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fprintf (stderr, "\n");
|
||||
|
||||
#ifdef LIBGTOP_FATAL_WARNINGS
|
||||
abort ();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_io_vr (glibtop_server *server, char *format, int error, va_list args)
|
||||
{
|
||||
print_server_name (server);
|
||||
vfprintf (stderr, format, args);
|
||||
fprintf (stderr, ": %s\n", g_strerror (error));
|
||||
|
||||
#ifdef LIBGTOP_FATAL_WARNINGS
|
||||
abort ();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_r (glibtop_server *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_error_vr (server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_r (glibtop_server *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_warn_vr (server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_error_io_r (glibtop_server *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vr (server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_warn_io_r (glibtop_server *server, char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vr (server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
#ifndef __GNUC__
|
||||
|
||||
static void
|
||||
glibtop_error (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_error_vr (glibtop_global_server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
glibtop_warn (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_warn_vr (glibtop_global_server, format, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
glibtop_error_io (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_error_io_vr (glibtop_global_server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
glibtop_warn_io (char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
glibtop_warn_io_vr (glibtop_global_server, format, errno, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
#endif /* no __GNUC__ */
|
||||
@@ -1,4 +1,4 @@
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
INCLUDES = @INCLUDES@ @LIBGTOP_INCS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ @LIBGTOP_INCS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
@@ -21,6 +21,8 @@ libgtop_sysdeps_suid_2_0_la_SOURCES = suid_open.c close.c swap.c \
|
||||
libgtop_sysdeps_suid_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
|
||||
|
||||
libgtopinclude_HEADERS = glibtop_server.h glibtop_machine.h \
|
||||
glibtop_suid.h glibtop_private.h
|
||||
glibtop_suid.h
|
||||
|
||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||
|
||||
noinst_HEADERS = glibtop_private.h
|
||||
|
||||
@@ -132,7 +132,9 @@ _glibtop_get_fsusage_read_write (glibtop *server, glibtop_fsusage *buf, const ch
|
||||
buf->read = sfs.f_syncreads + sfs.f_asyncreads;
|
||||
buf->write = sfs.f_syncwrites + sfs.f_asyncwrites;
|
||||
#endif
|
||||
buf->flags |= (1 << GLIBTOP_FSUSAGE_READ) | (1 << GLIBTOP_FSUSAGE_WRITE);
|
||||
if (buf->read || buf->write) {
|
||||
buf->flags |= (1 << GLIBTOP_FSUSAGE_READ) | (1 << GLIBTOP_FSUSAGE_WRITE);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -48,22 +48,17 @@ _glibtop_init_loadavg_s (glibtop *server)
|
||||
void
|
||||
glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf)
|
||||
{
|
||||
double ldavg[3];
|
||||
pid_t last_pid;
|
||||
size_t len;
|
||||
int i;
|
||||
|
||||
glibtop_init_s (&server, GLIBTOP_SYSDEPS_LOADAVG, 0);
|
||||
|
||||
memset (buf, 0, sizeof (glibtop_loadavg));
|
||||
|
||||
getloadavg (ldavg, 3);
|
||||
if (getloadavg (buf->loadavg, G_N_ELEMENTS(buf->loadavg)) == -1)
|
||||
return;
|
||||
|
||||
/* fill in the struct */
|
||||
buf->flags = _glibtop_sysdeps_loadavg;
|
||||
for (i = 0; i < 3; i++) {
|
||||
buf->loadavg [i] = ldavg [i];
|
||||
} /* end for */
|
||||
|
||||
len = sizeof (last_pid);
|
||||
if (sysctlbyname ("kern.lastpid", &last_pid, &len, NULL, 0)) {
|
||||
|
||||
@@ -45,46 +45,57 @@ _glibtop_init_mem_s (glibtop *server)
|
||||
server->sysdeps.mem = _glibtop_sysdeps_mem;
|
||||
}
|
||||
|
||||
static gulong mem_get_by_bytes (glibtop *server, const char *name) {
|
||||
gulong result = 0;
|
||||
size_t len = sizeof (result);
|
||||
|
||||
if (sysctlbyname (name, &result, &len, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (%s)", name);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static gulong mem_get_by_pages (glibtop *server, const char *name) {
|
||||
guint result = 0;
|
||||
size_t len = sizeof (result);
|
||||
|
||||
if (sysctlbyname (name, &result, &len, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (%s)", name);
|
||||
}
|
||||
return (gulong) result * pagesize;
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
||||
{
|
||||
gulong memtotal;
|
||||
guint memused;
|
||||
gulong buffers;
|
||||
guint cached;
|
||||
size_t len;
|
||||
gulong memactive;
|
||||
gulong meminactive;
|
||||
gulong memwired;
|
||||
gulong memcached;
|
||||
gulong membuffer;
|
||||
gulong memfree;
|
||||
|
||||
glibtop_init_s (&server, GLIBTOP_SYSDEPS_MEM, 0);
|
||||
|
||||
memset (buf, 0, sizeof *buf);
|
||||
|
||||
len = sizeof (memtotal);
|
||||
if (sysctlbyname ("hw.physmem", &memtotal, &len, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (hw.physmem)");
|
||||
return;
|
||||
}
|
||||
|
||||
len = sizeof (memused);
|
||||
if (sysctlbyname ("vm.stats.vm.v_wire_count", &memused, &len, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (vm.stats.vm.v_wire_count)");
|
||||
return;
|
||||
}
|
||||
|
||||
len = sizeof (cached);
|
||||
if (sysctlbyname ("vm.stats.vm.v_cache_count", &cached, &len, NULL, 0)) {
|
||||
glibtop_warn_io_r (server, "sysctl (vm.stats.vm.v_cache_count)");
|
||||
return;
|
||||
}
|
||||
|
||||
buffers = 0;
|
||||
memtotal = mem_get_by_bytes (server, "hw.physmem");
|
||||
memactive = mem_get_by_pages (server, "vm.stats.vm.v_active_count");
|
||||
meminactive = mem_get_by_pages (server, "vm.stats.vm.v_inactive_count");
|
||||
memwired = mem_get_by_pages (server, "vm.stats.vm.v_wire_count");
|
||||
memcached = mem_get_by_pages (server, "vm.stats.vm.v_cache_count");
|
||||
membuffer = mem_get_by_bytes (server, "vfs.bufspace");
|
||||
memfree = mem_get_by_pages (server, "vm.stats.vm.v_free_count");
|
||||
|
||||
buf->total = memtotal;
|
||||
buf->used = (memused * (gulong) pagesize);
|
||||
buf->free = (buf->total - buf->used);
|
||||
buf->used = memtotal - memfree;
|
||||
buf->free = memfree;
|
||||
buf->shared = 0;
|
||||
buf->cached = (cached * (gulong) pagesize);
|
||||
buf->buffer = buffers;
|
||||
buf->buffer = membuffer;
|
||||
buf->cached = memcached;
|
||||
buf->locked = 0;
|
||||
|
||||
buf->user = buf->total - buf->free - buf->cached - buf->buffer;
|
||||
buf->user = memactive + memwired;
|
||||
buf->flags = _glibtop_sysdeps_mem;
|
||||
}
|
||||
|
||||
@@ -92,6 +92,7 @@ static gboolean ignore_mount_entry(const struct mount_entry *me)
|
||||
static const char ignored[][17] = {
|
||||
"autofs",
|
||||
"devfs",
|
||||
"fdescfs",
|
||||
"fusectl",
|
||||
"linprocfs",
|
||||
"linsysfs",
|
||||
|
||||
@@ -92,9 +92,8 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
||||
const char *interface)
|
||||
{
|
||||
struct ifnet ifnet;
|
||||
u_long ifnetaddr, ifnetfound;
|
||||
u_long ifnetaddr;
|
||||
struct sockaddr *sa = NULL;
|
||||
char name [32];
|
||||
|
||||
union {
|
||||
struct ifaddr ifa;
|
||||
@@ -113,31 +112,23 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
||||
return;
|
||||
}
|
||||
|
||||
while (ifnetaddr)
|
||||
for (/* NOP */; ifnetaddr; ifnetaddr = (u_long) ifnet.if_link.tqe_next)
|
||||
{
|
||||
struct sockaddr_in *sin;
|
||||
register char *cp;
|
||||
u_long ifaddraddr;
|
||||
|
||||
{
|
||||
ifnetfound = ifnetaddr;
|
||||
if (kvm_read (server->machine.kd, ifnetaddr, &ifnet,
|
||||
sizeof (ifnet)) != sizeof (ifnet)) {
|
||||
glibtop_warn_io_r (server,
|
||||
"kvm_read (ifnetaddr)");
|
||||
break;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd, ifnetaddr, &ifnet,
|
||||
sizeof (ifnet)) != sizeof (ifnet)) {
|
||||
glibtop_warn_io_r (server,
|
||||
"kvm_read (ifnetaddr)");
|
||||
continue;
|
||||
}
|
||||
|
||||
g_strlcpy (name, ifnet.if_xname, sizeof(name));
|
||||
ifnetaddr = (u_long) ifnet.if_link.tqe_next;
|
||||
|
||||
if (strcmp (name, interface) != 0)
|
||||
continue;
|
||||
|
||||
ifaddraddr = (u_long) ifnet.if_addrhead.tqh_first;
|
||||
}
|
||||
if (ifnet.if_flags & IFF_UP)
|
||||
if (strcmp (ifnet.if_xname, interface) != 0)
|
||||
continue;
|
||||
|
||||
if (ifnet.if_flags & IFF_UP)
|
||||
buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_UP);
|
||||
if (ifnet.if_flags & IFF_BROADCAST)
|
||||
buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_BROADCAST);
|
||||
@@ -193,12 +184,12 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
||||
buf->collisions = ifnet.if_collisions;
|
||||
buf->flags = _glibtop_sysdeps_netload;
|
||||
|
||||
while (ifaddraddr) {
|
||||
for (ifaddraddr = (u_long) ifnet.if_addrhead.tqh_first; ifaddraddr; ifaddraddr = (u_long) ifaddr.ifa.ifa_link.tqe_next) {
|
||||
if ((kvm_read (server->machine.kd, ifaddraddr, &ifaddr,
|
||||
sizeof (ifaddr)) != sizeof (ifaddr))) {
|
||||
glibtop_warn_io_r (server,
|
||||
"kvm_read (ifaddraddr)");
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
|
||||
#define CP(x) ((char *)(x))
|
||||
@@ -247,8 +238,9 @@ glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
|
||||
close (in6fd);
|
||||
}
|
||||
}
|
||||
ifaddraddr = (u_long) ifaddr.ifa.ifa_link.tqe_next;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} /* end of for ( ifaddraddr ) */
|
||||
|
||||
/* found the interface anyway */
|
||||
break;
|
||||
} /* end of for ( ifnetaddr ) */
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||
glibtop_proc_state procstate;
|
||||
size_t len;
|
||||
unsigned int i;
|
||||
pid_t prev;
|
||||
|
||||
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROCLIST), 0);
|
||||
|
||||
@@ -97,6 +98,17 @@ glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||
|
||||
pid = (pid_t) pinfo[i].ki_pid;
|
||||
|
||||
/* If a process has many threads, kern.proc.all reports multiple
|
||||
times the same pid. So don't look twice at the same pid.
|
||||
FIXME?: not sure that kern.proc.all reports a partially sorted
|
||||
list (all pid/threads grouped).
|
||||
*/
|
||||
if (i > 0 && pid == prev) {
|
||||
continue;
|
||||
}
|
||||
|
||||
prev = pid;
|
||||
|
||||
switch (which & GLIBTOP_KERN_PROC_MASK) {
|
||||
case GLIBTOP_KERN_PROC_ALL:
|
||||
break;
|
||||
|
||||
@@ -80,6 +80,8 @@ _glibtop_sysdeps_freebsd_dev_inode (glibtop *server, struct vnode *vnode,
|
||||
{
|
||||
char *tagptr;
|
||||
char tagstr[12];
|
||||
enum FS_TYPE { UNKNOWN, IS_UFS, IS_ZFS };
|
||||
int fs_type = UNKNOWN;
|
||||
struct inode inode;
|
||||
struct cdev_priv priv;
|
||||
#if __FreeBSD_version < 800039
|
||||
@@ -100,8 +102,14 @@ _glibtop_sysdeps_freebsd_dev_inode (glibtop *server, struct vnode *vnode,
|
||||
|
||||
tagstr[sizeof(tagstr) - 1] = '\0';
|
||||
|
||||
if (strcmp (tagstr, "ufs"))
|
||||
if (!strcmp(tagstr, "ufs")) {
|
||||
fs_type = IS_UFS;
|
||||
} else if (!strcmp(tagstr, "zfs")) {
|
||||
fs_type = IS_ZFS;
|
||||
} else {
|
||||
glibtop_warn_io_r (server, "ignoring fstype %s", tagstr);
|
||||
return;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd, (gulong) VTOI(vn), (char *) &inode,
|
||||
sizeof (inode)) != sizeof (inode))
|
||||
@@ -110,6 +118,54 @@ _glibtop_sysdeps_freebsd_dev_inode (glibtop *server, struct vnode *vnode,
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (fs_type == IS_ZFS) {
|
||||
/* FIXME: I have no idea about what is the actual layout of what we've read
|
||||
but the inode number is definitely at offset 16, 8 bytes of amd64.
|
||||
*inum = *(guint64*) ((unsigned char*)&inode + 16);
|
||||
So this is really hugly, but I don't have anything better for now.
|
||||
|
||||
Actually, this looks like a znode_t as described in kernel's zfs_znode.h.
|
||||
I don't have that header file, so let's just mimic that.
|
||||
*/
|
||||
|
||||
struct my_zfsvfs {
|
||||
/* vfs_t */ void *z_vfs;
|
||||
/* zfsvfs_t */ void *z_parent;
|
||||
/* objset_t */ void *z_os;
|
||||
uint64_t z_root;
|
||||
/* ... */
|
||||
};
|
||||
|
||||
typedef struct my_znode {
|
||||
struct my_zfsvfs *z_zfsvfs;
|
||||
/* vnode_t */ void *z_vnode;
|
||||
uint64_t z_id;
|
||||
/* ... */
|
||||
} my_znode_t;
|
||||
|
||||
G_STATIC_ASSERT(sizeof(my_znode_t) <= sizeof(struct inode));
|
||||
|
||||
my_znode_t* znode = (my_znode_t*)&inode;
|
||||
*inum = znode->z_id;
|
||||
|
||||
struct my_zfsvfs zvfs;
|
||||
|
||||
if (kvm_read(server->machine.kd,
|
||||
(unsigned long)(znode->z_zfsvfs),
|
||||
&zvfs, sizeof zvfs) != sizeof zvfs) {
|
||||
glibtop_warn_io_r(server, "kvm_read (z_zfsvfs)");
|
||||
return;
|
||||
}
|
||||
|
||||
*dev = zvfs.z_root;
|
||||
}
|
||||
else if (fs_type == IS_UFS) {
|
||||
/* Set inum as soon as possible, so that if the next kvm_reads fail
|
||||
we still have something */
|
||||
*inum = inode.i_number;
|
||||
|
||||
|
||||
#if (__FreeBSD_version >= 800039) || (__FreeBSD_kernel_version >= 800039)
|
||||
if (kvm_read (server->machine.kd, (gulong) cdev2priv(inode.i_dev), (char *) &priv,
|
||||
sizeof (priv))
|
||||
@@ -125,8 +181,8 @@ _glibtop_sysdeps_freebsd_dev_inode (glibtop *server, struct vnode *vnode,
|
||||
return;
|
||||
}
|
||||
|
||||
*inum = (guint64) inode.i_number;
|
||||
*dev = (guint64) priv.cdp_inode;
|
||||
} /* end-if IS_UFS */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -60,8 +60,7 @@ static const unsigned long _glibtop_sysdeps_proc_mem_share =
|
||||
void
|
||||
_glibtop_init_proc_mem_p (glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem |
|
||||
_glibtop_sysdeps_proc_mem_share;
|
||||
server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem;
|
||||
}
|
||||
|
||||
/* Provides detailed information about a process. */
|
||||
@@ -102,6 +101,13 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
||||
buf->resident = buf->rss = (guint64)
|
||||
ps_pgtok (pinfo [0].ki_rssize) * 1024;
|
||||
|
||||
buf->flags |= _glibtop_sysdeps_proc_mem;
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* It doesn't make any sense to count as shared each and every mmaped file
|
||||
*/
|
||||
|
||||
/* Now we get the shared memory. */
|
||||
|
||||
if (kvm_read (server->machine.kd,
|
||||
@@ -155,6 +161,6 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
|
||||
buf->share += object.un_pager.vnp.vnp_size;
|
||||
}
|
||||
|
||||
buf->flags = _glibtop_sysdeps_proc_mem |
|
||||
_glibtop_sysdeps_proc_mem_share;
|
||||
buf->flags |= _glibtop_sysdeps_proc_mem_share;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -54,9 +54,6 @@ glibtop_get_proc_state_p (glibtop *server,
|
||||
|
||||
memset (buf, 0, sizeof (glibtop_proc_state));
|
||||
|
||||
/* It does not work for the swapper task. */
|
||||
if (pid == 0) return;
|
||||
|
||||
/* Get the process information */
|
||||
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
|
||||
if ((pinfo == NULL) || (count != 1)) {
|
||||
|
||||
@@ -37,7 +37,12 @@ static const unsigned long _glibtop_sysdeps_proc_time_user =
|
||||
(1L << GLIBTOP_PROC_TIME_CUTIME) + (1L << GLIBTOP_PROC_TIME_CSTIME) +
|
||||
(1L << GLIBTOP_PROC_TIME_START_TIME);
|
||||
|
||||
#define tv2sec(tv) (((guint64) tv.tv_sec * 1000000) + (guint64) tv.tv_usec)
|
||||
static guint64 tv2sec_freq(struct timeval tv, guint64 freq)
|
||||
{
|
||||
return tv.tv_sec * freq + tv.tv_usec * freq / 1000000;
|
||||
}
|
||||
|
||||
#define tv2sec(tv) tv2sec_freq(tv, 1)
|
||||
|
||||
/* Init function. */
|
||||
|
||||
@@ -80,7 +85,6 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
|
||||
|
||||
glibtop_suid_leave (server);
|
||||
|
||||
buf->rtime = pinfo [0].ki_runtime * 1e-6;
|
||||
|
||||
len = sizeof (ci);
|
||||
if (sysctlbyname ("kern.clockrate", &ci, &len, NULL, 0)) {
|
||||
@@ -90,20 +94,23 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
|
||||
}
|
||||
|
||||
buf->frequency = (ci.stathz ? ci.stathz : ci.hz);
|
||||
buf->rtime = pinfo [0].ki_runtime * buf->frequency / 1000000;
|
||||
buf->flags = _glibtop_sysdeps_proc_time;
|
||||
|
||||
buf->rtime *= buf->frequency;
|
||||
|
||||
if ((pinfo [0].ki_flag & PS_INMEM)) {
|
||||
buf->utime = (pinfo [0].ki_runtime * 1e-6) * buf->frequency;
|
||||
buf->stime = tv2sec (pinfo [0].ki_rusage.ru_stime) * buf->frequency;
|
||||
buf->cutime = tv2sec (pinfo [0].ki_childtime) * buf->frequency;
|
||||
/*
|
||||
All the following used to be 'if (pinfo [0].ki_flag & PS_INMEM)'
|
||||
but it was never entered.
|
||||
I have no idea what this PS_INMEM is, but it works perfectly
|
||||
without this check.
|
||||
*/
|
||||
buf->utime = tv2sec_freq (pinfo [0].ki_rusage.ru_utime, buf->frequency);
|
||||
buf->stime = tv2sec_freq (pinfo [0].ki_rusage.ru_stime, buf->frequency);
|
||||
buf->cutime = tv2sec_freq (pinfo [0].ki_childtime, buf->frequency);
|
||||
#if (__FreeBSD_version >= 600006) || defined(__FreeBSD_kernel__)
|
||||
buf->cstime = tv2sec (pinfo [0].ki_rusage_ch.ru_stime) * buf->frequency;
|
||||
buf->cstime = tv2sec_freq (pinfo [0].ki_rusage_ch.ru_stime, buf->frequency);
|
||||
#else
|
||||
buf->cstime = 0;
|
||||
#endif
|
||||
buf->start_time = tv2sec (pinfo [0].ki_start);
|
||||
buf->flags |= _glibtop_sysdeps_proc_time_user;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,9 +56,7 @@ glibtop_open_p (glibtop *server, const char *program_name,
|
||||
const unsigned flags)
|
||||
{
|
||||
char errbuf[_POSIX2_LINE_MAX];
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "DEBUG (%d): glibtop_open_p ()\n", getpid ());
|
||||
#endif
|
||||
glibtop_debug ("glibtop_open_p ()");
|
||||
|
||||
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
|
||||
server->machine.uid = getuid ();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la
|
||||
|
||||
|
||||
@@ -52,13 +52,20 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
||||
|
||||
file_to_buffer(server, buffer, sizeof buffer, FILENAME);
|
||||
|
||||
/* try to match procps's `free` */
|
||||
buf->total = get_scaled(buffer, "MemTotal:");
|
||||
buf->free = get_scaled(buffer, "MemFree:");
|
||||
buf->used = buf->total - buf->free;
|
||||
buf->shared = 0;
|
||||
buf->shared = get_scaled(buffer, "Shmem:");
|
||||
buf->buffer = get_scaled(buffer, "Buffers:");
|
||||
buf->cached = get_scaled(buffer, "Cached:");
|
||||
buf->cached = get_scaled(buffer, "Cached:") + get_scaled(buffer, "Slab:");
|
||||
|
||||
if (server->os_version_code >= LINUX_VERSION_CODE(3, 14, 0)) {
|
||||
buf->user = buf->total - get_scaled(buffer, "MemAvailable:");
|
||||
}
|
||||
else {
|
||||
buf->user = buf->total - buf->free - buf->cached - buf->buffer;
|
||||
}
|
||||
|
||||
buf->user = buf->total - buf->free - buf->cached - buf->buffer;
|
||||
buf->flags = _glibtop_sysdeps_mem;
|
||||
}
|
||||
|
||||
@@ -37,11 +37,15 @@ static void set_linux_version(glibtop *server)
|
||||
{
|
||||
struct utsname uts;
|
||||
unsigned x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */
|
||||
int version_string_depth;
|
||||
|
||||
if (uname(&uts) == -1) /* failure most likely implies impending death */
|
||||
glibtop_error_r(server, "uname() failed");
|
||||
|
||||
if (sscanf(uts.release, "%u.%u.%u", &x, &y, &z) < 3)
|
||||
version_string_depth = sscanf(uts.release, "%u.%u.%u", &x, &y, &z);
|
||||
|
||||
if ((version_string_depth < 2) || /* Non-standard for all known kernels */
|
||||
((version_string_depth < 3) && (x < 3))) /* Non-standard for 2.x.x kernels */
|
||||
glibtop_warn_r(server,
|
||||
"Non-standard uts for running kernel:\n"
|
||||
"release %s=%u.%u.%u gives version code %d\n",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ glibtop_open_p (glibtop *server, const char *program_name,
|
||||
const unsigned flags)
|
||||
{
|
||||
char errbuf[_POSIX2_LINE_MAX];
|
||||
#ifdef DEBUG
|
||||
#ifdef LIBGTOP_ENABLE_DEBUG
|
||||
fprintf (stderr, "DEBUG (%d): glibtop_open_p ()\n", getpid ());
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
|
||||
Reference in New Issue
Block a user