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 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