Пример #1
0
int
initvmstat(void)
{
	static char *intrnamebuf;
	char *cp;
	int i;

	if (intrnamebuf)
		free(intrnamebuf);
	if (intrname)
		free(intrname);
	if (intrloc)
		free(intrloc);

	if (namelist[0].n_type == 0) {
		if (kvm_nlist(kd, namelist) &&
		    namelist[X_ALLEVENTS].n_type == 0) {
			nlisterr(namelist);
			return(0);
		}
	}
	hertz = stathz ? stathz : hz;
	if (!drvinit(1))
		return(0);

	/* Old style interrupt counts - deprecated */
	nintr = (namelist[X_EINTRCNT].n_value -
		namelist[X_INTRCNT].n_value) / sizeof (long);
	if (nintr) {
		intrloc = calloc(nintr, sizeof (long));
		intrname = calloc(nintr, sizeof (long));
		intrnamebuf = malloc(namelist[X_EINTRNAMES].n_value -
				     namelist[X_INTRNAMES].n_value);
		if (intrnamebuf == NULL || intrname == 0 || intrloc == 0) {
			error("Out of memory\n");
			nintr = 0;
			return(0);
		}
		NREAD(X_INTRNAMES, intrnamebuf, NVAL(X_EINTRNAMES) -
		      NVAL(X_INTRNAMES));
		for (cp = intrnamebuf, i = 0; i < nintr; i++) {
			intrname[i] = cp;
			cp += strlen(cp) + 1;
		}
	}

	/* event counter interrupt counts */
	get_interrupt_events();

	nextintsrow = INTSROW + 1;
	allocinfo(&s);
	allocinfo(&s1);
	allocinfo(&s2);
	allocinfo(&z);

	getinfo(&s2);
	copyinfo(&s2, &s1);
	return(1);
}
Пример #2
0
Файл: tcp.c Проект: MarginC/kame
int
inittcp(void)
{

	if (namelist[0].n_type == 0) {
		if (kvm_nlist(kd, namelist)) {
			nlisterr(namelist);
			return(0);
		}
		if (namelist[0].n_type == 0) {
			error("No namelist");
			return(0);
		}
	}
	return 1;
}
Пример #3
0
Файл: ip6.c Проект: MarginC/kame
int
initip6(void)
{
	int n;

	if (namelist[0].n_type == 0) {
		n = kvm_nlist(kd, namelist);
		if (n < 0) {
			nlisterr(namelist);
			return(0);
		} else if (n == sizeof(namelist) / sizeof(namelist[0]) - 1) {
			error("No namelist");
			return(0);
		}
	}
	return 1;
}
Пример #4
0
int
initnetstat(void)
{
	field_view *v;
	int ret;

	if (kd) {
		if ((ret = kvm_nlist(kd, namelist)) == -1)
			errx(1, "%s", kvm_geterr(kd));
		else if (ret)
			nlisterr(namelist);

		if (namelist[X_TCBTABLE].n_value == 0) {
			error("No symbols in namelist");
			return(0);
		}
	}
	protos = TCP|UDP;

	for (v = views_ns; v->name != NULL; v++)
		add_view(v);

	return(1);
}
Пример #5
0
int
donlist(void)
{
	int64_t physmem;
	int rval, mib[2];
	size_t siz;

	rval = 0;
	nlistread = 1;

	if (kd != NULL && !kvm_sysctl_only) {
		if (kvm_nlist(kd, psnl)) {
			nlisterr(psnl);
			eval = 1;
			return (1);
		}
		if (kread(X_FSCALE, fscale)) {
			warnx("fscale: %s", kvm_geterr(kd));
			eval = rval = 1;
		}
		if (kread(X_PHYSMEM, mempages)) {
			warnx("physmem: %s", kvm_geterr(kd));
			eval = rval = 1;
		}
		if (kread(X_CCPU, ccpu)) {
			warnx("ccpu: %s", kvm_geterr(kd));
			eval = rval = 1;
		}
		if (kread(X_MAXSLP, maxslp)) {
			warnx("maxslp: %s", kvm_geterr(kd));
			eval = rval = 1;
		}
	} else {
		siz = sizeof (fscale);
		mib[0] = CTL_KERN;
		mib[1] = KERN_FSCALE;
		if (sysctl(mib, 2, &fscale, &siz, NULL, 0) < 0) {
			warnx("fscale: failed to get kern.fscale");
			eval = rval = 1;
		}
		siz = sizeof (physmem);
		mib[0] = CTL_HW;
		mib[1] = HW_PHYSMEM64;
		if (sysctl(mib, 2, &physmem, &siz, NULL, 0) < 0) {
			warnx("physmem: failed to get hw.physmem");
			eval = rval = 1;
		}
		/* translate bytes into page count */
		mempages = physmem / getpagesize();
		siz = sizeof (ccpu);
		mib[0] = CTL_KERN;
		mib[1] = KERN_CCPU;
		if (sysctl(mib, 2, &ccpu, &siz, NULL, 0) < 0) {
			warnx("ccpu: failed to get kern.ccpu");
			eval = rval = 1;
		}
		siz = sizeof (maxslp);
		mib[0] = CTL_VM;
		mib[1] = VM_MAXSLP;
		if (sysctl(mib, 2, &maxslp, &siz, NULL, 0) < 0) {
			warnx("maxslp: failed to get vm.maxslp");
			eval = rval = 1;
		}
	}
	return (rval);
}
Пример #6
0
int
initkre(void)
{
	char *intrnamebuf;
	size_t bytes;
	size_t b;
	size_t i;

	if (namelist[0].n_type == 0) {
		if (kvm_nlist(kd, namelist)) {
			nlisterr(namelist);
			return(0);
		}
		if (namelist[0].n_type == 0) {
			error("No namelist");
			return(0);
		}
	}

	if ((num_devices = getnumdevs()) < 0) {
		warnx("%s", devstat_errbuf);
		return(0);
	}

	cur.dinfo = (struct devinfo *)malloc(sizeof(struct devinfo));
	last.dinfo = (struct devinfo *)malloc(sizeof(struct devinfo));
	run.dinfo = (struct devinfo *)malloc(sizeof(struct devinfo));
	bzero(cur.dinfo, sizeof(struct devinfo));
	bzero(last.dinfo, sizeof(struct devinfo));
	bzero(run.dinfo, sizeof(struct devinfo));

	if (dsinit(MAXDRIVES, &cur, &last, &run) != 1)
		return(0);

	if (nintr == 0) {
		if (sysctlbyname("hw.intrnames", NULL, &bytes, NULL, 0) == 0) {
			intrnamebuf = malloc(bytes);
			sysctlbyname("hw.intrnames", intrnamebuf, &bytes,
					NULL, 0);
			for (i = 0; i < bytes; ++i) {
				if (intrnamebuf[i] == 0)
					++nintr;
			}
			intrname = malloc(nintr * sizeof(char *));
			intrloc = malloc(nintr * sizeof(*intrloc));
			nintr = 0;
			for (b = i = 0; i < bytes; ++i) {
				if (intrnamebuf[i] == 0) {
					intrname[nintr] = intrnamebuf + b;
					intrloc[nintr] = 0;
					b = i + 1;
					++nintr;
				}
			}
		}
		nextintsrow = INTSROW + 2;
		allocinfo(&s);
		allocinfo(&s1);
		allocinfo(&s2);
		allocinfo(&z);
	}
	getinfo(&s2);
	copyinfo(&s2, &s1);
	return(1);
}