diff options
author | luigi <luigi@FreeBSD.org> | 2001-10-07 02:13:23 +0000 |
---|---|---|
committer | luigi <luigi@FreeBSD.org> | 2001-10-07 02:13:23 +0000 |
commit | ac520683a49228af1bcfadda9bb2df537c1f1d9b (patch) | |
tree | 7c6d246cf83e3975a7aeb11567d395bf772db3fd /release/picobsd/tinyware | |
parent | 1a3242a7f48a5c216734ff89481616df236b15d1 (diff) | |
download | FreeBSD-src-ac520683a49228af1bcfadda9bb2df537c1f1d9b.zip FreeBSD-src-ac520683a49228af1bcfadda9bb2df537c1f1d9b.tar.gz |
Add code to print interrupt statistics when they will be
exported via sysctl.
Diffstat (limited to 'release/picobsd/tinyware')
-rw-r--r-- | release/picobsd/tinyware/vm/vm.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/release/picobsd/tinyware/vm/vm.c b/release/picobsd/tinyware/vm/vm.c index 482a2be..f75a54a 100644 --- a/release/picobsd/tinyware/vm/vm.c +++ b/release/picobsd/tinyware/vm/vm.c @@ -35,12 +35,54 @@ #define pgtok(a) ((a) * (u_int) pagesize >> 10) int +vm_i() +{ +#define CNT 49 + int cnt[CNT]; + char names[CNT*16]; + char *a, *namep[CNT*16]; + int i,len; + long long inttotal=0; + long uptime=1; + + len=sizeof(cnt); + i = sysctlbyname("kern.intrcnt", &cnt, &len, NULL, 0); + if (i != 0) + return i ; + len=sizeof(names); + i = sysctlbyname("kern.intrnames", &names, &len, NULL, 0); + if (i != 0) + return i ; + + for( i=0, a = names ; i < CNT && a < names+sizeof(names) ; ) { + namep[i++] = a++; + while (a < names+sizeof(names) && *a) + a++ ; + a++ ; /* skip \0 */ + } + printf("interrupt total rate\n"); + inttotal = 0; + for (i=0; i< CNT ; i++) + if (cnt[i] >0) { + printf("%-12s %20lu %10lu\n", namep[i], cnt[i], cnt[i]/uptime); + inttotal += cnt[i]; + } + printf("Total %20llu %10llu\n", inttotal, + inttotal / (u_int64_t) uptime); + return 0; +} +int main(int argc, char *argv[]) { int mib[2],i=0,len; int pagesize, pagesize_len; struct vmtotal v; + if (argc > 1 && !strcmp(argv[1], "-i")) { + if (vm_i()) + fprintf(stderr, "vm -i stats not available via sysctl\n"); + return 0 ; + } pagesize_len = sizeof(int); sysctlbyname("vm.stats.vm.v_page_size",&pagesize,&pagesize_len,NULL,0); |