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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c52248e9c32d68c8c2437d51652cb2042a807f4
4
- data.tar.gz: 7510971d881114846e404661d21539a592cc2f85
3
+ metadata.gz: bd9efd6da82f2b2941d7f6654d3c58f3d9764a71
4
+ data.tar.gz: b2b85361d26de79160f7628d47d80d2316768358
5
5
  SHA512:
6
- metadata.gz: 3c0db13251298a1253f27a3928ebde51ab5c5b675430663058b2ad9e7bd41686c35b77e1388e1e1700a55bdc415a092405c95aa889bf474c35c3d098bb2e0475
7
- data.tar.gz: 53c6bf251f5dc085fed8068bfbfa6a2a6c8dca2f7a7903750525db77c587b50de33cd430dde6f6a5cd31def05033e25969b673b65aaeea14d9d0bed4d0346398
6
+ metadata.gz: 7f4d711f5b653f093c1b38ff0a2f6e21724d01bc69f1de6b8325d3d2f539edaed529e2653022377b83dc15db13ba3eb7a79b01a184faf5920f2635918c6c3d73
7
+ data.tar.gz: 84c8e07d753b1688813194cd77915384acb2002cce3391fe0e5c307b74a74f7294b3db0dbdda1d7e8f7cfa2052b59c4f7e9441ea9238ec3c13b39c31e88fdb7a
data/Rakefile CHANGED
@@ -13,3 +13,7 @@ Rake::ExtensionTask.new('arp_get') do |ext|
13
13
  ext.lib_dir = "lib/hvutils"
14
14
  end
15
15
 
16
+ Rake::ExtensionTask.new('sysinfo') do |ext|
17
+ ext.lib_dir = "lib/hvutils"
18
+ end
19
+
@@ -0,0 +1,3 @@
1
+ require 'mkmf'
2
+ create_makefile('hvutils/sysinfo')
3
+
@@ -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
+
@@ -2,6 +2,7 @@ require "hvutils/version"
2
2
  require "hvutils/get_mac"
3
3
  require "hvutils/get_ip"
4
4
  require "hvutils/arp_get"
5
+ require "hvutils/sysinfo"
5
6
 
6
7
  module Hvutils
7
8
  # Your code goes here...
@@ -1,3 +1,3 @@
1
1
  module Hvutils
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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.3
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