#include "libcflat.h" | |
#include "apic.h" | |
#include "smp.h" | |
unsigned nipis; | |
static void ipi_test(void *data) | |
{ | |
int n = (long)data; | |
printf("ipi called, cpu %d\n", n); | |
if (id_map[n] != smp_id()) | |
printf("but wrong cpu %d\n", smp_id()); | |
else | |
nipis++; | |
} | |
int main(void) | |
{ | |
int ncpus; | |
int i; | |
ncpus = cpu_count(); | |
printf("found %d cpus\n", ncpus); | |
for (i = 0; i < ncpus; ++i) | |
on_cpu(i, ipi_test, (void *)(long)i); | |
report(nipis == ncpus, "IPI to each CPU"); | |
return report_summary(); | |
} |