Compare commits

...

23 Commits

Author SHA1 Message Date
Robert Roth
063de1a712 Added reserved fields 2017-05-23 00:02:11 +03:00
Benoit Dejean
779386cb15 Implement disk_rbytes and disk_wbytes for FreeBSD. 2017-05-20 11:34:25 +02:00
Robert Roth
5880e04fcc Prepended disk io struct fields with disk_ prefix 2017-05-12 05:14:17 +03:00
Robert Roth
1bf16bfffd Renamed procdiskio to procio 2017-05-12 05:08:41 +03:00
Benoit Dejean
c29d7de9a0 Add dummy proc_diskio implementation for FreeBSD. 2017-02-25 16:30:18 +01:00
Benoit Dejean
07abbd2dfe Add slave proc_diskio handler. 2017-02-25 16:29:26 +01:00
Benoît Dejean
afec9bbf58 Add proc_diskio in sysdeps and timings tests. 2017-02-24 09:04:23 +01:00
Benoît Dejean
b7a684fbbc Also display the flags value. 2017-02-24 09:04:06 +01:00
Benoît Dejean
b589a4fcf0 Fix GLIBTOP_MAX variable name for diskio. 2017-02-21 13:01:04 +01:00
Benoît Dejean
1defc74f07 Set glibtop_proc_diskio.flags.
Check linux version code before reading /proc/PID/io.
2017-02-21 12:50:37 +01:00
Robert Roth
dff7c5588e New API to retrieve process io stats, with Linux implementation 2017-02-12 17:59:08 +02:00
Benoît Dejean
1a103bf142 When parsing /proc/cpuinfo, ignore paragraphs that do not describe a CPU/core. 2017-01-28 09:39:43 +01:00
Benoît Dejean
3ff313dd03 Update git ignore list. 2017-01-22 10:56:59 +01:00
Benoît Dejean
01a56e2e30 Use g_ascii_isspace instead of isspace because the later is slower and we
only need to deal with ascii.
2017-01-22 10:45:26 +01:00
Benoît Dejean
7afc81f99d Do not cache getpagesize(), it is already. 2017-01-22 10:45:26 +01:00
Benoît Dejean
b0ab056e99 Use a dynamically allocated buffer to read /proc/cpuinfo to handle computers
with a lot of CPUs.

https://bugzilla.gnome.org/show_bug.cgi?id=323354
2017-01-22 10:45:26 +01:00
Robert Roth
d2bc9b4331 Prepared release 2.34.2 2017-01-16 20:38:11 +02:00
Robert Roth
70e00a0262 Fixed indentation problem 2016-11-27 20:10:00 +02:00
Florian Müllner
f99bb61446 procstate: Fill in last_processor member on linux
The field was added almost 20 years ago, but has only been set on
Solaris so far. It turns out we have a use for it now in the new
"Usage" application, so also fill it in on Linux.

https://bugzilla.gnome.org/show_bug.cgi?id=775182
2016-11-27 20:07:20 +02:00
gogo
a0166d2844 Updated Croatian translation 2016-09-24 10:54:48 +00:00
Piotr Drąg
5f39f4f8f9 Add more options to XGETTEXT_OPTIONS in po/Makevars 2016-09-12 19:55:14 +02:00
Robert Roth
e5e303d497 Prepared release 2.34.1 2016-08-20 17:08:15 +03:00
Piotr Drąg
235ffb4cb6 Updated Polish translation 2016-08-20 15:55:13 +02:00
38 changed files with 577 additions and 141 deletions

65
.gitignore vendored
View File

@@ -1,45 +1,38 @@
*~
*.a
*.bak
*.core
*.diff
*.gmo
*.header
*.in
*.la
*.lo
*.o
*.out
*.a
*.gmo
*.lo
*.la
*.core
*.patch
*.pot
*.s
*.sed
*.sin
*.stamp
.libs
*.swp
*~
.deps
Makefile
Makefile.in
src/daemon/libgtop_daemon2
src/daemon/libgtop_server2
stamp-h1
po/stamp-it
po/POTFILES
po/Makefile.in.in
missing
m4/
ltmain.sh
libtool
libgtopconfig.h
libgtop.spec
libgtop-2.0.pc
lib/lib.c
lib/GTop-2.0.gir
lib/GTop-2.0.typelib
.libs
ABOUT-NLS
INSTALL
Makefile
Makevars.template
Rules-quot
aclocal.m4
autom4te.cache/
compile
config.guess
config.h
config.h.in
config.log
config.status
config.sub
configure
compile
depcomp
doc/libgtop2.info
doc/mdate-sh
@@ -77,5 +70,23 @@ examples/smp
examples/sysdeps
examples/timings
examples/wd
examples/diskio
gtk-doc.make
install-sh
lib/GTop-2.0.gir
lib/GTop-2.0.typelib
lib/lib.c
libgtop-2.0.pc
libgtop.spec
libgtopconfig.h
libtool
ltmain.sh
m4/
missing
po/POTFILES
po/stamp-it
src/daemon/libgtop_daemon2
src/daemon/libgtop_server2
stamp-h1
stamp-po
tmp-*

