LDD3学习笔记(13):中断处理

简介:  #include int request_irq(unsigned int irq, irqreturn_t (*handler)( ), unsigned long flags, const char *dev_name, void *dev...
  #include <linux/interrupt.h>

int request_irq(unsigned int irq, irqreturn_t (*handler)( ), unsigned long flags, const char *dev_name, void 

*dev_id);

void free_irq(unsigned int irq, void *dev_id);

调用这个注册和注销一个中断处理.

#include <linux/irq.h.h>

int can_request_irq(unsigned int irq, unsigned long flags);

这个函数在 i386 和 x86_64 体系上有返回一个非零值如果一个分配给定中断线的企图成功.

#include <asm/signal.h>

SA_INTERRUPT

SA_SHIRQ

SA_SAMPLE_RANDOM 

给 request_irq 的标志. SA_INTERRUPT 请求安装一个快速处理者相反是一个慢速的). 

SA_SHIRQ 安装一个共享的处理者并且第 个 flag 声称中断时戳可用来产生系统熵.

/proc/interrupts

/proc/stat 

报告硬件中断和安装的处理者的文件系统节点.

unsigned long probe_irq_on(void);

int probe_irq_off(unsigned long);

驱动使用的函数当它不得不探测来决定哪个中断线被设备在使用. probe_irq_on 的结果必

须传回给 probe_irq_off 在中断产生之后. probe_irq_off 的返回值是被探测的中断号.

IRQ_NONE

IRQ_HANDLED

IRQ_RETVAL(int x)

从一个中断处理返回的可能值指示是否一个来自设备的真正的中断出现了.

void disable_irq(int irq);

void disable_irq_nosync(int irq);

void enable_irq(int irq);

驱动可以使能和禁止中断报告如果硬件试图在中断禁止时产生一个中断这个中断永远丢

失了一个使用一个共享处理者的驱动必须不使用这个函数.

void local_irq_save(unsigned long flags);

void local_irq_restore(unsigned long flags);

使用 local_irq_save 来禁止本地处理器的中断并且记住它们之前的状态. flags 可以被传递给 

local_irq_restore 来恢复之前的中断状态.

void local_irq_disable(void);

void local_irq_enable(void);

在当前处理器熵无条件禁止和使能中断的函数.

目录
相关文章
|
2月前
|
存储 Linux API
xenomai内核解析--双核系统调用(一)
本文介绍了Xenomai内核系统调用的实现,探讨了在Linux内核与Xenomai实时内核共存时,系统调用如何区分和交互。系统调用是用户空间与内核空间通信的关键,它提供了硬件抽象、系统稳定性、安全性和可移植性。在32位系统中,通过`int 0x80`指令触发,而在64位系统中,使用`syscall`指令。Xenomai通过I-pipe拦截系统调用,区分实时与非实时任务,并通过`cobalt_syscalls`表执行相应操作。文章还详细解析了系统调用表的生成和权限控制机制。
94 1
xenomai内核解析--双核系统调用(一)
|
2月前
|
API 调度
xenomai内核解析--双核系统调用(三)--如何为xenomai添加一个系统调用
本文介绍了如何在Xenomai中添加自定义系统调用`get_timer_hits()`,该调用用于获取CPU定时器中断次数。首先,在`syscall.h`中定义127号系统调用,并在`clock.h`和`clock.c`中声明和实现该函数。接着,更新libcobalt库以包含新接口。最后,提供了一个示例应用,演示如何在实时任务中使用此系统调用。编译内核和库后,运行示例程序显示定时器中断次数,体现了Xenomai的tickless特性。
44 1
|
2月前
|
Linux 测试技术 API
xenomai内核解析之xenomai初探
本文是关于Xenomai实时操作系统的初探,Xenomai是一个实时性增强的Linux系统,它通过实时内核和用户空间库提供硬实时性能。Xenomai 3主要由实时内核Cobalt、实时驱动模型RTDM、用户空间库libcobalt等组成,支持两种构建实时系统的方式:Cobalt和Mercury。Cobalt在内核空间与标准Linux内核并存,通过I-Pipe处理中断,确保实时任务的执行。Mercury则是通过修改Linux内核实现。
142 0
xenomai内核解析之xenomai初探
|
存储 数据管理 Linux
Linux内核22-软中断和tasklet
Linux内核22-软中断和tasklet
|
Linux C++
linux下uboot kernel操作cpu寄存器
大多数的内核里面都有会对GPIO的操作,而且内核里面对GPIO进行配置也很方便,要什么功能就配置成什么就可以了。 还有一些寄存器是内核没有配置到的,但是我们要操作怎么办,内核里面也定义了相关的接口函数。
1557 0

热门文章

最新文章