version 1.47, 2004/05/22 18:06:12 |
version 1.48, 2004/06/11 05:55:43 |
|
|
#if defined(__i386__) |
#if defined(__i386__) |
#define X_INTRHAND 4 /* no sysctl */ |
#define X_INTRHAND 4 /* no sysctl */ |
{ "_intrhand" }, |
{ "_intrhand" }, |
|
#define X_APICINTRHAND 5 /* no sysctl */ |
|
{ "_apic_intrhand" }, |
#endif |
#endif |
{ "" }, |
{ "" }, |
}; |
}; |
|
|
if (namelist[0].n_type == 0) { |
if (namelist[0].n_type == 0) { |
if ((ret = kvm_nlist(kd, namelist)) == -1) |
if ((ret = kvm_nlist(kd, namelist)) == -1) |
errx(1, "%s", kvm_geterr(kd)); |
errx(1, "%s", kvm_geterr(kd)); |
|
#if defined(__i386__) |
|
else if (ret > 1 && namelist[X_APICINTRHAND].n_value == 0) |
|
nlisterr(namelist); |
|
#endif |
else if (ret) |
else if (ret) |
nlisterr(namelist); |
nlisterr(namelist); |
if (namelist[0].n_type == 0) { |
if (namelist[0].n_type == 0) { |
|
|
if (nintr == 0) { |
if (nintr == 0) { |
#if defined(__i386__) |
#if defined(__i386__) |
struct intrhand *intrhand[16], *ihp, ih; |
struct intrhand *intrhand[16], *ihp, ih; |
|
struct intrhand *apicintrhand[256]; |
char iname[16]; |
char iname[16]; |
int namelen, n; |
int namelen, n; |
|
|
|
|
ihp = ih.ih_next; |
ihp = ih.ih_next; |
} |
} |
} |
} |
|
if (namelist[X_APICINTRHAND].n_value) { |
|
NREAD(X_APICINTRHAND, apicintrhand, sizeof(apicintrhand)); |
|
for (namelen = 0, i = 0; i < 256; i++) { |
|
ihp = apicintrhand[i]; |
|
while (ihp) { |
|
nintr++; |
|
KREAD(ihp, &ih, sizeof(ih)); |
|
KREAD(ih.ih_what, iname, 16); |
|
namelen += strlen(iname) + 1; |
|
printf("apic handler %x %s\n", i, iname); |
|
ihp = ih.ih_next; |
|
} |
|
} |
|
} |
intrloc = calloc(nintr, sizeof (long)); |
intrloc = calloc(nintr, sizeof (long)); |
intrname = calloc(nintr, sizeof (char *)); |
intrname = calloc(nintr, sizeof (char *)); |
cp = intrnamebuf = malloc(namelen); |
cp = intrnamebuf = malloc(namelen); |
|
|
ihp = ih.ih_next; |
ihp = ih.ih_next; |
} |
} |
} |
} |
|
if (namelist[X_APICINTRHAND].n_value) { |
|
for (i = 0, n = 0; i < 256; i++) { |
|
ihp = apicintrhand[i]; |
|
while (ihp) { |
|
KREAD(ihp, &ih, sizeof(ih)); |
|
KREAD(ih.ih_what, iname, 16); |
|
intrname[n++] = cp; |
|
strlcpy(cp, iname, intrnamebuf + namelen - cp); |
|
cp += strlen(iname) + 1; |
|
ihp = ih.ih_next; |
|
} |
|
} |
|
} |
#else |
#else |
nintr = (namelist[X_EINTRCNT].n_value - |
nintr = (namelist[X_EINTRCNT].n_value - |
namelist[X_INTRCNT].n_value) / sizeof (int); |
namelist[X_INTRCNT].n_value) / sizeof (int); |
|
|
size_t size; |
size_t size; |
#if defined(__i386__) |
#if defined(__i386__) |
struct intrhand *intrhand[16], *ihp, ih; |
struct intrhand *intrhand[16], *ihp, ih; |
|
struct intrhand *apicintrhand[256]; |
int i, n; |
int i, n; |
#endif |
#endif |
|
|
|
|
KREAD(ihp, &ih, sizeof(ih)); |
KREAD(ihp, &ih, sizeof(ih)); |
s->intrcnt[n++] = ih.ih_count; |
s->intrcnt[n++] = ih.ih_count; |
ihp = ih.ih_next; |
ihp = ih.ih_next; |
|
} |
|
} |
|
if (namelist[X_APICINTRHAND].n_value) { |
|
NREAD(X_APICINTRHAND, apicintrhand, sizeof(apicintrhand)); |
|
for (i = 0, n = 0; i < 256; i++) { |
|
ihp = apicintrhand[i]; |
|
while (ihp) { |
|
KREAD(ihp, &ih, sizeof(ih)); |
|
s->intrcnt[n++] = ih.ih_count; |
|
ihp = ih.ih_next; |
|
} |
} |
} |
} |
} |
#else |
#else |