26
NEWS
View File

@@ -1,3 +1,29 @@
16 January 2017: Overview of changes in 2.34.2
================================================
* Linux:
- fill last_processor member
* Updated translations
* Added more gettext options
20 August 2016: Overview of changes in 2.34.1
================================================
* FreeBSD:
- rewrite netload to use official APIs
- mark wireless interfaces as such
* All
- rename --with-libgtop-examples to --with-examples
- use gettext instead of intltool/glib-gettext
- added Language headers to the translations
Special thanks to Gleb Smirnoff, Antoine Brodin, Koop Mast and Ting-Wei Lan for
the FreeBSD fixes, to Javier Jardón for the gettext migration and to Piotr Drąg
for adding the Language headers.
22 March 2016: Overview of changes in 2.34.0
================================================

View File

@@ -4,7 +4,7 @@ dnl
m4_define([libgtop_major_version], [2])
m4_define([libgtop_minor_version], [34])
m4_define([libgtop_micro_version], [0])
m4_define([libgtop_micro_version], [2])
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
dnl increment if the interface has additions, changes, removals.

View File

@@ -11,7 +11,7 @@ AM_LDFLAGS = $(LIBGTOP_EXTRA_LIBS)
noinst_PROGRAMS = first second pprint procargs df netlist \
mountlist procmap netload sysdeps timings \
openfiles smp proclist free wd affinity
openfiles smp proclist free wd affinity diskio
first_SOURCES = first.c
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
@@ -43,6 +43,7 @@ pprint_LDADD = $(top_builddir)/lib/libgtop-2.0.la
procargs_SOURCES = procargs.c
procargs_LDADD = $(top_builddir)/lib/libgtop-2.0.la
df_SOURCES = df.c
df_LDADD = $(top_builddir)/lib/libgtop-2.0.la
@@ -63,3 +64,6 @@ free_LDADD = $(top_builddir)/lib/libgtop-2.0.la
affinity_SOURCES = affinity.c
affinity_LDADD = $(top_builddir)/lib/libgtop-2.0.la
diskio_SOURCES = diskio.c
diskio_LDADD = $(top_builddir)/lib/libgtop-2.0.la

39
examples/diskio.c Normal file
View File

@@ -0,0 +1,39 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <glibtop.h>
#include <glibtop/procio.h>
#include <stdlib.h>
#include <unistd.h>
static void show_diskio(pid_t pid)
{
glibtop_proc_io io;
glibtop_get_proc_io (&io, pid);
printf("<%ld>\t", (long)pid);
printf("flags: %08lx disk_rchar : %lu, disk_wchar : %lu, disk_read_bytes : %lu, disk_write_bytes : %lu\n", (unsigned long)io.flags, io.disk_rchar, io.disk_wchar, io.disk_rbytes, io.disk_wbytes);
}
int main(int argc, char **argv)
{
glibtop_init();
while(*++argv)
{
pid_t pid = strtol(*argv, NULL, 10);
show_diskio(pid);
}
glibtop_close();
return 0;
}

View File

@@ -92,9 +92,10 @@ main (int argc, char *argv [])
"\tproc_time:\t%d\t0x%08lx\n"
"\tproc_signal:\t%d\t0x%08lx\n"
"\tproc_kernel:\t%d\t0x%08lx\n"
"\tproc_segment:\t%d\t0x%08lx\n\n"
"\tproc_segment:\t%d\t0x%08lx\n"
"\tproc_args:\t%d\t0x%08lx\n"
"\tproc_map:\t%d\t0x%08lx\n\n"
"\tproc_map:\t%d\t0x%08lx\n"
"\tproc_io:\t%d\t0x%08lx\n\n"
"\tmountlist:\t%d\t0x%08lx\n"
"\tfsusage:\t%d\t0x%08lx\n\n"
"\tnetload:\t%d\t0x%08lx\n"
@@ -137,6 +138,8 @@ main (int argc, char *argv [])
(unsigned long) sysdeps.proc_args,
FEATURE_CHECK(PROC_MAP),
(unsigned long) sysdeps.proc_map,
FEATURE_CHECK(PROC_IO),
(unsigned long) sysdeps.proc_io,
FEATURE_CHECK(MOUNTLIST),
(unsigned long) sysdeps.mountlist,
FEATURE_CHECK(FSUSAGE),

View File

