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