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