@@ -412,6 +412,26 @@ main (int argc, char *argv [])
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &rusage_start);
for (c = 0; c < PROFILE_COUNT; c++)
glibtop_get_proc_io (&data.proc_io, pid);
getrusage (RUSAGE_SELF, &rusage_end);
libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime,
&elapsed_utime);
libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime,
&elapsed_stime);
printf ("Proc_Io (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n",
(unsigned long) data.proc_io.flags, PROFILE_COUNT,
(long double) ELAPSED_UTIME / PROFILE_COUNT,
(long double) ELAPSED_STIME / PROFILE_COUNT);
getrusage (RUSAGE_SELF, &total_end);
libgtop_timersub (&total_end.ru_utime, &total_start.ru_utime,

View File

@@ -24,4 +24,5 @@ void|ppp|ushort(device)
char **|netlist
char **|proc_wd|pid_t(pid)
guint16*|proc_affinity|pid_t(pid)
void|proc_io|pid_t(pid)

View File

@@ -9,6 +9,7 @@ glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
parameter.h mountlist.h fsusage.h procmap.h signal.h \
sysinfo.h ppp.h procargs.h netload.h \
procwd.h procaffinity.h \
procio.h \
netlist.h procopenfiles.h open.h
noinst_HEADERS = error.h write.h read_data.h read.h init_hooks.h machine.h \

View File

@@ -59,8 +59,9 @@ G_BEGIN_DECLS
#define GLIBTOP_CMND_PROC_OPEN_FILES 25
#define GLIBTOP_CMND_PROC_WD 26
#define GLIBTOP_CMND_PROC_AFFINITY 27
#define GLIBTOP_CMND_PROC_IO 28
#define GLIBTOP_MAX_CMND 28
#define GLIBTOP_MAX_CMND 29
#define _GLIBTOP_PARAM_SIZE 16

93
include/glibtop/procio.h Normal file
View File

@@ -0,0 +1,93 @@
/* Copyright (C) 2017 Robert Roth
This file is part of LibGTop.
Contributed by Robert Roth <robert.roth.off@gmail.com>, February 2017.
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.
*/
#ifndef __GLIBTOP_PROCIO_H__
#define __GLIBTOP_PROCIO_H__
#include <glibtop.h>
#include <glibtop/global.h>
G_BEGIN_DECLS
#define GLIBTOP_PROC_IO_DISK_RCHAR 0
#define GLIBTOP_PROC_IO_DISK_WCHAR 1
#define GLIBTOP_PROC_IO_DISK_RBYTES 2
#define GLIBTOP_PROC_IO_DISK_WBYTES 3
#define GLIBTOP_MAX_PROC_IO 3
typedef struct _glibtop_proc_io glibtop_proc_io;
/* Time section */
/**
* glibtop_proc_io:
* @disk_rchar: The number of bytes which this task has caused to be read from storage. This
* is simply the sum of bytes which this process passed to read() and pread(), also including tty IO,
* and it is unaffected by whether or not actual physical disk IO was required.
* @disk_wchar: The number of bytes which this task has caused, or shall cause to be written
* to disk. Similar caveats apply here as with rchar.
* @disk_rbytes: Attempt to count the number of bytes which this process really did cause to
* be fetched from the storage layer. Done at the submit_bio() level, so it is
* accurate for block-backed filesystems.
* @disk_wbytes: Attempt to count the number of bytes which this process caused to be sent to
* the storage layer. This is done at page-dirtying time.
*
* Process disk io data filled by glibtop_get_proc_io().
*
*/
struct _glibtop_proc_io
{
/*< private >*/
guint64 flags;
/*< public >*/
guint64 disk_rchar;
guint64 disk_wchar;
guint64 disk_rbytes;
guint64 disk_wbytes;
/* reserved for future extensions, e.g. per-process netio */
guint64 reserved[10];
};
void glibtop_get_proc_io (glibtop_proc_io *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_IO
#define glibtop_get_proc_io_r glibtop_get_proc_io_p
#else
#define glibtop_get_proc_io_r glibtop_get_proc_io_s
#endif
void glibtop_get_proc_io_l (glibtop *server, glibtop_proc_io *buf, pid_t pid);
#if GLIBTOP_SUID_PROC_IO
void _glibtop_init_proc_io_p (glibtop *server);
void glibtop_get_proc_io_p (glibtop *server, glibtop_proc_io *buf, pid_t pid);
#else
void _glibtop_init_proc_io_s (glibtop *server);
void glibtop_get_proc_io_s (glibtop *server, glibtop_proc_io *buf, pid_t pid);
#endif
G_END_DECLS
#endif

View File

@@ -53,8 +53,9 @@ G_BEGIN_DECLS
#define GLIBTOP_SYSDEPS_PROC_OPEN_FILES 24
#define GLIBTOP_SYSDEPS_PROC_WD 25
#define GLIBTOP_SYSDEPS_PROC_AFFINITY 26
#define GLIBTOP_SYSDEPS_PROC_IO 27
#define GLIBTOP_MAX_SYSDEPS 27
#define GLIBTOP_MAX_SYSDEPS 28
/* The 'features' args to glibtop_init_* is an unsigned long */
G_STATIC_ASSERT((1UL << (GLIBTOP_MAX_SYSDEPS - 1)) <= ULONG_MAX);
@@ -93,6 +94,7 @@ struct _glibtop_sysdeps
guint64 ppp; /* glibtop_ppp */
guint64 proc_wd; /* glibtop_proc_wd */
guint64 proc_affinity; /* glibtop_proc_affinity */
guint64 proc_io; /* glibtop_proc_io */
};
void glibtop_get_sysdeps (glibtop_sysdeps *buf);

View File

@@ -44,6 +44,7 @@
#include <glibtop/procopenfiles.h>
#include <glibtop/procwd.h>
#include <glibtop/procaffinity.h>
#include <glibtop/procio.h>
#include <glibtop/mountlist.h>
#include <glibtop/fsusage.h>
@@ -84,6 +85,7 @@ union _glibtop_union
glibtop_proc_open_files proc_open_files;
glibtop_proc_wd proc_wd;
glibtop_proc_affinity proc_affinity;
glibtop_proc_io proc_io;
};
G_END_DECLS

