hyperic-sigar 1.7.0

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.
Files changed (60) hide show
  1. data/COPYING +339 -0
  2. data/EXCEPTIONS +104 -0
  3. data/README +2 -0
  4. data/Rakefile +87 -0
  5. data/bindings/SigarWrapper.pm +2934 -0
  6. data/bindings/ruby/examples/cpu_info.rb +16 -0
  7. data/bindings/ruby/examples/df.rb +32 -0
  8. data/bindings/ruby/examples/free.rb +19 -0
  9. data/bindings/ruby/examples/ifconfig.rb +67 -0
  10. data/bindings/ruby/examples/netstat.rb +54 -0
  11. data/bindings/ruby/examples/pargs.rb +18 -0
  12. data/bindings/ruby/examples/penv.rb +14 -0
  13. data/bindings/ruby/examples/route.rb +31 -0
  14. data/bindings/ruby/examples/who.rb +13 -0
  15. data/bindings/ruby/extconf.rb +110 -0
  16. data/bindings/ruby/rbsigar.c +628 -0
  17. data/include/sigar.h +901 -0
  18. data/include/sigar_fileinfo.h +141 -0
  19. data/include/sigar_format.h +65 -0
  20. data/include/sigar_getline.h +18 -0
  21. data/include/sigar_log.h +82 -0
  22. data/include/sigar_private.h +365 -0
  23. data/include/sigar_ptql.h +55 -0
  24. data/include/sigar_util.h +192 -0
  25. data/src/os/aix/aix_sigar.c +1927 -0
  26. data/src/os/aix/sigar_os.h +71 -0
  27. data/src/os/darwin/darwin_sigar.c +3450 -0
  28. data/src/os/darwin/sigar_os.h +82 -0
  29. data/src/os/hpux/dlpi.c +284 -0
  30. data/src/os/hpux/hpux_sigar.c +1205 -0
  31. data/src/os/hpux/sigar_os.h +51 -0
  32. data/src/os/linux/linux_sigar.c +2595 -0
  33. data/src/os/linux/sigar_os.h +84 -0
  34. data/src/os/netware/netware_sigar.c +719 -0
  35. data/src/os/netware/sigar_os.h +26 -0
  36. data/src/os/osf1/osf1_sigar.c +593 -0
  37. data/src/os/osf1/sigar_os.h +42 -0
  38. data/src/os/solaris/get_mib2.c +321 -0
  39. data/src/os/solaris/get_mib2.h +127 -0
  40. data/src/os/solaris/hmekstat.h +77 -0
  41. data/src/os/solaris/kstats.c +182 -0
  42. data/src/os/solaris/procfs.c +99 -0
  43. data/src/os/solaris/sigar_os.h +225 -0
  44. data/src/os/solaris/solaris_sigar.c +2561 -0
  45. data/src/os/stub/sigar_os.h +8 -0
  46. data/src/os/stub/stub_sigar.c +303 -0
  47. data/src/os/win32/peb.c +213 -0
  48. data/src/os/win32/sigar_os.h +623 -0
  49. data/src/os/win32/sigar_pdh.h +49 -0
  50. data/src/os/win32/win32_sigar.c +3718 -0
  51. data/src/sigar.c +2292 -0
  52. data/src/sigar_cache.c +181 -0
  53. data/src/sigar_fileinfo.c +792 -0
  54. data/src/sigar_format.c +649 -0
  55. data/src/sigar_getline.c +1849 -0
  56. data/src/sigar_ptql.c +1966 -0
  57. data/src/sigar_signal.c +218 -0
  58. data/src/sigar_util.c +1061 -0
  59. data/version.properties +11 -0
  60. metadata +112 -0
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
3
+ * This file is part of SIGAR.
4
+ *
5
+ * SIGAR is free software; you can redistribute it and/or modify
6
+ * it under the terms version 2 of the GNU General Public License as
7
+ * published by the Free Software Foundation. This program is distributed
8
+ * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
9
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
+ * PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ * details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with this program; if not, write to the Free Software
15
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
16
+ * USA.
17
+ */
18
+
19
+ #ifndef SIGAR_OS_H
20
+ #define SIGAR_OS_H
21
+
22
+ struct sigar_t {
23
+ SIGAR_T_BASE;
24
+ };
25
+
26
+ #endif /* SIGAR_OS_H */
@@ -0,0 +1,593 @@
1
+ /*
2
+ * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
3
+ * This file is part of SIGAR.
4
+ *
5
+ * SIGAR is free software; you can redistribute it and/or modify
6
+ * it under the terms version 2 of the GNU General Public License as
7
+ * published by the Free Software Foundation. This program is distributed
8
+ * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
9
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
+ * PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ * details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with this program; if not, write to the Free Software
15
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
16
+ * USA.
17
+ */
18
+
19
+ #include "sigar.h"
20
+ #include "sigar_private.h"
21
+ #include "sigar_os.h"
22
+ #include "sigar_util.h"
23
+
24
+ #include <mach.h>
25
+ #include <mach/mach_types.h>
26
+ #include <mach/task_info.h>
27
+
28
+ #include <sys/mount.h>
29
+ #include <sys/fs_types.h>
30
+ #include <sys/user.h>
31
+
32
+ int sigar_os_open(sigar_t **sigar)
33
+ {
34
+ *sigar = malloc(sizeof(**sigar));
35
+
36
+ (*sigar)->pagesize = getpagesize();
37
+ (*sigar)->boot_time = 0;
38
+ (*sigar)->mhz = 0;
39
+ (*sigar)->nproc = -1;
40
+
41
+ return SIGAR_OK;
42
+ }
43
+
44
+ int sigar_os_close(sigar_t *sigar)
45
+ {
46
+ free(sigar);
47
+ return SIGAR_OK;
48
+ }
49
+
50
+ char *sigar_os_error_string(sigar_t *sigar, int err)
51
+ {
52
+ return NULL;
53
+ }
54
+
55
+ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
56
+ {
57
+ vm_statistics_data_t vmstats;
58
+
59
+ vm_statistics(task_self(), &vmstats);
60
+
61
+ mem->free = vmstats.free_count * vmstats.pagesize;
62
+ mem->used = vmstats.active_count * vmstats.pagesize;
63
+
64
+ mem->total =
65
+ mem->free + mem->used +
66
+ ((vmstats.inactive_count + vmstats.wire_count) * vmstats.pagesize);
67
+
68
+ mem->actual_free = mem->free;
69
+ mem->actual_used = mem->used;
70
+
71
+ sigar_mem_calc_ram(sigar, mem);
72
+
73
+ return SIGAR_OK;
74
+ }
75
+
76
+ int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
77
+ {
78
+ struct tbl_swapinfo info;
79
+
80
+ table(TBL_SWAPINFO, -1, &info, 1, sizeof(info));
81
+
82
+ swap->total = info.size;
83
+ swap->free = info.free;
84
+ swap->total *= sigar->pagesize;
85
+ swap->free *= sigar->pagesize;
86
+
87
+ swap->used = swap->total - swap->free;
88
+
89
+ swap->page_in = swap->page_out = -1;
90
+
91
+ return SIGAR_OK;
92
+ }
93
+
94
+ int sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu)
95
+ {
96
+ struct tbl_sysinfo sysinfo;
97
+
98
+ if (table(TBL_SYSINFO, 0, &sysinfo, 1, sizeof(sysinfo)) != 1) {
99
+ return errno;
100
+ }
101
+
102
+ cpu->user = sysinfo.si_user;
103
+ cpu->nice = sysinfo.si_nice;
104
+ cpu->sys = sysinfo.si_sys;
105
+ cpu->idle = sysinfo.si_idle;
106
+ cpu->wait = 0; /*N/A?*/
107
+ cpu->irq = 0; /*N/A*/
108
+ cpu->soft_irq = 0; /*N/A*/
109
+ cpu->stolen = 0; /*N/A*/
110
+ cpu->total = cpu->user + cpu->nice + cpu->sys + cpu->idle + cpu->wait;
111
+
112
+ return SIGAR_OK;
113
+ }
114
+
115
+ int sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist)
116
+ {
117
+ sigar_cpu_t *cpu;
118
+
119
+ sigar_cpu_list_create(cpulist);
120
+
121
+ /* XXX multi cpu */
122
+ cpu = &cpulist->data[cpulist->number++];
123
+
124
+ return sigar_cpu_get(sigar, cpu);
125
+ }
126
+
127
+ int sigar_uptime_get(sigar_t *sigar,
128
+ sigar_uptime_t *uptime)
129
+ {
130
+ if (sigar->boot_time == 0) {
131
+ struct tbl_sysinfo sysinfo;
132
+
133
+ if (table(TBL_SYSINFO, 0, &sysinfo, 1, sizeof(sysinfo)) != 1) {
134
+ return errno;
135
+ }
136
+
137
+ sigar->boot_time = sysinfo.si_boottime;
138
+ }
139
+
140
+ uptime->uptime = time(NULL) - sigar->boot_time;
141
+
142
+ return SIGAR_OK;
143
+ }
144
+
145
+ int sigar_loadavg_get(sigar_t *sigar,
146
+ sigar_loadavg_t *loadavg)
147
+ {
148
+ int i;
149
+ struct tbl_loadavg avg;
150
+
151
+ if (table(TBL_LOADAVG, 0, &avg, 1, sizeof(avg)) < 0) {
152
+ return errno;
153
+ }
154
+
155
+ if (avg.tl_lscale) {
156
+ for (i=0; i<3; i++) {
157
+ loadavg->loadavg[i] =
158
+ ((double)avg.tl_avenrun.l[i] /
159
+ (double)avg.tl_lscale);
160
+ }
161
+ }
162
+ else {
163
+ for (i=0; i<3; i++) {
164
+ loadavg->loadavg[i] = avg.tl_avenrun.d[i];
165
+ }
166
+ }
167
+
168
+ return SIGAR_OK;
169
+ }
170
+
171
+ #define PROC_ELTS 16
172
+
173
+ int sigar_os_proc_list_get(sigar_t *sigar,
174
+ sigar_proc_list_t *proclist)
175
+ {
176
+ struct tbl_procinfo procinfo[PROC_ELTS];
177
+ int offset;
178
+
179
+ if (sigar->nproc == -1) {
180
+ /* this number will not change while we are running */
181
+ sigar->nproc = table(TBL_PROCINFO, 0, NULL, INT_MAX, 0);
182
+ }
183
+
184
+ for (offset=0; offset<sigar->nproc; offset+=PROC_ELTS) {
185
+ int i;
186
+ int elts = table(TBL_PROCINFO, offset, &procinfo,
187
+ PROC_ELTS, sizeof(procinfo[0]));
188
+
189
+ for (i=0; i<elts; i++) {
190
+ struct tbl_procinfo *info = &procinfo[i];
191
+ if (info->pi_status == PI_EMPTY) {
192
+ continue;
193
+ }
194
+
195
+ SIGAR_PROC_LIST_GROW(proclist);
196
+
197
+ proclist->data[proclist->number++] = info->pi_pid;
198
+ }
199
+ }
200
+
201
+ return SIGAR_OK;
202
+ }
203
+
204
+ int sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
205
+ sigar_proc_mem_t *procmem)
206
+ {
207
+ task_t self;
208
+ task_basic_info_data_t taskinfo;
209
+ struct user s_user;
210
+ int type = TASK_BASIC_INFO_COUNT;
211
+ int status;
212
+
213
+ status = task_by_unix_pid(task_self(), pid, &self);
214
+
215
+ if (status != KERN_SUCCESS) {
216
+ return errno;
217
+ }
218
+
219
+ status = task_info(self, TASK_BASIC_INFO,
220
+ (task_info_t)&taskinfo, &type);
221
+
222
+ if (status != KERN_SUCCESS) {
223
+ return errno;
224
+ }
225
+
226
+ procmem->resident = taskinfo.resident_size;
227
+ procmem->size = taskinfo.virtual_size;
228
+
229
+ status = table(TBL_UAREA, pid, &s_user, 1, sizeof(s_user));
230
+
231
+ if (status != 1) {
232
+ procmem->share = SIGAR_FIELD_NOTIMPL;
233
+ return SIGAR_OK;
234
+ }
235
+
236
+ procmem->share = s_user.u_ru.ru_ixrss;
237
+
238
+ procmem->page_faults = SIGAR_FIELD_NOTIMPL;
239
+ procmem->minor_faults = SIGAR_FIELD_NOTIMPL;
240
+ procmem->major_faults = SIGAR_FIELD_NOTIMPL;
241
+
242
+ return SIGAR_OK;
243
+ }
244
+
245
+ int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
246
+ sigar_proc_cred_t *proccred)
247
+ {
248
+ proccred->uid = SIGAR_FIELD_NOTIMPL;
249
+ proccred->gid = SIGAR_FIELD_NOTIMPL;
250
+ proccred->euid = SIGAR_FIELD_NOTIMPL;
251
+ proccred->egid = SIGAR_FIELD_NOTIMPL;
252
+
253
+ return SIGAR_OK;
254
+ }
255
+
256
+ int sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
257
+ sigar_proc_time_t *proctime)
258
+ {
259
+ struct user s_user;
260
+ int status;
261
+
262
+ status = table(TBL_UAREA, pid, &s_user, 1, sizeof(s_user));
263
+
264
+ if (status != 1) {
265
+ return errno;
266
+ }
267
+
268
+ proctime->user = s_user.u_ru.ru_utime.tv_sec;
269
+ proctime->sys = s_user.u_ru.ru_stime.tv_sec;
270
+ proctime->total = proctime->user + proctime->sys;
271
+ proctime->start_time = s_user.u_start.tv_sec;
272
+
273
+ return SIGAR_OK;
274
+ }
275
+
276
+ int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
277
+ sigar_proc_state_t *procstate)
278
+ {
279
+ struct tbl_procinfo info;
280
+ int status;
281
+
282
+ status = table(TBL_PROCINFO, pid, &info, 1, sizeof(info));
283
+
284
+ if (status != 1) {
285
+ return errno;
286
+ }
287
+
288
+ SIGAR_SSTRCPY(procstate->name, info.pi_comm);
289
+ procstate->ppid = info.pi_ppid;
290
+ procstate->priority = SIGAR_FIELD_NOTIMPL;
291
+ procstate->nice = SIGAR_FIELD_NOTIMPL;
292
+ procstate->tty = info.pi_ttyd;
293
+ procstate->threads = SIGAR_FIELD_NOTIMPL;
294
+ procstate->processor = SIGAR_FIELD_NOTIMPL;
295
+
296
+ switch (info.pi_status) {
297
+ case PI_ACTIVE:
298
+ procstate->state = 'R';
299
+ break;
300
+ case PI_ZOMBIE:
301
+ procstate->state = 'Z';
302
+ break;
303
+ default:
304
+ procstate->state = 'S';
305
+ break;
306
+ }
307
+
308
+ return SIGAR_OK;
309
+ }
310
+
311
+ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
312
+ sigar_proc_args_t *procargs)
313
+ {
314
+ return SIGAR_ENOTIMPL;
315
+ }
316
+
317
+ int sigar_proc_env_get(sigar_t *sigar, sigar_pid_t pid,
318
+ sigar_proc_env_t *procenv)
319
+ {
320
+ return SIGAR_ENOTIMPL;
321
+ }
322
+
323
+ int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
324
+ sigar_proc_fd_t *procfd)
325
+ {
326
+ procfd->total = SIGAR_FIELD_NOTIMPL;
327
+ return SIGAR_OK;
328
+ }
329
+
330
+ int sigar_proc_exe_get(sigar_t *sigar, sigar_pid_t pid,
331
+ sigar_proc_exe_t *procexe)
332
+ {
333
+ return SIGAR_ENOTIMPL;
334
+ }
335
+
336
+ int sigar_proc_modules_get(sigar_t *sigar, sigar_pid_t pid,
337
+ sigar_proc_modules_t *procmods)
338
+ {
339
+ return SIGAR_ENOTIMPL;
340
+ }
341
+
342
+ int sigar_thread_cpu_get(sigar_t *sigar,
343
+ sigar_uint64_t id,
344
+ sigar_thread_cpu_t *cpu)
345
+ {
346
+ return SIGAR_ENOTIMPL;
347
+ }
348
+
349
+ int sigar_os_fs_type_get(sigar_file_system_t *fsp)
350
+ {
351
+ return fsp->type;
352
+ }
353
+
354
+ static int sigar_fsstat(struct statfs **fs, int *num)
355
+ {
356
+ int size;
357
+
358
+ if ((*num = getfsstat(NULL, 0, MNT_WAIT)) < 0) {
359
+ return errno;
360
+ }
361
+
362
+ size = ((*num)+1) * sizeof(struct statfs);
363
+
364
+ *fs = malloc(size);
365
+
366
+ if ((*num = getfsstat(*fs, size, MNT_WAIT)) < 0) {
367
+ free(fs);
368
+ return errno;
369
+ }
370
+
371
+ return SIGAR_OK;
372
+ }
373
+
374
+ int sigar_file_system_list_get(sigar_t *sigar,
375
+ sigar_file_system_list_t *fslist)
376
+ {
377
+ int i, num, status;
378
+ struct statfs *fs;
379
+
380
+ if ((status = sigar_fsstat(&fs, &num)) != SIGAR_OK) {
381
+ return status;
382
+ }
383
+
384
+ sigar_file_system_list_create(fslist);
385
+
386
+ for (i=0; i<num; i++) {
387
+ sigar_file_system_t *fsp;
388
+ const char *typename = NULL;
389
+
390
+ SIGAR_FILE_SYSTEM_LIST_GROW(fslist);
391
+
392
+ fsp = &fslist->data[fslist->number++];
393
+
394
+ SIGAR_SSTRCPY(fsp->dir_name, fs[i].f_mntonname);
395
+ SIGAR_SSTRCPY(fsp->dev_name, fs[i].f_mntfromname);
396
+ SIGAR_SSTRCPY(fsp->sys_type_name, mnt_names[fs[i].f_type]);
397
+ fsp->options[0] = '\0'; /*XXX*/
398
+
399
+ switch (fs[i].f_type) {
400
+ case MOUNT_UFS:
401
+ typename = "ufs";
402
+ fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
403
+ break;
404
+ case MOUNT_MFS:
405
+ case MOUNT_MSFS:
406
+ typename = "advfs";
407
+ fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
408
+ break;
409
+ case MOUNT_FDFS:
410
+ typename = "fdfs";
411
+ fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
412
+ break;
413
+ case MOUNT_DVDFS:
414
+ case MOUNT_CDFS:
415
+ fsp->type = SIGAR_FSTYPE_CDROM;
416
+ break;
417
+ case MOUNT_DFS: /* DCE */
418
+ typename = "dfs";
419
+ fsp->type = SIGAR_FSTYPE_NETWORK;
420
+ break;
421
+ case MOUNT_EFS: /* DCE */
422
+ typename = "efs";
423
+ fsp->type = SIGAR_FSTYPE_NETWORK;
424
+ break;
425
+ case MOUNT_NFS:
426
+ case MOUNT_NFS3:
427
+ typename = "nfs";
428
+ fsp->type = SIGAR_FSTYPE_NETWORK;
429
+ break;
430
+ case MOUNT_CSPEC:
431
+ case MOUNT_CFS:
432
+ typename = "cfs";
433
+ fsp->type = SIGAR_FSTYPE_NETWORK;
434
+ break;
435
+ case MOUNT_NONE:
436
+ case MOUNT_PC:
437
+ case MOUNT_S5FS:
438
+ case MOUNT_PROCFS:
439
+ case MOUNT_FFM:
440
+ case MOUNT_ADDON:
441
+ case MOUNT_AUTOFS:
442
+ default:
443
+ break;
444
+ }
445
+
446
+ /* we set fsp->type, just looking up sigar.c:fstype_names[type] */
447
+ sigar_fs_type_get(fsp);
448
+
449
+ if (typename == NULL) {
450
+ typename = fsp->type_name;
451
+ }
452
+ }
453
+
454
+ free(fs);
455
+
456
+ return SIGAR_OK;
457
+ }
458
+
459
+ int sigar_disk_usage_get(sigar_t *sigar, const char *name,
460
+ sigar_disk_usage_t *usage)
461
+ {
462
+ return SIGAR_ENOTIMPL;
463
+ }
464
+
465
+ #define SIGAR_FS_BLOCKS_TO_BYTES(buf, f) \
466
+ (((sigar_uint64_t)buf.f * (buf.f_bsize / 512)) >> 1)
467
+
468
+ int sigar_file_system_usage_get(sigar_t *sigar,
469
+ const char *dirname,
470
+ sigar_file_system_usage_t *fsusage)
471
+ {
472
+ struct statfs buf;
473
+
474
+ if (statfs((char *)dirname, &buf) != 0) {
475
+ return errno;
476
+ }
477
+
478
+ fsusage->total = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_blocks);
479
+ fsusage->free = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_bfree);
480
+ fsusage->avail = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_bavail);
481
+ fsusage->used = fsusage->total - fsusage->free;
482
+ fsusage->files = buf.f_files;
483
+ fsusage->free_files = buf.f_ffree;
484
+ fsusage->use_percent = sigar_file_system_usage_calc_used(sigar, fsusage);
485
+
486
+ SIGAR_DISK_STATS_INIT(&fsusage->disk)
487
+
488
+ return SIGAR_OK;
489
+ }
490
+
491
+ int sigar_cpu_info_list_get(sigar_t *sigar,
492
+ sigar_cpu_info_list_t *cpu_infos)
493
+ {
494
+ sigar_cpu_info_t *info;
495
+
496
+ if (sigar->mhz == 0) {
497
+ struct tbl_sysinfo sysinfo;
498
+
499
+ if (table(TBL_SYSINFO, 0, &sysinfo, 1, sizeof(sysinfo)) != 1) {
500
+ return errno;
501
+ }
502
+
503
+ sigar->mhz = sysinfo.si_hz;
504
+ }
505
+
506
+ sigar_cpu_info_list_create(cpu_infos);
507
+
508
+ info = &cpu_infos->data[cpu_infos->number++];
509
+
510
+ SIGAR_SSTRCPY(info->vendor, "DEC");
511
+ SIGAR_SSTRCPY(info->model, "alpha");
512
+ info->mhz = sigar->mhz;
513
+ info->cache_size = SIGAR_FIELD_NOTIMPL;
514
+
515
+ return SIGAR_OK;
516
+ }
517
+
518
+ int sigar_net_route_list_get(sigar_t *sigar,
519
+ sigar_net_route_list_t *routelist)
520
+ {
521
+ return SIGAR_ENOTIMPL;
522
+ }
523
+
524
+ int sigar_net_interface_stat_get(sigar_t *sigar, const char *name,
525
+ sigar_net_interface_stat_t *ifstat)
526
+ {
527
+ ifstat->rx_bytes = SIGAR_FIELD_NOTIMPL;
528
+ ifstat->rx_packets = SIGAR_FIELD_NOTIMPL;
529
+ ifstat->rx_errors = SIGAR_FIELD_NOTIMPL;
530
+ ifstat->rx_dropped = SIGAR_FIELD_NOTIMPL;
531
+ ifstat->rx_overruns = SIGAR_FIELD_NOTIMPL;
532
+ ifstat->rx_frame = SIGAR_FIELD_NOTIMPL;
533
+
534
+ ifstat->tx_bytes = SIGAR_FIELD_NOTIMPL;
535
+ ifstat->tx_packets = SIGAR_FIELD_NOTIMPL;
536
+ ifstat->tx_errors = SIGAR_FIELD_NOTIMPL;
537
+ ifstat->tx_dropped = SIGAR_FIELD_NOTIMPL;
538
+ ifstat->tx_overruns = SIGAR_FIELD_NOTIMPL;
539
+ ifstat->tx_collisions = SIGAR_FIELD_NOTIMPL;
540
+ ifstat->tx_carrier = SIGAR_FIELD_NOTIMPL;
541
+
542
+ ifstat->speed = SIGAR_FIELD_NOTIMPL;
543
+
544
+ return SIGAR_OK;
545
+ }
546
+
547
+ int sigar_net_connection_walk(sigar_net_connection_walker_t *walker)
548
+ {
549
+ return SIGAR_ENOTIMPL;
550
+ }
551
+
552
+ SIGAR_DECLARE(int)
553
+ sigar_tcp_get(sigar_t *sigar,
554
+ sigar_tcp_t *tcp)
555
+ {
556
+ return SIGAR_ENOTIMPL;
557
+ }
558
+
559
+ int sigar_nfs_client_v2_get(sigar_t *sigar,
560
+ sigar_nfs_client_v2_t *nfs)
561
+ {
562
+ return SIGAR_ENOTIMPL;
563
+ }
564
+
565
+ int sigar_nfs_server_v2_get(sigar_t *sigar,
566
+ sigar_nfs_server_v2_t *nfs)
567
+ {
568
+ return SIGAR_ENOTIMPL;
569
+ }
570
+
571
+ int sigar_nfs_client_v3_get(sigar_t *sigar,
572
+ sigar_nfs_client_v3_t *nfs)
573
+ {
574
+ return SIGAR_ENOTIMPL;
575
+ }
576
+
577
+ int sigar_nfs_server_v3_get(sigar_t *sigar,
578
+ sigar_nfs_server_v3_t *nfs)
579
+ {
580
+ return SIGAR_ENOTIMPL;
581
+ }
582
+
583
+ int sigar_proc_port_get(sigar_t *sigar, int protocol,
584
+ unsigned long port, sigar_pid_t *pid)
585
+ {
586
+ return SIGAR_ENOTIMPL;
587
+ }
588
+
589
+ int sigar_os_sys_info_get(sigar_t *sigar,
590
+ sigar_sys_info_t *sysinfo)
591
+ {
592
+ return SIGAR_OK;
593
+ }