devm_request_any_context_irq功能参数返回值
时间: 2023-09-17 07:13:22 浏览: 541
devm_request_any_context_irq函数用于请求一个可用的中断,并注册中断处理函数。函数的参数和返回值如下:
参数:
- dev: 设备结构体指针
- irq: 中断号,如果为0,则由内核分配一个可用的中断号
- flags: 中断处理标志,可以是IRQF_TRIGGER_*等宏定义
- handler: 中断处理函数
- devname: 设备名称
- context: 上下文指针,会传递给中断处理函数
返回值:
- 成功返回中断号
- 失败返回负数错误码
注意:devm_request_any_context_irq函数是devm_alloc_irq和request_any_context_irq函数的结合体,它会自动进行内存分配和与设备的解除绑定。因此,使用该函数申请的中断资源,不需要手动释放。
相关问题
devm_request_irq 返回值
devm_request_irq 是 Linux 内核中的一个函数,用于请求分配一个中断,并将中断处理函数与之关联。它的返回值表示请求中断是否成功。
devm_request_irq 的返回值有以下几种可能:
1. 成功:返回值为 0,表示成功地请求分配了中断,并成功地将中断处理函数与之关联。
2. 失败:返回一个负数,表示请求分配中断失败。常见的失败原因包括中断号无效、中断处理函数无效、中断请求失败等。
3. EPROBE_DEFER:返回值为 -EPROBE_DEFER,表示请求被推迟。这通常发生在设备驱动程序初始化过程中,当设备的资源还没有完全准备好时。
需要注意的是,devm_request_irq 是 devm 版本的函数,它会在设备被卸载时自动释放所分配的中断资源,因此不需要手动调用 irq_free 函数来释放中断。
devm_request_threaded_irq参数
devm_request_threaded_irq是Linux设备驱动中的一个函数,用于请求中断处理程序(IRQ)并将其与线程绑定。它的参数包括:
1. dev:设备结构体指针,表示请求中断的设备。
2. irq:中断号。
3. irq_handler:中断处理程序的函数指针。
4. thread_fn:线程函数指针,用于处理中断请求。
5. flags:中断标志。
6. name:中断名称。
7. dev_id:中断处理程序的私有数据。
该函数的作用是在设备驱动中注册一个中断处理程序,并且将其与一个线程绑定,以便在中断发生时可以异步地处理中断请求。它通常用于需要长时间处理中断请求的设备,比如网络设备或者嵌入式系统中的实时控制设备。
阅读全文