Linux内核API free_irq

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

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

free_irq文件包含

#include<linux/interrupt.h>

free_irq函数定义

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

函数定义格式:

void free_irq(unsigned int irq, void * dev)

free_irq输入参数说明

  • 参数 irq 是unsigned int型变量,代表操作中断对应的中断号,与数组irq_desc中元素的下标相对应,根据它查找对应设备的中断服务例程,其取值范围是0~NR_IRQS-1,其中NR_IRQS的值是16640。
  • 参数void *dev是对应的设备描述符,可能的取值是系统内所有已经存在的并且挂载在IRQ链表中对应的设备,当设备不真实存在时可取NULL。

free_irq返回参数说明

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

free_irq实例解析

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程