| #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(); | |
| } |