gpt4 book ai didi

kernel - 在驱动程序中使用request_threaded_irq()为什么不使用request_irq()?两者之间有什么区别?

转载 作者:行者123 更新时间:2023-12-05 00:02:39 26 4
gpt4 key购买 nike

我发布了这是讨论request_threaded_irq的主题,但没有得到任何答复。因此,我正在重新发布它。

我正在开发用于电容式触摸屏的触摸屏驱动程序。它使用request_threaded_irq()调用而不是request_irq()。我无法理解两者之间的基本区别。它说 :-

名称

request_threaded_irq —分配中断行

简介

int request_threaded_irq(无符号的int irq,irq_handler_t处理程序,irq_handler_t thread_fn,无符号的长irqflags,const char * devname,void * dev_id);

参数

  • irq-分配
  • 的中断线
  • handler-发生IRQ时要调用的函数。线程中断的主处理程序如果NULL和thread_fn!= NULL,则安装默认的主处理程序
  • thread_fn-从irq处理程序线程调用的函数如果为NULL,则不创建任何irq线程
  • irqflags-中断类型标志
  • devname-声明设备的ASCII名称
  • dev_id-将Cookie传递回处理程序函数

  • Handler和Thread_fn参数令人困惑。此外,驱动程序中未定义任何工作功能。

    Here is the driver which I am refering to.

    有人可以帮助我理解这一点吗?

    最佳答案

    添加了request_threaded_irq()函数,以允许开发人员将中断处理代码分为两部分。一部分将在中断被阻止的情况下执行,另一部分可以由内核线程在不中断被阻止的情况下完成。有关原因的详细信息,您可以阅读以下内容:

    http://lwn.net/Articles/302043/

    对于您而言,链接到的驱动程序可以执行以下操作:

    err = request_threaded_irq(client->irq, NULL, cy8ctmg110_irq_thread,
    IRQF_TRIGGER_RISING, "touch_reset_key", ts);

    在检测到中断时,将为第二个arg(处理程序)传递NULL,从而调用thread_fn的参数或函数cy8ctmg110_irq_thread()。

    对于您来说,选择哪个请求irq函数将取决于您的驱动程序在中断上下文中需要执行的操作。

    关于kernel - 在驱动程序中使用request_threaded_irq()为什么不使用request_irq()?两者之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685294/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com