Merge branch 'sigar-1.6' into cleanup
Conflicts: bindings/SigarWrapper.pm src/os/netware/Makefile.nw src/os/netware/netware_sigar.c src/os/osf1/osf1_sigar.c src/os/stub/stub_sigar.c
This commit is contained in:
commit
4a0dc0cef3
|
@ -2956,39 +2956,5 @@ EOF
|
||||||
$self->SUPER::finish;
|
$self->SUPER::finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
#XXX not currently supporting netware
|
|
||||||
package SigarWrapper::Netware;
|
|
||||||
|
|
||||||
use vars qw(@ISA);
|
|
||||||
@ISA = qw(SigarWrapper);
|
|
||||||
|
|
||||||
sub start {
|
|
||||||
my $self = shift;
|
|
||||||
$self->SUPER::start;
|
|
||||||
$self->{dfh} = $self->create('javasigar_generated.def');
|
|
||||||
}
|
|
||||||
|
|
||||||
sub finish {
|
|
||||||
my $self = shift;
|
|
||||||
my $fh = $self->{dfh};
|
|
||||||
for my $func (@{ $self->{nativefunc} }) {
|
|
||||||
#$fh->println($nativefunc) if $impl;
|
|
||||||
}
|
|
||||||
my $jsigar = "../../src/jni/javasigar.c";
|
|
||||||
my(%alias) = (x => 'Sigar');
|
|
||||||
open JSIGAR, $jsigar or die "open $jsigar: $!";
|
|
||||||
while (<JSIGAR>) {
|
|
||||||
next unless /SIGAR_JNI([a-z]?)\(([A-Za-z_]+)\)/;
|
|
||||||
my $class = "";
|
|
||||||
if ($1) {
|
|
||||||
$class = $alias{$1} . "_";
|
|
||||||
}
|
|
||||||
$fh->println("Java_org_hyperic_sigar_$class$2");
|
|
||||||
}
|
|
||||||
close JSIGAR;
|
|
||||||
|
|
||||||
$self->SUPER::finish;
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
|
@ -3,11 +3,10 @@
|
||||||
<classpathentry kind="src" path="build/src"/>
|
<classpathentry kind="src" path="build/src"/>
|
||||||
<classpathentry kind="src" path="hyperic_jni/src"/>
|
<classpathentry kind="src" path="hyperic_jni/src"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="lib" path="lib/junit.jar"/>
|
<classpathentry kind="var" path="ANT_HOME/lib/ant.jar"/>
|
||||||
|
<classpathentry kind="var" path="ANT_HOME/lib/junit.jar"/>
|
||||||
<classpathentry kind="lib" path="hyperic_jni/lib/cpptasks.jar"/>
|
<classpathentry kind="lib" path="hyperic_jni/lib/cpptasks.jar"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
<classpathentry kind="lib" path="lib/log4j.jar"/>
|
<classpathentry kind="lib" path="lib/log4j.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/mx4j-jmx.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/ant.jar"/>
|
|
||||||
<classpathentry kind="output" path="build/classes"/>
|
<classpathentry kind="output" path="build/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -156,15 +156,6 @@
|
||||||
value="${build}/src/sigar_version.c"/>
|
value="${build}/src/sigar_version.c"/>
|
||||||
</antcall>
|
</antcall>
|
||||||
|
|
||||||
<antcall target="version-file">
|
|
||||||
<param name="version.file.srcdir"
|
|
||||||
value="../.."/>
|
|
||||||
<param name="version.file"
|
|
||||||
value="src/os/netware/sigar.def"/>
|
|
||||||
<param name="version.tofile"
|
|
||||||
value="${build}/src/sigar.def"/>
|
|
||||||
</antcall>
|
|
||||||
|
|
||||||
<antcall target="version-file">
|
<antcall target="version-file">
|
||||||
<param name="version.file.srcdir"
|
<param name="version.file.srcdir"
|
||||||
value="../.."/>
|
value="../.."/>
|
||||||
|
|
|
@ -1,284 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
|
|
||||||
* This file is part of SIGAR.
|
|
||||||
*
|
|
||||||
* SIGAR is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms version 2 of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation. This program is distributed
|
|
||||||
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
||||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
||||||
* details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* talk to Data Link Provider Interface aka /dev/dlpi
|
|
||||||
* see: http://docs.hp.com/hpux/onlinedocs/B2355-90139/B2355-90139.html
|
|
||||||
*/
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <memory.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/dlpi.h>
|
|
||||||
#include <sys/dlpi_ext.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/stream.h>
|
|
||||||
#include <sys/stropts.h>
|
|
||||||
#include <sys/mib.h>
|
|
||||||
|
|
||||||
#define DLBUF_SIZE 8192
|
|
||||||
|
|
||||||
#define ERRBUF_SIZE 1024
|
|
||||||
|
|
||||||
static int send_req(int fd, char *ptr, int len, char *what, char *ebuf)
|
|
||||||
{
|
|
||||||
struct strbuf ctl;
|
|
||||||
int flags = 0;
|
|
||||||
|
|
||||||
ctl.maxlen = 0;
|
|
||||||
ctl.len = len;
|
|
||||||
ctl.buf = ptr;
|
|
||||||
|
|
||||||
if (putmsg(fd, &ctl, (struct strbuf *) NULL, flags) < 0) {
|
|
||||||
snprintf(ebuf, ERRBUF_SIZE, "send_req: putmsg \"%s\": %s",
|
|
||||||
what, strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int recv_ack(int fd, int size, const char *what, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
union DL_primitives *dlp;
|
|
||||||
struct strbuf ctl;
|
|
||||||
int flags = 0;
|
|
||||||
|
|
||||||
ctl.maxlen = DLBUF_SIZE;
|
|
||||||
ctl.len = 0;
|
|
||||||
ctl.buf = bufp;
|
|
||||||
|
|
||||||
if (getmsg(fd, &ctl, (struct strbuf*)NULL, &flags) < 0) {
|
|
||||||
snprintf(ebuf, ERRBUF_SIZE, "recv_ack: %s getmsg: %s",
|
|
||||||
what, strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
dlp = (union DL_primitives *)ctl.buf;
|
|
||||||
switch (dlp->dl_primitive) {
|
|
||||||
case DL_INFO_ACK:
|
|
||||||
case DL_BIND_ACK:
|
|
||||||
case DL_OK_ACK:
|
|
||||||
case DL_HP_PPA_ACK:
|
|
||||||
case DL_HP_INFO_ACK:
|
|
||||||
case DL_GET_STATISTICS_ACK:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DL_ERROR_ACK:
|
|
||||||
switch (dlp->error_ack.dl_errno) {
|
|
||||||
|
|
||||||
case DL_SYSERR:
|
|
||||||
snprintf(ebuf, ERRBUF_SIZE, "recv_ack: %s: system error - %s",
|
|
||||||
what, strerror(dlp->error_ack.dl_unix_errno));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
snprintf(ebuf, ERRBUF_SIZE, "recv_ack: %s: dl error - %d",
|
|
||||||
what, dlp->error_ack.dl_errno);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
default:
|
|
||||||
snprintf(ebuf, ERRBUF_SIZE,
|
|
||||||
"recv_ack: %s: unexpected primitive ack %d",
|
|
||||||
what, dlp->dl_primitive);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctl.len < size) {
|
|
||||||
snprintf(ebuf, ERRBUF_SIZE,
|
|
||||||
"recv_ack: %s: ack too small (%d < %d)",
|
|
||||||
what, ctl.len, size);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ctl.len;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_attach_req(int fd, uint32_t ppa, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_attach_req_t req;
|
|
||||||
|
|
||||||
req.dl_primitive = DL_ATTACH_REQ;
|
|
||||||
req.dl_ppa = ppa;
|
|
||||||
|
|
||||||
return send_req(fd, (char *)&req, sizeof(req), "attach", ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_bind_req(int fd, uint32_t sap, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_bind_req_t req;
|
|
||||||
|
|
||||||
memset((char *)&req, 0, sizeof(req));
|
|
||||||
req.dl_primitive = DL_BIND_REQ;
|
|
||||||
|
|
||||||
req.dl_max_conind = 1;
|
|
||||||
/* 22 == INSAP, see HP-UX DLPI Programmer's Guide */
|
|
||||||
req.dl_sap = 22;
|
|
||||||
req.dl_service_mode = DL_HP_RAWDLS;
|
|
||||||
req.dl_service_mode = DL_CODLS;
|
|
||||||
|
|
||||||
return send_req(fd, (char *)&req, sizeof(req), "bind", ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_bind_ack(int fd, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
return recv_ack(fd, DL_BIND_ACK_SIZE, "bind", bufp, ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_ok_ack(int fd, const char *what, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
return recv_ack(fd, DL_OK_ACK_SIZE, what, bufp, ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_info_req(int fd, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_info_req_t req;
|
|
||||||
|
|
||||||
req.dl_primitive = DL_INFO_REQ;
|
|
||||||
|
|
||||||
return send_req(fd, (char *)&req, sizeof(req), "info", ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_info_ack(int fd, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
return recv_ack(fd, DL_INFO_ACK_SIZE, "info", bufp, ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_hp_info_req(int fd, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_hp_info_req_t req;
|
|
||||||
|
|
||||||
req.dl_primitive = DL_HP_INFO_REQ;
|
|
||||||
|
|
||||||
return send_req(fd, (char *)&req, sizeof(req), "hpinfo", ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_hp_info_ack(int fd, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
return recv_ack(fd, DL_HP_INFO_ACK_SIZE, "hpinfo", bufp, ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_stats_req(int fd, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_get_statistics_req_t req;
|
|
||||||
|
|
||||||
req.dl_primitive = DL_GET_STATISTICS_REQ;
|
|
||||||
|
|
||||||
return send_req(fd, (char *)&req, sizeof(req), "stats", ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_stats_ack(int fd, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
return recv_ack(fd, DL_GET_STATISTICS_ACK_SIZE, "stats", bufp, ebuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_open(int ppa, char *ebuf)
|
|
||||||
{
|
|
||||||
char *dev = "/dev/dlpi";
|
|
||||||
int fd = -1;
|
|
||||||
dl_info_ack_t *infop;
|
|
||||||
uint32_t buf[DLBUF_SIZE];
|
|
||||||
char dname[128];
|
|
||||||
|
|
||||||
if ((fd = open(dev, O_RDWR)) < 0) {
|
|
||||||
snprintf(ebuf, sizeof(ebuf),
|
|
||||||
"failed to open %s: %s", dev, strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dl_info_req(fd, ebuf) < 0 ||
|
|
||||||
dl_info_ack(fd, (char *)buf, ebuf) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
infop = &((union DL_primitives *)buf)->info_ack;
|
|
||||||
|
|
||||||
if (infop->dl_provider_style == DL_STYLE2 &&
|
|
||||||
(dl_attach_req(fd, ppa, ebuf) < 0 ||
|
|
||||||
dl_ok_ack(fd, "attach", (char *)buf, ebuf) < 0))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dl_bind_req(fd, 0, ebuf) < 0 ||
|
|
||||||
dl_bind_ack(fd, (char *)buf, ebuf) < 0)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_get_hp_info(int fd, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_hp_info_ack_t *ip;
|
|
||||||
|
|
||||||
if ((dl_hp_info_req(fd, ebuf) < 0) ||
|
|
||||||
(dl_hp_info_ack(fd, bufp, ebuf) < 0)) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ip = (dl_hp_info_ack_t *)bufp;
|
|
||||||
if (ip->dl_primitive != DL_HP_INFO_ACK) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int dl_get_stats(int fd, char *bufp, char *ebuf)
|
|
||||||
{
|
|
||||||
dl_get_statistics_ack_t *ip;
|
|
||||||
|
|
||||||
if ((dl_stats_req(fd, ebuf) < 0) ||
|
|
||||||
(dl_stats_ack(fd, bufp, ebuf) < 0)) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ip = (dl_get_statistics_ack_t *)bufp;
|
|
||||||
if (ip->dl_primitive != DL_GET_STATISTICS_ACK) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int hpux_get_mib_ifentry(int ppa, mib_ifEntry *mib)
|
|
||||||
{
|
|
||||||
int fd, status=0;
|
|
||||||
char ebuf[ERRBUF_SIZE];
|
|
||||||
uint32_t buf[DLBUF_SIZE];
|
|
||||||
|
|
||||||
if ((fd = dl_open(ppa, ebuf)) < 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dl_get_stats(fd, (char *)buf, ebuf) >= 0) {
|
|
||||||
dl_get_statistics_ack_t *st = (dl_get_statistics_ack_t *)buf;
|
|
||||||
memcpy(mib, (u_char *)buf + st->dl_stat_offset, sizeof(*mib));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
status = errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
close(fd);
|
|
||||||
return status;
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
EXTRA_DIST=\
|
|
||||||
Makefile.nw \
|
|
||||||
netware_sigar.c \
|
|
||||||
sigar.def.in \
|
|
||||||
sigar_os.h
|
|
|
@ -1,72 +0,0 @@
|
||||||
NDKBASE = c:/novell
|
|
||||||
#SYS:/ drive mount
|
|
||||||
NDRIVE = g:
|
|
||||||
|
|
||||||
NDK_ROOT = $(NDKBASE)/ndk
|
|
||||||
SDK_LIBC = $(NDK_ROOT)/libc
|
|
||||||
SDK_CLIB = $(NDK_ROOT)/clib
|
|
||||||
|
|
||||||
JBINDINGS = ../../../bindings/java
|
|
||||||
JBUILD = $(JBINDINGS)/build
|
|
||||||
DEF_FILE = $(JBUILD)/sigar.def
|
|
||||||
JINCLUDES = -I$(NDRIVE)/JAVA/include -I$(NDRIVE)/JAVA/include/netware
|
|
||||||
INCLUDES = $(JINCLUDES) -I../../../include -I. -I$(JBUILD)/src
|
|
||||||
OBJDIR = $(JBUILD)/obj/x86-netware
|
|
||||||
LIBDIR = $(JBINDINGS)/sigar-bin/lib
|
|
||||||
SIGARLIB = $(LIBDIR)/sigar.nlm
|
|
||||||
|
|
||||||
DB = NDEBUG
|
|
||||||
# DB = DEBUG
|
|
||||||
|
|
||||||
ifeq ($(DB),NDEBUG)
|
|
||||||
OPT = -O2
|
|
||||||
else
|
|
||||||
OPT = -g
|
|
||||||
endif
|
|
||||||
|
|
||||||
CC = mwccnlm
|
|
||||||
|
|
||||||
CFLAGS = -DNETWARE -D$(DB) -nostdinc $(OPT)
|
|
||||||
CFLAGS += -gccinc -inline off -opt nointrinsics -align 4 -inst mmx -proc 686
|
|
||||||
|
|
||||||
PRELUDE = $(SDK_LIBC)/imports/libcpre.o
|
|
||||||
LD = mwldnlm
|
|
||||||
LDFLAGS = -nostdlib $(PRELUDE) $(DEF_FILE) $(NW_OBJ) $(SIGAR_OBJ) $(JNI_OBJ) -o $(SIGARLIB) -type generic
|
|
||||||
|
|
||||||
INCLUDES += \
|
|
||||||
-I$(SDK_LIBC)/include \
|
|
||||||
-I$(SDK_LIBC)/include/nks \
|
|
||||||
-I$(SDK_LIBC)/include/winsock \
|
|
||||||
-I$(SDK_CLIB)/include \
|
|
||||||
-I$(SDK_CLIB)/include/nlm
|
|
||||||
|
|
||||||
CFLAGS += $(INCLUDES)
|
|
||||||
|
|
||||||
NW_SRC = .\netware_sigar.c
|
|
||||||
|
|
||||||
SIGAR_SRC = \
|
|
||||||
..\..\sigar.c \
|
|
||||||
..\..\sigar_cache.c \
|
|
||||||
..\..\sigar_getline.c \
|
|
||||||
..\..\sigar_fileinfo.c \
|
|
||||||
..\..\sigar_util.c \
|
|
||||||
..\..\sigar_win32ish.c \
|
|
||||||
|
|
||||||
JNI_SRC = $(JBINDINGS)\src\jni\javasigar.c
|
|
||||||
|
|
||||||
NW_OBJ = $(NW_SRC:.c=.o)
|
|
||||||
SIGAR_OBJ = $(SIGAR_SRC:.c=.o)
|
|
||||||
JNI_OBJ = $(JNI_SRC:.c=.o)
|
|
||||||
|
|
||||||
all: $(OBJDIR) $(SIGARLIB)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-$(RM) -r $(OBJDIR)
|
|
||||||
|
|
||||||
$(OBJDIR):
|
|
||||||
@mkdir $(OBJDIR)
|
|
||||||
|
|
||||||
$(SIGARLIB): $(SIGAR_OBJ) $(NW_OBJ) $(JNI_OBJ) $(DEF_FILE)
|
|
||||||
@echo Linking $@
|
|
||||||
@-$(RM) $@
|
|
||||||
@$(LD) $(LDFLAGS)
|
|
|
@ -1,725 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
|
|
||||||
* This file is part of SIGAR.
|
|
||||||
*
|
|
||||||
* SIGAR is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms version 2 of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation. This program is distributed
|
|
||||||
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
||||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
||||||
* details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
|
|
||||||
#include "sigar.h"
|
|
||||||
#include "sigar_private.h"
|
|
||||||
#include "sigar_os.h"
|
|
||||||
#include "sigar_util.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <monitor.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <windows.h>
|
|
||||||
#include <netware.h>
|
|
||||||
#include <novsock2.h>
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
#include <sys/statfs.h>
|
|
||||||
#define _STRUCT_TM
|
|
||||||
#include <nwtime.h>
|
|
||||||
#include <nit/nwservst.h>
|
|
||||||
#include <monitor.h>
|
|
||||||
/*
|
|
||||||
* http://developer.novell.com/research/appnotes/2003/may/05/a0305058.htm
|
|
||||||
*/
|
|
||||||
int _NonAppStart(void *NLMHandle,
|
|
||||||
void *errorScreen,
|
|
||||||
const char *cmdLine,
|
|
||||||
const char *loadDirPath,
|
|
||||||
size_t uninitializedDataLength,
|
|
||||||
void *NLMFileHandle,
|
|
||||||
int (*readRoutineP)(int conn,
|
|
||||||
void *fileHandle,
|
|
||||||
size_t offset,
|
|
||||||
size_t nbytes,
|
|
||||||
size_t *bytesRead,
|
|
||||||
void *buffer),
|
|
||||||
size_t customDataOffset,
|
|
||||||
size_t customDataSize,
|
|
||||||
int messageCount,
|
|
||||||
const char **messages)
|
|
||||||
{
|
|
||||||
|
|
||||||
#pragma unused(cmdLine)
|
|
||||||
#pragma unused(loadDirPath)
|
|
||||||
#pragma unused(uninitializedDataLength)
|
|
||||||
#pragma unused(NLMFileHandle)
|
|
||||||
#pragma unused(readRoutineP)
|
|
||||||
#pragma unused(customDataOffset)
|
|
||||||
#pragma unused(customDataSize)
|
|
||||||
#pragma unused(messageCount)
|
|
||||||
#pragma unused(messages)
|
|
||||||
|
|
||||||
WSADATA wsaData;
|
|
||||||
|
|
||||||
NWCallsInit(NULL, NULL);
|
|
||||||
|
|
||||||
return WSAStartup((WORD)MAKEWORD(2, 0), &wsaData);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _NonAppStop(void)
|
|
||||||
{
|
|
||||||
NWCallsTerm(NULL);
|
|
||||||
WSACleanup();
|
|
||||||
}
|
|
||||||
|
|
||||||
int _NonAppCheckUnload(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_open(sigar_t **sigar)
|
|
||||||
{
|
|
||||||
*sigar = malloc(sizeof(**sigar));
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_close(sigar_t *sigar)
|
|
||||||
{
|
|
||||||
free(sigar);
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *sigar_os_error_string(sigar_t *sigar, int err)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
|
||||||
{
|
|
||||||
struct memory_info info;
|
|
||||||
if (netware_mem_info(&info) != 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
mem->total = info.TotalKnownSystemMemoryUnder4Gb;
|
|
||||||
mem->used = info.TotalWorkMemory;
|
|
||||||
mem->free = mem->total - mem->used;
|
|
||||||
mem->actual_free = mem->free;
|
|
||||||
mem->actual_used = mem->used;
|
|
||||||
|
|
||||||
sigar_mem_calc_ram(sigar, mem);
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
|
||||||
{
|
|
||||||
struct vmemory_info info;
|
|
||||||
|
|
||||||
if (netware_vmem_info(&info) != 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
swap->used = info.SwapPageCount * PAGESIZE;
|
|
||||||
swap->free = info.SwapFreeCount * PAGESIZE;
|
|
||||||
swap->total = swap->used + swap->free;
|
|
||||||
swap->page_in = swap->page_out = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
|
||||||
{
|
|
||||||
cpu->user = -1;
|
|
||||||
cpu->nice = -1;
|
|
||||||
cpu->sys = -1;
|
|
||||||
cpu->idle = -1;
|
|
||||||
cpu->wait = -1;
|
|
||||||
|
|
||||||
cpu->total = cpu->user + cpu->nice + cpu->sys + cpu->idle;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_uptime_get(sigar_t *sigar,
|
|
||||||
sigar_uptime_t *uptime)
|
|
||||||
{
|
|
||||||
LONG seconds, tenths;
|
|
||||||
|
|
||||||
TicksToSeconds(GetCurrentTicks(), &seconds, &tenths);
|
|
||||||
uptime->uptime = seconds;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_loadavg_get(sigar_t *sigar,
|
|
||||||
sigar_loadavg_t *loadavg)
|
|
||||||
{
|
|
||||||
loadavg->loadavg[0] = -1;
|
|
||||||
loadavg->loadavg[1] = -1;
|
|
||||||
loadavg->loadavg[2] = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_list_get(sigar_t *sigar,
|
|
||||||
sigar_proc_list_t *proclist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_mem_t *procmem)
|
|
||||||
{
|
|
||||||
procmem->size = -1;
|
|
||||||
procmem->vsize = -1;
|
|
||||||
procmem->share = -1;
|
|
||||||
procmem->rss = -1;
|
|
||||||
procmem->resident = -1;
|
|
||||||
procmem->page_faults = -1;
|
|
||||||
procmem->minor_faults = -1;
|
|
||||||
procmem->major_faults = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_cred_t *proccred)
|
|
||||||
{
|
|
||||||
proccred->uid = -1;
|
|
||||||
proccred->gid = -1;
|
|
||||||
proccred->euid = -1;
|
|
||||||
proccred->egid = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_time_t *proctime)
|
|
||||||
{
|
|
||||||
proctime->start_time = -1;
|
|
||||||
proctime->user = -1;
|
|
||||||
proctime->sys = -1;
|
|
||||||
proctime->total = proctime->user + proctime->sys;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_state_t *procstate)
|
|
||||||
{
|
|
||||||
SIGAR_SSTRCPY(procstate->name, "java");
|
|
||||||
procstate->ppid = -1;
|
|
||||||
procstate->priority = -1;
|
|
||||||
procstate->nice = -1;
|
|
||||||
procstate->tty = -1;
|
|
||||||
procstate->state = 'R';
|
|
||||||
procstate->threads = -1;
|
|
||||||
procstate->processor = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_args_t *procargs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_env_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_env_t *procenv)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_fd_t *procfd)
|
|
||||||
{
|
|
||||||
procfd->total = -1;
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_exe_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_exe_t *procexe)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_modules_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_modules_t *procmods)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_thread_cpu_get(sigar_t *sigar,
|
|
||||||
sigar_uint64_t id,
|
|
||||||
sigar_thread_cpu_t *cpu)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_fs_type_get(sigar_file_system_t *fsp)
|
|
||||||
{
|
|
||||||
fsp->type = SIGAR_FSTYPE_UNKNOWN;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_file_system_list_get(sigar_t *sigar,
|
|
||||||
sigar_file_system_list_t *fslist)
|
|
||||||
{
|
|
||||||
struct volume_info info;
|
|
||||||
int num = 0;
|
|
||||||
|
|
||||||
sigar_file_system_list_create(fslist);
|
|
||||||
|
|
||||||
while (netware_vol_info(&info, &num) == 0) {
|
|
||||||
sigar_file_system_t *fsp;
|
|
||||||
int len;
|
|
||||||
char *type = NULL;
|
|
||||||
|
|
||||||
SIGAR_FILE_SYSTEM_LIST_GROW(fslist);
|
|
||||||
|
|
||||||
fsp = &fslist->data[fslist->number++];
|
|
||||||
SIGAR_SSTRCPY(fsp->dev_name, info.name);
|
|
||||||
SIGAR_SSTRCPY(fsp->dir_name, info.name);
|
|
||||||
len = strlen(info.name);
|
|
||||||
fsp->dir_name[len] = ':';
|
|
||||||
fsp->dir_name[len+1] = '/';
|
|
||||||
fsp->dir_name[len+2] = '\0';
|
|
||||||
|
|
||||||
fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
|
|
||||||
type = "nss";
|
|
||||||
|
|
||||||
sigar_fs_type_get(fsp);
|
|
||||||
if (!type) {
|
|
||||||
type = fsp->type_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(fsp->sys_type_name, type);
|
|
||||||
fsp->options[0] = '\0'; /*XXX*/
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_disk_usage_get(sigar_t *sigar, const char *name,
|
|
||||||
sigar_disk_usage_t *usage)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define SIGAR_FS_BLOCKS_TO_BYTES(buf, f) \
|
|
||||||
((buf.f * (buf.f_bsize / 512)) >> 1)
|
|
||||||
|
|
||||||
int sigar_file_system_usage_get(sigar_t *sigar,
|
|
||||||
const char *dirname,
|
|
||||||
sigar_file_system_usage_t *fsusage)
|
|
||||||
{
|
|
||||||
struct statfs buf;
|
|
||||||
|
|
||||||
if (statfs(dirname, &buf) != 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
fsusage->total = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_blocks);
|
|
||||||
fsusage->free = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_bfree);
|
|
||||||
fsusage->avail = fsusage->free;
|
|
||||||
fsusage->used = fsusage->total - fsusage->free;
|
|
||||||
fsusage->files = buf.f_files;
|
|
||||||
fsusage->free_files = buf.f_ffree;
|
|
||||||
fsusage->use_percent = sigar_file_system_usage_calc_used(sigar, fsusage);
|
|
||||||
|
|
||||||
SIGAR_DISK_STATS_INIT(&fsusage->disk);
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_info_list_get(sigar_t *sigar,
|
|
||||||
sigar_cpu_info_list_t *cpu_infos)
|
|
||||||
{
|
|
||||||
struct cpu_info cpu;
|
|
||||||
int num = 0;
|
|
||||||
|
|
||||||
sigar_cpu_info_list_create(cpu_infos);
|
|
||||||
|
|
||||||
while (netware_cpu_info(&cpu, &num) == 0) {
|
|
||||||
sigar_cpu_info_t *info;
|
|
||||||
|
|
||||||
SIGAR_CPU_INFO_LIST_GROW(cpu_infos);
|
|
||||||
|
|
||||||
info = &cpu_infos->data[cpu_infos->number++];
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(info->vendor, "vendor");
|
|
||||||
SIGAR_SSTRCPY(info->model, "model");
|
|
||||||
info->mhz = cpu.Speed;
|
|
||||||
info->cache_size = cpu.L2CacheSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_route_list_get(sigar_t *sigar,
|
|
||||||
sigar_net_route_list_t *routelist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_interface_stat_get(sigar_t *sigar, const char *name,
|
|
||||||
sigar_net_interface_stat_t *ifstat)
|
|
||||||
{
|
|
||||||
LONG board = 1; /* XXX derive from name */
|
|
||||||
LONG block = 0;
|
|
||||||
BYTE buffer[SS_DEFAULT_BUFFER_SIZE];
|
|
||||||
WORD len = sizeof(buffer);
|
|
||||||
CommonLANStructure *info;
|
|
||||||
|
|
||||||
if (SSGetLANCommonCounters(board, block, buffer, len) != 0) {
|
|
||||||
return ENOENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
info = &((GetLANCommonCountersStructure *)buffer)->info;
|
|
||||||
|
|
||||||
ifstat->rx_bytes = info->TotalTxOKByteCountHigh;
|
|
||||||
ifstat->rx_packets = info->TotalRxPacketCount;
|
|
||||||
ifstat->rx_errors = info->PacketRxMiscErrorCount;
|
|
||||||
ifstat->rx_dropped = -1;
|
|
||||||
ifstat->rx_overruns = info->PacketRxTooBigCount;
|
|
||||||
ifstat->rx_frame = -1;
|
|
||||||
|
|
||||||
ifstat->tx_bytes = info->TotalTxOKByteCountHigh;
|
|
||||||
ifstat->tx_packets = info->TotalTxPacketCount;
|
|
||||||
ifstat->tx_errors = info->PacketTxMiscErrorCount;
|
|
||||||
ifstat->tx_dropped = info->RetryTxCount;
|
|
||||||
ifstat->tx_overruns = info->PacketTxTooBigCount;
|
|
||||||
ifstat->tx_collisions = -1;
|
|
||||||
ifstat->tx_carrier = -1;
|
|
||||||
|
|
||||||
ifstat->speed = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_connection_walk(sigar_net_connection_walker_t *walker)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_info_get(sigar_t *sigar,
|
|
||||||
sigar_net_info_t *netinfo)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_port_get(sigar_t *sigar, int protocol,
|
|
||||||
unsigned long port, sigar_pid_t *pid)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_ping(char *host)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_sys_info_get(sigar_t *sigar,
|
|
||||||
sigar_sys_info_t *sysinfo)
|
|
||||||
{
|
|
||||||
SIGAR_SSTRCPY(sysinfo->vendor, "Novell");
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_get_iftype(const char *name, int *type, int *inst)
|
|
||||||
{
|
|
||||||
if (strnEQ(name, "eth", IFTYPE_ETH)) {
|
|
||||||
*type = IFTYPE_ETH;
|
|
||||||
}
|
|
||||||
else if (strnEQ(name, "lo", IFTYPE_LO)) {
|
|
||||||
*type = IFTYPE_LO;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isdigit(*(name + *type))) {
|
|
||||||
*inst = atoi(name + *type);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void hwaddr_lookup(sigar_t *sigar,
|
|
||||||
sigar_net_interface_config_t *ifconfig,
|
|
||||||
int num)
|
|
||||||
{
|
|
||||||
uint8_t addr[SIGAR_IFHWADDRLEN];
|
|
||||||
|
|
||||||
if (netware_net_macaddr(num+1, addr) == 0) {
|
|
||||||
sigar_net_address_mac_set(ifconfig->hwaddr,
|
|
||||||
addr,
|
|
||||||
sizeof(addr));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sigar_hwaddr_set_null(ifconfig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int sigar_ioctl_iflist(sigar_t *sigar,
|
|
||||||
SOCKET sock,
|
|
||||||
DWORD *bytes)
|
|
||||||
{
|
|
||||||
return WSAIoctl(sock,
|
|
||||||
SIO_GET_INTERFACE_LIST,
|
|
||||||
NULL,
|
|
||||||
0,
|
|
||||||
(void *)sigar->ifconf_buf,
|
|
||||||
sigar->ifconf_len,
|
|
||||||
bytes,
|
|
||||||
NULL,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int get_iflist(sigar_t *sigar, DWORD *bytes)
|
|
||||||
{
|
|
||||||
SOCKET sock = INVALID_SOCKET;
|
|
||||||
int status, rc, limit;
|
|
||||||
|
|
||||||
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
|
||||||
|
|
||||||
if (sock == INVALID_SOCKET) {
|
|
||||||
return WSAGetLastError();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sigar->ifconf_len == 0) {
|
|
||||||
sigar->ifconf_len = 8192;
|
|
||||||
sigar->ifconf_buf = malloc(sigar->ifconf_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX We can't tell ahead of time what buffer size is required
|
|
||||||
* limit just incase.
|
|
||||||
*/
|
|
||||||
for (limit=0; limit<100; limit++) {
|
|
||||||
rc = sigar_ioctl_iflist(sigar, sock, bytes);
|
|
||||||
if (rc && (WSAGetLastError() == WSAEFAULT)) {
|
|
||||||
sigar->ifconf_len += (sizeof(INTERFACE_INFO) * 16);
|
|
||||||
sigar->ifconf_buf = malloc(sigar->ifconf_len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
status = rc ? WSAGetLastError() : SIGAR_OK;
|
|
||||||
|
|
||||||
closesocket(sock);
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_DECLARE(int)
|
|
||||||
sigar_net_interface_config_get(sigar_t *sigar,
|
|
||||||
const char *name,
|
|
||||||
sigar_net_interface_config_t *ifconfig)
|
|
||||||
{
|
|
||||||
DWORD i, num, bytes;
|
|
||||||
DWORD lo=0, eth=0;
|
|
||||||
int status, type, inst;
|
|
||||||
INTERFACE_INFO *if_info = NULL;
|
|
||||||
u_long flags;
|
|
||||||
|
|
||||||
if (!name) {
|
|
||||||
return sigar_net_interface_config_primary_get(sigar, ifconfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* win32 lacks socket ioctls to query given interface.
|
|
||||||
* so we loop through the list to find our made up ifname.
|
|
||||||
*/
|
|
||||||
status = get_iflist(sigar, &bytes);
|
|
||||||
if (status != SIGAR_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
num = bytes / sizeof(INTERFACE_INFO);
|
|
||||||
|
|
||||||
if ((status = sigar_get_iftype(name, &type, &inst)) != SIGAR_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0; i<num ; i++) {
|
|
||||||
if_info = ((INTERFACE_INFO *)sigar->ifconf_buf) + i;
|
|
||||||
|
|
||||||
if (if_info->iiFlags & IFF_LOOPBACK) {
|
|
||||||
if ((type == IFTYPE_LO) && (inst == lo)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
++lo;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ((type == IFTYPE_ETH) && (inst == eth)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
++eth;
|
|
||||||
}
|
|
||||||
|
|
||||||
if_info = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!if_info) {
|
|
||||||
return ENOENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_ZERO(ifconfig);
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(ifconfig->name, name);
|
|
||||||
|
|
||||||
#define if_s_addr(a) \
|
|
||||||
((struct sockaddr_in *)&a)->sin_addr.s_addr
|
|
||||||
|
|
||||||
sigar_net_address_set(ifconfig->address,
|
|
||||||
if_s_addr(if_info->iiAddress));
|
|
||||||
sigar_net_address_set(ifconfig->broadcast,
|
|
||||||
if_s_addr(if_info->iiBroadcastAddress));
|
|
||||||
sigar_net_address_set(ifconfig->netmask,
|
|
||||||
if_s_addr(if_info->iiNetmask));
|
|
||||||
|
|
||||||
flags = if_info->iiFlags;
|
|
||||||
|
|
||||||
if (flags & IFF_UP) {
|
|
||||||
ifconfig->flags |= SIGAR_IFF_UP|SIGAR_IFF_RUNNING;
|
|
||||||
}
|
|
||||||
if (flags & IFF_BROADCAST) {
|
|
||||||
ifconfig->flags |= SIGAR_IFF_BROADCAST;
|
|
||||||
}
|
|
||||||
if (flags & IFF_LOOPBACK) {
|
|
||||||
ifconfig->flags |= SIGAR_IFF_LOOPBACK;
|
|
||||||
sigar_net_address_set(ifconfig->destination,
|
|
||||||
ifconfig->address.addr.in);
|
|
||||||
sigar_net_address_set(ifconfig->broadcast, 0);
|
|
||||||
SIGAR_SSTRCPY(ifconfig->type,
|
|
||||||
SIGAR_NIC_LOOPBACK);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
SIGAR_SSTRCPY(ifconfig->type,
|
|
||||||
SIGAR_NIC_ETHERNET);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* should be overridden w/ better description
|
|
||||||
* using MIB_IFROW.bDescr when hwaddr is lookedup
|
|
||||||
*/
|
|
||||||
SIGAR_SSTRCPY(ifconfig->description,
|
|
||||||
ifconfig->name);
|
|
||||||
|
|
||||||
hwaddr_lookup(sigar, ifconfig, i);
|
|
||||||
|
|
||||||
if (flags & IFF_POINTTOPOINT) {
|
|
||||||
ifconfig->flags |= SIGAR_IFF_POINTOPOINT;
|
|
||||||
}
|
|
||||||
if (flags & IFF_MULTICAST) {
|
|
||||||
ifconfig->flags |= SIGAR_IFF_MULTICAST;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* win32 interface list does not include a name.
|
|
||||||
* and the name from GetIfList() is the name of card
|
|
||||||
* including vendor name, etc. so we use 'eth' for ethernet
|
|
||||||
* interfaces and 'lo' for loopback.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ETH "eth"
|
|
||||||
#define LO "lo"
|
|
||||||
|
|
||||||
SIGAR_DECLARE(int)
|
|
||||||
sigar_net_interface_list_get(sigar_t *sigar,
|
|
||||||
sigar_net_interface_list_t *iflist)
|
|
||||||
{
|
|
||||||
char eth[56], lo[56];
|
|
||||||
int ethcnt=0, locnt=0;
|
|
||||||
DWORD i, num, bytes;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
status = get_iflist(sigar, &bytes);
|
|
||||||
if (status != SIGAR_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
num = bytes / sizeof(INTERFACE_INFO);
|
|
||||||
|
|
||||||
iflist->number = 0;
|
|
||||||
iflist->size = num;
|
|
||||||
iflist->data =
|
|
||||||
malloc(sizeof(*(iflist->data)) * iflist->size);
|
|
||||||
|
|
||||||
for (i=0; i<num ; i++) {
|
|
||||||
INTERFACE_INFO *if_info =
|
|
||||||
((INTERFACE_INFO *)sigar->ifconf_buf) + i;
|
|
||||||
char *name;
|
|
||||||
|
|
||||||
if (if_info->iiFlags & IFF_LOOPBACK) {
|
|
||||||
sprintf(lo, LO "%d", locnt++);
|
|
||||||
name = strdup(lo);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* XXX: assuming ethernet here */
|
|
||||||
sprintf(eth, ETH "%d", ethcnt++);
|
|
||||||
name = strdup(eth);
|
|
||||||
}
|
|
||||||
|
|
||||||
iflist->data[iflist->number++] = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_DECLARE(int)
|
|
||||||
sigar_tcp_get(sigar_t *sigar,
|
|
||||||
sigar_tcp_t *tcp)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_client_v2_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_client_v2_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_server_v2_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_server_v2_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_client_v3_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_client_v3_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_server_v3_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_server_v3_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_arp_list_get(sigar_t *sigar,
|
|
||||||
sigar_arp_list_t *arplist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
copyright "Copyright @@COPYRIGHT_YEAR@@ Hyperic, LLC"
|
|
||||||
description Sigar
|
|
||||||
version @@VERSION_MAJOR@@,@@VERSION_MINOR@@,@@VERSION_MAINT@@
|
|
||||||
stack 8192
|
|
||||||
screenname DEFAULT
|
|
||||||
threadname sigar
|
|
||||||
autounload
|
|
||||||
pseudopreemption
|
|
||||||
start _LibCPrelude
|
|
||||||
exit _LibCPostlude
|
|
||||||
check _LibCCheckUnload
|
|
||||||
import @c:/novell/ndk/libc/imports/libc.imp
|
|
||||||
import @c:/novell/ndk/libc/imports/netware.imp
|
|
||||||
import @c:/novell/ndk/libc/imports/ws2nlm.imp
|
|
||||||
import @c:/novell/ndk/clib/imports/clib.imp
|
|
||||||
import @c:/novell/ndk/clib/imports/calnlm32.imp
|
|
||||||
module libc
|
|
||||||
export @../../../bindings/java/build/src/javasigar_generated.def
|
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
|
|
||||||
* This file is part of SIGAR.
|
|
||||||
*
|
|
||||||
* SIGAR is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms version 2 of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation. This program is distributed
|
|
||||||
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
||||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
||||||
* details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SIGAR_OS_H
|
|
||||||
#define SIGAR_OS_H
|
|
||||||
|
|
||||||
struct sigar_t {
|
|
||||||
SIGAR_T_BASE;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* SIGAR_OS_H */
|
|
|
@ -1,3 +0,0 @@
|
||||||
EXTRA_DIST=\
|
|
||||||
osf1_sigar.c \
|
|
||||||
sigar_os.h
|
|
|
@ -1,599 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
|
|
||||||
* This file is part of SIGAR.
|
|
||||||
*
|
|
||||||
* SIGAR is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms version 2 of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation. This program is distributed
|
|
||||||
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
||||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
||||||
* details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "sigar.h"
|
|
||||||
#include "sigar_private.h"
|
|
||||||
#include "sigar_os.h"
|
|
||||||
#include "sigar_util.h"
|
|
||||||
|
|
||||||
#include <mach.h>
|
|
||||||
#include <mach/mach_types.h>
|
|
||||||
#include <mach/task_info.h>
|
|
||||||
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#include <sys/fs_types.h>
|
|
||||||
#include <sys/user.h>
|
|
||||||
|
|
||||||
int sigar_os_open(sigar_t **sigar)
|
|
||||||
{
|
|
||||||
*sigar = malloc(sizeof(**sigar));
|
|
||||||
|
|
||||||
(*sigar)->pagesize = getpagesize();
|
|
||||||
(*sigar)->boot_time = 0;
|
|
||||||
(*sigar)->mhz = 0;
|
|
||||||
(*sigar)->nproc = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_close(sigar_t *sigar)
|
|
||||||
{
|
|
||||||
free(sigar);
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *sigar_os_error_string(sigar_t *sigar, int err)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
|
||||||
{
|
|
||||||
vm_statistics_data_t vmstats;
|
|
||||||
|
|
||||||
vm_statistics(task_self(), &vmstats);
|
|
||||||
|
|
||||||
mem->free = vmstats.free_count * vmstats.pagesize;
|
|
||||||
mem->used = vmstats.active_count * vmstats.pagesize;
|
|
||||||
|
|
||||||
mem->total =
|
|
||||||
mem->free + mem->used +
|
|
||||||
((vmstats.inactive_count + vmstats.wire_count) * vmstats.pagesize);
|
|
||||||
|
|
||||||
mem->actual_free = mem->free;
|
|
||||||
mem->actual_used = mem->used;
|
|
||||||
|
|
||||||
sigar_mem_calc_ram(sigar, mem);
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
|
||||||
{
|
|
||||||
struct tbl_swapinfo info;
|
|
||||||
|
|
||||||
table(TBL_SWAPINFO, -1, &info, 1, sizeof(info));
|
|
||||||
|
|
||||||
swap->total = info.size;
|
|
||||||
swap->free = info.free;
|
|
||||||
swap->total *= sigar->pagesize;
|
|
||||||
swap->free *= sigar->pagesize;
|
|
||||||
|
|
||||||
swap->used = swap->total - swap->free;
|
|
||||||
|
|
||||||
swap->page_in = swap->page_out = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
|
||||||
{
|
|
||||||
struct tbl_sysinfo sysinfo;
|
|
||||||
|
|
||||||
if (table(TBL_SYSINFO, 0, &sysinfo, 1, sizeof(sysinfo)) != 1) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
cpu->user = sysinfo.si_user;
|
|
||||||
cpu->nice = sysinfo.si_nice;
|
|
||||||
cpu->sys = sysinfo.si_sys;
|
|
||||||
cpu->idle = sysinfo.si_idle;
|
|
||||||
cpu->wait = 0; /*N/A?*/
|
|
||||||
cpu->irq = 0; /*N/A*/
|
|
||||||
cpu->soft_irq = 0; /*N/A*/
|
|
||||||
cpu->stolen = 0; /*N/A*/
|
|
||||||
cpu->total = cpu->user + cpu->nice + cpu->sys + cpu->idle + cpu->wait;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist)
|
|
||||||
{
|
|
||||||
sigar_cpu_t *cpu;
|
|
||||||
|
|
||||||
sigar_cpu_list_create(cpulist);
|
|
||||||
|
|
||||||
/* XXX multi cpu */
|
|
||||||
cpu = &cpulist->data[cpulist->number++];
|
|
||||||
|
|
||||||
return sigar_cpu_get(sigar, cpu);
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_uptime_get(sigar_t *sigar,
|
|
||||||
sigar_uptime_t *uptime)
|
|
||||||
{
|
|
||||||
if (sigar->boot_time == 0) {
|
|
||||||
struct tbl_sysinfo sysinfo;
|
|
||||||
|
|
||||||
if (table(TBL_SYSINFO, 0, &sysinfo, 1, sizeof(sysinfo)) != 1) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
sigar->boot_time = sysinfo.si_boottime;
|
|
||||||
}
|
|
||||||
|
|
||||||
uptime->uptime = time(NULL) - sigar->boot_time;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_loadavg_get(sigar_t *sigar,
|
|
||||||
sigar_loadavg_t *loadavg)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
struct tbl_loadavg avg;
|
|
||||||
|
|
||||||
if (table(TBL_LOADAVG, 0, &avg, 1, sizeof(avg)) < 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (avg.tl_lscale) {
|
|
||||||
for (i=0; i<3; i++) {
|
|
||||||
loadavg->loadavg[i] =
|
|
||||||
((double)avg.tl_avenrun.l[i] /
|
|
||||||
(double)avg.tl_lscale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for (i=0; i<3; i++) {
|
|
||||||
loadavg->loadavg[i] = avg.tl_avenrun.d[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define PROC_ELTS 16
|
|
||||||
|
|
||||||
int sigar_os_proc_list_get(sigar_t *sigar,
|
|
||||||
sigar_proc_list_t *proclist)
|
|
||||||
{
|
|
||||||
struct tbl_procinfo procinfo[PROC_ELTS];
|
|
||||||
int offset;
|
|
||||||
|
|
||||||
if (sigar->nproc == -1) {
|
|
||||||
/* this number will not change while we are running */
|
|
||||||
sigar->nproc = table(TBL_PROCINFO, 0, NULL, INT_MAX, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (offset=0; offset<sigar->nproc; offset+=PROC_ELTS) {
|
|
||||||
int i;
|
|
||||||
int elts = table(TBL_PROCINFO, offset, &procinfo,
|
|
||||||
PROC_ELTS, sizeof(procinfo[0]));
|
|
||||||
|
|
||||||
for (i=0; i<elts; i++) {
|
|
||||||
struct tbl_procinfo *info = &procinfo[i];
|
|
||||||
if (info->pi_status == PI_EMPTY) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_PROC_LIST_GROW(proclist);
|
|
||||||
|
|
||||||
proclist->data[proclist->number++] = info->pi_pid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_mem_t *procmem)
|
|
||||||
{
|
|
||||||
task_t self;
|
|
||||||
task_basic_info_data_t taskinfo;
|
|
||||||
struct user s_user;
|
|
||||||
int type = TASK_BASIC_INFO_COUNT;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
status = task_by_unix_pid(task_self(), pid, &self);
|
|
||||||
|
|
||||||
if (status != KERN_SUCCESS) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = task_info(self, TASK_BASIC_INFO,
|
|
||||||
(task_info_t)&taskinfo, &type);
|
|
||||||
|
|
||||||
if (status != KERN_SUCCESS) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
procmem->resident = taskinfo.resident_size;
|
|
||||||
procmem->size = taskinfo.virtual_size;
|
|
||||||
|
|
||||||
status = table(TBL_UAREA, pid, &s_user, 1, sizeof(s_user));
|
|
||||||
|
|
||||||
if (status != 1) {
|
|
||||||
procmem->share = SIGAR_FIELD_NOTIMPL;
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
procmem->share = s_user.u_ru.ru_ixrss;
|
|
||||||
|
|
||||||
procmem->page_faults = SIGAR_FIELD_NOTIMPL;
|
|
||||||
procmem->minor_faults = SIGAR_FIELD_NOTIMPL;
|
|
||||||
procmem->major_faults = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_cred_t *proccred)
|
|
||||||
{
|
|
||||||
proccred->uid = SIGAR_FIELD_NOTIMPL;
|
|
||||||
proccred->gid = SIGAR_FIELD_NOTIMPL;
|
|
||||||
proccred->euid = SIGAR_FIELD_NOTIMPL;
|
|
||||||
proccred->egid = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_time_t *proctime)
|
|
||||||
{
|
|
||||||
struct user s_user;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
status = table(TBL_UAREA, pid, &s_user, 1, sizeof(s_user));
|
|
||||||
|
|
||||||
if (status != 1) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
proctime->user = s_user.u_ru.ru_utime.tv_sec;
|
|
||||||
proctime->sys = s_user.u_ru.ru_stime.tv_sec;
|
|
||||||
proctime->total = proctime->user + proctime->sys;
|
|
||||||
proctime->start_time = s_user.u_start.tv_sec;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_state_t *procstate)
|
|
||||||
{
|
|
||||||
struct tbl_procinfo info;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
status = table(TBL_PROCINFO, pid, &info, 1, sizeof(info));
|
|
||||||
|
|
||||||
if (status != 1) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(procstate->name, info.pi_comm);
|
|
||||||
procstate->ppid = info.pi_ppid;
|
|
||||||
procstate->priority = SIGAR_FIELD_NOTIMPL;
|
|
||||||
procstate->nice = SIGAR_FIELD_NOTIMPL;
|
|
||||||
procstate->tty = info.pi_ttyd;
|
|
||||||
procstate->threads = SIGAR_FIELD_NOTIMPL;
|
|
||||||
procstate->processor = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
switch (info.pi_status) {
|
|
||||||
case PI_ACTIVE:
|
|
||||||
procstate->state = 'R';
|
|
||||||
break;
|
|
||||||
case PI_ZOMBIE:
|
|
||||||
procstate->state = 'Z';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
procstate->state = 'S';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_args_t *procargs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_env_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_env_t *procenv)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_fd_t *procfd)
|
|
||||||
{
|
|
||||||
procfd->total = SIGAR_FIELD_NOTIMPL;
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_exe_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_exe_t *procexe)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_modules_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_modules_t *procmods)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_thread_cpu_get(sigar_t *sigar,
|
|
||||||
sigar_uint64_t id,
|
|
||||||
sigar_thread_cpu_t *cpu)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_fs_type_get(sigar_file_system_t *fsp)
|
|
||||||
{
|
|
||||||
return fsp->type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int sigar_fsstat(struct statfs **fs, int *num)
|
|
||||||
{
|
|
||||||
int size;
|
|
||||||
|
|
||||||
if ((*num = getfsstat(NULL, 0, MNT_WAIT)) < 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
size = ((*num)+1) * sizeof(struct statfs);
|
|
||||||
|
|
||||||
*fs = malloc(size);
|
|
||||||
|
|
||||||
if ((*num = getfsstat(*fs, size, MNT_WAIT)) < 0) {
|
|
||||||
free(fs);
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_file_system_list_get(sigar_t *sigar,
|
|
||||||
sigar_file_system_list_t *fslist)
|
|
||||||
{
|
|
||||||
int i, num, status;
|
|
||||||
struct statfs *fs;
|
|
||||||
|
|
||||||
if ((status = sigar_fsstat(&fs, &num)) != SIGAR_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
sigar_file_system_list_create(fslist);
|
|
||||||
|
|
||||||
for (i=0; i<num; i++) {
|
|
||||||
sigar_file_system_t *fsp;
|
|
||||||
const char *typename = NULL;
|
|
||||||
|
|
||||||
SIGAR_FILE_SYSTEM_LIST_GROW(fslist);
|
|
||||||
|
|
||||||
fsp = &fslist->data[fslist->number++];
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(fsp->dir_name, fs[i].f_mntonname);
|
|
||||||
SIGAR_SSTRCPY(fsp->dev_name, fs[i].f_mntfromname);
|
|
||||||
SIGAR_SSTRCPY(fsp->sys_type_name, mnt_names[fs[i].f_type]);
|
|
||||||
fsp->options[0] = '\0'; /*XXX*/
|
|
||||||
|
|
||||||
switch (fs[i].f_type) {
|
|
||||||
case MOUNT_UFS:
|
|
||||||
typename = "ufs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
|
|
||||||
break;
|
|
||||||
case MOUNT_MFS:
|
|
||||||
case MOUNT_MSFS:
|
|
||||||
typename = "advfs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
|
|
||||||
break;
|
|
||||||
case MOUNT_FDFS:
|
|
||||||
typename = "fdfs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_LOCAL_DISK;
|
|
||||||
break;
|
|
||||||
case MOUNT_DVDFS:
|
|
||||||
case MOUNT_CDFS:
|
|
||||||
fsp->type = SIGAR_FSTYPE_CDROM;
|
|
||||||
break;
|
|
||||||
case MOUNT_DFS: /* DCE */
|
|
||||||
typename = "dfs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_NETWORK;
|
|
||||||
break;
|
|
||||||
case MOUNT_EFS: /* DCE */
|
|
||||||
typename = "efs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_NETWORK;
|
|
||||||
break;
|
|
||||||
case MOUNT_NFS:
|
|
||||||
case MOUNT_NFS3:
|
|
||||||
typename = "nfs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_NETWORK;
|
|
||||||
break;
|
|
||||||
case MOUNT_CSPEC:
|
|
||||||
case MOUNT_CFS:
|
|
||||||
typename = "cfs";
|
|
||||||
fsp->type = SIGAR_FSTYPE_NETWORK;
|
|
||||||
break;
|
|
||||||
case MOUNT_NONE:
|
|
||||||
case MOUNT_PC:
|
|
||||||
case MOUNT_S5FS:
|
|
||||||
case MOUNT_PROCFS:
|
|
||||||
case MOUNT_FFM:
|
|
||||||
case MOUNT_ADDON:
|
|
||||||
case MOUNT_AUTOFS:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* we set fsp->type, just looking up sigar.c:fstype_names[type] */
|
|
||||||
sigar_fs_type_get(fsp);
|
|
||||||
|
|
||||||
if (typename == NULL) {
|
|
||||||
typename = fsp->type_name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
free(fs);
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_disk_usage_get(sigar_t *sigar, const char *name,
|
|
||||||
sigar_disk_usage_t *usage)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define SIGAR_FS_BLOCKS_TO_BYTES(buf, f) \
|
|
||||||
(((sigar_uint64_t)buf.f * (buf.f_bsize / 512)) >> 1)
|
|
||||||
|
|
||||||
int sigar_file_system_usage_get(sigar_t *sigar,
|
|
||||||
const char *dirname,
|
|
||||||
sigar_file_system_usage_t *fsusage)
|
|
||||||
{
|
|
||||||
struct statfs buf;
|
|
||||||
|
|
||||||
if (statfs((char *)dirname, &buf) != 0) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
fsusage->total = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_blocks);
|
|
||||||
fsusage->free = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_bfree);
|
|
||||||
fsusage->avail = SIGAR_FS_BLOCKS_TO_BYTES(buf, f_bavail);
|
|
||||||
fsusage->used = fsusage->total - fsusage->free;
|
|
||||||
fsusage->files = buf.f_files;
|
|
||||||
fsusage->free_files = buf.f_ffree;
|
|
||||||
fsusage->use_percent = sigar_file_system_usage_calc_used(sigar, fsusage);
|
|
||||||
|
|
||||||
SIGAR_DISK_STATS_INIT(&fsusage->disk)
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_info_list_get(sigar_t *sigar,
|
|
||||||
sigar_cpu_info_list_t *cpu_infos)
|
|
||||||
{
|
|
||||||
sigar_cpu_info_t *info;
|
|
||||||
|
|
||||||
if (sigar->mhz == 0) {
|
|
||||||
struct tbl_sysinfo sysinfo;
|
|
||||||
|
|
||||||
if (table(TBL_SYSINFO, 0, &sysinfo, 1, sizeof(sysinfo)) != 1) {
|
|
||||||
return errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
sigar->mhz = sysinfo.si_hz;
|
|
||||||
}
|
|
||||||
|
|
||||||
sigar_cpu_info_list_create(cpu_infos);
|
|
||||||
|
|
||||||
info = &cpu_infos->data[cpu_infos->number++];
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(info->vendor, "DEC");
|
|
||||||
SIGAR_SSTRCPY(info->model, "alpha");
|
|
||||||
info->mhz = sigar->mhz;
|
|
||||||
info->cache_size = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_route_list_get(sigar_t *sigar,
|
|
||||||
sigar_net_route_list_t *routelist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_interface_stat_get(sigar_t *sigar, const char *name,
|
|
||||||
sigar_net_interface_stat_t *ifstat)
|
|
||||||
{
|
|
||||||
ifstat->rx_bytes = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->rx_packets = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->rx_errors = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->rx_dropped = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->rx_overruns = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->rx_frame = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
ifstat->tx_bytes = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->tx_packets = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->tx_errors = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->tx_dropped = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->tx_overruns = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->tx_collisions = SIGAR_FIELD_NOTIMPL;
|
|
||||||
ifstat->tx_carrier = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
ifstat->speed = SIGAR_FIELD_NOTIMPL;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_connection_walk(sigar_net_connection_walker_t *walker)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_DECLARE(int)
|
|
||||||
sigar_tcp_get(sigar_t *sigar,
|
|
||||||
sigar_tcp_t *tcp)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_client_v2_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_client_v2_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_server_v2_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_server_v2_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_client_v3_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_client_v3_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_server_v3_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_server_v3_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_arp_list_get(sigar_t *sigar,
|
|
||||||
sigar_arp_list_t *arplist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_port_get(sigar_t *sigar, int protocol,
|
|
||||||
unsigned long port, sigar_pid_t *pid)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_sys_info_get(sigar_t *sigar,
|
|
||||||
sigar_sys_info_t *sysinfo)
|
|
||||||
{
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
|
|
||||||
* This file is part of SIGAR.
|
|
||||||
*
|
|
||||||
* SIGAR is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms version 2 of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation. This program is distributed
|
|
||||||
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
||||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
||||||
* details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SIGAR_OS_H
|
|
||||||
#define SIGAR_OS_H
|
|
||||||
|
|
||||||
#include <sys/table.h>
|
|
||||||
/* "i will *punch* you in the *face*" --will ferrell */
|
|
||||||
#undef idle
|
|
||||||
#undef usr
|
|
||||||
#undef sys
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/vm.h>
|
|
||||||
|
|
||||||
#include <mach.h>
|
|
||||||
#include <mach/mach_types.h>
|
|
||||||
#include <mach/vm_statistics.h>
|
|
||||||
|
|
||||||
struct sigar_t {
|
|
||||||
SIGAR_T_BASE;
|
|
||||||
int pagesize;
|
|
||||||
int mhz;
|
|
||||||
int nproc;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* SIGAR_OS_H */
|
|
|
@ -1,3 +0,0 @@
|
||||||
EXTRA_DIST=\
|
|
||||||
sigar_os.h \
|
|
||||||
stub_sigar.c
|
|
|
@ -1,8 +0,0 @@
|
||||||
#ifndef SIGAR_OS_H
|
|
||||||
#define SIGAR_OS_H
|
|
||||||
|
|
||||||
struct sigar_t {
|
|
||||||
SIGAR_T_BASE;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* SIGAR_OS_H */
|
|
|
@ -1,309 +0,0 @@
|
||||||
#include "sigar.h"
|
|
||||||
#include "sigar_private.h"
|
|
||||||
#include "sigar_os.h"
|
|
||||||
#include "sigar_util.h"
|
|
||||||
|
|
||||||
int sigar_os_open(sigar_t **sigar)
|
|
||||||
{
|
|
||||||
*sigar = malloc(sizeof(**sigar));
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_close(sigar_t *sigar)
|
|
||||||
{
|
|
||||||
free(sigar);
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *sigar_os_error_string(sigar_t *sigar, int err)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
|
||||||
{
|
|
||||||
mem->total = -1;
|
|
||||||
mem->ram = -1;
|
|
||||||
mem->used = -1;
|
|
||||||
mem->free = -1;
|
|
||||||
mem->actual_free = mem->free;
|
|
||||||
mem->actual_used = mem->used;
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
|
||||||
{
|
|
||||||
swap->total = -1;
|
|
||||||
swap->used = -1;
|
|
||||||
swap->free = -1;
|
|
||||||
swap->page_in = -1;
|
|
||||||
swap->page_out = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
|
||||||
{
|
|
||||||
cpu->user = -1;
|
|
||||||
cpu->nice = -1;
|
|
||||||
cpu->sys = -1;
|
|
||||||
cpu->idle = -1;
|
|
||||||
cpu->wait = -1;
|
|
||||||
|
|
||||||
cpu->total = cpu->user + cpu->nice + cpu->sys + cpu->idle;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_uptime_get(sigar_t *sigar,
|
|
||||||
sigar_uptime_t *uptime)
|
|
||||||
{
|
|
||||||
uptime->uptime = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_loadavg_get(sigar_t *sigar,
|
|
||||||
sigar_loadavg_t *loadavg)
|
|
||||||
{
|
|
||||||
loadavg->loadavg[0] = -1;
|
|
||||||
loadavg->loadavg[1] = -1;
|
|
||||||
loadavg->loadavg[2] = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_list_get(sigar_t *sigar,
|
|
||||||
sigar_proc_list_t *proclist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_mem_t *procmem)
|
|
||||||
{
|
|
||||||
procmem->size = -1;
|
|
||||||
procmem->share = -1;
|
|
||||||
procmem->resident = -1;
|
|
||||||
procmem->page_faults = -1;
|
|
||||||
procmem->minor_faults = -1;
|
|
||||||
procmem->major_faults = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_cred_t *proccred)
|
|
||||||
{
|
|
||||||
proccred->uid = -1;
|
|
||||||
proccred->gid = -1;
|
|
||||||
proccred->euid = -1;
|
|
||||||
proccred->egid = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_time_t *proctime)
|
|
||||||
{
|
|
||||||
proctime->start_time = -1;
|
|
||||||
proctime->user = -1;
|
|
||||||
proctime->sys = -1;
|
|
||||||
proctime->total = proctime->user + proctime->sys;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_state_t *procstate)
|
|
||||||
{
|
|
||||||
SIGAR_SSTRCPY(procstate->name, "java");
|
|
||||||
procstate->ppid = -1;
|
|
||||||
procstate->priority = -1;
|
|
||||||
procstate->nice = -1;
|
|
||||||
procstate->tty = -1;
|
|
||||||
procstate->state = 'R';
|
|
||||||
procstate->threads = -1;
|
|
||||||
procstate->processor = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_args_t *procargs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_env_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_env_t *procenv)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_fd_t *procfd)
|
|
||||||
{
|
|
||||||
procfd->total = -1;
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_exe_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_exe_t *procexe)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_modules_get(sigar_t *sigar, sigar_pid_t pid,
|
|
||||||
sigar_proc_modules_t *procmods)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_thread_cpu_get(sigar_t *sigar,
|
|
||||||
sigar_uint64_t id,
|
|
||||||
sigar_thread_cpu_t *cpu)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_fs_type_get(sigar_file_system_t *fsp)
|
|
||||||
{
|
|
||||||
fsp->type = SIGAR_FSTYPE_UNKNOWN;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_file_system_list_get(sigar_t *sigar,
|
|
||||||
sigar_file_system_list_t *fslist)
|
|
||||||
{
|
|
||||||
sigar_file_system_list_create(fslist);
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_disk_usage_get(sigar_t *sigar, const char *name,
|
|
||||||
sigar_disk_usage_t *usage)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_file_system_usage_get(sigar_t *sigar,
|
|
||||||
const char *dirname,
|
|
||||||
sigar_file_system_usage_t *fsusage)
|
|
||||||
{
|
|
||||||
fsusage->total = -1;
|
|
||||||
fsusage->free = -1;
|
|
||||||
fsusage->avail = -1;
|
|
||||||
fsusage->used = -1;
|
|
||||||
fsusage->files = -1;
|
|
||||||
fsusage->free_files = -1;
|
|
||||||
SIGAR_DISK_STATS_INIT(&fsusage->disk);
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_cpu_info_list_get(sigar_t *sigar,
|
|
||||||
sigar_cpu_info_list_t *cpu_infos)
|
|
||||||
{
|
|
||||||
sigar_cpu_info_t *info;
|
|
||||||
|
|
||||||
sigar_cpu_info_list_create(cpu_infos);
|
|
||||||
|
|
||||||
info = &cpu_infos->data[cpu_infos->number++];
|
|
||||||
|
|
||||||
SIGAR_SSTRCPY(info->vendor, "vendor");
|
|
||||||
SIGAR_SSTRCPY(info->model, "model");
|
|
||||||
info->mhz = -1;
|
|
||||||
info->cache_size = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_route_list_get(sigar_t *sigar,
|
|
||||||
sigar_net_route_list_t *routelist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_interface_stat_get(sigar_t *sigar, const char *name,
|
|
||||||
sigar_net_interface_stat_t *ifstat)
|
|
||||||
{
|
|
||||||
ifstat->rx_bytes = -1;
|
|
||||||
ifstat->rx_packets = -1;
|
|
||||||
ifstat->rx_errors = -1;
|
|
||||||
ifstat->rx_dropped = -1;
|
|
||||||
ifstat->rx_overruns = -1;
|
|
||||||
ifstat->rx_frame = -1;
|
|
||||||
|
|
||||||
ifstat->tx_bytes = -1;
|
|
||||||
ifstat->tx_packets = -1;
|
|
||||||
ifstat->tx_errors = -1;
|
|
||||||
ifstat->tx_dropped = -1;
|
|
||||||
ifstat->tx_overruns = -1;
|
|
||||||
ifstat->tx_collisions = -1;
|
|
||||||
ifstat->tx_carrier = -1;
|
|
||||||
ifstat->speed = -1;
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_net_connection_walk(sigar_net_connection_walker_t *walker)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIGAR_DECLARE(int)
|
|
||||||
sigar_tcp_get(sigar_t *sigar,
|
|
||||||
sigar_tcp_t *tcp)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_client_v2_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_client_v2_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_server_v2_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_server_v2_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_client_v3_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_client_v3_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_nfs_server_v3_get(sigar_t *sigar,
|
|
||||||
sigar_nfs_server_v3_t *nfs)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_arp_list_get(sigar_t *sigar,
|
|
||||||
sigar_arp_list_t *arplist)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_proc_port_get(sigar_t *sigar, int protocol,
|
|
||||||
unsigned long port, sigar_pid_t *pid)
|
|
||||||
{
|
|
||||||
return SIGAR_ENOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigar_os_sys_info_get(sigar_t *sigar,
|
|
||||||
sigar_sys_info_t *sysinfo)
|
|
||||||
{
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
|
@ -1,820 +0,0 @@
|
||||||
#counter names from registry key
|
|
||||||
#SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib
|
|
||||||
0 UNDEFINED
|
|
||||||
1 1847
|
|
||||||
2 System
|
|
||||||
4 Memory
|
|
||||||
6 % Processor Time
|
|
||||||
10 File Read Operations/sec
|
|
||||||
12 File Write Operations/sec
|
|
||||||
14 File Control Operations/sec
|
|
||||||
16 File Read Bytes/sec
|
|
||||||
18 File Write Bytes/sec
|
|
||||||
20 File Control Bytes/sec
|
|
||||||
24 Available Bytes
|
|
||||||
26 Committed Bytes
|
|
||||||
28 Page Faults/sec
|
|
||||||
30 Commit Limit
|
|
||||||
32 Write Copies/sec
|
|
||||||
34 Transition Faults/sec
|
|
||||||
36 Cache Faults/sec
|
|
||||||
38 Demand Zero Faults/sec
|
|
||||||
40 Pages/sec
|
|
||||||
42 Page Reads/sec
|
|
||||||
44 Processor Queue Length
|
|
||||||
46 Thread State
|
|
||||||
48 Pages Output/sec
|
|
||||||
50 Page Writes/sec
|
|
||||||
52 Browser
|
|
||||||
54 Announcements Server/sec
|
|
||||||
56 Pool Paged Bytes
|
|
||||||
58 Pool Nonpaged Bytes
|
|
||||||
60 Pool Paged Allocs
|
|
||||||
64 Pool Nonpaged Allocs
|
|
||||||
66 Pool Paged Resident Bytes
|
|
||||||
68 System Code Total Bytes
|
|
||||||
70 System Code Resident Bytes
|
|
||||||
72 System Driver Total Bytes
|
|
||||||
74 System Driver Resident Bytes
|
|
||||||
76 System Cache Resident Bytes
|
|
||||||
78 Announcements Domain/sec
|
|
||||||
80 Election Packets/sec
|
|
||||||
82 Mailslot Writes/sec
|
|
||||||
84 Server List Requests/sec
|
|
||||||
86 Cache
|
|
||||||
88 Data Maps/sec
|
|
||||||
90 Sync Data Maps/sec
|
|
||||||
92 Async Data Maps/sec
|
|
||||||
94 Data Map Hits %
|
|
||||||
96 Data Map Pins/sec
|
|
||||||
98 Pin Reads/sec
|
|
||||||
100 Sync Pin Reads/sec
|
|
||||||
102 Async Pin Reads/sec
|
|
||||||
104 Pin Read Hits %
|
|
||||||
106 Copy Reads/sec
|
|
||||||
108 Sync Copy Reads/sec
|
|
||||||
110 Async Copy Reads/sec
|
|
||||||
112 Copy Read Hits %
|
|
||||||
114 MDL Reads/sec
|
|
||||||
116 Sync MDL Reads/sec
|
|
||||||
118 Async MDL Reads/sec
|
|
||||||
120 MDL Read Hits %
|
|
||||||
122 Read Aheads/sec
|
|
||||||
124 Fast Reads/sec
|
|
||||||
126 Sync Fast Reads/sec
|
|
||||||
128 Async Fast Reads/sec
|
|
||||||
130 Fast Read Resource Misses/sec
|
|
||||||
132 Fast Read Not Possibles/sec
|
|
||||||
134 Lazy Write Flushes/sec
|
|
||||||
136 Lazy Write Pages/sec
|
|
||||||
138 Data Flushes/sec
|
|
||||||
140 Data Flush Pages/sec
|
|
||||||
142 % User Time
|
|
||||||
144 % Privileged Time
|
|
||||||
146 Context Switches/sec
|
|
||||||
148 Interrupts/sec
|
|
||||||
150 System Calls/sec
|
|
||||||
152 Level 1 TLB Fills/sec
|
|
||||||
154 Level 2 TLB Fills/sec
|
|
||||||
156 Enumerations Server/sec
|
|
||||||
158 Enumerations Domain/sec
|
|
||||||
160 Enumerations Other/sec
|
|
||||||
162 Missed Server Announcements
|
|
||||||
164 Missed Mailslot Datagrams
|
|
||||||
166 Missed Server List Requests
|
|
||||||
168 Server Announce Allocations Failed/sec
|
|
||||||
170 Mailslot Allocations Failed
|
|
||||||
172 Virtual Bytes Peak
|
|
||||||
174 Virtual Bytes
|
|
||||||
178 Working Set Peak
|
|
||||||
180 Working Set
|
|
||||||
182 Page File Bytes Peak
|
|
||||||
184 Page File Bytes
|
|
||||||
186 Private Bytes
|
|
||||||
188 Announcements Total/sec
|
|
||||||
190 Enumerations Total/sec
|
|
||||||
198 Current Disk Queue Length
|
|
||||||
200 % Disk Time
|
|
||||||
202 % Disk Read Time
|
|
||||||
204 % Disk Write Time
|
|
||||||
206 Avg. Disk sec/Transfer
|
|
||||||
208 Avg. Disk sec/Read
|
|
||||||
210 Avg. Disk sec/Write
|
|
||||||
212 Disk Transfers/sec
|
|
||||||
214 Disk Reads/sec
|
|
||||||
216 Disk Writes/sec
|
|
||||||
218 Disk Bytes/sec
|
|
||||||
220 Disk Read Bytes/sec
|
|
||||||
222 Disk Write Bytes/sec
|
|
||||||
224 Avg. Disk Bytes/Transfer
|
|
||||||
226 Avg. Disk Bytes/Read
|
|
||||||
228 Avg. Disk Bytes/Write
|
|
||||||
230 Process
|
|
||||||
232 Thread
|
|
||||||
234 PhysicalDisk
|
|
||||||
236 LogicalDisk
|
|
||||||
238 Processor
|
|
||||||
240 % Total Processor Time
|
|
||||||
242 % Total User Time
|
|
||||||
244 % Total Privileged Time
|
|
||||||
246 Total Interrupts/sec
|
|
||||||
248 Processes
|
|
||||||
250 Threads
|
|
||||||
252 Events
|
|
||||||
254 Semaphores
|
|
||||||
256 Mutexes
|
|
||||||
258 Sections
|
|
||||||
260 Objects
|
|
||||||
262 Redirector
|
|
||||||
264 Bytes Received/sec
|
|
||||||
266 Packets Received/sec
|
|
||||||
268 Read Bytes Paging/sec
|
|
||||||
270 Read Bytes Non-Paging/sec
|
|
||||||
272 Read Bytes Cache/sec
|
|
||||||
274 Read Bytes Network/sec
|
|
||||||
276 Bytes Transmitted/sec
|
|
||||||
278 Packets Transmitted/sec
|
|
||||||
280 Write Bytes Paging/sec
|
|
||||||
282 Write Bytes Non-Paging/sec
|
|
||||||
284 Write Bytes Cache/sec
|
|
||||||
286 Write Bytes Network/sec
|
|
||||||
288 Read Operations/sec
|
|
||||||
290 Read Operations Random/sec
|
|
||||||
292 Read Packets/sec
|
|
||||||
294 Reads Large/sec
|
|
||||||
296 Read Packets Small/sec
|
|
||||||
298 Write Operations/sec
|
|
||||||
300 Write Operations Random/sec
|
|
||||||
302 Write Packets/sec
|
|
||||||
304 Writes Large/sec
|
|
||||||
306 Write Packets Small/sec
|
|
||||||
308 Reads Denied/sec
|
|
||||||
310 Writes Denied/sec
|
|
||||||
312 Network Errors/sec
|
|
||||||
314 Server Sessions
|
|
||||||
316 Server Reconnects
|
|
||||||
318 Connects Core
|
|
||||||
320 Connects Lan Manager 2.0
|
|
||||||
322 Connects Lan Manager 2.1
|
|
||||||
324 Connects Windows NT
|
|
||||||
326 Server Disconnects
|
|
||||||
328 Server Sessions Hung
|
|
||||||
330 Server
|
|
||||||
336 Thread Wait Reason
|
|
||||||
340 Sessions Timed Out
|
|
||||||
342 Sessions Errored Out
|
|
||||||
344 Sessions Logged Off
|
|
||||||
346 Sessions Forced Off
|
|
||||||
348 Errors Logon
|
|
||||||
350 Errors Access Permissions
|
|
||||||
352 Errors Granted Access
|
|
||||||
354 Errors System
|
|
||||||
356 Blocking Requests Rejected
|
|
||||||
358 Work Item Shortages
|
|
||||||
360 Files Opened Total
|
|
||||||
362 Files Open
|
|
||||||
366 File Directory Searches
|
|
||||||
370 Pool Nonpaged Failures
|
|
||||||
372 Pool Nonpaged Peak
|
|
||||||
376 Pool Paged Failures
|
|
||||||
378 Pool Paged Peak
|
|
||||||
388 Bytes Total/sec
|
|
||||||
392 Current Commands
|
|
||||||
398 NWLink NetBIOS
|
|
||||||
400 Packets/sec
|
|
||||||
404 Context Blocks Queued/sec
|
|
||||||
406 File Data Operations/sec
|
|
||||||
408 % Free Space
|
|
||||||
410 Free Megabytes
|
|
||||||
412 Connections Open
|
|
||||||
414 Connections No Retries
|
|
||||||
416 Connections With Retries
|
|
||||||
418 Disconnects Local
|
|
||||||
420 Disconnects Remote
|
|
||||||
422 Failures Link
|
|
||||||
424 Failures Adapter
|
|
||||||
426 Connection Session Timeouts
|
|
||||||
428 Connections Canceled
|
|
||||||
430 Failures Resource Remote
|
|
||||||
432 Failures Resource Local
|
|
||||||
434 Failures Not Found
|
|
||||||
436 Failures No Listen
|
|
||||||
438 Datagrams/sec
|
|
||||||
440 Datagram Bytes/sec
|
|
||||||
442 Datagrams Sent/sec
|
|
||||||
444 Datagram Bytes Sent/sec
|
|
||||||
446 Datagrams Received/sec
|
|
||||||
448 Datagram Bytes Received/sec
|
|
||||||
452 Packets Sent/sec
|
|
||||||
456 Frames/sec
|
|
||||||
458 Frame Bytes/sec
|
|
||||||
460 Frames Sent/sec
|
|
||||||
462 Frame Bytes Sent/sec
|
|
||||||
464 Frames Received/sec
|
|
||||||
466 Frame Bytes Received/sec
|
|
||||||
468 Frames Re-Sent/sec
|
|
||||||
470 Frame Bytes Re-Sent/sec
|
|
||||||
472 Frames Rejected/sec
|
|
||||||
474 Frame Bytes Rejected/sec
|
|
||||||
476 Expirations Response
|
|
||||||
478 Expirations Ack
|
|
||||||
480 Window Send Maximum
|
|
||||||
482 Window Send Average
|
|
||||||
484 Piggyback Ack Queued/sec
|
|
||||||
486 Piggyback Ack Timeouts
|
|
||||||
488 NWLink IPX
|
|
||||||
490 NWLink SPX
|
|
||||||
492 NetBEUI
|
|
||||||
494 NetBEUI Resource
|
|
||||||
496 Used Maximum
|
|
||||||
498 Used Average
|
|
||||||
500 Times Exhausted
|
|
||||||
502 NBT Connection
|
|
||||||
506 Bytes Sent/sec
|
|
||||||
508 Total Bytes/sec
|
|
||||||
510 Network Interface
|
|
||||||
512 Bytes/sec
|
|
||||||
520 Current Bandwidth
|
|
||||||
524 Packets Received Unicast/sec
|
|
||||||
526 Packets Received Non-Unicast/sec
|
|
||||||
528 Packets Received Discarded
|
|
||||||
530 Packets Received Errors
|
|
||||||
532 Packets Received Unknown
|
|
||||||
536 Packets Sent Unicast/sec
|
|
||||||
538 Packets Sent Non-Unicast/sec
|
|
||||||
540 Packets Outbound Discarded
|
|
||||||
542 Packets Outbound Errors
|
|
||||||
544 Output Queue Length
|
|
||||||
546 IP
|
|
||||||
552 Datagrams Received Header Errors
|
|
||||||
554 Datagrams Received Address Errors
|
|
||||||
556 Datagrams Forwarded/sec
|
|
||||||
558 Datagrams Received Unknown Protocol
|
|
||||||
560 Datagrams Received Discarded
|
|
||||||
562 Datagrams Received Delivered/sec
|
|
||||||
566 Datagrams Outbound Discarded
|
|
||||||
568 Datagrams Outbound No Route
|
|
||||||
570 Fragments Received/sec
|
|
||||||
572 Fragments Re-assembled/sec
|
|
||||||
574 Fragment Re-assembly Failures
|
|
||||||
576 Fragmented Datagrams/sec
|
|
||||||
578 Fragmentation Failures
|
|
||||||
580 Fragments Created/sec
|
|
||||||
582 ICMP
|
|
||||||
584 Messages/sec
|
|
||||||
586 Messages Received/sec
|
|
||||||
588 Messages Received Errors
|
|
||||||
590 Received Dest. Unreachable
|
|
||||||
592 Received Time Exceeded
|
|
||||||
594 Received Parameter Problem
|
|
||||||
596 Received Source Quench
|
|
||||||
598 Received Redirect/sec
|
|
||||||
600 Received Echo/sec
|
|
||||||
602 Received Echo Reply/sec
|
|
||||||
604 Received Timestamp/sec
|
|
||||||
606 Received Timestamp Reply/sec
|
|
||||||
608 Received Address Mask
|
|
||||||
610 Received Address Mask Reply
|
|
||||||
612 Messages Sent/sec
|
|
||||||
614 Messages Outbound Errors
|
|
||||||
616 Sent Destination Unreachable
|
|
||||||
618 Sent Time Exceeded
|
|
||||||
620 Sent Parameter Problem
|
|
||||||
622 Sent Source Quench
|
|
||||||
624 Sent Redirect/sec
|
|
||||||
626 Sent Echo/sec
|
|
||||||
628 Sent Echo Reply/sec
|
|
||||||
630 Sent Timestamp/sec
|
|
||||||
632 Sent Timestamp Reply/sec
|
|
||||||
634 Sent Address Mask
|
|
||||||
636 Sent Address Mask Reply
|
|
||||||
638 TCP
|
|
||||||
640 Segments/sec
|
|
||||||
642 Connections Established
|
|
||||||
644 Connections Active
|
|
||||||
646 Connections Passive
|
|
||||||
648 Connection Failures
|
|
||||||
650 Connections Reset
|
|
||||||
652 Segments Received/sec
|
|
||||||
654 Segments Sent/sec
|
|
||||||
656 Segments Retransmitted/sec
|
|
||||||
658 UDP
|
|
||||||
660 % Total DPC Time
|
|
||||||
662 % Total Interrupt Time
|
|
||||||
664 Datagrams No Port/sec
|
|
||||||
666 Datagrams Received Errors
|
|
||||||
670 Disk Storage Unit
|
|
||||||
672 Allocation Failures
|
|
||||||
674 System Up Time
|
|
||||||
676 System Handle Count
|
|
||||||
678 Free System Page Table Entries
|
|
||||||
680 Thread Count
|
|
||||||
682 Priority Base
|
|
||||||
684 Elapsed Time
|
|
||||||
686 Alignment Fixups/sec
|
|
||||||
688 Exception Dispatches/sec
|
|
||||||
690 Floating Emulations/sec
|
|
||||||
692 Logon/sec
|
|
||||||
694 Priority Current
|
|
||||||
696 % DPC Time
|
|
||||||
698 % Interrupt Time
|
|
||||||
700 Paging File
|
|
||||||
702 % Usage
|
|
||||||
704 % Usage Peak
|
|
||||||
706 Start Address
|
|
||||||
708 User PC
|
|
||||||
710 Mapped Space No Access
|
|
||||||
712 Mapped Space Read Only
|
|
||||||
714 Mapped Space Read/Write
|
|
||||||
716 Mapped Space Write Copy
|
|
||||||
718 Mapped Space Executable
|
|
||||||
720 Mapped Space Exec Read Only
|
|
||||||
722 Mapped Space Exec Read/Write
|
|
||||||
724 Mapped Space Exec Write Copy
|
|
||||||
726 Reserved Space No Access
|
|
||||||
728 Reserved Space Read Only
|
|
||||||
730 Reserved Space Read/Write
|
|
||||||
732 Reserved Space Write Copy
|
|
||||||
734 Reserved Space Executable
|
|
||||||
736 Reserved Space Exec Read Only
|
|
||||||
738 Reserved Space Exec Read/Write
|
|
||||||
740 Image
|
|
||||||
742 Reserved Space Exec Write Copy
|
|
||||||
744 Unassigned Space No Access
|
|
||||||
746 Unassigned Space Read Only
|
|
||||||
748 Unassigned Space Read/Write
|
|
||||||
750 Unassigned Space Write Copy
|
|
||||||
752 Unassigned Space Executable
|
|
||||||
754 Unassigned Space Exec Read Only
|
|
||||||
756 Unassigned Space Exec Read/Write
|
|
||||||
758 Unassigned Space Exec Write Copy
|
|
||||||
760 Image Space No Access
|
|
||||||
762 Image Space Read Only
|
|
||||||
764 Image Space Read/Write
|
|
||||||
766 Image Space Write Copy
|
|
||||||
768 Image Space Executable
|
|
||||||
770 Image Space Exec Read Only
|
|
||||||
772 Image Space Exec Read/Write
|
|
||||||
774 Image Space Exec Write Copy
|
|
||||||
776 Bytes Image Reserved
|
|
||||||
778 Bytes Image Free
|
|
||||||
780 Bytes Reserved
|
|
||||||
782 Bytes Free
|
|
||||||
784 ID Process
|
|
||||||
786 Process Address Space
|
|
||||||
788 No Access
|
|
||||||
790 Read Only
|
|
||||||
792 Read/Write
|
|
||||||
794 Write Copy
|
|
||||||
796 Executable
|
|
||||||
798 Exec Read Only
|
|
||||||
800 Exec Read/Write
|
|
||||||
802 Exec Write Copy
|
|
||||||
804 ID Thread
|
|
||||||
806 Mailslot Receives Failed
|
|
||||||
808 Mailslot Writes Failed
|
|
||||||
810 Mailslot Opens Failed/sec
|
|
||||||
812 Duplicate Master Announcements
|
|
||||||
814 Illegal Datagrams/sec
|
|
||||||
816 Thread Details
|
|
||||||
818 Cache Bytes
|
|
||||||
820 Cache Bytes Peak
|
|
||||||
822 Pages Input/sec
|
|
||||||
870 RAS Port
|
|
||||||
872 Bytes Transmitted
|
|
||||||
874 Bytes Received
|
|
||||||
876 Frames Transmitted
|
|
||||||
878 Frames Received.
|
|
||||||
880 Percent Compression Out
|
|
||||||
882 Percent Compression In
|
|
||||||
884 CRC Errors
|
|
||||||
886 Timeout Errors
|
|
||||||
888 Serial Overrun Errors
|
|
||||||
890 Alignment Errors
|
|
||||||
892 Buffer Overrun Errors
|
|
||||||
894 Total Errors
|
|
||||||
896 Bytes Transmitted/Sec
|
|
||||||
898 Bytes Received/Sec
|
|
||||||
900 Frames Transmitted/Sec
|
|
||||||
902 Frames Received/Sec
|
|
||||||
904 Total Errors/Sec
|
|
||||||
906 RAS Total
|
|
||||||
908 Total Connections
|
|
||||||
920 WINS Server
|
|
||||||
922 Unique Registrations/sec
|
|
||||||
924 Group Registrations/sec
|
|
||||||
926 Total Number of Registrations/sec
|
|
||||||
928 Unique Renewals/sec
|
|
||||||
930 Group Renewals/sec
|
|
||||||
932 Total Number of Renewals/sec
|
|
||||||
934 Releases/sec
|
|
||||||
936 Queries/sec
|
|
||||||
938 Unique Conflicts/sec
|
|
||||||
940 Group Conflicts/sec
|
|
||||||
942 Total Number of Conflicts/sec
|
|
||||||
944 Successful Releases/sec
|
|
||||||
946 Failed Releases/sec
|
|
||||||
948 Successful Queries/sec
|
|
||||||
950 Failed Queries/sec
|
|
||||||
952 Handle Count
|
|
||||||
1000 MacFile Server
|
|
||||||
1002 Max Paged Memory
|
|
||||||
1004 Current Paged Memory
|
|
||||||
1006 Max NonPaged Memory
|
|
||||||
1008 Current NonPaged memory
|
|
||||||
1010 Current Sessions
|
|
||||||
1012 Maximum Sessions
|
|
||||||
1014 Current Files Open
|
|
||||||
1016 Maximum Files Open
|
|
||||||
1018 Failed Logons
|
|
||||||
1020 Data Read/sec
|
|
||||||
1022 Data Written/sec
|
|
||||||
1024 Data Received/sec
|
|
||||||
1026 Data Transmitted/sec
|
|
||||||
1028 Current Queue Length
|
|
||||||
1030 Maximum Queue Length
|
|
||||||
1032 Current Threads
|
|
||||||
1034 Maximum Threads
|
|
||||||
1050 AppleTalk
|
|
||||||
1052 Packets In/sec
|
|
||||||
1054 Packets Out/sec
|
|
||||||
1056 Bytes In/sec
|
|
||||||
1058 Bytes Out/sec
|
|
||||||
1060 Average Time/DDP Packet
|
|
||||||
1062 DDP Packets/sec
|
|
||||||
1064 Average Time/AARP Packet
|
|
||||||
1066 AARP Packets/sec
|
|
||||||
1068 Average Time/ATP Packet
|
|
||||||
1070 ATP Packets/sec
|
|
||||||
1072 Average Time/NBP Packet
|
|
||||||
1074 NBP Packets/sec
|
|
||||||
1076 Average Time/ZIP Packet
|
|
||||||
1078 ZIP Packets/sec
|
|
||||||
1080 Average Time/RTMP Packet
|
|
||||||
1082 RTMP Packets/sec
|
|
||||||
1084 ATP Retries Local
|
|
||||||
1086 ATP Response Timouts
|
|
||||||
1088 ATP XO Response/Sec
|
|
||||||
1090 ATP ALO Response/Sec
|
|
||||||
1092 ATP Recvd Release/Sec
|
|
||||||
1094 Current NonPaged Pool
|
|
||||||
1096 Packets Routed In/Sec
|
|
||||||
1098 Packets dropped
|
|
||||||
1100 ATP Retries Remote
|
|
||||||
1102 Packets Routed Out/Sec
|
|
||||||
1110 Network Segment
|
|
||||||
1112 Total frames received/second
|
|
||||||
1114 Total bytes received/second
|
|
||||||
1116 Broadcast frames received/second
|
|
||||||
1118 Multicast frames received/second
|
|
||||||
1120 % Network utilization
|
|
||||||
1124 % Broadcast Frames
|
|
||||||
1126 % Multicast Frames
|
|
||||||
1150 Telephony
|
|
||||||
1152 Lines
|
|
||||||
1154 Telephone Devices
|
|
||||||
1156 Active Lines
|
|
||||||
1158 Active Telephones
|
|
||||||
1160 Outgoing Calls/sec
|
|
||||||
1162 Incoming Calls/sec
|
|
||||||
1164 Client Apps
|
|
||||||
1166 Current Outgoing Calls
|
|
||||||
1168 Current Incoming Calls
|
|
||||||
1228 Gateway Service For NetWare
|
|
||||||
1230 Client Service For NetWare
|
|
||||||
1232 Packet Burst Read NCP Count/sec
|
|
||||||
1234 Packet Burst Read Timeouts/sec
|
|
||||||
1236 Packet Burst Write NCP Count/sec
|
|
||||||
1238 Packet Burst Write Timeouts/sec
|
|
||||||
1240 Packet Burst IO/sec
|
|
||||||
1242 Connect NetWare 2.x
|
|
||||||
1244 Connect NetWare 3.x
|
|
||||||
1246 Connect NetWare 4.x
|
|
||||||
1260 Logon Total
|
|
||||||
1300 Server Work Queues
|
|
||||||
1302 Queue Length
|
|
||||||
1304 Active Threads
|
|
||||||
1306 Available Threads
|
|
||||||
1308 Available Work Items
|
|
||||||
1310 Borrowed Work Items
|
|
||||||
1312 Work Item Shortages
|
|
||||||
1314 Current Clients
|
|
||||||
1320 Bytes Transferred/sec
|
|
||||||
1324 Read Bytes/sec
|
|
||||||
1328 Write Bytes/sec
|
|
||||||
1332 Total Operations/sec
|
|
||||||
1334 DPCs Queued/sec
|
|
||||||
1336 DPC Rate
|
|
||||||
1342 Total DPCs Queued/sec
|
|
||||||
1344 Total DPC Rate
|
|
||||||
1350 % Registry Quota In Use
|
|
||||||
1360 VL Memory
|
|
||||||
1362 VLM % Virtual Size In Use
|
|
||||||
1364 VLM Virtual Size
|
|
||||||
1366 VLM Virtual Size Peak
|
|
||||||
1368 VLM Virtual Size Available
|
|
||||||
1370 VLM Commit Charge
|
|
||||||
1372 VLM Commit Charge Peak
|
|
||||||
1374 System VLM Commit Charge
|
|
||||||
1376 System VLM Commit Charge Peak
|
|
||||||
1378 System VLM Shared Commit Charge
|
|
||||||
1380 Available KBytes
|
|
||||||
1382 Available MBytes
|
|
||||||
1400 Avg. Disk Queue Length
|
|
||||||
1402 Avg. Disk Read Queue Length
|
|
||||||
1404 Avg. Disk Write Queue Length
|
|
||||||
1406 % Committed Bytes In Use
|
|
||||||
1408 Full Image
|
|
||||||
1410 Creating Process ID
|
|
||||||
1412 IO Read Operations/sec
|
|
||||||
1414 IO Write Operations/sec
|
|
||||||
1416 IO Data Operations/sec
|
|
||||||
1418 IO Other Operations/sec
|
|
||||||
1420 IO Read Bytes/sec
|
|
||||||
1422 IO Write Bytes/sec
|
|
||||||
1424 IO Data Bytes/sec
|
|
||||||
1426 IO Other Bytes/sec
|
|
||||||
1450 Print Queue
|
|
||||||
1452 Total Jobs Printed
|
|
||||||
1454 Bytes Printed/sec
|
|
||||||
1456 Total Pages Printed
|
|
||||||
1458 Jobs
|
|
||||||
1460 References
|
|
||||||
1462 Max References
|
|
||||||
1464 Jobs Spooling
|
|
||||||
1466 Max Jobs Spooling
|
|
||||||
1468 Out of Paper Errors
|
|
||||||
1470 Not Ready Errors
|
|
||||||
1472 Job Errors
|
|
||||||
1474 Enumerate Network Printer Calls
|
|
||||||
1476 Add Network Printer Calls
|
|
||||||
1478 Working Set - Private
|
|
||||||
1480 Working Set - Shared
|
|
||||||
1482 % Idle Time
|
|
||||||
1484 Split IO/Sec
|
|
||||||
1500 Job Object
|
|
||||||
1502 Current % Processor Time
|
|
||||||
1504 Current % User Mode Time
|
|
||||||
1506 Current % Kernel Mode Time
|
|
||||||
1508 This Period mSec - Processor
|
|
||||||
1510 This Period mSec - User Mode
|
|
||||||
1512 This Period mSec - Kernel Mode
|
|
||||||
1514 Pages/Sec
|
|
||||||
1516 Process Count - Total
|
|
||||||
1518 Process Count - Active
|
|
||||||
1520 Process Count - Terminated
|
|
||||||
1522 Total mSec - Processor
|
|
||||||
1524 Total mSec - User Mode
|
|
||||||
1526 Total mSec - Kernel Mode
|
|
||||||
1548 Job Object Details
|
|
||||||
1746 % Idle Time
|
|
||||||
1748 % C1 Time
|
|
||||||
1750 % C2 Time
|
|
||||||
1752 % C3 Time
|
|
||||||
1754 C1 Transitions/sec
|
|
||||||
1756 C2 Transitions/sec
|
|
||||||
1758 C3 Transitions/sec
|
|
||||||
1760 Heap
|
|
||||||
1762 Committed Bytes
|
|
||||||
1764 Reserved Bytes
|
|
||||||
1766 Virtual Bytes
|
|
||||||
1768 Free Bytes
|
|
||||||
1770 Free List Length
|
|
||||||
1772 Avg. alloc rate
|
|
||||||
1774 Avg. free rate
|
|
||||||
1776 Uncommitted Ranges Length
|
|
||||||
1778 Allocs - Frees
|
|
||||||
1780 Cached Allocs/sec
|
|
||||||
1782 Cached Frees/sec
|
|
||||||
1784 Allocs <1K/sec
|
|
||||||
1786 Frees <1K/sec
|
|
||||||
1788 Allocs 1-8K/sec
|
|
||||||
1790 Frees 1-8K/sec
|
|
||||||
1792 Allocs over 8K/sec
|
|
||||||
1794 Frees over 8K/sec
|
|
||||||
1796 Total Allocs/sec
|
|
||||||
1798 Total Frees/sec
|
|
||||||
1800 Blocks in Heap Cache
|
|
||||||
1802 Largest Cache Depth
|
|
||||||
1804 % Fragmentation
|
|
||||||
1806 % VAFragmentation
|
|
||||||
1808 Heap Lock contention
|
|
||||||
1846 End Marker
|
|
||||||
1848 RSVP Service
|
|
||||||
1850 Network Interfaces
|
|
||||||
1852 Network sockets
|
|
||||||
1854 Timers
|
|
||||||
1856 RSVP sessions
|
|
||||||
1858 QoS clients
|
|
||||||
1860 QoS-enabled senders
|
|
||||||
1862 QoS-enabled receivers
|
|
||||||
1864 Failed QoS requests
|
|
||||||
1866 Failed QoS sends
|
|
||||||
1868 QoS notifications
|
|
||||||
1870 Bytes in QoS notifications
|
|
||||||
1872 RSVP Interfaces
|
|
||||||
1874 Signaling bytes received
|
|
||||||
1876 Signaling bytes sent
|
|
||||||
1878 PATH messages received
|
|
||||||
1880 RESV messages received
|
|
||||||
1882 PATH ERR messages received
|
|
||||||
1884 RESV ERR messages received
|
|
||||||
1886 PATH TEAR messages received
|
|
||||||
1888 RESV TEAR messages received
|
|
||||||
1890 RESV CONFIRM messages received
|
|
||||||
1892 PATH messages sent
|
|
||||||
1894 RESV messages sent
|
|
||||||
1896 PATH ERR messages sent
|
|
||||||
1898 RESV ERR messages sent
|
|
||||||
1900 PATH TEAR messages sent
|
|
||||||
1902 RESV TEAR messages sent
|
|
||||||
1904 RESV CONFIRM messages sent
|
|
||||||
1906 Resource control failures
|
|
||||||
1908 Policy control failures
|
|
||||||
1910 General failures
|
|
||||||
1912 Blocked RESVs
|
|
||||||
1914 RESV state block timeouts
|
|
||||||
1916 PATH state block timeouts
|
|
||||||
1918 Send messages errors - Big messages
|
|
||||||
1920 Receive messages errors - Big messages
|
|
||||||
1922 Send messages errors - No memory
|
|
||||||
1924 Receive messages errors - No memory
|
|
||||||
1926 Number of incoming messages dropped
|
|
||||||
1928 Number of outgoing messages dropped
|
|
||||||
1930 Number of active flows
|
|
||||||
1932 Reserved bandwidth
|
|
||||||
1934 Maximum admitted bandwidth
|
|
||||||
1936 PSched Flow
|
|
||||||
1938 PSched Pipe
|
|
||||||
1940 Packets dropped
|
|
||||||
1942 Packets scheduled
|
|
||||||
1944 Packets transmitted
|
|
||||||
1946 Average packets in shaper
|
|
||||||
1948 Max packets in shaper
|
|
||||||
1950 Average packets in sequencer
|
|
||||||
1952 Max packets in sequencer
|
|
||||||
1954 Bytes scheduled
|
|
||||||
1956 Bytes transmitted
|
|
||||||
1958 Bytes transmitted/sec
|
|
||||||
1960 Bytes scheduled/sec
|
|
||||||
1962 Packets transmitted/sec
|
|
||||||
1964 Packets scheduled/sec
|
|
||||||
1966 Packets dropped/sec
|
|
||||||
1968 Nonconforming packets scheduled
|
|
||||||
1970 Nonconforming packets scheduled/sec
|
|
||||||
1972 Nonconforming packets transmitted
|
|
||||||
1974 Nonconforming packets transmitted/sec
|
|
||||||
1976 Maximum Packets in netcard
|
|
||||||
1978 Average Packets in netcard
|
|
||||||
1980 Out of packets
|
|
||||||
1982 Flows opened
|
|
||||||
1984 Flows closed
|
|
||||||
1986 Flows rejected
|
|
||||||
1988 Flows modified
|
|
||||||
1990 Flow mods rejected
|
|
||||||
1992 Max simultaneous flows
|
|
||||||
1994 Nonconforming packets scheduled
|
|
||||||
1996 Nonconforming packets scheduled/sec
|
|
||||||
1998 Nonconforming packets transmitted
|
|
||||||
2000 Nonconforming packets transmitted/sec
|
|
||||||
2002 Average packets in shaper
|
|
||||||
2004 Max packets in shaper
|
|
||||||
2006 Average packets in sequencer
|
|
||||||
2008 Max packets in sequencer
|
|
||||||
2010 Max packets in netcard
|
|
||||||
2012 Average packets in netcard
|
|
||||||
2014 RAS Port
|
|
||||||
2016 Bytes Transmitted
|
|
||||||
2018 Bytes Received
|
|
||||||
2020 Frames Transmitted
|
|
||||||
2022 Frames Received
|
|
||||||
2024 Percent Compression Out
|
|
||||||
2026 Percent Compression In
|
|
||||||
2028 CRC Errors
|
|
||||||
2030 Timeout Errors
|
|
||||||
2032 Serial Overrun Errors
|
|
||||||
2034 Alignment Errors
|
|
||||||
2036 Buffer Overrun Errors
|
|
||||||
2038 Total Errors
|
|
||||||
2040 Bytes Transmitted/Sec
|
|
||||||
2042 Bytes Received/Sec
|
|
||||||
2044 Frames Transmitted/Sec
|
|
||||||
2046 Frames Received/Sec
|
|
||||||
2048 Total Errors/Sec
|
|
||||||
2050 RAS Total
|
|
||||||
2052 Total Connections
|
|
||||||
2054 Terminal Services Session
|
|
||||||
2056 Input WdBytes
|
|
||||||
2058 Input WdFrames
|
|
||||||
2060 Input WaitForOutBuf
|
|
||||||
2062 Input Frames
|
|
||||||
2064 Input Bytes
|
|
||||||
2066 Input Compressed Bytes
|
|
||||||
2068 Input Compress Flushes
|
|
||||||
2070 Input Errors
|
|
||||||
2072 Input Timeouts
|
|
||||||
2074 Input Async Frame Error
|
|
||||||
2076 Input Async Overrun
|
|
||||||
2078 Input Async Overflow
|
|
||||||
2080 Input Async Parity Error
|
|
||||||
2082 Input Transport Errors
|
|
||||||
2084 Output WdBytes
|
|
||||||
2086 Output WdFrames
|
|
||||||
2088 Output WaitForOutBuf
|
|
||||||
2090 Output Frames
|
|
||||||
2092 Output Bytes
|
|
||||||
2094 Output Compressed Bytes
|
|
||||||
2096 Output Compress Flushes
|
|
||||||
2098 Output Errors
|
|
||||||
2100 Output Timeouts
|
|
||||||
2102 Output Async Frame Error
|
|
||||||
2104 Output Async Overrun
|
|
||||||
2106 Output Async Overflow
|
|
||||||
2108 Output Async Parity Error
|
|
||||||
2110 Output Transport Errors
|
|
||||||
2112 Total WdBytes
|
|
||||||
2114 Total WdFrames
|
|
||||||
2116 Total WaitForOutBuf
|
|
||||||
2118 Total Frames
|
|
||||||
2120 Total Bytes
|
|
||||||
2122 Total Compressed Bytes
|
|
||||||
2124 Total Compress Flushes
|
|
||||||
2126 Total Errors
|
|
||||||
2128 Total Timeouts
|
|
||||||
2130 Total Async Frame Error
|
|
||||||
2132 Total Async Overrun
|
|
||||||
2134 Total Async Overflow
|
|
||||||
2136 Total Async Parity Error
|
|
||||||
2138 Total Transport Errors
|
|
||||||
2140 Total Protocol Cache Reads
|
|
||||||
2142 Total Protocol Cache Hits
|
|
||||||
2144 Total Protocol Cache Hit Ratio
|
|
||||||
2146 Protocol Bitmap Cache Reads
|
|
||||||
2148 Protocol Bitmap Cache Hits
|
|
||||||
2150 Protocol Bitmap Cache Hit Ratio
|
|
||||||
2152 Protocol Glyph Cache Reads
|
|
||||||
2154 Protocol Glyph Cache Hits
|
|
||||||
2156 Protocol Glyph Cache Hit Ratio
|
|
||||||
2158 Protocol Brush Cache Reads
|
|
||||||
2160 Protocol Brush Cache Hits
|
|
||||||
2162 Protocol Brush Cache Hit Ratio
|
|
||||||
2164 Protocol Save Screen Bitmap Cache Reads
|
|
||||||
2166 Protocol Save Screen Bitmap Cache Hits
|
|
||||||
2168 Protocol Save Screen Bitmap Cache Hit Ratio
|
|
||||||
2170 Input Compression Ratio
|
|
||||||
2172 Output Compression Ratio
|
|
||||||
2174 Total Compression Ratio
|
|
||||||
2176 Terminal Services
|
|
||||||
2178 Total Sessions
|
|
||||||
2180 Active Sessions
|
|
||||||
2182 Inactive Sessions
|
|
||||||
2184 Distributed Transaction Coordinator
|
|
||||||
2186 Active Transactions
|
|
||||||
2188 Committed Transactions
|
|
||||||
2190 Aborted Transactions
|
|
||||||
2192 In Doubt Transactions
|
|
||||||
2194 Active Transactions Maximum
|
|
||||||
2196 Force Committed Transactions
|
|
||||||
2198 Force Aborted Transactions
|
|
||||||
2200 Response Time -- Minimum
|
|
||||||
2202 Response Time -- Average
|
|
||||||
2204 Response Time -- Maximum
|
|
||||||
2206 Transactions/sec
|
|
||||||
2208 Committed Transactions/sec
|
|
||||||
2210 Aborted Transactions/sec
|
|
||||||
2212 Indexing Service
|
|
||||||
2214 Word lists
|
|
||||||
2216 Saved indexes
|
|
||||||
2218 Index size (MB)
|
|
||||||
2220 Files to be indexed
|
|
||||||
2222 Unique keys
|
|
||||||
2224 Running queries
|
|
||||||
2226 Merge progress
|
|
||||||
2228 # documents indexed
|
|
||||||
2230 Total # documents
|
|
||||||
2232 Total # of queries
|
|
||||||
2234 Deferred for indexing
|
|
||||||
2236 Indexing Service Filter
|
|
||||||
2238 Total indexing speed (MB/hr)
|
|
||||||
2240 Binding time (msec)
|
|
||||||
2242 Indexing speed (MB/hr)
|
|
||||||
2244 Http Indexing Service
|
|
||||||
2246 Cache items
|
|
||||||
2248 % Cache hits
|
|
||||||
2250 Total cache accesses 1
|
|
||||||
2252 % Cache misses
|
|
||||||
2254 Total cache accesses 2
|
|
||||||
2256 Active queries
|
|
||||||
2258 Total queries
|
|
||||||
2260 Queries per minute
|
|
||||||
2262 Current requests queued
|
|
||||||
2264 Total requests rejected
|
|
||||||
2266 WMI Objects
|
|
||||||
2268 HiPerf Classes
|
|
||||||
2270 HiPerf Validity
|
|
||||||
2272 BatteryStatus
|
|
||||||
2274 ChargeRate
|
|
||||||
2276 DischargeRate
|
|
||||||
2278 RemainingCapacity
|
|
||||||
2280 Tag
|
|
||||||
2282 Voltage
|
|
Loading…
Reference in New Issue