irq.h

来自「这是leon3处理器的交叉编译链」· C头文件 代码 · 共 55 行

H
55
字号
#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 + =
减小字号Ctrl + -
显示快捷键?