19 #ifndef _COBALT_KERNEL_INTR_H 20 #define _COBALT_KERNEL_INTR_H 22 #include <linux/spinlock.h> 23 #include <cobalt/kernel/stat.h> 31 #define XN_IRQ_NONE 0x1 32 #define XN_IRQ_HANDLED 0x2 33 #define XN_IRQ_STATMASK (XN_IRQ_NONE|XN_IRQ_HANDLED) 34 #define XN_IRQ_PROPAGATE 0x100 35 #define XN_IRQ_DISABLE 0x200 38 #define XN_IRQTYPE_SHARED 0x1 39 #define XN_IRQTYPE_EDGE 0x2 42 #define XN_IRQSTAT_ATTACHED 0 43 #define _XN_IRQSTAT_ATTACHED (1 << XN_IRQSTAT_ATTACHED) 44 #define XN_IRQSTAT_DISABLED 1 45 #define _XN_IRQSTAT_DISABLED (1 << XN_IRQSTAT_DISABLED) 50 typedef int (*xnisr_t)(
struct xnintr *intr);
52 typedef void (*xniack_t)(
unsigned irq,
void *arg);
56 xnstat_counter_t hits;
58 xnstat_exectime_t account;
60 xnstat_exectime_t sum;
64 #ifdef CONFIG_XENO_OPT_SHIRQ 69 unsigned int unhandled;
86 #ifdef CONFIG_XENO_OPT_STATS_IRQS 88 struct xnirqstat *stats;
92 struct xnintr_iterator {
95 xnticks_t exectime_period;
96 xnticks_t account_period;
97 xnticks_t exectime_total;
102 int xnintr_mount(
void);
104 void xnintr_core_clock_handler(
void);
106 void xnintr_host_tick(
struct xnsched *sched);
108 void xnintr_init_proc(
void);
110 void xnintr_cleanup_proc(
void);
135 #ifdef CONFIG_XENO_OPT_STATS_IRQS 136 extern struct xnintr nktimer;
138 int xnintr_query_init(
struct xnintr_iterator *iterator);
140 int xnintr_get_query_lock(
void);
142 void xnintr_put_query_lock(
void);
144 int xnintr_query_next(
int irq,
struct xnintr_iterator *iterator,
149 static inline int xnintr_query_init(
struct xnintr_iterator *iterator)
154 static inline int xnintr_get_query_lock(
void)
159 static inline void xnintr_put_query_lock(
void) {}
void xnintr_enable(struct xnintr *intr)
Enable an interrupt line.
Definition: intr.c:929
void xnintr_detach(struct xnintr *intr)
Detach an interrupt descriptor.
Definition: intr.c:902
void xnintr_disable(struct xnintr *intr)
Disable an interrupt line.
Definition: intr.c:961
int xnintr_init(struct xnintr *intr, const char *name, unsigned int irq, xnisr_t isr, xniack_t iack, int flags)
Initialize an interrupt descriptor.
Definition: intr.c:769
Scheduling information structure.
Definition: sched.h:58
void xnintr_affinity(struct xnintr *intr, cpumask_t cpumask)
Set processor affinity of interrupt.
Definition: intr.c:1002
int xnintr_attach(struct xnintr *intr, void *cookie)
Attach an interrupt descriptor.
Definition: intr.c:849
void xnintr_destroy(struct xnintr *intr)
Destroy an interrupt descriptor.
Definition: intr.c:810