1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _LINUX_INTERRUPT_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _LINUX_INTERRUPT_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/kernel.h> 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/linkage.h> 17951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/bitops.h> 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/preempt.h> 19951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/cpumask.h> 20951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/irqreturn.h> 21951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/hardirq.h> 22951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/sched.h> 23951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/irqflags.h> 24951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/atomic.h> 25951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/ptrace.h> 26951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/system.h> 27951a39d68df598db08dfced8b4707755864a0492Ying Wang 28951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_NONE 0x00000000 29951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_RISING 0x00000001 30951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_FALLING 0x00000002 31951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_HIGH 0x00000004 32951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_LOW 0x00000008 33951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING) 34951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TRIGGER_PROBE 0x00000010 35951a39d68df598db08dfced8b4707755864a0492Ying Wang 36951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_DISABLED 0x00000020 37951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_SAMPLE_RANDOM 0x00000040 38951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_SHARED 0x00000080 39951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_PROBE_SHARED 0x00000100 40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_TIMER 0x00000200 41951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IRQF_PERCPU 0x00000400 42951a39d68df598db08dfced8b4707755864a0492Ying Wang 43951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_INTERRUPT IRQF_DISABLED 44951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM 45951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_SHIRQ IRQF_SHARED 46951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_PROBEIRQ IRQF_PROBE_SHARED 47951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_PERCPU IRQF_PERCPU 48951a39d68df598db08dfced8b4707755864a0492Ying Wang 49951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW 50951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH 51951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING 52951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING 53951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK 54951a39d68df598db08dfced8b4707755864a0492Ying Wang 55951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct irqaction { 56951a39d68df598db08dfced8b4707755864a0492Ying Wang irqreturn_t (*handler)(int, void *, struct pt_regs *); 57951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned long flags; 58951a39d68df598db08dfced8b4707755864a0492Ying Wang cpumask_t mask; 59951a39d68df598db08dfced8b4707755864a0492Ying Wang const char *name; 60951a39d68df598db08dfced8b4707755864a0492Ying Wang void *dev_id; 61951a39d68df598db08dfced8b4707755864a0492Ying Wang struct irqaction *next; 62951a39d68df598db08dfced8b4707755864a0492Ying Wang int irq; 63951a39d68df598db08dfced8b4707755864a0492Ying Wang struct proc_dir_entry *dir; 64951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 65951a39d68df598db08dfced8b4707755864a0492Ying Wang 66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define local_irq_enable_in_hardirq() local_irq_enable() 67951a39d68df598db08dfced8b4707755864a0492Ying Wang 68951a39d68df598db08dfced8b4707755864a0492Ying Wang#define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq) 69951a39d68df598db08dfced8b4707755864a0492Ying Wang#define disable_irq_lockdep(irq) disable_irq(irq) 70951a39d68df598db08dfced8b4707755864a0492Ying Wang#define enable_irq_lockdep(irq) enable_irq(irq) 71951a39d68df598db08dfced8b4707755864a0492Ying Wang 72951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef __ARCH_SET_SOFTIRQ_PENDING 73951a39d68df598db08dfced8b4707755864a0492Ying Wang#define set_softirq_pending(x) (local_softirq_pending() = (x)) 74951a39d68df598db08dfced8b4707755864a0492Ying Wang#define or_softirq_pending(x) (local_softirq_pending() |= (x)) 75951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 76951a39d68df598db08dfced8b4707755864a0492Ying Wang 77951a39d68df598db08dfced8b4707755864a0492Ying Wang#define save_flags(x) save_flags(&x) 78951a39d68df598db08dfced8b4707755864a0492Ying Wang#define save_and_cli(x) save_and_cli(&x) 79951a39d68df598db08dfced8b4707755864a0492Ying Wang 80951a39d68df598db08dfced8b4707755864a0492Ying Wangenum 81951a39d68df598db08dfced8b4707755864a0492Ying Wang{ 82951a39d68df598db08dfced8b4707755864a0492Ying Wang HI_SOFTIRQ=0, 83951a39d68df598db08dfced8b4707755864a0492Ying Wang TIMER_SOFTIRQ, 84951a39d68df598db08dfced8b4707755864a0492Ying Wang NET_TX_SOFTIRQ, 85951a39d68df598db08dfced8b4707755864a0492Ying Wang NET_RX_SOFTIRQ, 86951a39d68df598db08dfced8b4707755864a0492Ying Wang BLOCK_SOFTIRQ, 87951a39d68df598db08dfced8b4707755864a0492Ying Wang TASKLET_SOFTIRQ 88951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 89951a39d68df598db08dfced8b4707755864a0492Ying Wang 90951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct softirq_action 91951a39d68df598db08dfced8b4707755864a0492Ying Wang{ 92951a39d68df598db08dfced8b4707755864a0492Ying Wang void (*action)(struct softirq_action *); 93951a39d68df598db08dfced8b4707755864a0492Ying Wang void *data; 94951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 95951a39d68df598db08dfced8b4707755864a0492Ying Wang 96951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0) 97951a39d68df598db08dfced8b4707755864a0492Ying Wang 98951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct tasklet_struct 99951a39d68df598db08dfced8b4707755864a0492Ying Wang{ 100951a39d68df598db08dfced8b4707755864a0492Ying Wang struct tasklet_struct *next; 101951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned long state; 102951a39d68df598db08dfced8b4707755864a0492Ying Wang atomic_t count; 103951a39d68df598db08dfced8b4707755864a0492Ying Wang void (*func)(unsigned long); 104951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned long data; 105951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 106951a39d68df598db08dfced8b4707755864a0492Ying Wang 107951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DECLARE_TASKLET(name, func, data) struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data } 108951a39d68df598db08dfced8b4707755864a0492Ying Wang 109951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DECLARE_TASKLET_DISABLED(name, func, data) struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data } 110951a39d68df598db08dfced8b4707755864a0492Ying Wang 111951a39d68df598db08dfced8b4707755864a0492Ying Wangenum 112951a39d68df598db08dfced8b4707755864a0492Ying Wang{ 113951a39d68df598db08dfced8b4707755864a0492Ying Wang TASKLET_STATE_SCHED, 114951a39d68df598db08dfced8b4707755864a0492Ying Wang TASKLET_STATE_RUN 115951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 116951a39d68df598db08dfced8b4707755864a0492Ying Wang 117951a39d68df598db08dfced8b4707755864a0492Ying Wang#define tasklet_trylock(t) 1 118951a39d68df598db08dfced8b4707755864a0492Ying Wang#define tasklet_unlock_wait(t) do { } while (0) 119951a39d68df598db08dfced8b4707755864a0492Ying Wang#define tasklet_unlock(t) do { } while (0) 120951a39d68df598db08dfced8b4707755864a0492Ying Wang 121951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 122