16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/****************************************************************************
26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   This header was automatically generated from a Linux kernel header
56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   of the same name, to make information necessary for userspace to
66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   call into the kernel available to libc.  It contains only constants,
76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   structures, and macros generated from the original header, and thus,
86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   contains no copyrightable information.
96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************/
126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _LINUX_INTERRUPT_H
136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _LINUX_INTERRUPT_H
146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/kernel.h>
166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/linkage.h>
176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/bitops.h>
186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/preempt.h>
196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/cpumask.h>
206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/irqreturn.h>
216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/hardirq.h>
226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/sched.h>
236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/irqflags.h>
246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <asm/atomic.h>
256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <asm/ptrace.h>
266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <asm/system.h>
276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_NONE 0x00000000
296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_RISING 0x00000001
306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_FALLING 0x00000002
316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_HIGH 0x00000004
326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_LOW 0x00000008
336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW |   IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)
346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TRIGGER_PROBE 0x00000010
356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_DISABLED 0x00000020
376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_SAMPLE_RANDOM 0x00000040
386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_SHARED 0x00000080
396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_PROBE_SHARED 0x00000100
406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_TIMER 0x00000200
416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define IRQF_PERCPU 0x00000400
426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_INTERRUPT IRQF_DISABLED
446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM
456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_SHIRQ IRQF_SHARED
466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_PROBEIRQ IRQF_PROBE_SHARED
476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_PERCPU IRQF_PERCPU
486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW
506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH
516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING
526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING
536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK
546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct irqaction {
566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh irqreturn_t (*handler)(int, void *, struct pt_regs *);
576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned long flags;
586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh cpumask_t mask;
596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *name;
606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *dev_id;
616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct irqaction *next;
626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh int irq;
636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct proc_dir_entry *dir;
646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
656ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
666ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define local_irq_enable_in_hardirq() local_irq_enable()
676ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
686ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq)
696ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define disable_irq_lockdep(irq) disable_irq(irq)
706ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define enable_irq_lockdep(irq) enable_irq(irq)
716ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
726ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef __ARCH_SET_SOFTIRQ_PENDING
736ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define set_softirq_pending(x) (local_softirq_pending() = (x))
746ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define or_softirq_pending(x) (local_softirq_pending() |= (x))
756ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif
766ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
776ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define save_flags(x) save_flags(&x)
786ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define save_and_cli(x) save_and_cli(&x)
796ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
806ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehenum
816ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh{
826ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh HI_SOFTIRQ=0,
836ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh TIMER_SOFTIRQ,
846ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh NET_TX_SOFTIRQ,
856ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh NET_RX_SOFTIRQ,
866ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh BLOCK_SOFTIRQ,
876ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh TASKLET_SOFTIRQ
886ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
896ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
906ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct softirq_action
916ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh{
926ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void (*action)(struct softirq_action *);
936ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *data;
946ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
956ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
966ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
976ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
986ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct tasklet_struct
996ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh{
1006ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct tasklet_struct *next;
1016ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned long state;
1026ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh atomic_t count;
1036ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void (*func)(unsigned long);
1046ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned long data;
1056ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
1066ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1076ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define DECLARE_TASKLET(name, func, data)  struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
1086ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1096ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define DECLARE_TASKLET_DISABLED(name, func, data)  struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }
1106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehenum
1126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh{
1136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh TASKLET_STATE_SCHED,
1146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh TASKLET_STATE_RUN
1156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
1166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define tasklet_trylock(t) 1
1186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define tasklet_unlock_wait(t) do { } while (0)
1196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define tasklet_unlock(t) do { } while (0)
1206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif
122