Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/intr.h
Show First 20 Lines • Show All 99 Lines • ▼ Show 20 Lines | |||||
/* 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_long * isrc_count; | |||||
u_int isrc_handlers; | u_int isrc_handlers; | ||||
struct intr_event * isrc_event; | struct intr_event * isrc_event; | ||||
#ifdef INTR_SOLO | #ifdef INTR_SOLO | ||||
intr_irq_filter_t * isrc_filter; | intr_irq_filter_t * isrc_filter; | ||||
void * isrc_arg; | void * isrc_arg; | ||||
#endif | #endif | ||||
/* Used by MSI interrupts to store the iommu details */ | /* Used by MSI interrupts to store the iommu details */ | ||||
void * isrc_iommu; | void * isrc_iommu; | ||||
▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | |||||
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); | ||||
#ifdef SMP | #ifdef SMP | ||||
int intr_bind_irq(device_t, struct resource *, int); | int intr_bind_irq(device_t, struct resource *, int); | ||||
void intr_pic_init_secondary(void); | void intr_pic_init_secondary(void); | ||||
/* Virtualization for interrupt source IPI counter increment. */ | |||||
static inline void | |||||
intr_ipi_increment_count(u_long *counter, u_int cpu) | |||||
{ | |||||
KASSERT(cpu < MAXCPU, ("%s: too big cpu %u", __func__, cpu)); | |||||
counter[cpu]++; | |||||
} | |||||
/* Virtualization for interrupt source IPI counters setup. */ | |||||
u_long * intr_ipi_setup_counters(const char *name); | |||||
ehem_freebsd_m5p.com: Here we see overlap with D35898, though the goal is distinct. | |||||
#endif | #endif | ||||
extern u_int intr_nirq; /* number of IRQs on intrng platforms */ | extern u_int intr_nirq; /* number of IRQs on intrng platforms */ | ||||
#endif /* _SYS_INTR_H */ | #endif /* _SYS_INTR_H */ |
Here we see overlap with D35898, though the goal is distinct.