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
88 struct xnirqstat *stats;
92 struct xnintr_iterator {
95 xnticks_t exectime_period;
96 xnticks_t account_period;
97 xnticks_t exectime_total;
102 extern struct xnintr nktimer;
104 int xnintr_mount(
void);
106 void xnintr_core_clock_handler(
void);
108 void xnintr_host_tick(
struct xnsched *sched);
110 void xnintr_init_proc(
void);
112 void xnintr_cleanup_proc(
void);
137 int xnintr_query_init(
struct xnintr_iterator *iterator);
139 int xnintr_get_query_lock(
void);
141 void xnintr_put_query_lock(
void);
143 int xnintr_query_next(
int irq,
struct xnintr_iterator *iterator,
void xnintr_enable(struct xnintr *intr)
Enable an interrupt line.
Definition: intr.c:892
void xnintr_detach(struct xnintr *intr)
Detach an interrupt descriptor.
Definition: intr.c:866
void xnintr_disable(struct xnintr *intr)
Disable an interrupt line.
Definition: intr.c:923
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:736
Scheduling information structure.
Definition: sched.h:57
void xnintr_affinity(struct xnintr *intr, cpumask_t cpumask)
Set processor affinity of interrupt.
Definition: intr.c:963
int xnintr_attach(struct xnintr *intr, void *cookie)
Attach an interrupt descriptor.
Definition: intr.c:814
void xnintr_destroy(struct xnintr *intr)
Destroy an interrupt descriptor.
Definition: intr.c:776