1 /*- 2 * Copyright (c) 1990 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)nlist.c 5.2 (Berkeley) 06/03/91"; 10 #endif /* not lint */ 11 12 #include <sys/types.h> 13 #include <nlist.h> 14 #include <errno.h> 15 #include <stdio.h> 16 #include <string.h> 17 18 struct nlist psnl[] = { 19 {"_ecmx"}, 20 #define X_ECMX 0 21 {"_fscale"}, 22 #define X_FSCALE 1 23 {"_ccpu"}, 24 #define X_CCPU 2 25 {NULL} 26 }; 27 28 fixpt_t ccpu; /* kernel _ccpu variable */ 29 int nlistread; /* if nlist already read. */ 30 int ecmx; /* kernel _ecmx variable */ 31 int fscale; /* kernel _fscale variable */ 32 33 #define kread(x, v) \ 34 kvm_read(psnl[x].n_value, (char *)&v, sizeof v) != sizeof(v) 35 36 donlist() 37 { 38 extern int eval; 39 int rval; 40 41 rval = 0; 42 nlistread = 1; 43 if (kvm_nlist(psnl)) { 44 (void)fprintf(stderr, "ps: kvm_nlist: %s\n", strerror(errno)); 45 eval = 1; 46 return(1); 47 } 48 if (kread(X_FSCALE, fscale)) { 49 (void)fprintf(stderr, "ps: fscale: %s\n", kvm_geterr()); 50 eval = rval = 1; 51 } 52 if (kread(X_ECMX, ecmx)) { 53 (void)fprintf(stderr, "ps: ecmx: %s\n", kvm_geterr()); 54 eval = rval = 1; 55 } 56 if (kread(X_CCPU, ccpu)) { 57 (void)fprintf(stderr, "ps: ccpu: %s\n", kvm_geterr()); 58 eval = rval = 1; 59 } 60 return(rval); 61 } 62