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