Linux内核 free_irq()

函数:free_irq( )

文件包含:

        #include<linux/interrupt.h>

函数定义:

在内核源码中的位置:linux-3.19.3/kernel/irq/manage.c

函数定义格式:

void free_irq(unsigned int irq, void * dev)

函数功能描述:

此函数用于卸载IRQ链表中与输入参数相对应的irqaction描述符,并释放其所占用的内存空间。

功能实现过程:首先调用函数__free_irq( ),函数__free_irq( )根据参数irq找到数组irq_desc中对应的元素desc,如果不存在则返回NULL,如果存在则根据dev找到对应的irqaction标识符,如果不存在对应的irqaction标识符则返回NULL,如果存在则进行一定的操作,最后返回该irqaction标识符。然后函数free_irq( )调用函数kfree( )释放该标识符所占用的空间。

输入参数说明:

  • 参数irq是unsigned int型变量,代表操作中断对应的中断号,与数组irq_desc中元素的下标相对应,根据它查找对应设备的中断服务例程,其取值范围是0~NR_IRQS-1,其中NR_IRQS的值是16640。

  • 参数void *dev是对应的设备描述符,可能的取值是系统内所有已经存在的并且挂载在IRQ链表中对应的设备,当设备不真实存在时可取NULL。

返回参数说明:

此函数的返回值是void类型变量,即函数不返回任何值。

实例解析:

此函数不进行单独测试,测试程序及结果详细分析参考函数request_threaded_irq( )分析文档的实例解析及结果分析部分。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!