View File

@@ -35,7 +35,7 @@ introspection_sources = $(libgtop_2_0_la_SOURCES) lib.c ../glibtop.h ../libgtopc
../include/glibtop/procsignal.h ../include/glibtop/union.h ../include/glibtop/gnuserv.h \
../include/glibtop/parameter.h ../include/glibtop/mountlist.h ../include/glibtop/fsusage.h ../include/glibtop/procmap.h ../include/glibtop/signal.h \
../include/glibtop/sysinfo.h ../include/glibtop/ppp.h ../include/glibtop/procargs.h ../include/glibtop/netload.h \
../include/glibtop/procwd.h ../include/glibtop/procaffinity.h \
../include/glibtop/procwd.h ../include/glibtop/procaffinity.h ../include/glibtop/procio.h \
../include/glibtop/netlist.h ../include/glibtop/procopenfiles.h ../include/glibtop/open.h
GTop-2.0.gir: libgtop-2.0.la

View File

@@ -68,6 +68,7 @@ glibtop_call_l (glibtop *server, unsigned command, size_t send_size,
CHECK_CMND(GLIBTOP_CMND_PROC_OPEN_FILES);
CHECK_CMND(GLIBTOP_CMND_PROC_WD);
CHECK_CMND(GLIBTOP_CMND_PROC_AFFINITY);
CHECK_CMND(GLIBTOP_CMND_PROC_IO);
default:
glibtop_error_r(server, "CALL: command UNKNOWN(%d) sending %lu bytes", command, (unsigned long)send_size); break;
}

View File

@@ -52,6 +52,8 @@ glibtop_get_shm_limits
glibtop_get_shm_limits_l
glibtop_get_proc_affinity
glibtop_get_proc_affinity_l
glibtop_get_proc_io
glibtop_get_proc_io_l
glibtop_get_swap
glibtop_get_swap_l
glibtop_get_sysdeps

View File

