=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/vmstat/dkstats.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** src/usr.bin/vmstat/dkstats.c 2002/02/16 21:27:58 1.15 --- src/usr.bin/vmstat/dkstats.c 2002/05/23 10:35:07 1.16 *************** *** 1,4 **** ! /* $OpenBSD: dkstats.c,v 1.15 2002/02/16 21:27:58 millert Exp $ */ /* $NetBSD: dkstats.c,v 1.1 1996/05/10 23:19:27 thorpej Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: dkstats.c,v 1.16 2002/05/23 10:35:07 deraadt Exp $ */ /* $NetBSD: dkstats.c,v 1.1 1996/05/10 23:19:27 thorpej Exp $ */ /* *************** *** 51,56 **** --- 51,57 ---- #include #include "dkstats.h" + #if !defined(NOKVM) static struct nlist namelist[] = { #define X_TK_NIN 0 { "_tk_nin" }, /* tty characters in */ *************** *** 68,74 **** --- 69,87 ---- { "_disklist" }, /* TAILQ of disks */ { NULL }, }; + #define KVM_ERROR(_string) { \ + warnx("%s", (_string)); \ + errx(1, "%s", kvm_geterr(kd)); \ + } + /* + * Dereference the namelist pointer `v' and fill in the local copy + * 'p' which is of size 's'. + */ + #define deref_nl(v, p, s) deref_kptr((void *)namelist[(v)].n_value, (p), (s)); + static void deref_kptr(void *, void *, size_t); + #endif /* !defined(NOKVM) */ + /* Structures to hold the statistics. */ struct _disk cur, last; *************** *** 85,106 **** int *dk_select; char **dr_name; - #define KVM_ERROR(_string) { \ - warnx("%s", (_string)); \ - errx(1, "%s", kvm_geterr(kd)); \ - } - - /* - * Dereference the namelist pointer `v' and fill in the local copy - * 'p' which is of size 's'. - */ - #define deref_nl(v, p, s) deref_kptr((void *)namelist[(v)].n_value, (p), (s)); - /* Missing from */ ! #define timerset(tvp, uvp) ((uvp)->tv_sec = (tvp)->tv_sec); \ ! ((uvp)->tv_usec = (tvp)->tv_usec) ! static void deref_kptr(void *, void *, size_t); /* * Take the delta between the present values and the last recorded --- 98,111 ---- int *dk_select; char **dr_name; /* Missing from */ ! #define timerset(tvp, uvp) \ ! ((uvp)->tv_sec = (tvp)->tv_sec); \ ! ((uvp)->tv_usec = (tvp)->tv_usec) ! #define SWAP(fld) tmp = cur.fld; \ ! cur.fld -= last.fld; \ ! last.fld = tmp /* * Take the delta between the present values and the last recorded *************** *** 110,118 **** void dkswap() { - #define SWAP(fld) tmp = cur.fld; \ - cur.fld -= last.fld; \ - last.fld = tmp u_int64_t tmp; int i; --- 115,120 ---- *************** *** 199,204 **** --- 201,207 ---- cur.tk_nout = 0; } } else { + #if !defined(NOKVM) p = dk_drivehead; for (i = 0; i < dk_ndrive; i++) { *************** *** 209,218 **** timerset(&(cur_disk.dk_time), &(cur.dk_time[i])); p = cur_disk.dk_link.tqe_next; } - deref_nl(X_CP_TIME, cur.cp_time, sizeof(cur.cp_time)); deref_nl(X_TK_NIN, &cur.tk_nin, sizeof(cur.tk_nin)); deref_nl(X_TK_NOUT, &cur.tk_nout, sizeof(cur.tk_nout)); } } --- 212,221 ---- timerset(&(cur_disk.dk_time), &(cur.dk_time[i])); p = cur_disk.dk_link.tqe_next; } deref_nl(X_CP_TIME, cur.cp_time, sizeof(cur.cp_time)); deref_nl(X_TK_NIN, &cur.tk_nin, sizeof(cur.tk_nin)); deref_nl(X_TK_NOUT, &cur.tk_nout, sizeof(cur.tk_nout)); + #endif /* !defined(NOKVM) */ } } *************** *** 238,243 **** --- 241,247 ---- return(1); if (nlistf != NULL || memf != NULL) { + #if !defined(NOKVM) /* Open the kernel. */ if ((kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf)) == NULL) *************** *** 261,266 **** --- 265,271 ---- deref_nl(X_STATHZ, &hz, sizeof(hz)); if (!hz) deref_nl(X_HZ, &hz, sizeof(hz)); + #endif /* !defined(NOKVM) */ } else { /* Get the number of attached drives. */ mib[0] = CTL_HW; *************** *** 322,330 **** --- 327,337 ---- cur.dk_select[i++] = select; } } else { + #if !defined(NOKVM) p = dk_drivehead; for (i = 0; i < dk_ndrive; i++) { char buf[10]; + deref_kptr(p, &cur_disk, sizeof(cur_disk)); deref_kptr(cur_disk.dk_name, buf, sizeof(buf)); cur.dk_name[i] = strdup(buf); *************** *** 334,339 **** --- 341,347 ---- p = cur_disk.dk_link.tqe_next; } + #endif /* !defined(NOKVM) */ } /* Never do this initalization again. */ *************** *** 341,346 **** --- 349,355 ---- return(1); } + #if !defined(NOKVM) /* * Dereference the kernel pointer `kptr' and fill in the local copy * pointed to by `ptr'. The storage space must be pre-allocated, *************** *** 360,362 **** --- 369,372 ---- KVM_ERROR(buf); } } + #endif /* !defined(NOKVM) */ \ No newline at end of file