1704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/**************************************************************************** 2704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner **************************************************************************** 3704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** 4704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** This header was automatically generated from a Linux kernel header 5704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** of the same name, to make information necessary for userspace to 6704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** call into the kernel available to libc. It contains only constants, 7704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** structures, and macros generated from the original header, and thus, 8704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** contains no copyrightable information. 9704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** 10704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner **************************************************************************** 11704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner ****************************************************************************/ 12704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifndef _LINUX_INTERRUPT_H 13704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define _LINUX_INTERRUPT_H 14704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 15704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/kernel.h> 16704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/linkage.h> 17704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/bitops.h> 18704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/preempt.h> 19704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/cpumask.h> 20704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/irqreturn.h> 21704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/hardirq.h> 22704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/sched.h> 23704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <linux/irqflags.h> 24704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <asm/atomic.h> 25704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <asm/ptrace.h> 26704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <asm/system.h> 27704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 28704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_NONE 0x00000000 29704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_RISING 0x00000001 30704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_FALLING 0x00000002 31704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_HIGH 0x00000004 32704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_LOW 0x00000008 33704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING) 34704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TRIGGER_PROBE 0x00000010 35704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 36704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_DISABLED 0x00000020 37704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_SAMPLE_RANDOM 0x00000040 38704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_SHARED 0x00000080 39704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_PROBE_SHARED 0x00000100 40704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_TIMER 0x00000200 41704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IRQF_PERCPU 0x00000400 42704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 43704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_INTERRUPT IRQF_DISABLED 44704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM 45704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_SHIRQ IRQF_SHARED 46704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_PROBEIRQ IRQF_PROBE_SHARED 47704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_PERCPU IRQF_PERCPU 48704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 49704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW 50704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH 51704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING 52704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING 53704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK 54704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 55704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct irqaction { 56704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner irqreturn_t (*handler)(int, void *, struct pt_regs *); 57704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner unsigned long flags; 58704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner cpumask_t mask; 59704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char *name; 60704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void *dev_id; 61704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner struct irqaction *next; 62704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner int irq; 63704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner struct proc_dir_entry *dir; 64704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 65704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 66704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define local_irq_enable_in_hardirq() local_irq_enable() 67704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 68704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq) 69704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define disable_irq_lockdep(irq) disable_irq(irq) 70704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define enable_irq_lockdep(irq) enable_irq(irq) 71704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 72704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifndef __ARCH_SET_SOFTIRQ_PENDING 73704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define set_softirq_pending(x) (local_softirq_pending() = (x)) 74704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define or_softirq_pending(x) (local_softirq_pending() |= (x)) 75704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 76704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 77704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define save_flags(x) save_flags(&x) 78704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define save_and_cli(x) save_and_cli(&x) 79704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 80704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerenum 81704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner{ 82704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner HI_SOFTIRQ=0, 83704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner TIMER_SOFTIRQ, 84704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner NET_TX_SOFTIRQ, 85704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner NET_RX_SOFTIRQ, 86704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner BLOCK_SOFTIRQ, 87704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner TASKLET_SOFTIRQ 88704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 89704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 90704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct softirq_action 91704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner{ 92704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*action)(struct softirq_action *); 93704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void *data; 94704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 95704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 96704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0) 97704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 98704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct tasklet_struct 99704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner{ 100704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner struct tasklet_struct *next; 101704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner unsigned long state; 102704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner atomic_t count; 103704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*func)(unsigned long); 104704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner unsigned long data; 105704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 106704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 107704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define DECLARE_TASKLET(name, func, data) struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data } 108704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 109704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define DECLARE_TASKLET_DISABLED(name, func, data) struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data } 110704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 111704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerenum 112704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner{ 113704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner TASKLET_STATE_SCHED, 114704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner TASKLET_STATE_RUN 115704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 116704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 117704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define tasklet_trylock(t) 1 118704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define tasklet_unlock_wait(t) do { } while (0) 119704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define tasklet_unlock(t) do { } while (0) 120704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 121704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 122