35typedef struct ipi_chip
83#define IPI_QUEUE_SIZE 16
91typedef struct ipi_cpu_ctx
#define IPI_QUEUE_SIZE
IPI queue size.
void ipi_cpu_ctx_init(ipi_cpu_ctx_t *ctx)
Initialize per-CPU IPI context.
void ipi_handle_pending(interrupt_frame_t *frame, cpu_t *self)
Handle pending IPIs on the current CPU.
void ipi_invoke(void)
Invoke a IPI interrupt on the current CPU.
void ipi_wake_up(cpu_t *cpu, ipi_flags_t flags)
Wake up one or more CPUs.
void(* ipi_func_t)(ipi_func_data_t *data)
IPI function type.
uint64_t ipi_chip_register(ipi_chip_t *chip)
Register an IPI chip.
uint64_t ipi_chip_amount(void)
Get the number of registered IPI chips.
uint64_t ipi_send(cpu_t *cpu, ipi_flags_t flags, ipi_func_t func, void *private)
Send an IPI to one or more CPUs.
void ipi_chip_unregister(ipi_chip_t *chip)
Unregister the IPI chip.
@ IPI_OTHERS
Send the IPI to all CPUs except the specified CPU.
@ IPI_SINGLE
Send the IPI to the specified CPU.
@ IPI_BROADCAST
Send the IPI to all CPUs, specified CPU ignored.
uint8_t irq_virt_t
Virtual IRQ numbers.
static const path_flag_t flags[]
Inter-Processor Interrupt (IPI) chip structure.
IPI function data structure.
A simple ticket lock implementation.