PatchworkOS  da8a090
A non-POSIX operating system.
Loading...
Searching...
No Matches
ipi.h File Reference
#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>
Include dependency graph for ipi.h:
This graph shows which files directly or indirectly include this file:

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.
 

Typedef Documentation

◆ cpu_t

typedef struct cpu cpu_t

Definition at line 12 of file ipi.h.