src/sys/x86/x86/mp_x86.c
/*
 * send an IPI to all CPUs EXCEPT myself
 */
send an IPI to all CPUs EXCEPT myself
send an IPI to all CPUs EXCEPT myself
void
ipi_all_but_self(u_int ipi)
{
	cpuset_t other_cpus;
	other_cpus = all_cpus;
	CPU_CLR(PCPU_GET(cpuid), &other_cpus);
	if (IPI_IS_BITMAPED(ipi)) {
		ipi_selected(other_cpus, ipi);
		return;
	}
	if (ipi == IPI_STOP_HARD)
		CPU_OR_ATOMIC(&ipi_stop_nmi_pending, &other_cpus);
	CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi);
	lapic_ipi_vectored(ipi, APIC_IPI_DEST_OTHERS);
}
void ipi_all_but_self ( u_int ipi ) { cpuset_t other_cpus ; other_cpus = all_cpus ; CPU_CLR ( PCPU_GET ( cpuid ) , & other_cpus ) ; if ( IPI_IS_BITMAPED ( ipi ) ) { ipi_selected ( other_cpus , ipi ) ; return ; } if ( ipi == IPI_STOP_HARD ) CPU_OR_ATOMIC ( & ipi_stop_nmi_pending , & other_cpus ) ; CTR2 ( KTR_SMP , " " , __func__ , ipi ) ; lapic_ipi_vectored ( ipi , APIC_IPI_DEST_OTHERS ) ; }
send an IPI to all CPUs EXCEPT myself
send an IPI to all CPUs EXCEPT myself
/*
	 * IPI_STOP_HARD maps to a NMI and the trap handler needs a bit
	 * of help in order to understand what is the source.
	 * Set the mask of receiving CPUs for this purpose.
	 */