@@ -48,7 +48,8 @@ GLIBTOP_SUID_NETLOAD +
GLIBTOP_SUID_NETLIST +
GLIBTOP_SUID_PROC_WD +
GLIBTOP_SUID_PROC_AFFINITY +
GLIBTOP_SUID_PPP;
GLIBTOP_SUID_PPP +
GLIBTOP_SUID_PROC_IO;
const _glibtop_init_func_t _glibtop_init_hook_s [] = {
#if !GLIBTOP_SUID_CPU
@@ -119,6 +120,9 @@ const _glibtop_init_func_t _glibtop_init_hook_s [] = {
#endif
#if !GLIBTOP_SUID_PPP
_glibtop_init_ppp_s,
#endif
#if !GLIBTOP_SUID_PROC_IO
_glibtop_init_proc_io_s,
#endif
NULL
};
@@ -192,6 +196,9 @@ const _glibtop_init_func_t _glibtop_init_hook_p [] = {
#endif
#if GLIBTOP_SUID_PPP
_glibtop_init_ppp_p,
#endif
#if GLIBTOP_SUID_PROC_IO
_glibtop_init_proc_io_p,
#endif
NULL
};

View File

@@ -8,7 +8,7 @@ subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding

View File

@@ -5,20 +5,20 @@ msgid ""
msgstr ""
"Project-Id-Version: libgtop 0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-03-11 15:24+0000\n"
"PO-Revision-Date: 2007-06-19 23:43+0000\n"
"Last-Translator: Ante Karamatić <ivoks@grad.hr>\n"
"POT-Creation-Date: 2016-04-26 22:07+0000\n"
"PO-Revision-Date: 2009-06-30 04:01+0000\n"
"Last-Translator: Ante Karamatić <ante.karamatic@canonical.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Launchpad-Export-Date: 2008-05-27 21:06+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"X-Launchpad-Export-Date: 2016-09-15 11:39+0000\n"
"X-Generator: Launchpad (build 18186)\n"
"Language: hr\n"
#: ../lib/read.c:51
#: ../lib/read.c:49
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
@@ -26,11 +26,11 @@ msgstr[0] "čitaj %d byte"
msgstr[1] "čitaj %d bytea"
msgstr[2] "čitaj %d byteova"
#: ../lib/read_data.c:51
#: ../lib/read_data.c:49
msgid "read data size"
msgstr "veličina pročitanih podataka"
#: ../lib/read_data.c:70
#: ../lib/read_data.c:66
#, c-format
msgid "read %lu byte of data"
msgid_plural "read %lu bytes of data"
@@ -38,7 +38,7 @@ msgstr[0] "čitaj %lu byte podataka"
msgstr[1] "čitaj %lu bytea podataka"
msgstr[2] "čitaj %lu byteova podataka"
#: ../lib/write.c:51
#: ../lib/write.c:49
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
@@ -46,19 +46,19 @@ msgstr[0] "zapisao %d byte"
msgstr[1] "zapisao %d bytea"
msgstr[2] "zapisao %d byteova"
#: ../src/daemon/gnuserv.c:458
#: ../src/daemon/gnuserv.c:456
msgid "Enable debugging"
msgstr "Omogućavanje debugiranja"
#: ../src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable verbose output"
msgstr "Omogući opširni izlaz"
#: ../src/daemon/gnuserv.c:462
#: ../src/daemon/gnuserv.c:460
msgid "Don't fork into background"
msgstr "Bez forkanja u pozadini"
#: ../src/daemon/gnuserv.c:464
#: ../src/daemon/gnuserv.c:462
msgid "Invoked from inetd"
msgstr "Pozvano iz inetda"
@@ -66,7 +66,8 @@ msgstr "Pozvano iz inetda"
#, c-format
msgid ""
"Run '%s --help' to see a full list of available command line options.\n"
msgstr "Pokrenite naredbu '%s --help' kako biste vidjeli popis dostupnih opcija.\n"
msgstr ""
"Pokrenite naredbu '%s --help' kako biste vidjeli popis dostupnih opcija.\n"
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"

114
po/pl.po
View File

@@ -1,31 +1,27 @@
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Aviary.pl
# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
# gnomepl@aviary.pl
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Polish translation for libgtop.
# Copyright © 1999-2016 the libgtop authors.
# This file is distributed under the same license as the libgtop package.
# Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>, 1999-2002.
# Artur Flinta <aflinta@at.kernel.pl>, 2004-2007.
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2015.
# Aviary.pl <gnomepl@aviary.pl>, 2010-2015.
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2016.
# Aviary.pl <community-poland@mozilla.org>, 2010-2016.
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-26 19:45+0200\n"
"PO-Revision-Date: 2015-08-26 19:47+0200\n"
"POT-Creation-Date: 2016-07-12 09:17+0000\n"
"PO-Revision-Date: 2016-08-20 15:54+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Poedit-Language: Polish\n"
"X-Poedit-Country: Poland\n"
#: ../lib/read.c:49
#: lib/read.c:49
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
@@ -33,11 +29,11 @@ msgstr[0] "odczyt %d bajtu"
msgstr[1] "odczyt %d bajtów"
msgstr[2] "odczyt %d bajtów"
#: ../lib/read_data.c:49
#: lib/read_data.c:49
msgid "read data size"
msgstr "odczyt rozmiaru danych"
#: ../lib/read_data.c:66
#: lib/read_data.c:66
#, c-format
msgid "read %lu byte of data"
msgid_plural "read %lu bytes of data"
@@ -45,7 +41,7 @@ msgstr[0] "odczytano jeden bajt danych"
msgstr[1] "odczytano %lu bajty danych"
msgstr[2] "odczytano %lu bajtów danych"
#: ../lib/write.c:49
#: lib/write.c:49
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
@@ -53,149 +49,149 @@ msgstr[0] "zapisano jeden bajt"
msgstr[1] "zapisano %d bajty"
msgstr[2] "zapisano %d bajtów"
#: ../src/daemon/gnuserv.c:455
#: src/daemon/gnuserv.c:456
msgid "Enable debugging"
msgstr "Włącza debugowanie"
#: ../src/daemon/gnuserv.c:457
#: src/daemon/gnuserv.c:458
msgid "Enable verbose output"
msgstr "Wyświetla więcej informacji"
msgstr "Więcej informacji"
#: ../src/daemon/gnuserv.c:459
#: src/daemon/gnuserv.c:460
msgid "Don't fork into background"
msgstr "Uruchamia program bez przechodzenia w tło"
msgstr "Bez przechodzenia w tło"
#: ../src/daemon/gnuserv.c:461
#: src/daemon/gnuserv.c:462
msgid "Invoked from inetd"
msgstr "Wywołanie przez inetd"
#: ../src/daemon/gnuserv.c:495
#: src/daemon/gnuserv.c:498
#, c-format
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
"Polecenie „%s --help” wyświetli pełną listę dostępnych opcji wiersza "
"poleceń.\n"
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
#: sysdeps/osf1/siglist.c:27 sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "Zawieszenie"
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "Przerwanie"
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "Zakończenie"
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Niedozwolona instrukcja"
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "Trace trap"
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "Przerwanie"
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "Błąd 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 "Wyjątek związany z liczbą zmiennoprzecinkową"
msgstr "Wyjątek związany z liczbą zmiennoprzecinkową"
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "Wymuszenie zakończenia"
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "Błąd magistrali"
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Naruszenie ochrony pamięci"
#: ../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 "Błędny parametr dla wywołania systemowego"
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "Uszkodzony potok"
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "Budzik"
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Zakończenie"
#: ../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 "Pilny warunek związany z gniazdem"
msgstr "Pilny warunek związany z gniazdem"
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "Zatrzymanie"
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Zatrzymanie klawiatury"
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "Kontynuacja"
#: ../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 "Zmiana stanu procesu potomnego"
#: ../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 "Odczyt w tle z urządzenia TTY"
msgstr "Odczyt w tle z urządzenia TTY"
#: ../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 "Zapis w tle do urządzenia TTY"
msgstr "Zapis w tle do urządzenia TTY"
#: ../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 "Wejście/wyjście jest teraz dostępne"
#: ../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 "Przekroczono ograniczenie procesora"
#: ../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 "Przekroczono ograniczenie rozmiaru plików"
#: ../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 "Wirtualny budzik"
#: ../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 "Profilowanie budzika"
#: ../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 "Zmiana rozmiaru okna"
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "Żądanie informacji"
#: ../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 "1. sygnał określony przez użytkownika"
#: ../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 "2. sygnał określony przez użytkownika"

View File

@@ -221,6 +221,12 @@ handle_parent_connection (int s)
do_output (s, resp, _offset_data (fsusage),
0, NULL);
break;
case GLIBTOP_CMND_PROC_IO:
glibtop_get_proc_io_l
(server, &resp->u.data.proc_io, parameter);
do_output (s, resp, _offset_data (proc_io),
0, NULL);
break;
case GLIBTOP_CMND_PPP:
memcpy (&device, parameter, sizeof (device));
glibtop_get_ppp_l

View File

@@ -209,6 +209,14 @@ handle_slave_command (glibtop_command *cmnd, glibtop_response *resp,
resp->offset = _offset_data (proc_time);
break;
#endif
#if GLIBTOP_SUID_PROC_IO
case GLIBTOP_CMND_PROC_IO:
memcpy (&pid, parameter, sizeof (pid_t));
glibtop_get_proc_io_p
(server, &resp->u.data.proc_io, pid);
resp->offset = _offset_data (proc_time);
break;
#endif
#if GLIBTOP_SUID_PROC_SIGNAL
case GLIBTOP_CMND_PROC_SIGNAL:
memcpy (&pid, parameter, sizeof (pid_t));

View File

@@ -431,3 +431,18 @@ glibtop_get_proc_affinity(glibtop_proc_affinity *buf, pid_t pid)
{
return glibtop_get_proc_affinity_l(glibtop_global_server, buf, pid);
}
/**
* glibtop_get_proc_io: Get the io stats for the given pid
* @buf: Buffer where the result will be given
* @pid: Process id to get the io stats for
*
* Get the io stats for a process
*
* Returns: A list of processor ID of 'buf.number' elements.
*/
void
glibtop_get_proc_io(glibtop_proc_io *buf, pid_t pid)
{
return glibtop_get_proc_io_l(glibtop_global_server, buf, pid);
}

View File

@@ -89,6 +89,9 @@ const _glibtop_init_func_t _glibtop_init_hook_p [] = {
#endif
#if GLIBTOP_SUID_PPP
_glibtop_init_ppp_p,
#endif
#if GLIBTOP_SUID_PROC_IO
_glibtop_init_proc_io_p,
#endif
NULL
};

View File

@@ -16,6 +16,7 @@ libgtop_sysdeps_suid_2_0_la_SOURCES = suid_open.c close.c swap.c \
proclist.c procstate.c procuid.c \
proctime.c procmem.c procsignal.c \
prockernel.c procsegment.c procargs.c \
procio.c \
procmap.c netload.c ppp.c
libgtop_sysdeps_suid_2_0_la_LDFLAGS = $(LT_VERSION_INFO)

View File

@@ -47,6 +47,7 @@ G_BEGIN_DECLS
#define GLIBTOP_SUID_NETLIST 0
#define GLIBTOP_SUID_PROC_WD 0
#define GLIBTOP_SUID_PROC_AFFINITY 0
#define GLIBTOP_SUID_PROC_IO (1 << GLIBTOP_SYSDEPS_PROC_IO)
G_END_DECLS

80
sysdeps/freebsd/procio.c Normal file
View File

@@ -0,0 +1,80 @@
/* Copyright (C) 2017 Robert Roth
This file is part of LibGTop.
Contributed by Robert Roth <robert.roth.off@gmail.com>, February 2017.
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 <glibtop.h>
#include <glibtop/procio.h>
#include <glibtop/error.h>
#include <glibtop_suid.h>
static const unsigned long _glibtop_sysdeps_proc_io =
(1UL << GLIBTOP_PROC_IO_DISK_RBYTES) + (1UL << GLIBTOP_PROC_IO_DISK_WBYTES);
/* Init function. */
void
_glibtop_init_proc_io_p (glibtop *server)
{
server->sysdeps.proc_io = _glibtop_sysdeps_proc_io;
}
/* Provides detailed information about a process. */
void
glibtop_get_proc_io_p (glibtop *server, glibtop_proc_io *buf,
pid_t pid)
{
memset (buf, 0, sizeof (glibtop_proc_io));
struct kinfo_proc *pinfo;
int count;
glibtop_suid_enter (server);
/* Get the process information */
pinfo = kvm_getprocs (server->machine->kd, KERN_PROC_PID, pid, &count);
if ((pinfo == NULL) || (count != 1)) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
glibtop_suid_leave (server);
return;
}
glibtop_suid_leave (server);
/* man getrusage
long ru_inblock; == block input operations
long ru_oublock; == block output operations
ru_inblock the number of times the file system had to perform input.
ru_oublock the number of times the file system had to perform output.
And then it says 'account only for real IO'.
But if I write 1MB in a process, I can see ru_oublock increased
1024. So it's neither a number of operations or times.
FIXME: seems the blocksize is 1024 but ...
*/
buf->disk_rbytes = pinfo->ki_rusage.ru_inblock << 10;
buf->disk_wbytes = pinfo->ki_rusage.ru_oublock << 10;
buf->flags = _glibtop_sysdeps_proc_io;
}

View File

@@ -10,7 +10,7 @@ libgtop_sysdeps_2_0_la_SOURCES = open.c close.c cpu.c mem.c swap.c \
proctime.c procmem.c procsignal.c prockernel.c \
procsegment.c procargs.c procmap.c siglist.c \
sysinfo.c netload.c ppp.c glibtop_private.c \
mountlist.c procaffinity.c \
mountlist.c procaffinity.c procio.c \
fsusage.c netlist.c procopenfiles.c procwd.c
libgtop_sysdeps_2_0_la_LIBADD = @GLIB_LIBS@

View File

@@ -51,7 +51,7 @@ char *
skip_token (const char *p)
{
p = next_token(p);
while (*p && !isspace(*p)) p++;
while (*p && !g_ascii_isspace(*p)) p++;
p = next_token(p);
return (char *)p;
}
@@ -178,20 +178,6 @@ get_boot_time(glibtop *server)
}
size_t
get_page_size(void)
{
static size_t pagesize = 0;
if(G_UNLIKELY(!pagesize))
{
pagesize = getpagesize();
}
return pagesize;
}
gboolean
check_cpu_line(glibtop *server, const char *line, unsigned i)

