1 #include "libcflat.h" 2 #include "apic.h" 3 #include "smp.h" 4 5 unsigned nipis; 6 7 static void ipi_test(void *data) 8 { 9 int n = (long)data; 10 11 printf("ipi called, cpu %d\n", n); 12 if (id_map[n] != smp_id()) 13 printf("but wrong cpu %d\n", smp_id()); 14 else 15 nipis++; 16 } 17 18 int main(void) 19 { 20 int ncpus; 21 int i; 22 23 ncpus = cpu_count(); 24 printf("found %d cpus\n", ncpus); 25 for (i = 0; i < ncpus; ++i) 26 on_cpu(i, ipi_test, (void *)(long)i); 27 28 report(nipis == ncpus, "IPI to each CPU"); 29 return report_summary(); 30 } 31