Compare commits
406 Commits
LIBGTOP_2_
...
master
Author | SHA1 | Date | |
---|---|---|---|
c43fcbdf60 | |||
|
c44728486b | ||
|
1842273e84 | ||
|
43d19428df | ||
|
96a14aa312 | ||
|
6370ad16e7 | ||
|
abe908277a | ||
|
526a516981 | ||
|
35972c6a3d | ||
|
e07a0a005d | ||
|
b8460a20ff | ||
|
c7be349744 | ||
|
1efbbd1297 | ||
|
f579574b86 | ||
|
079b9e17c5 | ||
|
306f5d0c8f | ||
|
80cfde7c7f | ||
|
f7a00681a9 | ||
|
9d385bdd1a | ||
|
5e97014fea | ||
|
66721198b6 | ||
|
507809b648 | ||
|
9159e25804 | ||
|
b08c3d8685 | ||
|
99803b3959 | ||
|
3b078fafa5 | ||
|
3d7870c961 | ||
|
f92f6ea029 | ||
|
e89475c0b2 | ||
|
629097436a | ||
|
04bf093412 | ||
|
69457ccfa9 | ||
|
1e3547406a | ||
|
3f4dac881b | ||
|
4c686019fa | ||
|
854d0c7547 | ||
|
1352f06f6a | ||
|
b381fe4e5c | ||
|
fca7a38be8 | ||
|
df6393ac0c | ||
|
7e9fed1513 | ||
|
f5ced2028d | ||
|
1cb23c7b83 | ||
|
b1b05985b1 | ||
|
cfe1ef95d4 | ||
|
246ec92cab | ||
|
e68d20f739 | ||
|
48ad21d329 | ||
|
e48d1a9c38 | ||
|
027c959fa0 | ||
|
a5b2b6db98 | ||
|
6b60695f99 | ||
|
c4ff3788b8 | ||
|
336d2480d3 | ||
|
24555c48d0 | ||
|
b51925dbd9 | ||
|
b9bbdf4c9f | ||
|
d4ac1eda07 | ||
|
7889113b99 | ||
|
dd342f6486 | ||
|
3644ac0f80 | ||
|
ae99056bdf | ||
|
572b195407 | ||
|
d8603f7692 | ||
|
b738a0ae09 | ||
|
2ec1815e6c | ||
|
48595809ed | ||
|
a067db0569 | ||
|
68b5269607 | ||
|
43e4c52579 | ||
|
fd162f9cb8 | ||
|
b8a0475a42 | ||
|
76c2e7178a | ||
|
7c14ffaf54 | ||
|
cfabe09ad8 | ||
|
72124ab005 | ||
|
9e68eb94c3 | ||
|
5714b6089c | ||
|
e1b249d6b7 | ||
|
757d90b2ab | ||
|
065a021a82 | ||
|
61093d22d9 | ||
|
cc042e1833 | ||
|
38b8e65e00 | ||
|
32f8317d04 | ||
|
489e090286 | ||
|
9023171166 | ||
|
7eafc23017 | ||
|
8f179da4ee | ||
|
2a34650c28 | ||
|
d94138f45d | ||
|
7e214414bf | ||
|
30bf8d0418 | ||
|
ea08151ae6 | ||
|
2229253e11 | ||
|
e9da959773 | ||
|
7396970afe | ||
|
9cbb3b91f1 | ||
|
9e62440b31 | ||
|
d49e17039e | ||
|
267ae64965 | ||
|
c20421275b | ||
|
5e11fb4405 | ||
|
6dcc9195ea | ||
|
317841ba04 | ||
|
4229d1ea20 | ||
|
9e98bbd98b | ||
|
9b4a03ed0a | ||
|
34242826d6 | ||
|
9146c9d0e4 | ||
|
31db82efce | ||
|
0fd23dd185 | ||
|
abccaf488a | ||
|
8b37040b5b | ||
|
8871660dac | ||
|
334f1e5c4c | ||
|
e88e854e57 | ||
|
00140eadc8 | ||
|
0c1be6e7b6 | ||
|
30c771151d | ||
|
77912eae1d | ||
|
b71a5c1404 | ||
|
8e4c9c197b | ||
|
bb118fa9d6 | ||
|
69f7b16421 | ||
|
7c811a7826 | ||
|
40144f3908 | ||
|
35a0ba8e27 | ||
|
ec6a87e670 | ||
|
e4335d4db2 | ||
|
ec662d01da | ||
|
cab8791fdd | ||
|
4f36c74b68 | ||
|
c65cb3e46b | ||
|
b450bbc67c | ||
|
f80b08a865 | ||
|
42b049f338 | ||
|
b31bce292b | ||
|
32a02dfcdb | ||
|
286db6d137 | ||
|
aa4b2dc5ee | ||
|
d61659c143 | ||
|
9308027409 | ||
|
487e584a18 | ||
|
e9775e1a40 | ||
|
b50c07af1d | ||
|
68509e60d1 | ||
|
f7ff106859 | ||
|
ad8e73957c | ||
|
8a8c00f4fe | ||
|
d30928e8d4 | ||
|
0c23240d5b | ||
|
947156e5d0 | ||
|
6d194c11d2 | ||
|
73b86f8744 | ||
|
7dcc6c51d6 | ||
|
f5939dc69e | ||
|
0203aa18aa | ||
|
f38d9c6523 | ||
|
9b966f6f1a | ||
|
cb4721b27d | ||
|
ed9248f04f | ||
|
609b8c7e1a | ||
|
72b6e2bad4 | ||
|
7a84a9260d | ||
|
74b92b5389 | ||
|
25f5de7d90 | ||
|
80a9763a7e | ||
|
e54dd89d5e | ||
|
d3df61ddbf | ||
|
44d46a18b3 | ||
|
2f08841044 | ||
|
de6e0c1c90 | ||
|
ba61b54eb3 | ||
|
0a00b3522a | ||
|
43740ddab7 | ||
|
063de1a712 | ||
|
779386cb15 | ||
|
2e2215c5b6 | ||
|
ec8d59ab48 | ||
|
5880e04fcc | ||
|
1bf16bfffd | ||
|
6f04d33af2 | ||
|
c22e7de346 | ||
|
e611d16997 | ||
|
aae804c3dc | ||
|
ce020a63ba | ||
|
526d2e5a2f | ||
|
ab6f7b39d3 | ||
|
e73e7691d1 | ||
|
5c8593ec19 | ||
|
3403ef72b1 | ||
|
2f7e2438aa | ||
|
88ecae1d00 | ||
|
89a73e2746 | ||
|
c29d7de9a0 | ||
|
07abbd2dfe | ||
|
afec9bbf58 | ||
|
b7a684fbbc | ||
|
b589a4fcf0 | ||
|
1defc74f07 | ||
|
35bf89632a | ||
|
4285abe72b | ||
|
dff7c5588e | ||
|
1a103bf142 | ||
|
3ff313dd03 | ||
|
01a56e2e30 | ||
|
7afc81f99d | ||
|
b0ab056e99 | ||
|
d2bc9b4331 | ||
|
70e00a0262 | ||
|
f99bb61446 | ||
|
a0166d2844 | ||
|
5f39f4f8f9 | ||
|
e5e303d497 | ||
|
235ffb4cb6 | ||
|
59d9780eae | ||
|
305701c637 | ||
|
b68b2ec65e | ||
|
1a8d18a17f | ||
|
04d39eca02 | ||
|
36110deac8 | ||
|
72f10ecfe6 | ||
|
1a8f092264 | ||
|
5522fae242 | ||
|
870dd5afa6 | ||
|
94968b4406 | ||
|
819bfe56ee | ||
|
de408a6bba | ||
|
05cb14dbb2 | ||
|
7e3e4b6860 | ||
|
02070b7170 | ||
|
fcfacf3213 | ||
|
7925f83b57 | ||
|
68104bdde1 | ||
|
ac2aef0f47 | ||
|
9764518807 | ||
|
13f08cf164 | ||
|
c8a4c3d2a1 | ||
|
52c35c1b81 | ||
|
e528a7280b | ||
|
99ff3d4dff | ||
|
f865e95e20 | ||
|
eec96d8ae8 | ||
|
d10a584e40 | ||
|
a55eee5863 | ||
|
7437509412 | ||
|
c9e73e52ac | ||
|
4c455ac8a0 | ||
|
56f03d0987 | ||
|
a3b502ec3f | ||
|
b74d6abf19 | ||
|
ca42f1f3af | ||
|
106ee901bb | ||
|
0642c2d610 | ||
|
42e860e5ad | ||
|
8f2f236404 | ||
|
4e0d819264 | ||
|
5c6879baab | ||
|
a0e97885c1 | ||
|
d817bee619 | ||
|
58d50d3546 | ||
|
d3a247a60f | ||
|
45c8452140 | ||
|
72b4aed8f1 | ||
|
0e8f911410 | ||
|
db8ad19eef | ||
|
d30fbb22e0 | ||
|
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 | ||
|
8985e7e239 | ||
|
1c1449306b | ||
|
3f8f65386e | ||
|
30d29e624b | ||
|
bea8b6790a | ||
|
5e6c25d29d | ||
|
b7e1219e0a | ||
|
057dcf77d6 | ||
|
b7edd1542e | ||
|
7326f8816d | ||
|
ed1b3f5834 | ||
|
7a3414d002 | ||
|
564506bb0d | ||
|
9e0843064d | ||
|
d8d8aac9d3 | ||
|
9a887feed2 | ||
|
81dfeb526c | ||
|
d9c01aac4a | ||
|
82c28b2ad2 | ||
|
05345dc032 | ||
|
63ba7b2c12 | ||
|
5371e8ec88 | ||
|
e682094418 | ||
|
2e861977a6 | ||
|
a39f290683 | ||
|
02b55313f3 | ||
|
596c42d7f1 | ||
|
d4d4f7735a | ||
|
4cd3e4fed6 | ||
|
c99ceeaa65 | ||
|
ecbfade528 | ||
|
73d4679ad8 | ||
|
df1db43032 | ||
|
ff07ba102f | ||
|
07d2816d5b | ||
|
2caff8bf5c | ||
|
78e257e958 | ||
|
efaaf6eb77 | ||
|
47bcd423b5 | ||
|
38bfee6739 | ||
|
3147bf2e34 | ||
|
2506662196 | ||
|
b6eb0873e7 | ||
|
2c08229f04 | ||
|
753d9abb13 | ||
|
af7e9cd1b6 | ||
|
552ea7ec3a | ||
|
43f19912e3 | ||
|
16bb5c8075 | ||
|
bebcb377af | ||
|
4cffb2f094 | ||
|
5adaa90de3 | ||
|
f9e8ae8dfc | ||
|
efeb24a96c | ||
|
3c4ddb5572 |
97
.gitignore
vendored
Normal file
97
.gitignore
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
*.a
|
||||
*.bak
|
||||
*.core
|
||||
*.diff
|
||||
*.gmo
|
||||
*.header
|
||||
*.in
|
||||
*.la
|
||||
*.lo
|
||||
*.new
|
||||
*.o
|
||||
*.old
|
||||
*.out
|
||||
*.patch
|
||||
*.pot
|
||||
*.s
|
||||
*.sed
|
||||
*.sin
|
||||
*.stamp
|
||||
*.swp
|
||||
*~
|
||||
.deps
|
||||
.libs
|
||||
ABOUT-NLS
|
||||
INSTALL
|
||||
Makefile
|
||||
Makevars.template
|
||||
Rules-quot
|
||||
\#*\#
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
compile
|
||||
config.guess
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
doc/libgtop2.info
|
||||
doc/mdate-sh
|
||||
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/affinity
|
||||
examples/df
|
||||
examples/disk
|
||||
examples/diskio
|
||||
examples/first
|
||||
examples/free
|
||||
examples/mountlist
|
||||
examples/netlist
|
||||
examples/netload
|
||||
examples/openfiles
|
||||
examples/pprint
|
||||
examples/procargs
|
||||
examples/proclist
|
||||
examples/procmap
|
||||
examples/second
|
||||
examples/smp
|
||||
examples/sysdeps
|
||||
examples/timings
|
||||
examples/wd
|
||||
examples/sysinfo
|
||||
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-*
|
69
.gitlab-ci.yml
Normal file
69
.gitlab-ci.yml
Normal file
@@ -0,0 +1,69 @@
|
||||
stages:
|
||||
- build
|
||||
- abi
|
||||
|
||||
variables:
|
||||
FEDORA_DEPENDENCIES:
|
||||
gettext-devel
|
||||
gobject-introspection-devel
|
||||
gtk-doc
|
||||
util-linux
|
||||
texinfo-tex
|
||||
FEDORA_DEPENDENCIES_ABI_CHECK:
|
||||
libabigail
|
||||
intltool
|
||||
LAST_ABI_BREAK: "d4ac1eda0752d559db8737773d6894aadc700ce3"
|
||||
UBUNTU_DEPENDENCIES:
|
||||
automake
|
||||
autopoint
|
||||
gettext
|
||||
gtk-doc-tools
|
||||
libgirepository1.0-dev
|
||||
libtool
|
||||
make
|
||||
texinfo
|
||||
texlive
|
||||
|
||||
build-fedora:
|
||||
image: fedora:latest
|
||||
stage: build
|
||||
except:
|
||||
- tags
|
||||
before_script:
|
||||
- dnf update -y --nogpgcheck
|
||||
- dnf install -y --nogpgcheck $FEDORA_DEPENDENCIES
|
||||
script:
|
||||
- mkdir _build
|
||||
- cd _build
|
||||
- ../autogen.sh --disable-dependency-tracking
|
||||
- make
|
||||
- make install
|
||||
- make distcheck
|
||||
|
||||
abi-fedora:
|
||||
image: fedora:latest
|
||||
stage: abi
|
||||
needs:
|
||||
- build-fedora
|
||||
before_script:
|
||||
- dnf update -y --nogpgcheck
|
||||
- dnf install -y --nogpgcheck $FEDORA_DEPENDENCIES $FEDORA_DEPENDENCIES_ABI_CHECK
|
||||
script:
|
||||
- curl https://gitlab.freedesktop.org/hadess/check-abi/-/raw/main/contrib/check-abi-fedora.sh | bash
|
||||
- check-abi ${LAST_ABI_BREAK} $(git rev-parse HEAD)
|
||||
|
||||
build-ubuntu:
|
||||
image: ubuntu:latest
|
||||
stage: build
|
||||
except:
|
||||
- tags
|
||||
before_script:
|
||||
- apt-get update
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get install -y $UBUNTU_DEPENDENCIES
|
||||
script:
|
||||
- mkdir _build
|
||||
- cd _build
|
||||
- ../autogen.sh
|
||||
- make
|
||||
- make install
|
||||
- make distcheck
|
3
AUTHORS
3
AUTHORS
@@ -1,3 +1,4 @@
|
||||
Martin Baulig (martin@home-of-linux.org)
|
||||
Drazen Kacar (dave@srce.hr)
|
||||
Benoît Dejean (tazforever@dlfp.org)
|
||||
Benoît Dejean (bdejean@gmail.com)
|
||||
Robert Roth (robert.roth.off@gmail.com)
|
||||
|
@@ -15,17 +15,9 @@ EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt \
|
||||
features.def libgtopconfig.h.in \
|
||||
libgtop-sysdeps.m4 README \
|
||||
libgtop-2.0.pc.in acinclude.m4 \
|
||||
intltool-extract.in \
|
||||
intltool-merge.in \
|
||||
libgtop.doap \
|
||||
intltool-update.in \
|
||||
m4/introspection.m4
|
||||
|
||||
DISTCLEANFILES = \
|
||||
intltool-extract \
|
||||
intltool-merge \
|
||||
intltool-update
|
||||
|
||||
dist-hook:
|
||||
cp libgtop.spec $(distdir)
|
||||
|
||||
|
219
NEWS
219
NEWS
@@ -1,3 +1,222 @@
|
||||
16 February 2024: Overview of changes in 2.41.3
|
||||
================================================
|
||||
|
||||
* Fixed daemon buffer overflow #72
|
||||
* Updated translations
|
||||
|
||||
15 October 2023: Overview of changes in 2.41.2
|
||||
================================================
|
||||
|
||||
* Solaris
|
||||
- Fix build #47
|
||||
* Linux
|
||||
- Change disk example read/write unit to bytes
|
||||
- Fixed potential Buffer overflow when reading disk stats
|
||||
- Changed disk read/write unit to bytes in example
|
||||
* CI
|
||||
- Fixed CI by adding missing dependency
|
||||
|
||||
|
||||
10 January 2023 : Overview of changes in 2.41.1
|
||||
================================================
|
||||
|
||||
* FreeBSD
|
||||
- Build fixes
|
||||
- Support FreeBSD 13.0-CURRENT >= 1300062 vm_map_entry
|
||||
* OpenBSD
|
||||
- Build fixes
|
||||
* Linux
|
||||
- skip loop and rom devices
|
||||
* Allow building with gettext >= 0.20
|
||||
* Updated translations
|
||||
* CI build setup
|
||||
|
||||
|
||||
11 March 2019: Overview of changes in 2.40.0
|
||||
================================================
|
||||
|
||||
* Fixed array and transfer annotations for documentation
|
||||
|
||||
18 February 2019: Overview of changes in 2.39.91
|
||||
|
||||
* Replace deprecated gnome-common with autoreconf
|
||||
|
||||
04 February 2019: Overview of changes in 2.39.90
|
||||
================================================
|
||||
|
||||
* Updated translations
|
||||
* FreeBSD:
|
||||
- added support for laundry memory
|
||||
- added support for ZFS ARC
|
||||
* Fixed compile warnings
|
||||
* Fix build on FreeBSD and darwin
|
||||
* Linux:
|
||||
- get procmap doesn't need suid
|
||||
|
||||
11 September 2017: Overview of changes in 2.38.0
|
||||
================================================
|
||||
|
||||
* Updated translations
|
||||
|
||||
04 September 2017: Overview of changes in 2.37.92
|
||||
================================================
|
||||
|
||||
* Updated translations
|
||||
* Code cleanup
|
||||
|
||||
07 August 2017: Overview of changes in 2.37.90
|
||||
================================================
|
||||
|
||||
* Added reserved fields to the sysdeps struct
|
||||
* Updated translations
|
||||
* Fixed build failure in FreeBSD 11
|
||||
|
||||
22 May 2017: Overview of changes in 2.37.2
|
||||
================================================
|
||||
|
||||
* Added support for per-process io monitoring
|
||||
* Linux
|
||||
* FreeBSD
|
||||
* Updated translations
|
||||
* Added nullpointer check
|
||||
* Use unicode in translatable strings
|
||||
|
||||
20 March 2017: Overview of changes in 2.36.0
|
||||
================================================
|
||||
|
||||
* Version bumped
|
||||
|
||||
13 March 2017: Overview of changes in 2.35.92
|
||||
================================================
|
||||
|
||||
* Better output format for arrays
|
||||
|
||||
13 February 2017: Overview of changes in 2.35.90
|
||||
================================================
|
||||
|
||||
* Linux:
|
||||
- Use dynamically allocated cpu buffer
|
||||
- Do not cache getpagesize()
|
||||
- Use faster g_ascii_isspace in tokenization
|
||||
- Ignore paragraphs not describing a CPU/core
|
||||
|
||||
* Updated translations
|
||||
* Added more gettext options
|
||||
|
||||
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
|
||||
================================================
|
||||
|
||||
* Stable release
|
||||
|
||||
29 February 2016: Overview of changes in 2.33.91
|
||||
|
||||
* Updated translations
|
||||
* Fix building on must-libc
|
||||
|
||||
18 January 2016: Overview of changes in 2.33.4
|
||||
|
||||
* On OpenBSD only PID 1 is special
|
||||
* Call setlocale in main
|
||||
|
||||
14 December: Overview of changes in 2.33.3
|
||||
|
||||
* Fixed borken compilation on OpenBSD
|
||||
* Updated translations.
|
||||
|
||||
21 September 2015: Overview of changes in 2.32.0
|
||||
|
||||
* Stable release
|
||||
|
||||
14 September 2015: Overview of changes in 2.31.91
|
||||
================================================
|
||||
* Darwin:
|
||||
- Fixed build.
|
||||
|
||||
* All
|
||||
- GI docs fixes
|
||||
- include fixes
|
||||
- Updated translations
|
||||
|
||||
16 August 2015: Overview of changes in 2.31.90
|
||||
=============================================
|
||||
* ABI changes:
|
||||
- ABI was inconsistent on platforms like FreeBSD which make use of
|
||||
glibtop_machine. The ABI was actually different between the
|
||||
library and the server. Fixed this by simply always defining
|
||||
glibtop_machine in glibtop struct.
|
||||
- Add Pss and Swap members in glibtop_proc_mem.
|
||||
- This is the second ABI breakage in since 2.28 (the first one was
|
||||
bumping NCPU), there were no release for 2.30.
|
||||
|
||||
* FreeBSD:
|
||||
- proclist: exclude the "idle" kernel process when GLIBTOP_EXCLUDE_IDLE.
|
||||
- Remove extraneous glibtop_init() calls.
|
||||
|
||||
* Linux:
|
||||
- proc_mem: implement Pss and Swap.
|
||||
- Remove extraneous glibtop_init() calls.
|
||||
|
||||
* All:
|
||||
- Propagate the change that machine in struct glibtop is now a
|
||||
pointer. Hope that change doesn't break build on other platforms,
|
||||
I can only test Linux and FreeBSD.
|
||||
|
||||
|
||||
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.
|
||||
|
@@ -263,8 +263,7 @@ AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
|
||||
[
|
||||
ok=
|
||||
if test $ac_cv_func_getmntinfo = yes; then
|
||||
AC_EGREP_HEADER(f_type;, sys/mount.h,
|
||||
ok=yes)
|
||||
AC_EGREP_HEADER(getmntinfo, sys/mount.h, ok=yes)
|
||||
fi
|
||||
test -n "$ok" \
|
||||
&& fu_cv_sys_mounted_getmntinfo=yes \
|
||||
|
76
autogen.sh
76
autogen.sh
@@ -1,22 +1,68 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
if ! [ -x "$(command -v lsblk)" ]; then
|
||||
echo '' >&2
|
||||
echo -e "${RED}*** ERROR:${NC} lsblk cannot be found. Try installing util-linux or util-linux-ng ${RED}***${NC}" >&2
|
||||
echo '' >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! [ -x "$(command -v sed)" ]; then
|
||||
echo '' >&2
|
||||
echo -e "${RED}*** ERROR:${NC} sed cannot be found. ***" >&2
|
||||
echo '' >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! [ -x "$(command -v tr)" ]; then
|
||||
echo '' >&2
|
||||
echo -e "${RED}*** ERROR:${NC} tr cannot be found. ***" >&2
|
||||
echo '' >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
PKG_NAME="Gnome Top Library"
|
||||
test -n "$srcdir" || srcdir=$(dirname "$0")
|
||||
test -n "$srcdir" || srcdir=.
|
||||
|
||||
(test -f $srcdir/configure.in \
|
||||
&& test -f $srcdir/copyright.txt \
|
||||
&& test -d $srcdir/sysdeps) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level gnome directory"
|
||||
exit 1
|
||||
olddir=$(pwd)
|
||||
|
||||
cd $srcdir
|
||||
|
||||
(test -f configure.ac) || {
|
||||
echo "*** ERROR: Directory '$srcdir' does not look like the top-level project directory ***"
|
||||
exit 1
|
||||
}
|
||||
|
||||
which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common from the GNOME CVS"
|
||||
exit 1
|
||||
}
|
||||
REQUIRED_AUTOMAKE_VERSION=1.9
|
||||
. gnome-autogen.sh
|
||||
# shellcheck disable=SC2016
|
||||
PKG_NAME=$(autoconf --trace 'AC_INIT:$1' configure.ac)
|
||||
|
||||
if [ "$#" = 0 -a "x$NOCONFIGURE" = "x" ]; then
|
||||
echo "*** WARNING: I am going to run 'configure' with no arguments." >&2
|
||||
echo "*** If you wish to pass any to it, please specify them on the" >&2
|
||||
echo "*** '$0' command line." >&2
|
||||
echo "" >&2
|
||||
fi
|
||||
|
||||
aclocal --install || exit 1
|
||||
gtkdocize --copy || exit 1
|
||||
autoreconf --verbose --force --install || exit 1
|
||||
|
||||
cd "$olddir"
|
||||
if [ "$NOCONFIGURE" = "" ]; then
|
||||
$srcdir/configure "$@" || exit 1
|
||||
|
||||
if [ "$1" = "--help" ]; then
|
||||
exit 0
|
||||
else
|
||||
echo "Now type 'make' to compile $PKG_NAME" || exit 1
|
||||
fi
|
||||
else
|
||||
echo "Skipping configure process."
|
||||
fi
|
||||
|
@@ -3,12 +3,12 @@ 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], [5])
|
||||
m4_define([libgtop_minor_version], [41])
|
||||
m4_define([libgtop_micro_version], [3])
|
||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
||||
|
||||
dnl increment if the interface has additions, changes, removals.
|
||||
m4_define([libgtop_current], [9])
|
||||
m4_define([libgtop_current], [12])
|
||||
|
||||
dnl increment any time the source changes; set to
|
||||
dnl 0 if you increment CURRENT
|
||||
@@ -17,7 +17,7 @@ m4_define([libgtop_revision], [0])
|
||||
dnl increment if any interfaces have been added; set to 0
|
||||
dnl if any interfaces have been removed. removal has
|
||||
dnl precedence over adding, so set to 0 if both happened.
|
||||
m4_define([libgtop_age], [2])
|
||||
m4_define([libgtop_age], [1])
|
||||
|
||||
# Increase each time you change the client/server protocol.
|
||||
m4_define([libgtop_server_version], [5])
|
||||
@@ -27,13 +27,14 @@ m4_define([libgtop_version_code], [m4_eval(libgtop_major_version * 1000000 + lib
|
||||
|
||||
AC_PREREQ(2.62)
|
||||
AC_INIT([libgtop], [libgtop_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=libgtop])
|
||||
[https://gitlab.gnome.org/GNOME/libgtop/-/issues/])
|
||||
AC_CONFIG_SRCDIR(copyright.txt)
|
||||
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])
|
||||
|
||||
@@ -70,6 +71,16 @@ dnl Most people should have a working perl interpreter on their system
|
||||
AC_CHECK_PROGS(PERL, perl5 perl)
|
||||
test -z "$PERL" && AC_MSG_ERROR([You need to have a working perl interpreter.])
|
||||
|
||||
case "${host_os}" in
|
||||
linux*)
|
||||
AC_CHECK_TOOL(LSBLK,lsblk)
|
||||
AC_CHECK_TOOL(SED,sed)
|
||||
AC_CHECK_TOOL(TR,tr)
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_CHECK_TOOL(CC,gcc)
|
||||
AC_CHECK_TOOL(RANLIB,ranlib)
|
||||
AC_CHECK_TOOL(AS,as)
|
||||
@@ -91,8 +102,9 @@ GNOME_LIBGTOP_SYSDEPS
|
||||
GNOME_LIBGTOP_TYPES
|
||||
|
||||
GLIB_REQUIRED=2.6.0
|
||||
GOBJECT_REQUIRED=2.26.0
|
||||
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED gobject-2.0 >= $GOBJECT_REQUIRED)
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
|
||||
@@ -108,10 +120,12 @@ AC_TYPE_OFF_T
|
||||
AC_TYPE_PID_T
|
||||
AC_TYPE_SIZE_T
|
||||
AC_STRUCT_ST_RDEV
|
||||
AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
AC_TYPE_UID_T
|
||||
|
||||
dnl Check sys/time.h
|
||||
AC_CHECK_HEADERS([sys/time.h])
|
||||
|
||||
dnl For SunOS
|
||||
AC_CHECK_TYPE(ssize_t, int)
|
||||
AC_CHECK_HEADERS(memory.h)
|
||||
@@ -211,18 +225,18 @@ AC_FUNC_ALLOCA
|
||||
AC_FUNC_MMAP
|
||||
AC_TYPE_SIGNAL
|
||||
AC_FUNC_STRFTIME
|
||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname)
|
||||
AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv sbrk strdup strtoul uname)
|
||||
|
||||
IT_PROG_INTLTOOL([0.35.0])
|
||||
# FIXME: Remove AM_GNU_GETTEXT_VERSION once autoreconf supports REQUIRE_VERSION
|
||||
AM_GNU_GETTEXT_VERSION([0.19.6])
|
||||
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
|
||||
AM_GNU_GETTEXT([external])
|
||||
|
||||
GETTEXT_PACKAGE=libgtop-2.0
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
||||
[Define to the gettext package used by the library])
|
||||
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
GLIB_DEFINE_LOCALEDIR([GTOPLOCALEDIR])
|
||||
|
||||
AC_PATH_XTRA
|
||||
|
||||
dnl For Solaris
|
||||
@@ -261,7 +275,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@:>@]),
|
||||
@@ -269,16 +284,8 @@ AC_ARG_ENABLE(fatal-warnings,
|
||||
[Define to enable fatal warnings]))
|
||||
|
||||
dnl These definitions are expanded in make.
|
||||
LIBGTOP_LIBS='-L$(libdir)'
|
||||
LIBGTOP_INCS='-I$(includedir)/libgtop-2.0'
|
||||
|
||||
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
|
||||
LIBGTOP_LIBS='-L=$(libdir)'
|
||||
LIBGTOP_INCS='-I=$(includedir)/libgtop-2.0'
|
||||
|
||||
if test x$libgtop_have_sysinfo = xyes ; then
|
||||
LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_LIBGTOP_SYSINFO"
|
||||
@@ -290,8 +297,8 @@ libgtop_save_prefix="$prefix"
|
||||
libgtop_save_exec_prefix="$exec_prefix"
|
||||
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||
test "x$exec_prefix" = xNONE && exec_prefix=$prefix
|
||||
LIBGTOP_BINDIR=`eval echo "${bindir}"`
|
||||
LIBGTOP_SERVER=`eval echo "${bindir}/libgtop_server2"`
|
||||
LIBGTOP_BINDIR=`eval echo "${libexecdir}"`
|
||||
LIBGTOP_SERVER=`eval echo "${libexecdir}/libgtop_server2"`
|
||||
prefix="$libgtop_save_prefix"
|
||||
exec_prefix="$libgtop_save_exec_prefix"
|
||||
|
||||
@@ -308,24 +315,17 @@ LIBGTOP_EXTRA_LIBS="$GLIB_LIBS $LIBGTOP_EXTRA_LIBS"
|
||||
|
||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||
|
||||
LIBGTOP_LIBS="$LIBGTOP_LIBS"
|
||||
|
||||
machine_incs="-I\$(top_srcdir)/sysdeps/$sysdeps_dir"
|
||||
|
||||
AC_SUBST(machine_incs)
|
||||
|
||||
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],
|
||||
@@ -344,7 +344,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)
|
@@ -16,7 +16,7 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
|
2
debian/rules.in
vendored
2
debian/rules.in
vendored
@@ -10,7 +10,7 @@
|
||||
i=$(shell pwd)/debian/tmp
|
||||
b=$(shell pwd)/debian/build
|
||||
|
||||
configure: configure.in
|
||||
configure: configure.ac
|
||||
@echo "--- Making configure script and configuring"
|
||||
chmod +x autogen.sh
|
||||
./autogen.sh --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \
|
||||
|
@@ -49,6 +49,7 @@ System Dependent Functions
|
||||
* glibtop_proc_map:: Process Memory Maps.
|
||||
* glibtop_netload:: Network Load.
|
||||
* glibtop_ppp:: PPP Usage.
|
||||
* glibtop_disk:: DISK Usage.
|
||||
|
||||
Common Functions
|
||||
|
||||
|
@@ -28,6 +28,7 @@
|
||||
* glibtop_proc_map:: Process Memory Maps.
|
||||
* glibtop_netload:: Network Load.
|
||||
* glibtop_ppp:: PPP Usage.
|
||||
* glibtop_disk:: DISK Usage.
|
||||
@end menu
|
||||
|
||||
@node glibtop_cpu, glibtop_mem, System Dependent, System Dependent
|
||||
@@ -1343,7 +1344,7 @@ enum @{
|
||||
@end example
|
||||
|
||||
@page
|
||||
@node glibtop_ppp, , glibtop_netload, System Dependent
|
||||
@node glibtop_ppp, glibtop_disk, glibtop_netload, System Dependent
|
||||
@subsection PPP Statistics
|
||||
|
||||
Library function @code{glibtop_get_ppp}:
|
||||
@@ -1403,6 +1404,62 @@ We're currently offline.
|
||||
We're currently online.
|
||||
@end table
|
||||
|
||||
@page
|
||||
@node glibtop_disk, , glibtop_ppp, System Dependent
|
||||
@subsection DISK Usage
|
||||
|
||||
Library function @code{glibtop_get_disk}:
|
||||
|
||||
@example
|
||||
@cartouche
|
||||
void glibtop_get_disk (glibtop_disk *buf);
|
||||
void glibtop_get_disk_l (glibtop *server, glibtop_disk *buf);
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
Declaration of @code{glibtop_disk} in @file{<glibtop/disk.h>}:
|
||||
|
||||
@example
|
||||
@cartouche
|
||||
typedef struct _glibtop_disk glibtop_disk;
|
||||
|
||||
struct _glibtop_disk
|
||||
@{
|
||||
xdisk_sectors_read [GLIBTOP_NDISK],
|
||||
xdisk_time_read [GLIBTOP_NDISK],
|
||||
xdisk_sectors_write [GLIBTOP_NDISK],
|
||||
xdisk_time_write [GLIBTOP_NDISK],
|
||||
@};
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
All DISK reads and writes are measured by @dfn{sectors} which are normally 512 bytes each.
|
||||
All disk time are measured in milliseconds which is 1/1000th of a second.
|
||||
|
||||
@table @code
|
||||
@item xdisk_sectors_read
|
||||
Number of sectors read since system boot.
|
||||
|
||||
@item xdisk_time_read
|
||||
Number of milliseconds spent reading since system boot.
|
||||
|
||||
@item xdisk_sectors_write
|
||||
Number of sectors written since system boot.
|
||||
|
||||
@item xdisk_time_write
|
||||
Number of milliseconds spent writing since system boot.
|
||||
|
||||
@end table
|
||||
|
||||
The @samp{xdisk_} are values from arrays of @code{GLIBTOP_NDISK} (defined in
|
||||
@file{<glibtop/disk.h>}) elements and contain one value for each DISK
|
||||
in the system.
|
||||
|
||||
Please note that all of the disk values are absolute values measured in
|
||||
certain units since system boot. To get bandwidth values (bytes/s), you need to call @code{glibtop_disk}, save the
|
||||
result, wait some time and then call it again and divide the differences of
|
||||
the two values by the time spent reading or writing.
|
||||
|
||||
@page
|
||||
@node Common Functions, Library Functions, System Dependent, Reference Manual
|
||||
@section Common Functions
|
||||
|
@@ -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.
|
||||
|
@@ -36,8 +36,8 @@
|
||||
Documentation License</citetitle> from the Free Software
|
||||
Foundation by visiting <ulink type="http"
|
||||
url="http://www.fsf.org">their Web site</ulink> or by writing
|
||||
to: Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.</para>
|
||||
to: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.</para>
|
||||
|
||||
<para>Many of the names used by companies to distinguish their
|
||||
products and services are claimed as trademarks. Where those
|
||||
|
@@ -29,6 +29,7 @@ glibtop_close_p
|
||||
GLIBTOP_CMND_QUIT
|
||||
GLIBTOP_CMND_SYSDEPS
|
||||
GLIBTOP_CMND_CPU
|
||||
GLIBTOP_CMND_DISK
|
||||
GLIBTOP_CMND_MEM
|
||||
GLIBTOP_CMND_SWAP
|
||||
GLIBTOP_CMND_UPTIME
|
||||
@@ -219,17 +220,8 @@ glibtop_set_parameter_l
|
||||
<INCLUDE>glibtop/procargs.h</INCLUDE>
|
||||
<SECTION>
|
||||
<FILE>procargs</FILE>
|
||||
GLIBTOP_PROC_ARGS_SIZE
|
||||
GLIBTOP_MAX_PROC_ARGS
|
||||
glibtop_proc_args
|
||||
glibtop_get_proc_args_l
|
||||
glibtop_get_proc_args
|
||||
glibtop_get_proc_args_r
|
||||
glibtop_init_proc_args_p
|
||||
glibtop_get_proc_args_p
|
||||
glibtop_init_proc_args_s
|
||||
glibtop_get_proc_args_s
|
||||
glibtop_get_proc_argv_l
|
||||
glibtop_get_proc_argv
|
||||
</SECTION>
|
||||
|
||||
@@ -420,26 +412,8 @@ glibtop_get_proc_uid_s
|
||||
<INCLUDE>glibtop/proctime.h</INCLUDE>
|
||||
<SECTION>
|
||||
<FILE>proctime</FILE>
|
||||
GLIBTOP_PROC_TIME_START_TIME
|
||||
GLIBTOP_PROC_TIME_RTIME
|
||||
GLIBTOP_PROC_TIME_UTIME
|
||||
GLIBTOP_PROC_TIME_STIME
|
||||
GLIBTOP_PROC_TIME_CUTIME
|
||||
GLIBTOP_PROC_TIME_CSTIME
|
||||
GLIBTOP_PROC_TIME_TIMEOUT
|
||||
GLIBTOP_PROC_TIME_IT_REAL_VALUE
|
||||
GLIBTOP_PROC_TIME_FREQUENCY
|
||||
GLIBTOP_PROC_TIME_XCPU_UTIME
|
||||
GLIBTOP_PROC_TIME_XCPU_STIME
|
||||
GLIBTOP_MAX_PROC_TIME
|
||||
glibtop_proc_time
|
||||
glibtop_get_proc_time
|
||||
glibtop_get_proc_time_r
|
||||
glibtop_get_proc_time_l
|
||||
glibtop_init_proc_time_p
|
||||
glibtop_get_proc_time_p
|
||||
glibtop_init_proc_time_s
|
||||
glibtop_get_proc_time_s
|
||||
</SECTION>
|
||||
|
||||
<INCLUDE>glibtop/signal.h</INCLUDE>
|
||||
@@ -515,10 +489,6 @@ glibtop_send_version
|
||||
<INCLUDE>glibtop/proclist.h</INCLUDE>
|
||||
<SECTION>
|
||||
<FILE>proclist</FILE>
|
||||
GLIBTOP_PROCLIST_NUMBER
|
||||
GLIBTOP_PROCLIST_TOTAL
|
||||
GLIBTOP_PROCLIST_SIZE
|
||||
GLIBTOP_MAX_PROCLIST
|
||||
GLIBTOP_KERN_PROC_ALL
|
||||
GLIBTOP_KERN_PROC_PID
|
||||
GLIBTOP_KERN_PROC_PGRP
|
||||
@@ -532,12 +502,6 @@ GLIBTOP_EXCLUDE_SYSTEM
|
||||
GLIBTOP_EXCLUDE_NOTTY
|
||||
glibtop_proclist
|
||||
glibtop_get_proclist
|
||||
glibtop_get_proclist_r
|
||||
glibtop_get_proclist_l
|
||||
glibtop_init_proclist_p
|
||||
glibtop_get_proclist_p
|
||||
glibtop_init_proclist_s
|
||||
glibtop_get_proclist_s
|
||||
</SECTION>
|
||||
|
||||
<INCLUDE>glibtop/sem_limits.h</INCLUDE>
|
||||
@@ -715,6 +679,25 @@ glibtop_init_cpu_s
|
||||
glibtop_get_cpu_s
|
||||
</SECTION>
|
||||
|
||||
<INCLUDE>glibtop/disk.h</INCLUDE>
|
||||
<SECTION>
|
||||
<FILE>disk</FILE>
|
||||
LIBTOP_XDISK_SECTORS_READ
|
||||
GLIBTOP_XDISK_TIME_READ
|
||||
GLIBTOP_XDISK_SECTORS_WRITE
|
||||
GLIBTOP_XDISK_TIME_WRITE
|
||||
GLIBTOP_MAX_DISK
|
||||
GLIBTOP_NDISK
|
||||
glibtop_disk
|
||||
glibtop_get_disk
|
||||
glibtop_get_disk_r
|
||||
glibtop_get_disk_l
|
||||
glibtop_init_disk_p
|
||||
glibtop_get_disk_p
|
||||
glibtop_init_disk_s
|
||||
glibtop_get_disk_s
|
||||
</SECTION>
|
||||
|
||||
<INCLUDE>glibtop/swap.h</INCLUDE>
|
||||
<SECTION>
|
||||
<FILE>swap</FILE>
|
||||
|
@@ -1,16 +1,17 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/sysdeps/$(sysdeps_dir) \
|
||||
-DGTOPLOCALEDIR=\"$(localedir)\" \
|
||||
$(GLIB_CFLAGS)
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
|
||||
DEFS = @DEFS@
|
||||
|
||||
LDFLAGS = $(LIBGTOP_EXTRA_LIBS)
|
||||
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 disk diskio sysinfo
|
||||
|
||||
first_SOURCES = first.c
|
||||
first_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
@@ -33,6 +34,9 @@ mountlist_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
smp_SOURCES = smp.c
|
||||
smp_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
||||
|
||||
disk_SOURCES = disk.c
|
||||
disk_LDADD = $(top_builddir)/lib/libgtop-2.0.la -lm
|
||||
|
||||
timings_SOURCES = timings.c
|
||||
timings_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
@@ -42,6 +46,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
|
||||
|
||||
@@ -57,8 +62,14 @@ 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
|
||||
|
||||
diskio_SOURCES = diskio.c
|
||||
diskio_LDADD = $(top_builddir)/lib/libgtop-2.0.la
|
||||
|
||||
sysinfo_SOURCES = sysinfo.c
|
||||
sysinfo_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)
|
||||
|
65
examples/disk.c
Normal file
65
examples/disk.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by James Dominic P. Guana <guana.histark@gmail.com>, May 2020.
|
||||
|
||||
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 <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/disk.h>
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
{
|
||||
glibtop_disk disk;
|
||||
char separator [BUFSIZ];
|
||||
int ndisk, i;
|
||||
|
||||
glibtop_init();
|
||||
|
||||
glibtop_get_disk (&disk);
|
||||
|
||||
ndisk = glibtop_global_server->ndisk ? glibtop_global_server->ndisk : 1;
|
||||
|
||||
memset (separator, '-', 91);
|
||||
separator [92] = '\0';
|
||||
|
||||
printf("\n\n");
|
||||
printf ("ELAPSE ");
|
||||
printf ("Read (b) Time Read (ms) Write (b) Time Write (ms)\n");
|
||||
printf ("%s\n", separator);
|
||||
|
||||
for (i = 0; i < ndisk; i++) {
|
||||
printf ("DISK %3d : %15lu %15lu %15lu %15lu\n", i,
|
||||
(unsigned long) disk.xdisk_sectors_read [i] * 512,
|
||||
(unsigned long) disk.xdisk_time_read [i],
|
||||
(unsigned long) disk.xdisk_sectors_write [i] * 512,
|
||||
(unsigned long) disk.xdisk_time_write [i]);
|
||||
|
||||
}
|
||||
|
||||
printf ("%s\n\n\n", separator);
|
||||
|
||||
exit (0);
|
||||
}
|
39
examples/diskio.c
Normal file
39
examples/diskio.c
Normal 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;
|
||||
}
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
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;
|
||||
}
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -71,7 +71,9 @@ main (int argc, char *argv [])
|
||||
|
||||
printf ("Host = '%s' - %u\n\n", buffer, port);
|
||||
|
||||
#ifdef HAVE_SBRK
|
||||
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
||||
#endif
|
||||
|
||||
for (c = 0; c < PROFILE_COUNT; c++) {
|
||||
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
||||
@@ -79,7 +81,9 @@ main (int argc, char *argv [])
|
||||
g_free (mount_entries);
|
||||
}
|
||||
|
||||
#ifdef HAVE_SBRK
|
||||
printf ("sbrk (0) = %p\n\n", sbrk (0));
|
||||
#endif
|
||||
|
||||
mount_entries = glibtop_get_mountlist (&mount_list, 1);
|
||||
|
||||
@@ -99,7 +103,7 @@ main (int argc, char *argv [])
|
||||
glibtop_get_fsusage (&fsusage,
|
||||
mount_entries [index].mountdir);
|
||||
|
||||
printf ("%-16s %9Lu %9Lu %9Lu %9Lu %9Lu %9d\n",
|
||||
printf ("%-16s %9" G_GUINT64_FORMAT " %9" G_GUINT64_FORMAT " %9" G_GUINT64_FORMAT " %9" G_GUINT64_FORMAT " %9" G_GUINT64_FORMAT " %9d\n",
|
||||
mount_entries [index].mountdir,
|
||||
fsusage.blocks, fsusage.bfree,
|
||||
fsusage.bavail, fsusage.files,
|
||||
@@ -108,7 +112,9 @@ main (int argc, char *argv [])
|
||||
|
||||
g_free (mount_entries);
|
||||
|
||||
#ifdef HAVE_SBRK
|
||||
printf ("\nsbrk (0) = %p\n\n", sbrk (0));
|
||||
#endif
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
|
@@ -14,8 +14,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -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);
|
||||
@@ -66,7 +66,7 @@ main (int argc, char *argv [])
|
||||
glibtop_netload netload;
|
||||
unsigned method, count, port;
|
||||
struct in_addr addr, subnet;
|
||||
char *address_string, *subnet_string;
|
||||
char address_string[INET_ADDRSTRLEN], subnet_string[INET_ADDRSTRLEN];
|
||||
char address6_string[INET6_ADDRSTRLEN], prefix6_string[INET6_ADDRSTRLEN];
|
||||
char *hwaddress_string;
|
||||
char buffer [BUFSIZ];
|
||||
@@ -105,9 +105,8 @@ main (int argc, char *argv [])
|
||||
addr.s_addr = netload.address;
|
||||
subnet.s_addr = netload.subnet;
|
||||
|
||||
address_string = g_strdup (inet_ntoa (addr));
|
||||
subnet_string = g_strdup (inet_ntoa (subnet));
|
||||
|
||||
inet_ntop (AF_INET, &addr, address_string, INET_ADDRSTRLEN);
|
||||
inet_ntop (AF_INET, &subnet, subnet_string, INET_ADDRSTRLEN);
|
||||
inet_ntop (AF_INET6, netload.address6, address6_string, INET6_ADDRSTRLEN);
|
||||
inet_ntop (AF_INET6, netload.prefix6, prefix6_string, INET6_ADDRSTRLEN);
|
||||
|
||||
@@ -118,22 +117,22 @@ main (int argc, char *argv [])
|
||||
"\tAddress:\t\t0x%08x - %s\n"
|
||||
"\tSubnet:\t\t\t0x%08x - %s\n\n"
|
||||
"\tMTU:\t\t\t%d\n"
|
||||
"\tCollisions:\t\t%llu\n\n"
|
||||
"\tPackets In:\t\t%llu\n"
|
||||
"\tPackets Out:\t\t%llu\n"
|
||||
"\tPackets Total:\t\t%llu\n\n"
|
||||
"\tBytes In:\t\t%llu\n"
|
||||
"\tBytes Out:\t\t%llu\n"
|
||||
"\tBytes Total:\t\t%llu\n\n"
|
||||
"\tErrors In:\t\t%llu\n"
|
||||
"\tErrors Out:\t\t%llu\n"
|
||||
"\tErrors Total:\t\t%llu\n\n"
|
||||
"\tCollisions:\t\t%" G_GUINT64_FORMAT "\n\n"
|
||||
"\tPackets In:\t\t%" G_GUINT64_FORMAT "\n"
|
||||
"\tPackets Out:\t\t%" G_GUINT64_FORMAT "\n"
|
||||
"\tPackets Total:\t\t%" G_GUINT64_FORMAT "\n\n"
|
||||
"\tBytes In:\t\t%" G_GUINT64_FORMAT "\n"
|
||||
"\tBytes Out:\t\t%" G_GUINT64_FORMAT "\n"
|
||||
"\tBytes Total:\t\t%" G_GUINT64_FORMAT "\n\n"
|
||||
"\tErrors In:\t\t%" G_GUINT64_FORMAT "\n"
|
||||
"\tErrors Out:\t\t%" G_GUINT64_FORMAT "\n"
|
||||
"\tErrors Total:\t\t%" G_GUINT64_FORMAT "\n\n"
|
||||
"\tAddress6:\t\t%s\n"
|
||||
"\tPrefix6:\t\t%s\n"
|
||||
"\tScope6:\t\t\t%#03x\n\n"
|
||||
"\tHarware Address:\t%s\n\n",
|
||||
netload.flags,
|
||||
netload.if_flags,
|
||||
(unsigned long long)netload.flags,
|
||||
(unsigned long long)netload.if_flags,
|
||||
(guint32) netload.address, address_string,
|
||||
(guint32) netload.subnet, subnet_string,
|
||||
netload.mtu,
|
||||
@@ -153,9 +152,6 @@ main (int argc, char *argv [])
|
||||
hwaddress_string);
|
||||
|
||||
|
||||
g_free (address_string);
|
||||
g_free (subnet_string);
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
exit (0);
|
||||
|
@@ -3,6 +3,7 @@
|
||||
#endif
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/sysinfo.h>
|
||||
|
||||
#include <glibtop/union.h>
|
||||
|
||||
@@ -17,21 +18,68 @@
|
||||
#define HEADER_PPRINT(FUNC) printf("### " #FUNC " ###\nsizeof *buf = %lu B\n", \
|
||||
(unsigned long) sizeof buf)
|
||||
|
||||
#define PPRINT(DATA, FORMAT) printf("\t%4lu B %3lu " #DATA " = " FORMAT "\n", \
|
||||
#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 { \
|
||||
#define PPRINT_GUINT64(DATA) PPRINT(DATA, G_GUINT64_FORMAT)
|
||||
|
||||
#define PPRINT_FLAGS(DATA) printf("\t%4lu B %3lu " "flags" " = " "%#llx" "\n", \
|
||||
(unsigned long) sizeof buf.DATA, (unsigned long) buf_offsetof(DATA), (unsigned long long)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); ++i) { \
|
||||
if (!buf.ARRAY[i] && i < (SIZE - 1) && !buf.ARRAY[i + 1]) { \
|
||||
do { i++; } while (i < SIZE && !buf.ARRAY[i]); \
|
||||
printf("..., "); \
|
||||
} else { \
|
||||
printf(".%zd = %" FORMAT ", ", i, buf.ARRAY[i]); \
|
||||
} \
|
||||
} \
|
||||
printf("}\n"); \
|
||||
} while(0)
|
||||
|
||||
#define PPRINT_ENTRY_ARRAY(ARRAY, SIZE) 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]); \
|
||||
printf("\t%4lu B " #ARRAY "[%lu/%lu] = { \n", \
|
||||
(unsigned long) sizeof buf->ARRAY, (unsigned long)(SIZE), \
|
||||
(unsigned long) G_N_ELEMENTS(buf->ARRAY)); \
|
||||
for(i = 0; i < SIZE; ++i) { \
|
||||
if (buf->ARRAY[i].values) { \
|
||||
printf ("\t[ "); \
|
||||
PPRINT_HASHTABLE(buf->ARRAY[i].values); \
|
||||
printf ("]\n"); \
|
||||
} \
|
||||
} \
|
||||
printf("} "); \
|
||||
} while(0)
|
||||
|
||||
#define PPRINT_HASHTABLE(HASHTABLE) do { \
|
||||
g_hash_table_foreach (HASHTABLE, (GHFunc)pprint_hashtable_item, NULL); \
|
||||
} while(0)
|
||||
|
||||
#define FOOTER_PPRINT() putchar('\n');
|
||||
|
||||
static void pprint_hashtable_item(gchar* key, gchar* value, gpointer user_data)
|
||||
{
|
||||
printf ("'%s': '%s', ", key, value);
|
||||
}
|
||||
static void pprint_get_sysinfo(void)
|
||||
{
|
||||
const glibtop_sysinfo *buf;
|
||||
|
||||
buf = glibtop_get_sysinfo();
|
||||
|
||||
HEADER_PPRINT(glibtop_get_sysinfo);
|
||||
//PPRINT_FLAGS(flags);
|
||||
// PPRINT_GUINT64(ncpu);
|
||||
PPRINT_ENTRY_ARRAY(cpuinfo, buf->ncpu);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
static void pprint_get_cpu(void)
|
||||
{
|
||||
@@ -40,25 +88,25 @@ static void pprint_get_cpu(void)
|
||||
glibtop_get_cpu(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_cpu);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(user, "%llu");
|
||||
PPRINT(nice, "%llu");
|
||||
PPRINT(sys, "%llu");
|
||||
PPRINT(idle, "%llu");
|
||||
PPRINT(iowait, "%llu");
|
||||
PPRINT(irq, "%llu");
|
||||
PPRINT(softirq, "%llu");
|
||||
PPRINT(frequency, "%llu");
|
||||
PPRINT_ARRAY(xcpu_total, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_user, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_nice, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_sys, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_idle, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_iowait, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_irq, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT_ARRAY(xcpu_softirq, GLIBTOP_NCPU, "%llu");
|
||||
PPRINT(xcpu_flags, "%llx");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(total);
|
||||
PPRINT_GUINT64(user);
|
||||
PPRINT_GUINT64(nice);
|
||||
PPRINT_GUINT64(sys);
|
||||
PPRINT_GUINT64(idle);
|
||||
PPRINT_GUINT64(iowait);
|
||||
PPRINT_GUINT64(irq);
|
||||
PPRINT_GUINT64(softirq);
|
||||
PPRINT_GUINT64(frequency);
|
||||
PPRINT_ARRAY(xcpu_total, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_user, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_nice, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_sys, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_idle, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_iowait, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_irq, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_ARRAY(xcpu_softirq, GLIBTOP_NCPU, G_GUINT64_FORMAT);
|
||||
PPRINT_FLAGS(xcpu_flags);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -72,15 +120,15 @@ static void pprint_get_fsusage(const char *mountpoint)
|
||||
|
||||
HEADER_PPRINT(glibtop_get_fsusage);
|
||||
printf("pprint_get_fsusage (mountpoint = \"%s\"\n", mountpoint);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(blocks, "%llu");
|
||||
PPRINT(bfree, "%llu");
|
||||
PPRINT(bavail, "%llu");
|
||||
PPRINT(files, "%llu");
|
||||
PPRINT(ffree, "%llu");
|
||||
PPRINT(block_size, "%u");
|
||||
PPRINT(read, "%llu");
|
||||
PPRINT(write, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(blocks);
|
||||
PPRINT_GUINT64(bfree);
|
||||
PPRINT_GUINT64(bavail);
|
||||
PPRINT_GUINT64(files);
|
||||
PPRINT_GUINT64(ffree);
|
||||
PPRINT(block_size, "u");
|
||||
PPRINT_GUINT64(read);
|
||||
PPRINT_GUINT64(write);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -93,11 +141,11 @@ static void pprint_get_loadavg(void)
|
||||
glibtop_get_loadavg(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_loadavg);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT_ARRAY(loadavg, 3, "%f");
|
||||
PPRINT(nr_running, "%llu");
|
||||
PPRINT(nr_tasks, "%llu");
|
||||
PPRINT(last_pid, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_ARRAY(loadavg, 3, "f");
|
||||
PPRINT_GUINT64(nr_running);
|
||||
PPRINT_GUINT64(nr_tasks);
|
||||
PPRINT_GUINT64(last_pid);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -110,15 +158,15 @@ static void pprint_get_mem(void)
|
||||
glibtop_get_mem(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_mem);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(used, "%llu");
|
||||
PPRINT(free, "%llu");
|
||||
PPRINT(shared, "%llu");
|
||||
PPRINT(buffer, "%llu");
|
||||
PPRINT(cached, "%llu");
|
||||
PPRINT(user, "%llu");
|
||||
PPRINT(locked, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(total);
|
||||
PPRINT_GUINT64(used);
|
||||
PPRINT_GUINT64(free);
|
||||
PPRINT_GUINT64(shared);
|
||||
PPRINT_GUINT64(buffer);
|
||||
PPRINT_GUINT64(cached);
|
||||
PPRINT_GUINT64(user);
|
||||
PPRINT_GUINT64(locked);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -134,12 +182,12 @@ static void pprint_get_mountlist(gboolean allfs)
|
||||
|
||||
HEADER_PPRINT(glibtop_get_mountlist);
|
||||
printf("glibtop_get_mountlist (allfs = %d)\n", allfs);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(number, "%llu");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(size, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(number);
|
||||
PPRINT_GUINT64(total);
|
||||
PPRINT_GUINT64(size);
|
||||
|
||||
printf("\t%4llu B entries[%llu] = \n\t\t{\n", buf.total, buf.number);
|
||||
printf("\t%4" G_GUINT64_FORMAT " B entries[%" G_GUINT64_FORMAT "] = \n\t\t{\n", buf.total, buf.number);
|
||||
|
||||
for(i = 0; i < buf.number; ++i)
|
||||
{
|
||||
@@ -147,7 +195,7 @@ static void pprint_get_mountlist(gboolean allfs)
|
||||
" .devname = \"%s\","
|
||||
" .mountir = \"%s\","
|
||||
" .type = \"%s\" }\n",
|
||||
(unsigned long) i, entries[i].dev,
|
||||
(unsigned long) i, (unsigned long long)entries[i].dev,
|
||||
entries[i].devname,
|
||||
entries[i].mountdir,
|
||||
entries[i].type);
|
||||
@@ -168,14 +216,14 @@ static void pprint_get_msg_limits(void)
|
||||
glibtop_get_msg_limits(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_msg_limits);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(msgpool, "%llu");
|
||||
PPRINT(msgmap, "%llu");
|
||||
PPRINT(msgmax, "%llu");
|
||||
PPRINT(msgmnb, "%llu");
|
||||
PPRINT(msgmni, "%llu");
|
||||
PPRINT(msgssz, "%llu");
|
||||
PPRINT(msgtql, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(msgpool);
|
||||
PPRINT_GUINT64(msgmap);
|
||||
PPRINT_GUINT64(msgmax);
|
||||
PPRINT_GUINT64(msgmnb);
|
||||
PPRINT_GUINT64(msgmni);
|
||||
PPRINT_GUINT64(msgssz);
|
||||
PPRINT_GUINT64(msgtql);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -189,7 +237,7 @@ static void pprint_get_netload(const char *iface)
|
||||
|
||||
HEADER_PPRINT(glibtop_get_netload);
|
||||
printf("glibtop_get_netload (iface = \"%s\")\n", iface);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT_FLAGS(flags);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -223,12 +271,12 @@ static void pprint_get_swap(void)
|
||||
glibtop_get_swap(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_swap);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(total, "%llu");
|
||||
PPRINT(used, "%llu");
|
||||
PPRINT(free, "%llu");
|
||||
PPRINT(pagein, "%llu");
|
||||
PPRINT(pageout, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(total);
|
||||
PPRINT_GUINT64(used);
|
||||
PPRINT_GUINT64(free);
|
||||
PPRINT_GUINT64(pagein);
|
||||
PPRINT_GUINT64(pageout);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -241,10 +289,10 @@ static void pprint_get_uptime(void)
|
||||
glibtop_get_uptime(&buf);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_uptime);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(uptime, "%f");
|
||||
PPRINT(idletime, "%f");
|
||||
PPRINT(boot_time, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT(uptime, "f");
|
||||
PPRINT(idletime, "f");
|
||||
PPRINT_GUINT64(boot_time);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -258,12 +306,12 @@ static void pprint_get_proc_kernel(pid_t pid)
|
||||
glibtop_get_proc_kernel(&buf, pid);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_proc_kernel);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(k_flags, "%llu");
|
||||
PPRINT(min_flt, "%llu");
|
||||
PPRINT(maj_flt, "%llu");
|
||||
PPRINT(cmin_flt, "%llu");
|
||||
PPRINT(cmaj_flt, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(k_flags);
|
||||
PPRINT_GUINT64(min_flt);
|
||||
PPRINT_GUINT64(maj_flt);
|
||||
PPRINT_GUINT64(cmin_flt);
|
||||
PPRINT_GUINT64(cmaj_flt);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
@@ -275,22 +323,45 @@ static void pprint_get_proc_mem(pid_t pid)
|
||||
glibtop_get_proc_mem(&buf, pid);
|
||||
|
||||
HEADER_PPRINT(glibtop_get_proc_mem);
|
||||
PPRINT(flags, "%#llx");
|
||||
PPRINT(size, "%llu");
|
||||
PPRINT(vsize, "%llu");
|
||||
PPRINT(resident, "%llu");
|
||||
PPRINT(share, "%llu");
|
||||
PPRINT(rss, "%llu");
|
||||
PPRINT(rss_rlim, "%llu");
|
||||
PPRINT_FLAGS(flags);
|
||||
PPRINT_GUINT64(size);
|
||||
PPRINT_GUINT64(vsize);
|
||||
PPRINT_GUINT64(resident);
|
||||
PPRINT_GUINT64(share);
|
||||
PPRINT_GUINT64(rss);
|
||||
PPRINT_GUINT64(rss_rlim);
|
||||
FOOTER_PPRINT();
|
||||
}
|
||||
|
||||
|
||||
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(flags);
|
||||
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()
|
||||
{
|
||||
glibtop_init();
|
||||
|
||||
pprint_get_sysinfo();
|
||||
pprint_get_cpu();
|
||||
|
||||
pprint_get_fsusage("/");
|
||||
@@ -317,6 +388,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();
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -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,47 +140,32 @@ 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 "
|
||||
"private_clean:%lluKiB private_dirty: %lluKiB\n",
|
||||
maps[i].flags,
|
||||
g_print("smaps flags:%#llx size:%" G_GUINT64_FORMAT "KiB rss:%" G_GUINT64_FORMAT "KiB "
|
||||
"shared_clean:%" G_GUINT64_FORMAT "Kib shared_dirty:%" G_GUINT64_FORMAT "KiB "
|
||||
"private_clean:%" G_GUINT64_FORMAT "KiB private_dirty: %" G_GUINT64_FORMAT "KiB\n",
|
||||
(unsigned long long)maps[i].flags,
|
||||
maps[i].size >> 10,
|
||||
maps[i].rss >> 10,
|
||||
maps[i].shared_clean >> 10,
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -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
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -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),
|
||||
|
48
examples/sysinfo.c
Normal file
48
examples/sysinfo.c
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Dr. James Dominic P. Guana <jdpguana@histark.com>, August 2021.
|
||||
|
||||
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 <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/sysinfo.h>
|
||||
|
||||
int
|
||||
main (int argc, char *argv [])
|
||||
{
|
||||
char *model;
|
||||
const glibtop_sysinfo * sysinfo;
|
||||
|
||||
glibtop_init();
|
||||
sysinfo = glibtop_get_sysinfo ();
|
||||
model = g_hash_table_lookup (sysinfo->cpuinfo [1].values, "model name");
|
||||
|
||||
printf ("\nProcessor Model: %s\n", g_strdup (model));
|
||||
printf ("Number of Cores: %lu\n\n", sysinfo->ncpu);
|
||||
|
||||
glibtop_close ();
|
||||
|
||||
exit (0);
|
||||
}
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -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);
|
||||
@@ -394,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,
|
||||
@@ -411,6 +449,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);
|
||||
|
54
features.def
54
features.def
@@ -1,27 +1,29 @@
|
||||
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|disk
|
||||
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)
|
||||
void|proc_io|pid_t(pid)
|
||||
|
||||
|
79
glibtop.h
79
glibtop.h
@@ -15,18 +15,24 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_H__
|
||||
#define __GLIBTOP_H__
|
||||
|
||||
/* for pid_t, uid_t, gid_t */
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef struct _glibtop glibtop;
|
||||
typedef struct _glibtop_machine glibtop_machine;
|
||||
|
||||
/**
|
||||
* LIBGTOP_CHECK_VERSION
|
||||
@@ -54,10 +60,6 @@ LIBGTOP_MICRO_VERSION >= (micro)))
|
||||
|
||||
#include <glibtop_server.h>
|
||||
|
||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||
#include <glibtop_machine.h>
|
||||
#endif
|
||||
|
||||
#ifndef GLIBTOP_MOUNTENTRY_LEN
|
||||
#define GLIBTOP_MOUNTENTRY_LEN 79
|
||||
#endif
|
||||
@@ -68,34 +70,6 @@ LIBGTOP_MICRO_VERSION >= (micro)))
|
||||
#include <glibtop/close.h>
|
||||
|
||||
|
||||
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||
|
||||
struct _glibtop
|
||||
{
|
||||
unsigned flags;
|
||||
unsigned method; /* Server Method */
|
||||
unsigned error_method; /* Error Method */
|
||||
glibtop_machine machine; /* Machine dependent data */
|
||||
int input [2]; /* Pipe client <- server */
|
||||
int output [2]; /* Pipe client -> server */
|
||||
int socket; /* Accepted connection of a socket */
|
||||
int ncpu; /* Number of CPUs, zero if single-processor */
|
||||
int real_ncpu; /* Real number of CPUs. Only ncpu are monitored */
|
||||
unsigned long os_version_code; /* Version code of the operating system */
|
||||
const char *name; /* Program name for error messages */
|
||||
const char *server_command; /* Command used to invoke server */
|
||||
const char *server_host; /* Host the server should run on */
|
||||
const char *server_user; /* Name of the user on the target host */
|
||||
const char *server_rsh; /* Command used to connect to the target host */
|
||||
unsigned long features; /* Server is required for this features */
|
||||
unsigned long server_port; /* Port on which daemon is listening */
|
||||
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
||||
glibtop_sysdeps required; /* Required feature list */
|
||||
pid_t pid; /* PID of the server */
|
||||
};
|
||||
|
||||
#else /* !HAVE_GLIBTOP_MACHINE_H */
|
||||
|
||||
struct _glibtop
|
||||
{
|
||||
unsigned flags;
|
||||
@@ -117,27 +91,60 @@ struct _glibtop
|
||||
glibtop_sysdeps sysdeps; /* Detailed feature list */
|
||||
glibtop_sysdeps required; /* Required feature list */
|
||||
pid_t pid; /* PID of the server */
|
||||
};
|
||||
|
||||
#endif /* HAVE_GLIBTOP_MACHINE_H */
|
||||
uid_t uid;
|
||||
uid_t euid;
|
||||
gid_t gid;
|
||||
gid_t egid;
|
||||
|
||||
glibtop_machine *machine; /* Machine dependent data */
|
||||
|
||||
int ndisk; /* Number of DISKs, zero if single-disk. This pertains to disk volumes */
|
||||
int real_ndisk; /* Number of PHYSICAL DISKs. Only ndisk is monitored for now */
|
||||
};
|
||||
|
||||
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: (skip)
|
||||
* @server_ptr: (out):
|
||||
* @features:
|
||||
* @flags:
|
||||
*
|
||||
* Returns: (transfer none):
|
||||
*/
|
||||
glibtop *
|
||||
glibtop_init_s (glibtop **server_ptr,
|
||||
unsigned long features,
|
||||
unsigned flags);
|
||||
|
||||
GType glibtop_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@@ -2,13 +2,16 @@ glibtopdir = $(includedir)/libgtop-2.0/glibtop
|
||||
|
||||
glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||
sem_limits.h uptime.h command.h mem.h proclist.h \
|
||||
proctime.h shm_limits.h version.h cpu.h msg_limits.h \
|
||||
proctime.h shm_limits.h cpu.h disk.h msg_limits.h \
|
||||
procmem.h procuid.h swap.h \
|
||||
procsegment.h sysdeps.h global.h \
|
||||
procsignal.h union.h gnuserv.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
|
||||
noinst_HEADERS = error.h write.h read_data.h read.h init_hooks.h machine.h \
|
||||
version.h
|
||||
|
||||
|
@@ -19,8 +19,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_CALL_VECTOR_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_CLOSE_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_COMMAND_H__
|
||||
@@ -59,8 +59,10 @@ 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_CMND_DISK 29
|
||||
|
||||
#define GLIBTOP_MAX_CMND 28
|
||||
#define GLIBTOP_MAX_CMND 30
|
||||
|
||||
#define _GLIBTOP_PARAM_SIZE 16
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_CPU_H__
|
||||
@@ -54,7 +54,7 @@ G_BEGIN_DECLS
|
||||
Yes we are :)
|
||||
Nobody should really be using more than 32 processors.
|
||||
*/
|
||||
#define GLIBTOP_NCPU 32
|
||||
#define GLIBTOP_NCPU 1024
|
||||
|
||||
typedef struct _glibtop_cpu glibtop_cpu;
|
||||
|
||||
|
86
include/glibtop/disk.h
Normal file
86
include/glibtop/disk.h
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by James Dominic P. Guana <guana.histark@gmail.com>, May 2020.
|
||||
|
||||
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_DISK_H__
|
||||
#define __GLIBTOP_DISK_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GLIBTOP_XDISK_SECTORS_READ 0
|
||||
#define GLIBTOP_XDISK_TIME_READ 1
|
||||
#define GLIBTOP_XDISK_SECTORS_WRITE 2
|
||||
#define GLIBTOP_XDISK_TIME_WRITE 3
|
||||
|
||||
#define GLIBTOP_MAX_DISK 4
|
||||
|
||||
/* Nobody should really be using more than 4 disk.
|
||||
Yes we are :)
|
||||
Nobody should really be using more than 32 disk.
|
||||
*/
|
||||
#define GLIBTOP_NDISK 1024
|
||||
|
||||
typedef struct _glibtop_disk glibtop_disk;
|
||||
|
||||
struct _partition_info
|
||||
{
|
||||
char name[256];
|
||||
char type[256];
|
||||
char raid_num[256];
|
||||
int max;
|
||||
};
|
||||
|
||||
typedef struct _partition_info partition_info;
|
||||
|
||||
struct _glibtop_disk
|
||||
{
|
||||
guint64 flags; /* NOT USED YET */
|
||||
guint64 xdisk_sectors_read [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_SECTORS_READ */
|
||||
guint64 xdisk_time_read [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_TIME_READ */
|
||||
guint64 xdisk_sectors_write [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_SECTORS_WRITE */
|
||||
guint64 xdisk_time_write [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_TIME_WRITE */
|
||||
guint64 xdisk_flags;
|
||||
};
|
||||
|
||||
void glibtop_get_disk (glibtop_disk *buf);
|
||||
|
||||
#if GLIBTOP_SUID_DISK
|
||||
#define glibtop_get_disk_r glibtop_get_disk_p
|
||||
#else
|
||||
#define glibtop_get_disk_r glibtop_get_disk_s
|
||||
#endif
|
||||
|
||||
void glibtop_get_disk_l (glibtop *server, glibtop_disk *buf);
|
||||
|
||||
#if GLIBTOP_SUID_DISK
|
||||
void _glibtop_init_disk_p (glibtop *server);
|
||||
void glibtop_get_disk_p (glibtop *server, glibtop_disk *buf);
|
||||
#else
|
||||
void _glibtop_init_disk_s (glibtop *server);
|
||||
void glibtop_get_disk_s (glibtop *server, glibtop_disk *buf);
|
||||
#endif
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
|
||||
@@ -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, "%s:%d %s(): " fmt, __FILE__, __LINE__, __func__, ##__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
|
||||
|
@@ -14,8 +14,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_FSUSAGE_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_GLOBAL_H__
|
||||
@@ -28,17 +28,11 @@
|
||||
|
||||
#endif /* _IN_LIBGTOP */
|
||||
|
||||
#if TIME_WITH_SYS_TIME
|
||||
#if HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
# include <time.h>
|
||||
#else
|
||||
# if HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
# else
|
||||
# include <time.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_LOADAVG_H__
|
||||
|
22
include/glibtop/machine.h
Normal file
22
include/glibtop/machine.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef GLIBTOP_SYSDEPS_COMMON_MACHINE_H_1437506041
|
||||
#define GLIBTOP_SYSDEPS_COMMON_MACHINE_H_1437506041
|
||||
|
||||
#include <glib.h>
|
||||
#include <glibtop_machine.h>
|
||||
|
||||
/* private */
|
||||
static inline void
|
||||
glibtop_machine_new(glibtop *server)
|
||||
{
|
||||
server->machine = g_new0(glibtop_machine, 1);
|
||||
}
|
||||
|
||||
/* private */
|
||||
static inline void
|
||||
glibtop_machine_delete(glibtop *server)
|
||||
{
|
||||
g_free(server->machine);
|
||||
server->machine = NULL;
|
||||
}
|
||||
|
||||
#endif /* GLIBTOP_SYSDEPS_COMMON_MACHINE_H_1437506041 */
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_MEM_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_MOUNTLIST_H__
|
||||
@@ -53,6 +53,38 @@ struct _glibtop_mountlist
|
||||
guint64 size; /* GLIBTOP_MOUNTLIST_SIZE */
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_mountlist:
|
||||
* @buf:
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_mountlist_r:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_mountlist_s:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_mountlist_l:
|
||||
* @buf: (out):
|
||||
* @all_fs:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
glibtop_mountentry *
|
||||
glibtop_get_mountlist(glibtop_mountlist *buf, int all_fs);
|
||||
|
||||
@@ -64,6 +96,8 @@ glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf, int all_fs);
|
||||
glibtop_mountentry *
|
||||
glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs);
|
||||
|
||||
GType glibtop_mountlist_get_type (void) G_GNUC_CONST;
|
||||
GType glibtop_mountentry_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_MSG_LIMITS_H__
|
||||
|
@@ -13,8 +13,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_NETLIST_H__
|
||||
@@ -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 full): 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 full): 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 full): 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 full): an array of network
|
||||
* interface names.
|
||||
*/
|
||||
char** glibtop_get_netlist_s (glibtop *server, glibtop_netlist *buf);
|
||||
#endif
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_NETLOAD_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_OPEN_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PARAMETER_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PPP_H__
|
||||
|
@@ -13,8 +13,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCAFFINITY_H__
|
||||
@@ -29,6 +29,7 @@ typedef struct _glibtop_proc_affinity glibtop_proc_affinity;
|
||||
|
||||
#define GLIBTOP_PROC_AFFINITY_NUMBER 0
|
||||
#define GLIBTOP_PROC_AFFINITY_ALL 1
|
||||
#define GLIBTOP_MAX_PROC_AFFINITY 2
|
||||
|
||||
struct _glibtop_proc_affinity
|
||||
{
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROC_ARGS_H__
|
||||
@@ -79,6 +79,15 @@ char **
|
||||
glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf,
|
||||
pid_t pid, unsigned max_len);
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_argv:
|
||||
* @buf:
|
||||
* @pid:
|
||||
* @max_len:
|
||||
*
|
||||
* Returns: (transfer full):
|
||||
*/
|
||||
|
||||
char **
|
||||
glibtop_get_proc_argv (glibtop_proc_args *buf, pid_t pid, unsigned max_len);
|
||||
|
||||
|
91
include/glibtop/procio.h
Normal file
91
include/glibtop/procio.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/* 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
|
||||
{
|
||||
guint64 flags;
|
||||
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
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCKERNEL_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCLIST_H__
|
||||
@@ -36,22 +36,89 @@ G_BEGIN_DECLS
|
||||
/* You can use the folowing constants as the `which' member of
|
||||
* glibtop_get_proclist () to specify which processes to fetch. */
|
||||
|
||||
#define GLIBTOP_KERN_PROC_ALL 0 /* all processes */
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_ALL:
|
||||
*
|
||||
* Return information about all processes
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_ALL 0
|
||||
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_PID:
|
||||
*
|
||||
* Return all processes with the pid which is passed in @arg. You can use this to find out whether some process still exists.
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_PID 1
|
||||
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_PGRP:
|
||||
*
|
||||
* Return all processes in the process group passed in @arg.
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_PGRP 2
|
||||
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_SESSION:
|
||||
*
|
||||
* Return all processes in the session passed in @arg.
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_SESSION 3
|
||||
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_TTY:
|
||||
*
|
||||
* Return all processes which have the controlling tty passed in @arg
|
||||
* (which is interpreted as the device number).
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_TTY 4
|
||||
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_UID:
|
||||
*
|
||||
* Return all processes with the effective uid passed in @arg.
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_UID 5
|
||||
|
||||
/**
|
||||
* GLIBTOP_KERN_PROC_RUID:
|
||||
*
|
||||
* Return all processes with the real uid passed in @arg.
|
||||
**/
|
||||
#define GLIBTOP_KERN_PROC_RUID 6
|
||||
|
||||
#define GLIBTOP_KERN_PROC_MASK 15
|
||||
|
||||
|
||||
/**
|
||||
* GLIBTOP_EXCLUDE_IDLE:
|
||||
*
|
||||
* Exclude idle processes.
|
||||
**/
|
||||
#define GLIBTOP_EXCLUDE_IDLE 0x1000
|
||||
|
||||
/**
|
||||
* GLIBTOP_EXCLUDE_SYSTEM:
|
||||
*
|
||||
* Exclude system (on most UNIXes root's) processes.
|
||||
**/
|
||||
#define GLIBTOP_EXCLUDE_SYSTEM 0x2000
|
||||
|
||||
/**
|
||||
* GLIBTOP_EXCLUDE_NOTTY:
|
||||
*
|
||||
* Exclude processes without a controlling terminal.
|
||||
**/
|
||||
#define GLIBTOP_EXCLUDE_NOTTY 0x4000
|
||||
|
||||
typedef struct _glibtop_proclist glibtop_proclist;
|
||||
|
||||
/**
|
||||
* glibtop_proclist:
|
||||
* @number: Number of entries in the returned list.
|
||||
* @total: Total size of the returned list (this equals @number * @size).
|
||||
* @size: Size of a single entry in the returned list
|
||||
* (this equals <type>sizeof(unsigned)</type>).
|
||||
*/
|
||||
struct _glibtop_proclist
|
||||
{
|
||||
guint64 flags;
|
||||
@@ -60,6 +127,15 @@ struct _glibtop_proclist
|
||||
guint64 size; /* GLIBTOP_PROCLIST_SIZE */
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_proclist:
|
||||
* @buf: a #glibtop_proclist
|
||||
* @which: a #GLIBTOP_* constant specifying process type
|
||||
* @arg: an argument specific for the process type
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer full): an array of process
|
||||
* ids
|
||||
*/
|
||||
pid_t*
|
||||
glibtop_get_proclist(glibtop_proclist *buf, gint64 which, gint64 arg);
|
||||
|
||||
@@ -69,6 +145,16 @@ glibtop_get_proclist(glibtop_proclist *buf, gint64 which, gint64 arg);
|
||||
#define glibtop_get_proclist_r glibtop_get_proclist_s
|
||||
#endif
|
||||
|
||||
/**
|
||||
* glibtop_get_proclist_l:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_proclist
|
||||
* @which: a #GLIBTOP_* constant specifying process type
|
||||
* @arg: an argument specific for the process type
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer full): an array of process
|
||||
* ids
|
||||
*/
|
||||
pid_t*
|
||||
glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
|
||||
gint64 which, gint64 arg);
|
||||
@@ -76,12 +162,32 @@ glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
|
||||
#if GLIBTOP_SUID_PROCLIST
|
||||
void _glibtop_init_proclist_p (glibtop *server);
|
||||
|
||||
/**
|
||||
* glibtop_get_proclist_p:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_proclist
|
||||
* @which: a #GLIBTOP_* constant specifying process type
|
||||
* @arg: an argument specific for the process type
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer full): an array of process
|
||||
* ids
|
||||
*/
|
||||
pid_t*
|
||||
glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||
gint64 which, gint64 arg);
|
||||
#else
|
||||
void _glibtop_init_proclist_s (glibtop *server);
|
||||
|
||||
/**
|
||||
* glibtop_get_proclist_s:
|
||||
* @server: a #glibtop server
|
||||
* @buf: a #glibtop_proclist
|
||||
* @which: a #GLIBTOP_* constant specifying process type
|
||||
* @arg: an argument specific for the process type
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (transfer full): an array of process
|
||||
* ids
|
||||
*/
|
||||
pid_t*
|
||||
glibtop_get_proclist_s (glibtop *server, glibtop_proclist *buf,
|
||||
gint64 which, gint64 arg);
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROC_MAP_H__
|
||||
@@ -48,8 +48,10 @@ G_BEGIN_DECLS
|
||||
#define GLIBTOP_MAP_ENTRY_SHARED_DIRTY 10
|
||||
#define GLIBTOP_MAP_ENTRY_PRIVATE_CLEAN 11
|
||||
#define GLIBTOP_MAP_ENTRY_PRIVATE_DIRTY 12
|
||||
#define GLIBTOP_MAP_ENTRY_PSS 13
|
||||
#define GLIBTOP_MAP_ENTRY_SWAP 14
|
||||
|
||||
#define GLIBTOP_MAX_MAP_ENTRY 13
|
||||
#define GLIBTOP_MAX_MAP_ENTRY 15
|
||||
|
||||
#define GLIBTOP_MAP_FILENAME_LEN 215
|
||||
|
||||
@@ -78,6 +80,8 @@ struct _glibtop_map_entry
|
||||
guint64 shared_dirty;
|
||||
guint64 private_clean;
|
||||
guint64 private_dirty;
|
||||
guint64 pss;
|
||||
guint64 swap;
|
||||
char filename [GLIBTOP_MAP_FILENAME_LEN+1];
|
||||
};
|
||||
|
||||
@@ -88,10 +92,46 @@ struct _glibtop_proc_map
|
||||
guint64 total; /* GLIBTOP_PROC_MAP_TOTAL */
|
||||
guint64 size; /* GLIBTOP_PROC_MAP_SIZE */
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_map:
|
||||
* @buf:
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
glibtop_map_entry *
|
||||
glibtop_get_proc_map(glibtop_proc_map *buf, pid_t pid);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_map_l:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_map_p:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_map_s:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
#if GLIBTOP_SUID_PROC_MAP
|
||||
#define glibtop_get_proc_map_r glibtop_get_proc_map_p
|
||||
#else
|
||||
@@ -113,6 +153,8 @@ glibtop_map_entry *
|
||||
glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf, pid_t pid);
|
||||
#endif
|
||||
|
||||
GType glibtop_map_entry_get_type (void) G_GNUC_CONST;
|
||||
GType glibtop_proc_map_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCMEM_H__
|
||||
@@ -53,6 +53,12 @@ struct _glibtop_proc_mem
|
||||
* of the process; usually 2,147,483,647 */
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_mem:
|
||||
* @buf:
|
||||
* @pid:
|
||||
*
|
||||
*/
|
||||
void glibtop_get_proc_mem(glibtop_proc_mem *buf, pid_t pid);
|
||||
|
||||
#if GLIBTOP_SUID_PROC_MEM
|
||||
|
@@ -18,8 +18,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROC_OPEN_FILES_H__
|
||||
@@ -94,21 +94,49 @@ struct _glibtop_proc_open_files
|
||||
guint64 size; /* GLIBTOP_PROC_OPEN_FILES_SIZE */
|
||||
};
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files:
|
||||
* @buf:
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
glibtop_open_files_entry *
|
||||
glibtop_get_proc_open_files(glibtop_proc_open_files *buf, pid_t pid);
|
||||
|
||||
#if GLIBTOP_SUID_PROC_FILE
|
||||
#if GLIBTOP_SUID_PROC_OPEN_FILES
|
||||
#define glibtop_get_proc_open_files_r glibtop_get_proc_open_files_p
|
||||
#else
|
||||
#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 full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
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
|
||||
#if GLIBTOP_SUID_PROC_OPEN_FILES
|
||||
void _glibtop_init_proc_open_files_p (glibtop *server);
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_open_files_p:
|
||||
* @server:
|
||||
* @buf: (out):
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full) (array zero-terminated=1):
|
||||
*/
|
||||
|
||||
glibtop_open_files_entry *
|
||||
glibtop_get_proc_open_files_p (glibtop *server, glibtop_proc_open_files *buf, pid_t pid);
|
||||
#else
|
||||
@@ -118,6 +146,9 @@ glibtop_open_files_entry *
|
||||
glibtop_get_proc_open_files_s (glibtop *server, glibtop_proc_open_files *buf, pid_t pid);
|
||||
#endif
|
||||
|
||||
GType glibtop_open_files_entry_get_type (void) G_GNUC_CONST;
|
||||
GType glibtop_proc_open_files_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCSEGMENT_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCSIGNAL_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCSTATE_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCTIME_H__
|
||||
@@ -46,26 +46,50 @@ typedef struct _glibtop_proc_time glibtop_proc_time;
|
||||
|
||||
/* Time section */
|
||||
|
||||
/**
|
||||
* glibtop_proc_time:
|
||||
* @start_time: Start time of process in seconds since the epoch.
|
||||
* @rtime: Real time accumulated by process (should be @utime + @stime).
|
||||
* @utime: User-mode CPU time accumulated by process.
|
||||
* @stime: Kernel-mode CPU time accumulated by process.
|
||||
* @cutime: Cumulative utime of process and reaped children.
|
||||
* @cstime: Cumulative stime of process and reaped children.
|
||||
* @timeout: The time (in jiffies) of the process’s next timeout.
|
||||
* @it_real_value: The time (in jiffies) before the next <type>SIGALRM</type>
|
||||
* is sent to the process due to an interval timer.
|
||||
* @frequency: Tick frequency.
|
||||
* @xcpu_utime: SMP user-mode CPU time accumulated by process.
|
||||
* @xcpu_stime: SMP kernel-mode CPU time accumulated by process
|
||||
*
|
||||
* Process time data filled by glibtop_get_proc_time().
|
||||
*
|
||||
* Under Linux the @start_time value may be wrong due to the information
|
||||
* available from the kernel.
|
||||
*
|
||||
* The Linux kernel defines <type>INITIAL_JIFFIES</type> which implies a time
|
||||
* shift. Because <type>INITIAL_JIFFIES</type> is not user-space defined,
|
||||
* we cannot use it to compute an accurate @start_time. On Linux 2.6,
|
||||
* <type>INITIAL_JIFFIES</type> is 300 so @start_time is
|
||||
* always 3s different from the real start time of the given process. You
|
||||
* may also get shift results if your system clock is not synchronised
|
||||
* with your hardware clock. See <command>man hwclock</command>.
|
||||
*/
|
||||
struct _glibtop_proc_time
|
||||
{
|
||||
/*< private >*/
|
||||
guint64 flags;
|
||||
guint64 start_time; /* start time of process --
|
||||
* seconds since 1-1-70 */
|
||||
guint64 rtime; /* real time accumulated by process */
|
||||
guint64 utime; /* user-mode CPU time accumulated by process */
|
||||
guint64 stime; /* kernel-mode CPU time accumulated by process */
|
||||
guint64 cutime; /* cumulative utime of process and
|
||||
* reaped children */
|
||||
guint64 cstime; /* cumulative stime of process and
|
||||
* reaped children */
|
||||
guint64 timeout; /* The time (in jiffies) of the process's
|
||||
* next timeout */
|
||||
guint64 it_real_value; /* The time (in jiffies) before the
|
||||
* next SIGALRM is sent to the process
|
||||
* due to an interval timer. */
|
||||
guint64 frequency; /* Tick frequency. */
|
||||
guint64 xcpu_utime [GLIBTOP_NCPU]; /* utime and stime for all CPUs on */
|
||||
guint64 xcpu_stime [GLIBTOP_NCPU]; /* SMP machines. */
|
||||
/*< public >*/
|
||||
guint64 start_time;
|
||||
guint64 rtime;
|
||||
guint64 utime;
|
||||
guint64 stime;
|
||||
guint64 cutime;
|
||||
guint64 cstime;
|
||||
guint64 timeout;
|
||||
guint64 it_real_value;
|
||||
guint64 frequency;
|
||||
guint64 xcpu_utime [GLIBTOP_NCPU];
|
||||
guint64 xcpu_stime [GLIBTOP_NCPU];
|
||||
};
|
||||
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCUID_H__
|
||||
|
@@ -13,8 +13,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_PROCWD_H__
|
||||
@@ -30,7 +30,7 @@ typedef struct _glibtop_proc_wd glibtop_proc_wd;
|
||||
#define GLIBTOP_PROC_WD_NUMBER 0
|
||||
#define GLIBTOP_PROC_WD_ROOT 1
|
||||
#define GLIBTOP_PROC_WD_EXE 2
|
||||
#define GLIBTOP_PROC_WD_MAX 3
|
||||
#define GLIBTOP_MAX_PROC_WD 3
|
||||
|
||||
#define GLIBTOP_PROC_WD_ROOT_LEN 215
|
||||
#define GLIBTOP_PROC_WD_EXE_LEN 215
|
||||
@@ -44,6 +44,13 @@ struct _glibtop_proc_wd
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* glibtop_get_proc_wd:
|
||||
* @buf:
|
||||
* @pid:
|
||||
*
|
||||
* Returns: (transfer full):
|
||||
*/
|
||||
char ** glibtop_get_proc_wd(glibtop_proc_wd *buf, pid_t pid);
|
||||
char ** glibtop_get_proc_wd_l(glibtop *server, glibtop_proc_wd *buf, pid_t pid);
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_READ_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_READ_DATA_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_SEM_LIMITS_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_SHM_LIMITS_H__
|
||||
@@ -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
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_SIGNAL_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_SWAP_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_SYSDEPS_H__
|
||||
@@ -53,8 +53,13 @@ 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_SYSDEPS_DISK 28
|
||||
|
||||
#define GLIBTOP_MAX_SYSDEPS 27
|
||||
#define GLIBTOP_MAX_SYSDEPS 29
|
||||
|
||||
/* 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)
|
||||
|
||||
@@ -90,6 +95,15 @@ 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 */
|
||||
guint64 disk; /* glibtop_disk */
|
||||
guint64 reserved1;
|
||||
guint64 reserved2;
|
||||
guint64 reserved3;
|
||||
guint64 reserved4;
|
||||
guint64 reserved5;
|
||||
guint64 reserved6;
|
||||
guint64 reserved7;
|
||||
};
|
||||
|
||||
void glibtop_get_sysdeps (glibtop_sysdeps *buf);
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_SYSINFO_H__
|
||||
@@ -53,6 +53,8 @@ struct _glibtop_sysinfo
|
||||
glibtop_entry cpuinfo [GLIBTOP_NCPU];
|
||||
};
|
||||
|
||||
const char *decode_cpu_part(unsigned int part);
|
||||
|
||||
#define glibtop_get_sysinfo_r glibtop_get_sysinfo_s
|
||||
|
||||
const glibtop_sysinfo *glibtop_get_sysinfo_s (glibtop *server);
|
||||
|
@@ -15,14 +15,15 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_UNION_H__
|
||||
#define __GLIBTOP_UNION_H__
|
||||
|
||||
#include <glibtop/cpu.h>
|
||||
#include <glibtop/disk.h>
|
||||
#include <glibtop/mem.h>
|
||||
#include <glibtop/swap.h>
|
||||
#include <glibtop/uptime.h>
|
||||
@@ -44,6 +45,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>
|
||||
@@ -59,6 +61,7 @@ typedef union _glibtop_union glibtop_union;
|
||||
union _glibtop_union
|
||||
{
|
||||
glibtop_cpu cpu;
|
||||
glibtop_disk disk;
|
||||
glibtop_mem mem;
|
||||
glibtop_swap swap;
|
||||
glibtop_uptime uptime;
|
||||
@@ -84,6 +87,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
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_UPTIME_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_VERSION_H__
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_WRITE_H__
|
||||
|
@@ -1,11 +1,11 @@
|
||||
|
||||
INCLUDES = @INCLUDES@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
|
||||
lib_LTLIBRARIES = libgtop-2.0.la
|
||||
|
||||
libgtop_2_0_la_SOURCES = init.c open.c close.c command.c read.c \
|
||||
read_data.c write.c lib.c parameter.c \
|
||||
sysdeps.c
|
||||
sysdeps.c boxed.c
|
||||
|
||||
libgtop_2_0_la_LDFLAGS = $(LT_VERSION_INFO) -export-symbols $(srcdir)/libgtop.sym -no-undefined
|
||||
libgtop_2_0_la_LIBADD = $(GLIB_LIBS) $(top_builddir)/sysdeps/common/libgtop_common-2.0.la $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la $(sysdeps_suid_lib)
|
||||
@@ -22,25 +22,25 @@ CLEANFILES = lib.c
|
||||
|
||||
-include $(INTROSPECTION_MAKEFILE)
|
||||
INTROSPECTION_GIRS =
|
||||
INTROSPECTION_SCANNER_ARGS = --accept-unprefixed
|
||||
INTROSPECTION_SCANNER_ARGS = --accept-unprefixed --warn-all
|
||||
INTROSPECTION_COMPILER_ARGS =
|
||||
|
||||
if HAVE_INTROSPECTION
|
||||
introspection_sources = $(libgtop_2_0_la_SOURCES) lib.c ../glibtop.h \
|
||||
introspection_sources = $(libgtop_2_0_la_SOURCES) lib.c ../glibtop.h ../libgtopconfig.h \
|
||||
../include/glibtop/close.h ../include/glibtop/loadavg.h ../include/glibtop/prockernel.h ../include/glibtop/procstate.h \
|
||||
../include/glibtop/sem_limits.h ../include/glibtop/uptime.h ../include/glibtop/command.h ../include/glibtop/mem.h ../include/glibtop/proclist.h \
|
||||
../include/glibtop/proctime.h ../include/glibtop/shm_limits.h ../include/glibtop/version.h ../include/glibtop/cpu.h ../include/glibtop/msg_limits.h \
|
||||
../include/glibtop/proctime.h ../include/glibtop/shm_limits.h ../include/glibtop/cpu.h ../include/glibtop/disk.h ../include/glibtop/msg_limits.h \
|
||||
../include/glibtop/procmem.h ../include/glibtop/procuid.h ../include/glibtop/swap.h \
|
||||
../include/glibtop/procsegment.h ../include/glibtop/sysdeps.h ../include/glibtop/global.h \
|
||||
../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
|
||||
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
|
||||
|
47
lib/boxed.c
Normal file
47
lib/boxed.c
Normal file
@@ -0,0 +1,47 @@
|
||||
/* Copyright (C) 2011 Red Hat
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Jasper St. Pierre <jstpierre@mecheye.net>, November 2011
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/mountlist.h>
|
||||
#include <glibtop/procmap.h>
|
||||
#include <glibtop/procopenfiles.h>
|
||||
|
||||
#define DEFINE_BOXED(type) \
|
||||
static type * \
|
||||
type##_copy (type *p) \
|
||||
{ \
|
||||
type *n = g_new (type, 1); \
|
||||
memcpy (n, p, sizeof (type)); \
|
||||
return n; \
|
||||
} \
|
||||
\
|
||||
G_DEFINE_BOXED_TYPE (type, \
|
||||
type, \
|
||||
type##_copy, \
|
||||
g_free)
|
||||
|
||||
DEFINE_BOXED (glibtop);
|
||||
DEFINE_BOXED (glibtop_map_entry);
|
||||
DEFINE_BOXED (glibtop_proc_map);
|
||||
DEFINE_BOXED (glibtop_open_files_entry);
|
||||
DEFINE_BOXED (glibtop_proc_open_files);
|
||||
DEFINE_BOXED (glibtop_mountentry);
|
||||
DEFINE_BOXED (glibtop_mountlist);
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
@@ -15,11 +15,12 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <glibtop/error.h>
|
||||
#include <glibtop/read.h>
|
||||
#include <glibtop/write.h>
|
||||
#include <glibtop/read_data.h>
|
||||
@@ -35,6 +36,45 @@ 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_DISK);
|
||||
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);
|
||||
CHECK_CMND(GLIBTOP_CMND_PROC_IO);
|
||||
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 +92,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,
|
||||
|
17
lib/init.c
17
lib/init.c
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
@@ -26,12 +26,14 @@
|
||||
#include <glibtop/open.h>
|
||||
#include <glibtop/parameter.h>
|
||||
#include <glibtop/init_hooks.h>
|
||||
#include <glibtop/machine.h>
|
||||
|
||||
|
||||
#ifndef DEFAULT_PORT
|
||||
#define DEFAULT_PORT 42800
|
||||
#endif
|
||||
|
||||
static glibtop _glibtop_global_server = { 0 };
|
||||
static glibtop _glibtop_global_server;
|
||||
glibtop *glibtop_global_server = &_glibtop_global_server;
|
||||
|
||||
static void
|
||||
@@ -141,7 +143,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'",
|
||||
@@ -173,6 +175,9 @@ glibtop_init_r (glibtop **server_ptr, unsigned long features, unsigned flags)
|
||||
/* Do the initialization, but only if not already initialized. */
|
||||
|
||||
if ((server->flags & _GLIBTOP_INIT_STATE_INIT) == 0) {
|
||||
|
||||
glibtop_machine_new (server);
|
||||
|
||||
if (flags & GLIBTOP_FEATURES_EXCEPT)
|
||||
features = ~features & GLIBTOP_SYSDEPS_ALL;
|
||||
|
||||
@@ -209,7 +214,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;
|
||||
@@ -221,6 +226,8 @@ glibtop_init_s (glibtop **server_ptr, unsigned long features, unsigned flags)
|
||||
glibtop *server;
|
||||
const _glibtop_init_func_t *init_fkt;
|
||||
|
||||
glibtop_debug("init_s with features=%#0lx and flags=%#0x", features, flags);
|
||||
|
||||
if (server_ptr == NULL)
|
||||
return NULL;
|
||||
|
||||
|
70
lib/lib.pl
70
lib/lib.pl
@@ -1,21 +1,8 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
print '/* lib.c */';
|
||||
print "/* This is a generated file. Please modify `lib.pl' */";
|
||||
print '';
|
||||
@@ -86,9 +73,9 @@ while (<>) {
|
||||
sub output {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
$retval = $line_fields[0];
|
||||
$feature = $line_fields[1];
|
||||
$param_def = $line_fields[2];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
@@ -106,16 +93,16 @@ sub output {
|
||||
}
|
||||
|
||||
if ($param_def eq 'string') {
|
||||
$call_param = ', ' . $line_fields[5];
|
||||
$call_param = ', ' . $line_fields[3];
|
||||
$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[3];
|
||||
$send_ptr = "\n\tconst void *send_ptr = " . $line_fields[3] . ';';
|
||||
$send_size = "\n\tconst size_t send_size =\n\t\tstrlen (" .
|
||||
|
||||
$line_fields[5] . ') + 1;';
|
||||
$line_fields[3] . ') + 1;';
|
||||
}
|
||||
else {
|
||||
$call_param = '';
|
||||
@@ -126,9 +113,9 @@ 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++) {
|
||||
for ($param = 0; $param < $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
@@ -137,13 +124,13 @@ sub output {
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
|
||||
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";
|
||||
for ($field = 0; $field < $count; $field++) {
|
||||
$param_buf .= "\t\t\t$convert{$type} buf_$fields[$field];\n";
|
||||
$buf_set .= "\t\tparam_buf.buf_$fields[$field] = $fields[$field];\n";
|
||||
}
|
||||
}
|
||||
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
for ($field = 0; $field < $count; $field++) {
|
||||
if ($param_decl eq '') {
|
||||
$param_decl = ",\n " . $space . ' ';
|
||||
}
|
||||
@@ -155,19 +142,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,17 +162,15 @@ 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_" .
|
||||
|
||||
&toupper($feature) . '), 0);';
|
||||
uc($feature) . '), 0);';
|
||||
|
||||
print '';
|
||||
print "\t/* If neccessary, we ask the server for the requested";
|
||||
@@ -195,12 +180,21 @@ sub output {
|
||||
print "\tif ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&";
|
||||
print "\t (server->features & (1 << GLIBTOP_SYSDEPS_" .
|
||||
|
||||
&toupper($feature) . ')))';
|
||||
uc($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) . ',';
|
||||
uc($feature) . ',';
|
||||
print "\t\t\t\t" . $prefix_space . 'send_size, send_ptr,';
|
||||
print "\t\t\t\t" . $prefix_space . 'sizeof (glibtop_' . $feature .
|
||||
|
||||
@@ -209,7 +203,7 @@ sub output {
|
||||
print "\t} else {";
|
||||
|
||||
if ($orig !~ /^@/) {
|
||||
print '#if (!GLIBTOP_SUID_' . &toupper($feature) . ')';
|
||||
print '#if (!GLIBTOP_SUID_' . uc($feature) . ')';
|
||||
}
|
||||
print "\t\t" . $prefix . 'glibtop_get_' . $feature . '_s (server, buf' .
|
||||
|
||||
|
@@ -3,6 +3,8 @@ glibtop_close
|
||||
glibtop_close_r
|
||||
glibtop_get_cpu
|
||||
glibtop_get_cpu_l
|
||||
glibtop_get_disk
|
||||
glibtop_get_disk_l
|
||||
glibtop_get_fsusage
|
||||
glibtop_get_fsusage_l
|
||||
glibtop_get_loadavg
|
||||
@@ -52,6 +54,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
|
||||
@@ -68,3 +72,10 @@ glibtop_open_l
|
||||
glibtop_server_features
|
||||
glibtop_set_parameter_l
|
||||
glibtop_sys_siglist
|
||||
glibtop_mountlist_get_type
|
||||
glibtop_mountentry_get_type
|
||||
glibtop_open_files_entry_get_type
|
||||
glibtop_proc_open_files_get_type
|
||||
glibtop_map_entry_get_type
|
||||
glibtop_proc_map_get_type
|
||||
glibtop_get_type
|
||||
|
42
lib/open.c
42
lib/open.c
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
@@ -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 %#0lx.",
|
||||
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);
|
||||
}
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
@@ -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];
|
||||
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
@@ -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;
|
||||
|
||||
|
@@ -1,104 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
die "Usage: $0 features.def structures.def" unless $#ARGV == 2;
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
$structures{$structure_count++} = 'glibtop';
|
||||
|
||||
open FEATURESDEF, $ARGV[1] or
|
||||
die "open ($ARGV[1]): $!";
|
||||
|
||||
while (<FEATURESDEF>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^\#]/) {
|
||||
&parse_features_def ($_);
|
||||
}
|
||||
}
|
||||
|
||||
close FEATURESDEF;
|
||||
|
||||
open STRUCTDEF, $ARGV[2] or
|
||||
die "open ($ARGV[2]): $!";
|
||||
|
||||
while (<STRUCTDEF>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^\#]/) {
|
||||
&parse_structure_def ($_);
|
||||
}
|
||||
}
|
||||
|
||||
close STRUCTDEF;
|
||||
|
||||
$init_structures_code = sprintf
|
||||
(qq[\tscm_glibtop_structure_tags [GLIBTOP_STRUCTURE_GLIBTOP] = scm_make_structure_type\n\t\t("glibtop", sizeof (glibtop));\n]);
|
||||
|
||||
for ($nr = 0; $nr < $structure_count; $nr++) {
|
||||
$structure = $structures{$nr};
|
||||
|
||||
$init_structures_code .= sprintf
|
||||
(qq[\tscm_glibtop_structure_tags [GLIBTOP_STRUCTURE_%s] = scm_make_structure_type\n\t\t("%s", sizeof (%s));\n],
|
||||
toupper($structure), $structure, $structure);
|
||||
}
|
||||
|
||||
print qq[/* structures.h */];
|
||||
print qq[/* This is a generated file. Please modify \`guile.pl\' */];
|
||||
print '';
|
||||
print qq[\#ifndef __GLIBTOP_STRUCTURES_H__];
|
||||
print qq[\#define __GLIBTOP_STRUCTURES_H__];
|
||||
print '';
|
||||
print qq[\#include <glibtop.h>];
|
||||
print '';
|
||||
print qq[G_BEGIN_DECLS];
|
||||
print '';
|
||||
|
||||
for ($nr = 0; $nr < $structure_count; $nr++) {
|
||||
$structure = $structures{$nr};
|
||||
|
||||
printf (qq[\#define %-40s\t%d\n], 'GLIBTOP_STRUCTURE_'.&toupper($structure), $nr);
|
||||
}
|
||||
|
||||
print '';
|
||||
printf (qq[\#define %-40s\t%d\n], 'GLIBTOP_MAX_STRUCTURES', $structure_count);
|
||||
print '';
|
||||
print qq[G_END_DECLS];
|
||||
print '';
|
||||
print qq[\#endif /* __GLIBTOP_STRUCTURES_H__ */];
|
||||
|
||||
sub parse_features_def {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$element_def = $line_fields[3];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$feature =~ s/^@//;
|
||||
$features{$feature} = $feature;
|
||||
|
||||
$structures{$structure_count++} = 'glibtop_'.$feature;
|
||||
}
|
||||
|
||||
sub parse_structure_def {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$name = $line_fields[1];
|
||||
|
||||
$structures{$structure_count++} = $name;
|
||||
}
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
const unsigned long glibtop_server_features =
|
||||
GLIBTOP_SUID_CPU +
|
||||
GLIBTOP_SUID_DISK +
|
||||
GLIBTOP_SUID_MEM +
|
||||
GLIBTOP_SUID_SWAP +
|
||||
GLIBTOP_SUID_UPTIME +
|
||||
@@ -44,16 +45,21 @@ GLIBTOP_SUID_PROC_KERNEL +
|
||||
GLIBTOP_SUID_PROC_SEGMENT +
|
||||
GLIBTOP_SUID_PROC_ARGS +
|
||||
GLIBTOP_SUID_PROC_MAP +
|
||||
GLIBTOP_SUID_PROC_OPEN_FILES +
|
||||
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
|
||||
_glibtop_init_cpu_s,
|
||||
#endif
|
||||
#if !GLIBTOP_SUID_DISK
|
||||
_glibtop_init_disk_s,
|
||||
#endif
|
||||
#if !GLIBTOP_SUID_MEM
|
||||
_glibtop_init_mem_s,
|
||||
#endif
|
||||
@@ -119,6 +125,12 @@ 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
|
||||
#if !GLIBTOP_SUID_PROC_OPEN_FILES
|
||||
_glibtop_init_proc_open_files_s,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
@@ -127,6 +139,9 @@ const _glibtop_init_func_t _glibtop_init_hook_p [] = {
|
||||
#if GLIBTOP_SUID_CPU
|
||||
_glibtop_init_cpu_p,
|
||||
#endif
|
||||
#if GLIBTOP_SUID_DISK
|
||||
_glibtop_init_disk_p,
|
||||
#endif
|
||||
#if GLIBTOP_SUID_MEM
|
||||
_glibtop_init_mem_p,
|
||||
#endif
|
||||
@@ -192,6 +207,12 @@ 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
|
||||
#if GLIBTOP_SUID_PROC_OPEN_FILES
|
||||
_glibtop_init_proc_open_files_p,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
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.
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
@@ -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];
|
||||
|
||||
|
@@ -4,20 +4,16 @@ dnl
|
||||
dnl It defines the following variables:
|
||||
dnl
|
||||
dnl * 'libgtop_sysdeps_dir' - sysdeps dir for libgtop.
|
||||
dnl * 'libgtop_use_machine_h' - some of system dependend parts of libgtop provide
|
||||
dnl their own header file. In this case we need to
|
||||
dnl define 'HAVE_GLIBTOP_MACHINE_H'.
|
||||
dnl * 'libgtop_need_server' - is the server really needed? Defines 'NEED_LIBGTOP'
|
||||
dnl if true; defines conditional 'NEED_LIBGTOP'.
|
||||
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])
|
||||
|
||||
AC_SUBST(libgtop_sysdeps_dir)
|
||||
AC_SUBST(libgtop_use_machine_h)
|
||||
AC_SUBST(libgtop_need_server)
|
||||
|
||||
AC_ARG_WITH(libgtop-examples,
|
||||
AC_ARG_WITH(examples,
|
||||
AS_HELP_STRING([--with-examples],
|
||||
[Build the libgtop examples @<:@default=yes@:>@]),[
|
||||
build_examples="$withval"], [build_examples=yes])
|
||||
@@ -31,87 +27,55 @@ 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
|
||||
linux*)
|
||||
libgtop_sysdeps_dir=linux
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_need_server=no
|
||||
libgtop_need_server=yes
|
||||
libgtop_sysdeps_private_mountlist=yes
|
||||
libgtop_sysdeps_private_fsusage=yes
|
||||
libgtop_postinstall='chown root $(DESTDIR)$(libexecdir)/libgtop_server2 && chmod 4755 $(DESTDIR)$(libexecdir)/libgtop_server2'
|
||||
;;
|
||||
netbsd*|bsdi*)
|
||||
libgtop_sysdeps_dir=bsd
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2755 $(bindir)/libgtop_server2'
|
||||
libgtop_postinstall='chgrp kmem $(DESTDIR)$(libexecdir)/libgtop_server2 && chmod 2755 $(DESTDIR)$(libexecdir)/libgtop_server2'
|
||||
;;
|
||||
openbsd*)
|
||||
libgtop_sysdeps_dir=openbsd
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2555 $(bindir)/libgtop_server2'
|
||||
;;
|
||||
freebsd*|kfreebsd*)
|
||||
libgtop_sysdeps_dir=freebsd
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_sysdeps_private_mountlist=yes
|
||||
libgtop_sysdeps_private_fsusage=yes
|
||||
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2755 $(bindir)/libgtop_server2'
|
||||
libgtop_postinstall='chgrp kmem $(DESTDIR)$(libexecdir)/libgtop_server2 && chmod 2555 $(DESTDIR)$(libexecdir)/libgtop_server2'
|
||||
;;
|
||||
freebsd*|kfreebsd*)
|
||||
libgtop_sysdeps_dir=freebsd
|
||||
libgtop_need_server=yes
|
||||
libgtop_sysdeps_private_mountlist=yes
|
||||
libgtop_sysdeps_private_fsusage=yes
|
||||
libgtop_postinstall='chgrp kmem $(DESTDIR)$(libexecdir)/libgtop_server2 && chmod 2755 $(DESTDIR)$(libexecdir)/libgtop_server2'
|
||||
;;
|
||||
solaris*)
|
||||
libgtop_sysdeps_dir=solaris
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
|
||||
libgtop_postinstall='chgrp sys $(DESTDIR)$(libexecdir)/libgtop_server && chmod 2755 $(DESTDIR)$(libexecdir)/libgtop_server'
|
||||
;;
|
||||
aix*)
|
||||
libgtop_sysdeps_dir=aix
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
|
||||
libgtop_postinstall='chgrp system $(DESTDIR)$(libexecdir)/libgtop_server && chmod g+s $(DESTDIR)$(libexecdir)/libgtop_server2'
|
||||
;;
|
||||
darwin*)
|
||||
libgtop_sysdeps_dir=darwin
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod g+s $(bindir)/libgtop_server2'
|
||||
libgtop_postinstall='chgrp kmem $(DESTDIR)$(libexecdir)/libgtop_server2 && chmod g+s $(DESTDIR)$(libexecdir)/libgtop_server2'
|
||||
;;
|
||||
cygwin*)
|
||||
libgtop_sysdeps_dir=cygwin
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_sysdeps_private_mountlist=yes
|
||||
@@ -123,23 +87,19 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
#Please note that this port is obsolete and not working at
|
||||
#all. It is only useful for people who want to fix it ... :-)
|
||||
libgtop_sysdeps_dir=sun4
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
osf*)
|
||||
libgtop_sysdeps_dir=osf1
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
*)
|
||||
libgtop_sysdeps_dir=stub
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
;;
|
||||
esac
|
||||
else
|
||||
libgtop_sysdeps_dir=stub
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_need_server=no
|
||||
fi
|
||||
;;
|
||||
@@ -158,21 +118,13 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
AC_CHECK_LIB(kvm, kvm_open, KVM_LIBS=-lkvm, KVM_LIBS=)
|
||||
AC_SUBST(KVM_LIBS)
|
||||
|
||||
case "$host_os" in
|
||||
kfreebsd*)
|
||||
EXTRA_SYSDEPS_LIBS="-lgeom -ldevstat"
|
||||
;;
|
||||
freebsd*)
|
||||
osreldate=`sysctl -n kern.osreldate 2>/dev/null`
|
||||
if test -n "${osreldate}" && test ${osreldate} -ge 600000 ; then
|
||||
EXTRA_SYSDEPS_LIBS="-lgeom -ldevstat"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_CHECK_LIB(util, kinfo_getfile)
|
||||
AC_CHECK_FUNCS(kinfo_getfile)
|
||||
|
||||
AC_SUBST(EXTRA_SYSDEPS_LIBS)
|
||||
|
||||
AC_CHECK_HEADERS(net/if_var.h)
|
||||
AC_CHECK_HEADERS(net/if_var.h,,, [
|
||||
#include <net/if.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>])
|
||||
AC_MSG_CHECKING([for I4B])
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/types.h>
|
||||
@@ -237,10 +189,10 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(what we need to define to get struct msginfo)
|
||||
AC_CACHE_VAL(msginfo_needs,
|
||||
msginfo_needs=
|
||||
AC_CACHE_VAL(msginfo_cv_needs,
|
||||
msginfo_cv_needs=
|
||||
for def in nothing KERNEL _KERNEL; do
|
||||
AC_COMPILE_IFELSE([#define $def
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([#define $def
|
||||
#include <sys/types.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/msg.h>
|
||||
@@ -252,23 +204,23 @@ main (void)
|
||||
struct msginfo mi;
|
||||
mi.msgmax = 0;
|
||||
return 0;
|
||||
}],
|
||||
}])],
|
||||
[
|
||||
msginfo_needs=$def
|
||||
if test ${msginfo_needs} = KERNEL; then
|
||||
msginfo_cv_needs=$def
|
||||
if test ${msginfo_cv_needs} = KERNEL; then
|
||||
AC_DEFINE(STRUCT_MSGINFO_NEEDS_KERNEL, 1,
|
||||
[Define to 1 if we need to define KERNEL to get 'struct msginfo'])
|
||||
elif test ${msginfo_needs} = _KERNEL; then
|
||||
elif test ${msginfo_cv_needs} = _KERNEL; then
|
||||
AC_DEFINE(STRUCT_MSGINFO_NEEDS__KERNEL, 1,
|
||||
[Define to 1 if we need to define _KERNEL to get 'struct msginfo'])
|
||||
fi
|
||||
]
|
||||
)
|
||||
test -n "${msginfo_needs}" && break
|
||||
test -n "${msginfo_cv_needs}" && break
|
||||
done
|
||||
)
|
||||
AC_MSG_RESULT($msginfo_needs)
|
||||
if test -z "${msginfo_needs}"; then
|
||||
AC_MSG_RESULT($msginfo_cv_needs)
|
||||
if test -z "${msginfo_cv_needs}"; then
|
||||
AC_MSG_ERROR([Could not find the definition of 'struct msginfo'])
|
||||
fi
|
||||
;;
|
||||
@@ -313,22 +265,14 @@ main (void)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir)
|
||||
AC_MSG_RESULT($libgtop_use_machine_h)
|
||||
|
||||
AC_MSG_CHECKING(whether we need libgtop)
|
||||
AC_MSG_RESULT($libgtop_need_server)
|
||||
|
||||
if test x$libgtop_need_server = xyes ; then
|
||||
AC_DEFINE(NEED_LIBGTOP, 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
|
||||
AC_DEFINE(HAVE_GLIBTOP_MACHINE_H, 1,
|
||||
[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)
|
||||
])
|
||||
|
@@ -6,9 +6,11 @@
|
||||
|
||||
<name xml:lang="en">libgtop</name>
|
||||
<shortdesc xml:lang="en">LibGTop2</shortdesc>
|
||||
<description xml:lang="en">A library for collecting system monitoring data</description>
|
||||
<download-page rdf:resource="http://download.gnome.org/sources/libgtop/" />
|
||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=libgtop" />
|
||||
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
||||
<bug-database rdf:resource="https://gitlab.gnome.org/GNOME/libgtop/issues/" />
|
||||
<category rdf:resource="http://api.gnome.org/doap-extensions#core" />
|
||||
<programming-language>C</programming-language>
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
|
4
ltconfig
4
ltconfig
@@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@@ -2756,7 +2756,7 @@ case "$ltmain" in
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#
|
||||
# please keep this list sorted alphabetically
|
||||
ab
|
||||
am
|
||||
ar
|
||||
as
|
||||
@@ -40,6 +41,7 @@ id
|
||||
it
|
||||
ja
|
||||
ka
|
||||
kab
|
||||
kn
|
||||
ko
|
||||
ku
|
||||
|
78
po/Makevars
Normal file
78
po/Makevars
Normal file
@@ -0,0 +1,78 @@
|
||||
# Makefile variables for PO directory in any package using GNU gettext.
|
||||
|
||||
# Usually the message domain is the same as the package name.
|
||||
DOMAIN = $(PACKAGE)
|
||||
|
||||
# These two variables depend on the location of this directory.
|
||||
subdir = po
|
||||
top_builddir = ..
|
||||
|
||||
# These options get passed to xgettext.
|
||||
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
|
||||
# package. (Note that the msgstr strings, extracted from the package's
|
||||
# sources, belong to the copyright holder of the package.) Translators are
|
||||
# expected to transfer the copyright for their translations to this person
|
||||
# or entity, or to disclaim their copyright. The empty string stands for
|
||||
# the public domain; in this case the translators are expected to disclaim
|
||||
# their copyright.
|
||||
COPYRIGHT_HOLDER = libgtop authors
|
||||
|
||||
# This tells whether or not to prepend "GNU " prefix to the package
|
||||
# name that gets inserted into the header of the $(DOMAIN).pot file.
|
||||
# Possible values are "yes", "no", or empty. If it is empty, try to
|
||||
# detect it automatically by scanning the files in $(top_srcdir) for
|
||||
# "GNU packagename" string.
|
||||
PACKAGE_GNU = no
|
||||
|
||||
# This is the email address or URL to which the translators shall report
|
||||
# bugs in the untranslated strings:
|
||||
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||
# - Strings which use unclear terms or require additional context to be
|
||||
# understood.
|
||||
# - Strings which make invalid assumptions about notation of date, time or
|
||||
# money.
|
||||
# - Pluralisation problems.
|
||||
# - Incorrect English spelling.
|
||||
# - Incorrect formatting.
|
||||
# It can be your email address, or a mailing list address where translators
|
||||
# can write to without being subscribed, or the URL of a web page through
|
||||
# which the translators can contact you.
|
||||
MSGID_BUGS_ADDRESS = https://gitlab.gnome.org/GNOME/libgtop/issues
|
||||
|
||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||
# message catalogs shall be used. It is usually empty.
|
||||
EXTRA_LOCALE_CATEGORIES =
|
||||
|
||||
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
|
||||
# context. Possible values are "yes" and "no". Set this to yes if the
|
||||
# package uses functions taking also a message context, like pgettext(), or
|
||||
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
|
||||
USE_MSGCTXT = yes
|
||||
|
||||
# These options get passed to msgmerge.
|
||||
# Useful options are in particular:
|
||||
# --previous to keep previous msgids of translated messages,
|
||||
# --quiet to reduce the verbosity.
|
||||
MSGMERGE_OPTIONS =
|
||||
|
||||
# These options get passed to msginit.
|
||||
# If you want to disable line wrapping when writing PO files, add
|
||||
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
|
||||
# MSGINIT_OPTIONS.
|
||||
MSGINIT_OPTIONS =
|
||||
|
||||
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
|
||||
# has changed. Possible values are "yes" and "no". Set this to no if
|
||||
# the POT file is checked in the repository and the version control
|
||||
# program ignores timestamps.
|
||||
PO_DEPENDS_ON_POT = no
|
||||
|
||||
# This tells whether or not to forcibly update $(DOMAIN).pot and
|
||||
# regenerate PO files on "make dist". Possible values are "yes" and
|
||||
# "no". Set this to no if the POT file and PO files are maintained
|
||||
# externally.
|
||||
DIST_DEPENDS_ON_UPDATE_PO = no
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user