Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/intr.h
Show First 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
}; | }; | ||||
#ifdef notyet | #ifdef notyet | ||||
#define INTR_SOLO INTR_MD1 | #define INTR_SOLO INTR_MD1 | ||||
typedef int intr_irq_filter_t(void *arg, struct trapframe *tf); | typedef int intr_irq_filter_t(void *arg, struct trapframe *tf); | ||||
#else | #else | ||||
typedef int intr_irq_filter_t(void *arg); | typedef int intr_irq_filter_t(void *arg); | ||||
#endif | #endif | ||||
typedef int intr_child_irq_filter_t(void *arg, uintptr_t irq); | |||||
#define INTR_ISRC_NAMELEN (MAXCOMLEN + 1) | #define INTR_ISRC_NAMELEN (MAXCOMLEN + 1) | ||||
#define INTR_ISRCF_IPI 0x01 /* IPI interrupt */ | #define INTR_ISRCF_IPI 0x01 /* IPI interrupt */ | ||||
#define INTR_ISRCF_PPI 0x02 /* PPI interrupt */ | #define INTR_ISRCF_PPI 0x02 /* PPI interrupt */ | ||||
#define INTR_ISRCF_BOUND 0x04 /* bound to a CPU */ | #define INTR_ISRCF_BOUND 0x04 /* bound to a CPU */ | ||||
struct intr_pic; | |||||
/* Interrupt source definition. */ | /* Interrupt source definition. */ | ||||
struct intr_irqsrc { | struct intr_irqsrc { | ||||
device_t isrc_dev; /* where isrc is mapped */ | device_t isrc_dev; /* where isrc is mapped */ | ||||
u_int isrc_irq; /* unique identificator */ | u_int isrc_irq; /* unique identificator */ | ||||
u_int isrc_flags; | u_int isrc_flags; | ||||
char isrc_name[INTR_ISRC_NAMELEN]; | char isrc_name[INTR_ISRC_NAMELEN]; | ||||
cpuset_t isrc_cpu; /* on which CPUs is enabled */ | cpuset_t isrc_cpu; /* on which CPUs is enabled */ | ||||
u_int isrc_index; | u_int isrc_index; | ||||
Show All 16 Lines | |||||
#endif | #endif | ||||
int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *); | int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *); | ||||
u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask); | u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask); | ||||
struct intr_pic *intr_pic_register(device_t, intptr_t); | struct intr_pic *intr_pic_register(device_t, intptr_t); | ||||
int intr_pic_deregister(device_t, intptr_t); | int intr_pic_deregister(device_t, intptr_t); | ||||
int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *, u_int); | int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *, u_int); | ||||
struct intr_pic *intr_pic_add_handler(device_t, struct intr_pic *, | |||||
intr_child_irq_filter_t *, void *, uintptr_t, uintptr_t); | |||||
extern device_t intr_irq_root_dev; | extern device_t intr_irq_root_dev; | ||||
/* Intr interface for BUS. */ | /* Intr interface for BUS. */ | ||||
int intr_map_irq(device_t, intptr_t, struct intr_map_data *, u_int *); | int intr_map_irq(device_t, intptr_t, struct intr_map_data *, u_int *); | ||||
int intr_alloc_irq(device_t, struct resource *); | int intr_alloc_irq(device_t, struct resource *); | ||||
int intr_release_irq(device_t, struct resource *); | int intr_release_irq(device_t, struct resource *); | ||||
int intr_setup_irq(device_t, struct resource *, driver_filter_t, driver_intr_t, | int intr_setup_irq(device_t, struct resource *, driver_filter_t, driver_intr_t, | ||||
void *, int, void **); | void *, int, void **); | ||||
int intr_teardown_irq(device_t, struct resource *, void *); | int intr_teardown_irq(device_t, struct resource *, void *); | ||||
int intr_describe_irq(device_t, struct resource *, void *, const char *); | int intr_describe_irq(device_t, struct resource *, void *, const char *); | ||||
int intr_child_irq_handler(struct intr_pic *, uintptr_t); | |||||
/* MSI/MSI-X handling */ | /* MSI/MSI-X handling */ | ||||
int intr_msi_register(device_t, intptr_t); | int intr_msi_register(device_t, intptr_t); | ||||
int intr_alloc_msi(device_t, device_t, intptr_t, int, int, int *); | int intr_alloc_msi(device_t, device_t, intptr_t, int, int, int *); | ||||
int intr_release_msi(device_t, device_t, intptr_t, int, int *); | int intr_release_msi(device_t, device_t, intptr_t, int, int *); | ||||
int intr_map_msi(device_t, device_t, intptr_t, int, uint64_t *, uint32_t *); | int intr_map_msi(device_t, device_t, intptr_t, int, uint64_t *, uint32_t *); | ||||
int intr_alloc_msix(device_t, device_t, intptr_t, int *); | int intr_alloc_msix(device_t, device_t, intptr_t, int *); | ||||
int intr_release_msix(device_t, device_t, intptr_t, int); | int intr_release_msix(device_t, device_t, intptr_t, int); | ||||
Show All 30 Lines |