hvutils 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +4 -0
- data/ext/sysinfo/extconf.rb +3 -0
- data/ext/sysinfo/sysinfo.c +121 -0
- data/ext/sysinfo/sysinfo.h +22 -0
- data/lib/hvutils.rb +1 -0
- data/lib/hvutils/version.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd9efd6da82f2b2941d7f6654d3c58f3d9764a71
|
4
|
+
data.tar.gz: b2b85361d26de79160f7628d47d80d2316768358
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f4d711f5b653f093c1b38ff0a2f6e21724d01bc69f1de6b8325d3d2f539edaed529e2653022377b83dc15db13ba3eb7a79b01a184faf5920f2635918c6c3d73
|
7
|
+
data.tar.gz: 84c8e07d753b1688813194cd77915384acb2002cce3391fe0e5c307b74a74f7294b3db0dbdda1d7e8f7cfa2052b59c4f7e9441ea9238ec3c13b39c31e88fdb7a
|
data/Rakefile
CHANGED
@@ -0,0 +1,121 @@
|
|
1
|
+
/*
|
2
|
+
* sysinfo.c
|
3
|
+
*
|
4
|
+
* Utility to get system information.
|
5
|
+
*
|
6
|
+
* (c) 2015 Herman verschooten
|
7
|
+
*/
|
8
|
+
#include <ruby.h>
|
9
|
+
#include <sysinfo.h>
|
10
|
+
|
11
|
+
VALUE Module= Qnil;
|
12
|
+
|
13
|
+
void Init_sysinfo() {
|
14
|
+
Module = rb_define_module("Hvutils");
|
15
|
+
rb_define_module_function(Module, "sysinfo", method_sysinfo, 0);
|
16
|
+
}
|
17
|
+
|
18
|
+
#ifdef _DARWIN_C_SOURCE
|
19
|
+
long uptime(void){
|
20
|
+
struct timeval boottime;
|
21
|
+
size_t len = sizeof(boottime);
|
22
|
+
int mib[2] = { CTL_KERN, KERN_BOOTTIME };
|
23
|
+
if(sysctl(mib, 2, &boottime, &len, NULL, 0) != -1) {
|
24
|
+
time_t bsec = boottime.tv_sec, csec = time(NULL);
|
25
|
+
return difftime(csec, bsec);
|
26
|
+
}
|
27
|
+
return -1;
|
28
|
+
}
|
29
|
+
|
30
|
+
long totalram(void){
|
31
|
+
long totram;
|
32
|
+
size_t len = sizeof(totram);
|
33
|
+
int mib[2] = { CTL_HW, HW_MEMSIZE };
|
34
|
+
if(sysctl(mib, 2, &totram, &len, NULL, 0) != -1)
|
35
|
+
return totram;
|
36
|
+
return -1;
|
37
|
+
}
|
38
|
+
|
39
|
+
/* int get_load(double loadavg[]) { */
|
40
|
+
|
41
|
+
/* size_t len = sizeof(loadinfo); */
|
42
|
+
/* printf("Size: %lu\n", len); */
|
43
|
+
/* int mib[2] = { CTL_VM, VM_LOADAVG }; */
|
44
|
+
/* return sysctl(mib,2, &loadinfo, &len, NULL, 0); */
|
45
|
+
/* } */
|
46
|
+
|
47
|
+
int
|
48
|
+
getloadavg(loadavg, nelem)
|
49
|
+
double loadavg[];
|
50
|
+
int nelem;
|
51
|
+
{
|
52
|
+
struct loadavg loadinfo;
|
53
|
+
int i, mib[2];
|
54
|
+
size_t size;
|
55
|
+
|
56
|
+
mib[0] = CTL_VM;
|
57
|
+
mib[1] = VM_LOADAVG;
|
58
|
+
size = sizeof(loadinfo);
|
59
|
+
if (sysctl(mib, 2, &loadinfo, &size, NULL, 0) < 0)
|
60
|
+
return (-1);
|
61
|
+
|
62
|
+
nelem = MIN(nelem, sizeof(loadinfo.ldavg) / sizeof(fixpt_t));
|
63
|
+
for (i = 0; i < nelem; i++) {
|
64
|
+
loadavg[i] = (double) loadinfo.ldavg[i] / loadinfo.fscale;
|
65
|
+
}
|
66
|
+
return (nelem);
|
67
|
+
}
|
68
|
+
#endif
|
69
|
+
VALUE method_sysinfo(VALUE self) {
|
70
|
+
#ifdef __linux__
|
71
|
+
struct sysinfo my_info;
|
72
|
+
VALUE result, load;
|
73
|
+
if(sysinfo(&my_info) != 0) {
|
74
|
+
rb_raise(rb_eStandardError, "Could not retrieve system information");
|
75
|
+
}
|
76
|
+
result = rb_hash_new();
|
77
|
+
load = rb_hash_new();
|
78
|
+
|
79
|
+
rb_hash_aset(load, INT2NUM(1), rb_float_new(my_info.loads[0]));
|
80
|
+
rb_hash_aset(load, INT2NUM(5), rb_float_new(my_info.loads[1]));
|
81
|
+
rb_hash_aset(load, INT2NUM(15), rb_float_new(my_info.loads[2]));
|
82
|
+
|
83
|
+
rb_hash_aset(result, ID2SYM(rb_intern("uptime")), LONG2NUM(my_info.uptime));
|
84
|
+
rb_hash_aset(result, ID2SYM(rb_intern("load")), load);
|
85
|
+
rb_hash_aset(result, ID2SYM(rb_intern("freeram")), LONG2NUM(my_info.freeram));
|
86
|
+
rb_hash_aset(result, ID2SYM(rb_intern("totalram")), LONG2NUM(my_info.totalram));
|
87
|
+
rb_hash_aset(result, ID2SYM(rb_intern("sharedram")), LONG2NUM(my_info.sharedram));
|
88
|
+
rb_hash_aset(result, ID2SYM(rb_intern("bufferram")), LONG2NUM(my_info.bufferram));
|
89
|
+
rb_hash_aset(result, ID2SYM(rb_intern("totalswap")), LONG2NUM(my_info.totalswap));
|
90
|
+
rb_hash_aset(result, ID2SYM(rb_intern("freeswap")), LONG2NUM(my_info.freeswap));
|
91
|
+
rb_hash_aset(result, ID2SYM(rb_intern("freehigh")), LONG2NUM(my_info.freehigh));
|
92
|
+
rb_hash_aset(result, ID2SYM(rb_intern("totalhigh")), LONG2NUM(my_info.totalhigh));
|
93
|
+
rb_hash_aset(result, ID2SYM(rb_intern("memunit")), INT2NUM(my_info.mem_unit));
|
94
|
+
rb_hash_aset(result, ID2SYM(rb_intern("procs")), INT2NUM(my_info.procs));
|
95
|
+
|
96
|
+
return result;
|
97
|
+
#elif defined(_DARWIN_C_SOURCE)
|
98
|
+
VALUE result, load;
|
99
|
+
|
100
|
+
double loadinfo[3];
|
101
|
+
int nelem;
|
102
|
+
|
103
|
+
load = rb_hash_new();
|
104
|
+
|
105
|
+
if(getloadavg(loadinfo,nelem) > 0){
|
106
|
+
rb_hash_aset(load, INT2NUM(1), rb_float_new(loadinfo[0]));
|
107
|
+
rb_hash_aset(load, INT2NUM(5), rb_float_new(loadinfo[1]));
|
108
|
+
rb_hash_aset(load, INT2NUM(15), rb_float_new(loadinfo[2]));
|
109
|
+
}
|
110
|
+
|
111
|
+
result = rb_hash_new();
|
112
|
+
rb_hash_aset(result, ID2SYM(rb_intern("uptime")), LONG2NUM(uptime()));
|
113
|
+
rb_hash_aset(result, ID2SYM(rb_intern("totalram")), LONG2NUM(totalram()));
|
114
|
+
rb_hash_aset(result, ID2SYM(rb_intern("load")), load);
|
115
|
+
|
116
|
+
return result;
|
117
|
+
#else
|
118
|
+
return rb_hash_new();
|
119
|
+
#endif
|
120
|
+
}
|
121
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
/*
|
2
|
+
* sysinfo.h
|
3
|
+
*
|
4
|
+
* Utility to get system information
|
5
|
+
*
|
6
|
+
* (c) 2015 Herman verschooten
|
7
|
+
*/
|
8
|
+
#ifndef __sysinfo
|
9
|
+
#define __sysinfo
|
10
|
+
|
11
|
+
#ifdef __linux__
|
12
|
+
#include <sys/sysinfo.h>
|
13
|
+
#endif
|
14
|
+
#if defined(_DARWIN_C_SOURCE)
|
15
|
+
#include <sys/types.h>
|
16
|
+
#include <sys/sysctl.h>
|
17
|
+
#endif
|
18
|
+
|
19
|
+
VALUE method_sysinfo(VALUE);
|
20
|
+
|
21
|
+
#endif
|
22
|
+
|
data/lib/hvutils.rb
CHANGED
data/lib/hvutils/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hvutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Herman verschooten
|
@@ -74,6 +74,7 @@ extensions:
|
|
74
74
|
- ext/arp_get/extconf.rb
|
75
75
|
- ext/get_ip/extconf.rb
|
76
76
|
- ext/get_mac/extconf.rb
|
77
|
+
- ext/sysinfo/extconf.rb
|
77
78
|
extra_rdoc_files: []
|
78
79
|
files:
|
79
80
|
- ".gitignore"
|
@@ -91,6 +92,9 @@ files:
|
|
91
92
|
- ext/get_mac/extconf.rb
|
92
93
|
- ext/get_mac/get_mac.c
|
93
94
|
- ext/get_mac/get_mac.h
|
95
|
+
- ext/sysinfo/extconf.rb
|
96
|
+
- ext/sysinfo/sysinfo.c
|
97
|
+
- ext/sysinfo/sysinfo.h
|
94
98
|
- hvutils.gemspec
|
95
99
|
- lib/hvutils.rb
|
96
100
|
- lib/hvutils/version.rb
|