📄 irq.h
字号:
#ifndef _LEON_CATCHIRQ_HANDLER_H_#define _LEON_CATCHIRQ_HANDLER_H_#include <asm-leon/leon.h>#include <sys/fsu_pthread_queue.h>#include <asm-leon/leoncompat.h>#include <asm-leon/leonstack.h>struct pt_regs;typedef int (*irqhandler)(int, void *, struct leonbare_pt_regs *);struct irqaction { irqhandler handler; unsigned long flags; void *dev_id; struct irqaction *next;};#define INIT_IRQACTION { 0,0,0,0 }extern void chained_catch_interrupt (int irq, struct irqaction *a );extern int catch_interrupt (int func, int irq);typedef int (*schedulehandler)(struct leonbare_pt_regs *);extern schedulehandler schedule_callback;typedef int (*tickerhandler)(struct leonbare_pt_regs *);extern tickerhandler ticker_callback;extern void leonbare_enable_traps(unsigned long old_flags); extern unsigned long leonbare_disable_traps();extern __inline__ void leonbare_enable_irq(int irq) { unsigned int old, irqmask = 1 << irq; old = leonbare_disable_traps(); //--------------------- switch (LEONCOMPAT_VERSION) { case 2: LEON_REG.Interrupt_Mask = LEON_REG.Interrupt_Mask | irqmask; break; case 3: default: LEON3_IrqCtrl_Regs ->mask[0] = LEON3_IrqCtrl_Regs ->mask[0] | irqmask; break; } //--------------------- leonbare_enable_traps(old);}typedef int (*pendinghandler)(void *);struct pendingaction { TAILQ_ENTRY(pendingaction) next; pendinghandler handler; void *arg;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -