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