linux内核看门狗关闭方法,linux内核中断之看门狗

一:内核中断

linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误;在Device Drivers /Watchdog Timer Support /S3C2410 Watchdo

linux内核看门狗关闭方法,linux内核中断之看门狗_第1张图片

在内核中,我们处理一个中断,必须先注册一个中断号,注册中断的函数是:

request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,

const char *name, void *dev)

{

return request_threaded_irq(irq, handler, NULL, flags, name, dev);

}

irq是要申请的硬件中断号。

handler 是向系统注册的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev参数将被传递给它。

flags 是中断处理的属性,若 设置了IRQF_DISABLED ,则表示中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,慢速处理程 序不屏蔽;若设置了IRQF_SHARED ,则表示多个设备共享中断,若设置了IRQF_SAMPLE_RANDOM,表示对系统熵有贡献,对系统获取随机数有好处。

name设置中断名称,通常是设备驱动程序的名称  在cat /proc/interrupts中可以看到此名称。

dev在中断共享时会用到,一般设置为这个设备的设备结构体或者为NULL

request_irq()返回0表示成功,返回-INVAL表示中断号无效或处理函数指针为NULL,返回-EBUSY表示中断已经被占用且不能共享。

在开发板上通过cat /proc/interrupts查看中断有没有注册成功:

下面代码实现是按键(key1)控制dog,dog控制灯,按键第一次按下灯闪,再次按下灯灭

#include

#include

#include

#include

#

你可能感兴趣的:(linux内核看门狗关闭方法)