View File

@@ -37,7 +37,7 @@ G_BEGIN_DECLS
static inline char*
next_token(const char *p)
{
while (isspace(*p)) p++;
while (g_ascii_isspace(*p)) p++;
return (char*) p;
}
@@ -122,10 +122,6 @@ unsigned long
get_boot_time(glibtop *server);
size_t
get_page_size(void);
gboolean
check_cpu_line(glibtop *server, const char *line, unsigned n);

View File

@@ -46,5 +46,6 @@
#define GLIBTOP_SUID_PROC_AFFINITY 0
#define GLIBTOP_SUID_PPP 0
#define GLIBTOP_SUID_PROC_FILE 0
#define GLIBTOP_SUID_PROC_IO 0
#endif /* __LINUX__GLIBTOP_SERVER_H__ */

70
sysdeps/linux/procio.c Normal file
View File

@@ -0,0 +1,70 @@
/* Copyright (C) 2017 Robert Roth
This file is part of LibGTop.
Contributed by Robert Roth <robert.roth.off@gmail.com>, February 2017.
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 <glibtop.h>
#include <glibtop/error.h>
#include <glibtop/procio.h>
#include "glibtop_private.h"
static const unsigned long _glibtop_sysdeps_proc_io =
(1L << GLIBTOP_PROC_IO_DISK_RCHAR) + (1L << GLIBTOP_PROC_IO_DISK_WCHAR) +
(1L << GLIBTOP_PROC_IO_DISK_RBYTES) + (1L << GLIBTOP_PROC_IO_DISK_WBYTES);
/* Init function. */
void
_glibtop_init_proc_io_s (glibtop *server)
{
server->sysdeps.proc_io = _glibtop_sysdeps_proc_io;
}
/* Provides detailed information about a process. */
void
glibtop_get_proc_io_s (glibtop *server, glibtop_proc_io *buf, pid_t pid)
{
char buffer [BUFSIZ], *p;
memset (buf, 0, sizeof (glibtop_proc_io));
if (server->os_version_code < LINUX_VERSION_CODE(2, 6, 20))
return;
if (proc_file_to_buffer(buffer, sizeof buffer, "/proc/%d/io", pid))
return;
p = skip_token (buffer);
buf->disk_rchar = g_ascii_strtoull (p, &p, 10);
p = skip_line (p);
p = skip_token (p);
buf->disk_wchar = g_ascii_strtoull (p, &p, 10);
p = skip_line (p);
p = skip_line (p);
p = skip_line (p);
p = skip_token (p);
buf->disk_rbytes = g_ascii_strtoull (p, &p, 10);
p = skip_line (p);
p = skip_token (p);
buf->disk_wbytes = g_ascii_strtoull (p, &p, 10);
buf->flags = _glibtop_sysdeps_proc_io;
}

