hvutils 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|