1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/****************************************************************************
2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   This header was automatically generated from a Linux kernel header
5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   of the same name, to make information necessary for userspace to
6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   call into the kernel available to libc.  It contains only constants,
7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   structures, and macros generated from the original header, and thus,
8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   contains no copyrightable information.
9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
10c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
11c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************/
12c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef _LINUX_INTERRUPT_H
13c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define _LINUX_INTERRUPT_H
14c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
15c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/kernel.h>
16c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/linkage.h>
17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/bitops.h>
18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/preempt.h>
19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/cpumask.h>
20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/irqreturn.h>
21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/hardirq.h>
22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/sched.h>
23c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/irqflags.h>
24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <asm/atomic.h>
25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <asm/ptrace.h>
26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <asm/system.h>
27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
28c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_NONE 0x00000000
29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_RISING 0x00000001
30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_FALLING 0x00000002
31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_HIGH 0x00000004
32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_LOW 0x00000008
33c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW |   IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)
34c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TRIGGER_PROBE 0x00000010
35c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
36c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_DISABLED 0x00000020
37c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_SAMPLE_RANDOM 0x00000040
38c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_SHARED 0x00000080
39c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_PROBE_SHARED 0x00000100
40c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_TIMER 0x00000200
41c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IRQF_PERCPU 0x00000400
42c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
43c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_INTERRUPT IRQF_DISABLED
44c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM
45c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_SHIRQ IRQF_SHARED
46c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_PROBEIRQ IRQF_PROBE_SHARED
47c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_PERCPU IRQF_PERCPU
48c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
49c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW
50c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH
51c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING
52c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING
53c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK
54c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
55c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct irqaction {
56c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner irqreturn_t (*handler)(int, void *, struct pt_regs *);
57c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner unsigned long flags;
58c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner cpumask_t mask;
59c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner const char *name;
60c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void *dev_id;
61c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct irqaction *next;
62c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int irq;
63c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct proc_dir_entry *dir;
64c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
65c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
66c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define local_irq_enable_in_hardirq() local_irq_enable()
67c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
68c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq)
69c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define disable_irq_lockdep(irq) disable_irq(irq)
70c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define enable_irq_lockdep(irq) enable_irq(irq)
71c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
72c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef __ARCH_SET_SOFTIRQ_PENDING
73c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define set_softirq_pending(x) (local_softirq_pending() = (x))
74c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define or_softirq_pending(x) (local_softirq_pending() |= (x))
75c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif
76c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
77c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define save_flags(x) save_flags(&x)
78c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define save_and_cli(x) save_and_cli(&x)
79c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
80c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerenum
81c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner{
82c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner HI_SOFTIRQ=0,
83c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TIMER_SOFTIRQ,
84c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner NET_TX_SOFTIRQ,
85c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner NET_RX_SOFTIRQ,
86c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner BLOCK_SOFTIRQ,
87c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TASKLET_SOFTIRQ
88c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
89c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
90c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct softirq_action
91c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner{
92c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void (*action)(struct softirq_action *);
93c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void *data;
94c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
95c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
96c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
97c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
98c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct tasklet_struct
99c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner{
100c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct tasklet_struct *next;
101c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner unsigned long state;
102c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner atomic_t count;
103c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void (*func)(unsigned long);
104c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner unsigned long data;
105c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
106c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
107c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define DECLARE_TASKLET(name, func, data)  struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
108c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
109c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define DECLARE_TASKLET_DISABLED(name, func, data)  struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }
110c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
111c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerenum
112c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner{
113c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TASKLET_STATE_SCHED,
114c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TASKLET_STATE_RUN
115c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
116c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
117c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define tasklet_trylock(t) 1
118c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define tasklet_unlock_wait(t) do { } while (0)
119c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define tasklet_unlock(t) do { } while (0)
120c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
121c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif
122