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