void dosm_packet_process(dosm_packet_t packet) { /* XXX just a demo */ packet->remote_flags |= DOSM_RF_FINISHED; __default_send_IPI_dest_field(packet->source_lapic, ipi_vector, APIC_DEST_PHYSICAL); }
static void _flat_send_IPI_mask(unsigned long mask, int vector) { unsigned long flags; local_irq_save(flags); __default_send_IPI_dest_field(mask, vector, apic->dest_logical); local_irq_restore(flags); }
void default_send_IPI_mask_sequence_phys(const struct cpumask *mask, int vector) { unsigned long query_cpu; unsigned long flags; /* * Hack. The clustered APIC addressing mode doesn't allow us to send * to an arbitrary mask, so I do a unicast to each CPU instead. * - mbligh */ local_irq_save(flags); for_each_cpu(query_cpu, mask) { __default_send_IPI_dest_field(per_cpu(x86_cpu_to_apicid, query_cpu), vector, APIC_DEST_PHYSICAL); }