ruby-libgtop2 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +30 -0
- data/History.txt +6 -0
- data/INSTALL.txt +19 -0
- data/Manifest.txt +53 -0
- data/README.txt +21 -0
- data/Rakefile +59 -0
- data/TODO +4 -0
- data/TUTORIAL.txt +28 -0
- data/examples/README +1 -0
- data/examples/first.rb +220 -0
- data/examples/mountlist.rb +30 -0
- data/examples/netload.rb +50 -0
- data/examples/procmap.rb +41 -0
- data/examples/second.rb +207 -0
- data/examples/smp.rb +76 -0
- data/examples/sysdeps.rb +86 -0
- data/ext/libgtop/MANIFEST +30 -0
- data/ext/libgtop/Makefile +149 -0
- data/ext/libgtop/extconf.rb +9 -0
- data/ext/libgtop/mkmf.log +27 -0
- data/ext/libgtop/rb_glibtop.c +61 -0
- data/ext/libgtop/rb_glibtop.h +15 -0
- data/ext/libgtop/rb_glibtop_cpu.c +69 -0
- data/ext/libgtop/rb_glibtop_fsusage.c +43 -0
- data/ext/libgtop/rb_glibtop_init.c +25 -0
- data/ext/libgtop/rb_glibtop_loadavg.c +42 -0
- data/ext/libgtop/rb_glibtop_mem.c +39 -0
- data/ext/libgtop/rb_glibtop_mountlist.c +53 -0
- data/ext/libgtop/rb_glibtop_msg_limits.c +37 -0
- data/ext/libgtop/rb_glibtop_netlist.c +36 -0
- data/ext/libgtop/rb_glibtop_netload.c +82 -0
- data/ext/libgtop/rb_glibtop_ppp.c +39 -0
- data/ext/libgtop/rb_glibtop_proc_args.c +39 -0
- data/ext/libgtop/rb_glibtop_proc_kernel.c +50 -0
- data/ext/libgtop/rb_glibtop_proc_map.c +69 -0
- data/ext/libgtop/rb_glibtop_proc_mem.c +37 -0
- data/ext/libgtop/rb_glibtop_proc_open_files.c +65 -0
- data/ext/libgtop/rb_glibtop_proc_segment.c +39 -0
- data/ext/libgtop/rb_glibtop_proc_signal.c +48 -0
- data/ext/libgtop/rb_glibtop_proc_state.c +46 -0
- data/ext/libgtop/rb_glibtop_proc_time.c +54 -0
- data/ext/libgtop/rb_glibtop_proc_uid.c +58 -0
- data/ext/libgtop/rb_glibtop_proclist.c +56 -0
- data/ext/libgtop/rb_glibtop_sem_limits.c +40 -0
- data/ext/libgtop/rb_glibtop_shm_limits.c +35 -0
- data/ext/libgtop/rb_glibtop_swap.c +36 -0
- data/ext/libgtop/rb_glibtop_sysdeps.c +78 -0
- data/ext/libgtop/rb_glibtop_uptime.c +36 -0
- data/lib/libgtop.rb +3 -0
- data/lib/libgtop/version.rb +9 -0
- data/setup.rb +1585 -0
- data/test/ruby-libgtop2_test.rb +11 -0
- data/test/test_helper.rb +4 -0
- metadata +98 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/procuid.h>
|
11
|
+
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proc_mem(VALUE self, VALUE pid)
|
14
|
+
{
|
15
|
+
glibtop_proc_mem buf;
|
16
|
+
VALUE hash;
|
17
|
+
|
18
|
+
glibtop_get_proc_mem(&buf, NUM2LONG(pid));
|
19
|
+
|
20
|
+
hash = rb_hash_new();
|
21
|
+
|
22
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
23
|
+
rb_hash_aset(hash, rb_str_new2("size"), rb_uint2inum(buf.size));
|
24
|
+
rb_hash_aset(hash, rb_str_new2("vsize"), rb_uint2inum(buf.vsize));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("resident"), rb_uint2inum(buf.resident));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("share"), rb_uint2inum(buf.share));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("rss"), rb_uint2inum(buf.rss));
|
28
|
+
rb_hash_aset(hash, rb_str_new2("rss_rlim"), rb_uint2inum(buf.rss_rlim));
|
29
|
+
|
30
|
+
return hash;
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
void Init_glibtop_proc_mem()
|
35
|
+
{
|
36
|
+
rb_define_method(cLibGTop, "proc_mem", rb_glibtop_proc_mem, 1);
|
37
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#if (LIBGTOP_CHECK_VERSION(2, 9, 4))
|
11
|
+
#include <glibtop/procopenfiles.h>
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proc_open_files(VALUE self, VALUE pid)
|
14
|
+
{
|
15
|
+
glibtop_proc_open_files buf;
|
16
|
+
glibtop_open_files_entry* files;
|
17
|
+
VALUE hash, entry_hash, array, socket;
|
18
|
+
int i;
|
19
|
+
|
20
|
+
files = glibtop_get_proc_open_files(&buf, NUM2LONG(pid));
|
21
|
+
|
22
|
+
hash = rb_hash_new();
|
23
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
24
|
+
rb_hash_aset(hash, rb_str_new2("number"), rb_uint2inum(buf.number));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("total"), rb_uint2inum(buf.total));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("size"), rb_uint2inum(buf.size));
|
27
|
+
|
28
|
+
array = rb_ary_new();
|
29
|
+
rb_hash_aset(hash, rb_str_new2("entry"), array);
|
30
|
+
|
31
|
+
for ( i = 0; i < buf.number; ++i) {
|
32
|
+
entry_hash = rb_hash_new();
|
33
|
+
rb_hash_aset(entry_hash, rb_str_new2("fd"), INT2FIX(files[i].fd));
|
34
|
+
rb_hash_aset(entry_hash, rb_str_new2("type"), INT2FIX(files[i].type));
|
35
|
+
switch (files[i].type) {
|
36
|
+
case GLIBTOP_FILE_TYPE_FILE:
|
37
|
+
rb_hash_aset(entry_hash, rb_str_new2("file"), rb_str_new2(files[i].info.file.name));
|
38
|
+
break;
|
39
|
+
case GLIBTOP_FILE_TYPE_PIPE:
|
40
|
+
rb_hash_aset(entry_hash, rb_str_new2("pipe"), rb_str_new2("pipe"));
|
41
|
+
break;
|
42
|
+
case GLIBTOP_FILE_TYPE_INETSOCKET:
|
43
|
+
socket = rb_ary_new();
|
44
|
+
rb_ary_push(socket, rb_str_new2(files[i].info.sock.dest_host));
|
45
|
+
rb_ary_push(socket, INT2FIX(files[i].info.sock.dest_port));
|
46
|
+
rb_hash_aset(entry_hash, rb_str_new2("socket"), socket);
|
47
|
+
break;
|
48
|
+
case GLIBTOP_FILE_TYPE_LOCALSOCKET:
|
49
|
+
rb_hash_aset(entry_hash, rb_str_new2("localsocket"), rb_str_new2(files[i].info.localsock.name));
|
50
|
+
break;
|
51
|
+
}
|
52
|
+
rb_ary_push(array, entry_hash);
|
53
|
+
}
|
54
|
+
|
55
|
+
g_free(files);
|
56
|
+
|
57
|
+
return hash;
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
void Init_glibtop_proc_open_files()
|
62
|
+
{
|
63
|
+
rb_define_method(cLibGTop, "proc_open_files", rb_glibtop_proc_open_files, 1);
|
64
|
+
}
|
65
|
+
#endif
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/procsegment.h>
|
11
|
+
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proc_segment(VALUE self, VALUE pid)
|
14
|
+
{
|
15
|
+
glibtop_proc_segment buf;
|
16
|
+
VALUE hash;
|
17
|
+
|
18
|
+
glibtop_get_proc_segment(&buf, NUM2LONG(pid));
|
19
|
+
|
20
|
+
hash = rb_hash_new();
|
21
|
+
|
22
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
23
|
+
rb_hash_aset(hash, rb_str_new2("text_rss"), rb_uint2inum(buf.text_rss));
|
24
|
+
rb_hash_aset(hash, rb_str_new2("shlib_rss"), rb_uint2inum(buf.shlib_rss));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("data_rss"), rb_uint2inum(buf.data_rss));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("stack_rss"), rb_uint2inum(buf.stack_rss));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("dirty_size"), rb_uint2inum(buf.dirty_size));
|
28
|
+
rb_hash_aset(hash, rb_str_new2("start_code"), rb_uint2inum(buf.start_code));
|
29
|
+
rb_hash_aset(hash, rb_str_new2("end_code"), rb_uint2inum(buf.end_code));
|
30
|
+
rb_hash_aset(hash, rb_str_new2("start_stack"), rb_uint2inum(buf.start_stack));
|
31
|
+
|
32
|
+
return hash;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
void Init_glibtop_proc_segment()
|
37
|
+
{
|
38
|
+
rb_define_method(cLibGTop, "proc_segment", rb_glibtop_proc_segment, 1);
|
39
|
+
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/procsignal.h>
|
11
|
+
|
12
|
+
#define signal_mask_2_ruby_array(array, signal_mask) \
|
13
|
+
array = rb_ary_new2(2); \
|
14
|
+
for (i = 0; i < 2; i++){ \
|
15
|
+
rb_ary_push(array, rb_uint2inum(signal_mask[i])); \
|
16
|
+
}
|
17
|
+
|
18
|
+
|
19
|
+
static VALUE rb_glibtop_proc_signal(VALUE self, VALUE pid)
|
20
|
+
{
|
21
|
+
glibtop_proc_signal buf;
|
22
|
+
VALUE hash, signal, blocked, sigignore, sigcatch;
|
23
|
+
int i;
|
24
|
+
|
25
|
+
glibtop_get_proc_signal(&buf, NUM2LONG(pid));
|
26
|
+
|
27
|
+
hash = rb_hash_new();
|
28
|
+
|
29
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
30
|
+
|
31
|
+
signal_mask_2_ruby_array(signal, buf.signal);
|
32
|
+
signal_mask_2_ruby_array(blocked, buf.blocked);
|
33
|
+
signal_mask_2_ruby_array(sigignore, buf.sigignore);
|
34
|
+
signal_mask_2_ruby_array(sigcatch, buf.sigcatch);
|
35
|
+
|
36
|
+
rb_hash_aset(hash, rb_str_new2("signal"), signal);
|
37
|
+
rb_hash_aset(hash, rb_str_new2("blocked"), blocked);
|
38
|
+
rb_hash_aset(hash, rb_str_new2("sigignore"), sigignore);
|
39
|
+
rb_hash_aset(hash, rb_str_new2("sigcatch"), sigcatch);
|
40
|
+
|
41
|
+
return hash;
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
void Init_glibtop_proc_signal()
|
46
|
+
{
|
47
|
+
rb_define_method(cLibGTop, "proc_signal", rb_glibtop_proc_signal, 1);
|
48
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/procstate.h>
|
11
|
+
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proc_state(VALUE self, VALUE pid)
|
14
|
+
{
|
15
|
+
glibtop_proc_state buf;
|
16
|
+
char state[2];
|
17
|
+
VALUE hash;
|
18
|
+
|
19
|
+
glibtop_get_proc_state(&buf, NUM2LONG(pid));
|
20
|
+
|
21
|
+
state[0] = buf.state;
|
22
|
+
state[1] = '\0';
|
23
|
+
|
24
|
+
hash = rb_hash_new();
|
25
|
+
|
26
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("cmd"), rb_str_new2(buf.cmd));
|
28
|
+
rb_hash_aset(hash, rb_str_new2("state"), rb_str_new2(state));
|
29
|
+
rb_hash_aset(hash, rb_str_new2("uid"), INT2NUM(buf.uid));
|
30
|
+
rb_hash_aset(hash, rb_str_new2("gid"), INT2NUM(buf.gid));
|
31
|
+
#if (LIBGTOP_CHECK_VERSION(2, 5, 1))
|
32
|
+
rb_hash_aset(hash, rb_str_new2("ruid"), INT2NUM(buf.ruid));
|
33
|
+
rb_hash_aset(hash, rb_str_new2("rgid"), INT2NUM(buf.rgid));
|
34
|
+
rb_hash_aset(hash, rb_str_new2("has_cpu"), INT2NUM(buf.has_cpu));
|
35
|
+
rb_hash_aset(hash, rb_str_new2("processor"), INT2NUM(buf.processor));
|
36
|
+
rb_hash_aset(hash, rb_str_new2("last_processor"), INT2NUM(buf.last_processor));
|
37
|
+
#endif
|
38
|
+
|
39
|
+
return hash;
|
40
|
+
}
|
41
|
+
|
42
|
+
|
43
|
+
void Init_glibtop_proc_state()
|
44
|
+
{
|
45
|
+
rb_define_method(cLibGTop, "proc_state", rb_glibtop_proc_state, 1);
|
46
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/proctime.h>
|
11
|
+
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proc_time(VALUE self, VALUE pid)
|
14
|
+
{
|
15
|
+
glibtop_proc_time buf;
|
16
|
+
VALUE hash, xcpu_list, xcpu;
|
17
|
+
int ncpu, i;
|
18
|
+
|
19
|
+
glibtop_get_proc_time(&buf, NUM2LONG(pid));
|
20
|
+
|
21
|
+
hash = rb_hash_new();
|
22
|
+
|
23
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
24
|
+
rb_hash_aset(hash, rb_str_new2("start_time"), rb_uint2inum(buf.start_time));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("rtime"), rb_uint2inum(buf.rtime));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("utime"), rb_uint2inum(buf.utime));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("stime"), rb_uint2inum(buf.stime));
|
28
|
+
rb_hash_aset(hash, rb_str_new2("cutime"), rb_uint2inum(buf.cutime));
|
29
|
+
rb_hash_aset(hash, rb_str_new2("cstime"), rb_uint2inum(buf.cstime));
|
30
|
+
rb_hash_aset(hash, rb_str_new2("timeout"), rb_uint2inum(buf.timeout));
|
31
|
+
rb_hash_aset(hash, rb_str_new2("it_real_value"), rb_uint2inum(buf.it_real_value));
|
32
|
+
rb_hash_aset(hash, rb_str_new2("frequency"), rb_uint2inum(buf.frequency));
|
33
|
+
|
34
|
+
ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1;
|
35
|
+
xcpu_list = rb_ary_new2(ncpu);
|
36
|
+
|
37
|
+
for (i = 0; i < ncpu; i++) {
|
38
|
+
xcpu = rb_hash_new();
|
39
|
+
|
40
|
+
rb_hash_aset(xcpu, rb_str_new2("utime"), rb_uint2inum(buf.xcpu_utime[i]));
|
41
|
+
rb_hash_aset(xcpu, rb_str_new2("stime"), rb_uint2inum(buf.xcpu_stime[i]));
|
42
|
+
|
43
|
+
rb_ary_push(xcpu_list, xcpu);
|
44
|
+
}
|
45
|
+
rb_hash_aset(hash, rb_str_new2("xcpu"), xcpu_list);
|
46
|
+
|
47
|
+
return hash;
|
48
|
+
}
|
49
|
+
|
50
|
+
|
51
|
+
void Init_glibtop_proc_time()
|
52
|
+
{
|
53
|
+
rb_define_method(cLibGTop, "proc_time", rb_glibtop_proc_time, 1);
|
54
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/procuid.h>
|
11
|
+
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proc_uid(VALUE self, VALUE pid)
|
14
|
+
{
|
15
|
+
glibtop_proc_uid buf;
|
16
|
+
VALUE hash, groups;
|
17
|
+
int i;
|
18
|
+
|
19
|
+
glibtop_get_proc_uid(&buf, NUM2LONG(pid));
|
20
|
+
|
21
|
+
hash = rb_hash_new();
|
22
|
+
|
23
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
24
|
+
rb_hash_aset(hash, rb_str_new2("uid"), INT2NUM(buf.uid));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("euid"), INT2NUM(buf.euid));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("gid"), INT2NUM(buf.gid));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("egid"), INT2NUM(buf.egid));
|
28
|
+
#if (LIBGTOP_CHECK_VERSION(2, 5, 1))
|
29
|
+
rb_hash_aset(hash, rb_str_new2("suid"), INT2NUM(buf.suid));
|
30
|
+
rb_hash_aset(hash, rb_str_new2("sgid"), INT2NUM(buf.sgid));
|
31
|
+
rb_hash_aset(hash, rb_str_new2("fsuid"), INT2NUM(buf.fsuid));
|
32
|
+
rb_hash_aset(hash, rb_str_new2("fsgid"), INT2NUM(buf.fsgid));
|
33
|
+
#endif
|
34
|
+
rb_hash_aset(hash, rb_str_new2("pid"), INT2NUM(buf.pid));
|
35
|
+
rb_hash_aset(hash, rb_str_new2("ppid"), INT2NUM(buf.ppid));
|
36
|
+
rb_hash_aset(hash, rb_str_new2("pgrp"), INT2NUM(buf.pgrp));
|
37
|
+
rb_hash_aset(hash, rb_str_new2("session"), INT2NUM(buf.session));
|
38
|
+
rb_hash_aset(hash, rb_str_new2("tty"), INT2NUM(buf.tty));
|
39
|
+
rb_hash_aset(hash, rb_str_new2("tpgid"), INT2NUM(buf.tpgid));
|
40
|
+
rb_hash_aset(hash, rb_str_new2("priority"), INT2NUM(buf.priority));
|
41
|
+
rb_hash_aset(hash, rb_str_new2("nice"), INT2NUM(buf.nice));
|
42
|
+
|
43
|
+
#if (LIBGTOP_CHECK_VERSION(2, 5, 1))
|
44
|
+
groups = rb_ary_new2(buf.ngroups);
|
45
|
+
for (i = 0; i < GLIBTOP_MAX_GROUPS && i < buf.ngroups; i++){
|
46
|
+
rb_ary_push(groups, INT2NUM(buf.groups[i]));
|
47
|
+
}
|
48
|
+
rb_hash_aset(hash, rb_str_new2("groups"), groups);
|
49
|
+
#endif
|
50
|
+
|
51
|
+
return hash;
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
void Init_glibtop_proc_uid()
|
56
|
+
{
|
57
|
+
rb_define_method(cLibGTop, "proc_uid", rb_glibtop_proc_uid, 1);
|
58
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
#include <glibtop/proclist.h>
|
11
|
+
|
12
|
+
|
13
|
+
static VALUE rb_glibtop_proclist(VALUE self, VALUE which, VALUE arg)
|
14
|
+
{
|
15
|
+
glibtop_proclist buf;
|
16
|
+
unsigned int* pids_buf;
|
17
|
+
VALUE hash, pids;
|
18
|
+
int i;
|
19
|
+
|
20
|
+
pids_buf = glibtop_get_proclist(&buf, NUM2INT(which), NUM2INT(arg));
|
21
|
+
|
22
|
+
hash = rb_hash_new();
|
23
|
+
|
24
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("number"), rb_uint2inum(buf.number));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("size"), rb_uint2inum(buf.size));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("total"), rb_uint2inum(buf.total));
|
28
|
+
|
29
|
+
pids = rb_ary_new2(buf.number);
|
30
|
+
for (i = 0; i < buf.number; i++){
|
31
|
+
rb_ary_push(pids, rb_uint2inum(pids_buf[i]));
|
32
|
+
}
|
33
|
+
rb_hash_aset(hash, rb_str_new2("pids"), pids);
|
34
|
+
|
35
|
+
g_free(pids_buf);
|
36
|
+
|
37
|
+
return hash;
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
void Init_glibtop_proclist()
|
42
|
+
{
|
43
|
+
rb_define_const(cLibGTop, "KERN_PROC_ALL", INT2FIX(GLIBTOP_KERN_PROC_ALL));
|
44
|
+
rb_define_const(cLibGTop, "KERN_PROC_PID", INT2FIX(GLIBTOP_KERN_PROC_PID));
|
45
|
+
rb_define_const(cLibGTop, "KERN_PROC_PGRP", INT2FIX(GLIBTOP_KERN_PROC_PGRP));
|
46
|
+
rb_define_const(cLibGTop, "KERN_PROC_SESSION", INT2FIX(GLIBTOP_KERN_PROC_SESSION));
|
47
|
+
rb_define_const(cLibGTop, "KERN_PROC_TTY", INT2FIX(GLIBTOP_KERN_PROC_TTY));
|
48
|
+
rb_define_const(cLibGTop, "KERN_PROC_UID", INT2FIX(GLIBTOP_KERN_PROC_UID));
|
49
|
+
rb_define_const(cLibGTop, "KERN_PROC_RUID", INT2FIX(GLIBTOP_KERN_PROC_RUID));
|
50
|
+
rb_define_const(cLibGTop, "KERN_PROC_MASK", INT2FIX(GLIBTOP_KERN_PROC_MASK));
|
51
|
+
rb_define_const(cLibGTop, "EXCLUDE_IDLE", INT2FIX(GLIBTOP_EXCLUDE_IDLE));
|
52
|
+
rb_define_const(cLibGTop, "EXCLUDE_SYSTEM", INT2FIX(GLIBTOP_EXCLUDE_SYSTEM));
|
53
|
+
rb_define_const(cLibGTop, "EXCLUDE_NOTTY", INT2FIX(GLIBTOP_EXCLUDE_NOTTY));
|
54
|
+
|
55
|
+
rb_define_method(cLibGTop, "proclist", rb_glibtop_proclist, 2);
|
56
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
/*
|
2
|
+
* GLibTop is a wrapper library of a libgtop-2.x
|
3
|
+
*
|
4
|
+
* @author DATE Ken <itacchi@gmail.com>
|
5
|
+
* @see http://rubyforge.org/projects/ruby-libgtop2/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <rb_glibtop.h>
|
10
|
+
|
11
|
+
|
12
|
+
static VALUE rb_glibtop_sem_limits(VALUE self)
|
13
|
+
{
|
14
|
+
glibtop_sem_limits buf;
|
15
|
+
VALUE hash;
|
16
|
+
|
17
|
+
glibtop_get_sem_limits(&buf);
|
18
|
+
|
19
|
+
hash = rb_hash_new();
|
20
|
+
|
21
|
+
rb_hash_aset(hash, rb_str_new2("flags"), rb_uint2inum(buf.flags));
|
22
|
+
rb_hash_aset(hash, rb_str_new2("semmap"), rb_uint2inum(buf.semmap));
|
23
|
+
rb_hash_aset(hash, rb_str_new2("semmni"), rb_uint2inum(buf.semmni));
|
24
|
+
rb_hash_aset(hash, rb_str_new2("semmns"), rb_uint2inum(buf.semmns));
|
25
|
+
rb_hash_aset(hash, rb_str_new2("semmnu"), rb_uint2inum(buf.semmnu));
|
26
|
+
rb_hash_aset(hash, rb_str_new2("semmsl"), rb_uint2inum(buf.semmsl));
|
27
|
+
rb_hash_aset(hash, rb_str_new2("semopm"), rb_uint2inum(buf.semopm));
|
28
|
+
rb_hash_aset(hash, rb_str_new2("semume"), rb_uint2inum(buf.semume));
|
29
|
+
rb_hash_aset(hash, rb_str_new2("semusz"), rb_uint2inum(buf.semusz));
|
30
|
+
rb_hash_aset(hash, rb_str_new2("semvmx"), rb_uint2inum(buf.semvmx));
|
31
|
+
rb_hash_aset(hash, rb_str_new2("semaem"), rb_uint2inum(buf.semaem));
|
32
|
+
|
33
|
+
return hash;
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
void Init_glibtop_sem_limits()
|
38
|
+
{
|
39
|
+
rb_define_method(cLibGTop, "sem_limits", rb_glibtop_sem_limits, 0);
|
40
|
+
}
|