19#ifndef _COBALT_KERNEL_INTR_H
20#define _COBALT_KERNEL_INTR_H
22#include <linux/spinlock.h>
23#include <cobalt/kernel/stat.h>
24#include <pipeline/irq.h>
32#define XN_IRQ_NONE 0x1
33#define XN_IRQ_HANDLED 0x2
34#define XN_IRQ_STATMASK (XN_IRQ_NONE|XN_IRQ_HANDLED)
35#define XN_IRQ_PROPAGATE 0x100
36#define XN_IRQ_DISABLE 0x200
39#define XN_IRQTYPE_SHARED 0x1
40#define XN_IRQTYPE_EDGE 0x2
43#define XN_IRQSTAT_ATTACHED 0
44#define _XN_IRQSTAT_ATTACHED (1 << XN_IRQSTAT_ATTACHED)
45#define XN_IRQSTAT_DISABLED 1
46#define _XN_IRQSTAT_DISABLED (1 << XN_IRQSTAT_DISABLED)
51typedef int (*xnisr_t)(
struct xnintr *intr);
53typedef void (*xniack_t)(
unsigned irq,
void *arg);
57 xnstat_counter_t hits;
59 xnstat_exectime_t account;
61 xnstat_exectime_t sum;
65#ifdef CONFIG_XENO_OPT_SHIRQ
70 unsigned int unhandled;
89struct xnintr_iterator {
92 xnticks_t exectime_period;
93 xnticks_t account_period;
94 xnticks_t exectime_total;
99void xnintr_core_clock_handler(
void);
101void xnintr_host_tick(
struct xnsched *sched);
105int xnintr_init(
struct xnintr *intr,
112void xnintr_destroy(
struct xnintr *intr);
114int xnintr_attach(
struct xnintr *intr,
115 void *cookie,
const cpumask_t *cpumask);
117void xnintr_detach(
struct xnintr *intr);
119void xnintr_enable(
struct xnintr *intr);
121void xnintr_disable(
struct xnintr *intr);
123int xnintr_affinity(
struct xnintr *intr,
const cpumask_t *cpumask);
Scheduling information structure.
Definition sched.h:64