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_affinity(struct xnintr *intr, cpumask_t cpumask)
Set processor affinity of interrupt.
Definition: intr.c:995
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:768
void xnintr_destroy(struct xnintr *intr)
Destroy an interrupt descriptor.
Definition: intr.c:808
int xnintr_attach(struct xnintr *intr, void *cookie)
Attach an interrupt descriptor.
Definition: intr.c:846
void xnintr_detach(struct xnintr *intr)
Detach an interrupt descriptor.
Definition: intr.c:898
void xnintr_enable(struct xnintr *intr)
Enable an interrupt line.
Definition: intr.c:924
void xnintr_disable(struct xnintr *intr)
Disable an interrupt line.
Definition: intr.c:955
Scheduling information structure.
Definition: sched.h:58