|
PatchworkOS
da8a090
A non-POSIX operating system.
|
#include <kernel/cpu/interrupt.h>#include <kernel/cpu/irq.h>#include <kernel/sync/lock.h>#include <kernel/sync/rwlock.h>#include <stdbool.h>#include <stdint.h>#include <sys/list.h>Go to the source code of this file.
Data Structures | |
| struct | ipi_chip_t |
| Inter-Processor Interrupt (IPI) chip structure. More... | |
| struct | ipi_func_data_t |
| IPI function data structure. More... | |
| struct | ipi_t |
| IPI structure. More... | |
| struct | ipi_cpu_ctx_t |
| Per-CPU IPI context. More... | |
Macros | |
| #define | IPI_QUEUE_SIZE 16 |
| IPI queue size. | |
Typedefs | |
| typedef struct cpu | cpu_t |
| typedef void(* | ipi_func_t) (ipi_func_data_t *data) |
| IPI function type. | |
Enumerations | |
| enum | ipi_flags_t { IPI_SINGLE = 0 << 0 , IPI_BROADCAST = 1 << 0 , IPI_OTHERS = 2 << 0 } |
| IPI flags. More... | |
Functions | |
| 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. | |
| uint64_t | ipi_chip_register (ipi_chip_t *chip) |
| Register an IPI chip. | |
| void | ipi_chip_unregister (ipi_chip_t *chip) |
| Unregister the 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_wake_up (cpu_t *cpu, ipi_flags_t flags) |
| Wake up one or more CPUs. | |
| void | ipi_invoke (void) |
| Invoke a IPI interrupt on the current CPU. | |