2 * ----------------------------------------------------------------------------
3 * "THE BEER-WARE LICENSE" (Revision 42):
4 * <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
5 * can do whatever you want with this stuff. If we meet some day, and you think
6 * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
7 * ----------------------------------------------------------------------------
12 static const char rcsid[] =
13 "$FreeBSD: src/usr.sbin/kernbb/kernbb.c,v 1.11.2.1 2001/07/19 04:17:03 kris Exp $";
39 struct nlist namelist[] = {
62 kv = kvm_open(NULL,NULL,NULL,O_RDWR,"dnc");
65 i = kvm_nlist(kv,namelist);
69 l1 = namelist[0].n_value;
70 kvm_read(kv,l1,&l2,sizeof l2);
73 kvm_read(kv,l2,&bb,sizeof bb);
77 if (bb.ncounts > MAXBB)
78 errx(1, "found %lu counts above limit of %u",
80 kvm_read(kv,bb.lineno,lineno, bb.ncounts * sizeof lineno[0]);
81 kvm_read(kv,bb.counts,counts, bb.ncounts * sizeof counts[0]);
82 kvm_read(kv,bb.addr, addr, bb.ncounts * sizeof addr[0]);
83 kvm_read(kv,bb.file, file, bb.ncounts * sizeof file[0]);
84 kvm_read(kv,bb.func, func, bb.ncounts * sizeof func[0]);
86 for (i=0; i < bb.ncounts; i++) {
89 if (!func[i] && i+1 < bb.ncounts)
94 for (i=0; i < bb.ncounts; i++) {
99 if (!pn[i] && func[i]) {
100 kvm_read(kv,func[i], buf, sizeof buf);
101 buf[sizeof buf -1] = 0;
103 for(j=i+1;j<bb.ncounts;j++)
104 if (func[j] == func[i]) {
111 if (!fn[i] && file[i]) {
112 kvm_read(kv,file[i], buf, sizeof buf);
113 buf[sizeof buf -1] = 0;
115 for(j=i+1;j<bb.ncounts;j++)
116 if (file[j] == file[i]) {
124 if (i+1 < bb.ncounts)
125 l4 = addr[i+1] - addr[i];
126 printf("%s %5lu %s %lu %lu %lu %lu\n",
127 fn[i], lineno[i], pn[i], addr[i], counts[i], l4, counts[i] * l4);
129 for(i=0;i<bb.ncounts;i++) {
130 if (func[i] && pn[i])
132 if (file[i] && fn[i])