View File

@@ -82,7 +82,7 @@ void
glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf, pid_t pid)
{
char buffer [BUFSIZ], *p;
const size_t pagesize = get_page_size();
const size_t pagesize = getpagesize();
memset (buf, 0, sizeof (glibtop_proc_mem));

View File

@@ -53,7 +53,7 @@ glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf,
pid_t pid)
{
char buffer [BUFSIZ], *p;
const size_t pagesize = get_page_size();
const size_t pagesize = getpagesize();
memset (buf, 0, sizeof (glibtop_proc_segment));

View File

@@ -110,6 +110,9 @@ glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, pid_t pid)
break;
}
p = skip_multiple_token (p, 36);
buf->last_processor = atoi (p);
p = skip_token (buffer); /* pid */
if (G_UNLIKELY(*p++ != '('))
glibtop_error_r (server, "Bad data in /proc/%d/stat", pid);

View File

@@ -36,23 +36,34 @@ static glibtop_sysinfo sysinfo = { .flags = 0 };
static void
init_sysinfo (glibtop *server)
{
char buffer [65536];
char* buffer;
gchar ** processors;
if(G_LIKELY(sysinfo.flags)) return;
file_to_buffer(server, buffer, sizeof buffer, FILENAME);
if (!g_file_get_contents(FILENAME, &buffer, NULL, NULL)) {
glibtop_error_io_r(server, "g_file_get_contents(%s)", FILENAME);
}
/* cpuinfo records are seperated by a blank line */
processors = g_strsplit(buffer, "\n\n", 0);
for(sysinfo.ncpu = 0;
sysinfo.ncpu < GLIBTOP_NCPU && processors[sysinfo.ncpu] && *processors[sysinfo.ncpu];
sysinfo.ncpu++) {
g_free(buffer);
sysinfo.ncpu = 0;
for (char** this_proc = &processors[0]; *this_proc && **this_proc; this_proc++) {
if (sysinfo.ncpu >= GLIBTOP_NCPU) {
glibtop_warn_r(server, "Cannot deal with more than %d CPUs", GLIBTOP_NCPU);
break;
}
gchar **parts, **p;
if (g_strrstr (processors[sysinfo.ncpu], "processor" ) == NULL)
continue;
if (g_strrstr (*this_proc, "processor" ) == NULL) {
/* skip unknown paragraph */
continue;
}
glibtop_entry * const cpuinfo = &sysinfo.cpuinfo[sysinfo.ncpu];
cpuinfo->labels = g_ptr_array_new ();
@@ -64,7 +75,7 @@ init_sysinfo (glibtop *server)
g_free, g_free);
/* "<key> : <value>" */
parts = g_strsplit_set(processors[sysinfo.ncpu], ":\n", 0);
parts = g_strsplit_set(*this_proc, ":\n", 0);
for(p = parts; *p && *(p+1); p += 2) {
@@ -85,6 +96,7 @@ init_sysinfo (glibtop *server)
g_free(parts);
sysinfo.ncpu++;
}
g_strfreev(processors);

43
sysdeps/stub/procio.c Normal file
View File

@@ -0,0 +1,43 @@
/* Copyright (C) 2017 Robert Roth
This file is part of LibGTop.
Contributed by Robert Roth <robert.roth.off@gmail.com>, February 2017.
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 <glibtop.h>
#include <glibtop/procio.h>
static const unsigned long _glibtop_sysdeps_proc_io = 0;
/* Init function. */
void
_glibtop_init_proc_io_s (glibtop *server)
{
server->sysdeps.proc_io = _glibtop_sysdeps_proc_io;
}
/* Provides detailed information about a process. */
void
glibtop_get_proc_io_s (glibtop *server, glibtop_proc_io *buf,
pid_t pid)
{
memset (buf, 0, sizeof (glibtop_proc_io));
}

View File

@@ -45,6 +45,7 @@ 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_IO (1 << GLIBTOP_SYSDEPS_PROC_IO)
G_END_DECLS