首页 > 其他分享 >13 中断线程

13 中断线程

时间:2023-03-19 16:55:38浏览次数:48  
标签:13 中断 irq handler 线程 内核 IRQ

代码

1 概述

避免workqueue中存在多个work会导致后面的work执行存在受前面工作的影响

在中断下半部专门申请一个内核线程来处理这个事件,这个内核线程专门用于此中断

1.1 内部机制

设备发生中断时内核会调用handler处理中断事件(如果中断函数存在)。中断处理完成后,如果有需要的中断线程需要处理则调用中断函数返回

IRQ_WAKE_THREAD,用于唤醒中断线程;如果没有中断线程需要处理则返回IRQ_HANDLED

2 常用API

2.1 request_threaded_irq

int request_threaded_irq(unsigned int irq, irq_handler_t handler,
			 irq_handler_t thread_fn, unsigned long irqflags,
			 const char *devname, void *dev_id)

handler我们可以提供也可以不提供

  • 提供

    中断函数的返回值必须是IRQ_WAKE_THREAD,在thread_fn被正确处理,在返回IRQ_HANDLED

  • 不提供

    内核默认返回IRQ_WAKE_THREAD

标签:13,中断,irq,handler,线程,内核,IRQ
From: https://www.cnblogs.com/burnk/p/17233569.html

相关文章

  • 网络系统管理Linux环境——13.AppSrv之CA
    题目要求服务器AppSrv上的工作任务6. CA(证书颁发机构)CA根证书路径/csk-rootca/csk-ca.pem;签发数字证书,颁发者信息:(仅包含如下信息)   C=CN   ST=China   ......
  • 温习:进程和线程的区别
    进程和线程的区别:1、定义不一样,进程是执行中的一段程序,线程是进程里执行中的任务,一个进程里可以有多个线程。2、一个线程只能属于一个进程。3、线程无地址空间,它包括在......
  • CAS 是一种什么样的同步机制?多线程下为什么不使用 int 而使用 AtomicInteger?
    CompareAndSwap,比较交换。可以看到synchronized可以保证代码块原子性,很多时候会引起性能问题,volatile也是个不错的选择,但是volatile不能保证原子性,只能在某些场合下使......
  • 关于java.lang.ThreadDeath线程发生场景及模拟代码测试
    当调用stop()方法时会发生两件事:1.即刻停止run()方法中剩余的全部工作,包括在catch或finally语句中,并抛出ThreadDeath异常(通常情况下此异常不需要显示的捕获),因此可能会导......
  • Java线程池详解
    1使用线程池的好处降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗;提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行;提高线程的......
  • 如何实现主线程打印子线程的结果(阿里一面)
    1.自定义runnable接口实现类publicclassMySyncThreadTest{publicstaticvoidmain(String[]args)throwsException{CustomRunnablecRunnacle=new......
  • 我们说StringBuilder是线程不安全的,是什么原因呢?
    在Java中字符串属于对象,Java提供了String类来创建和操作字符串。String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪......
  • 多线程篇-交替打印
    背景有如下需求:线程1打印5次a,线程2打印5次b,线程3打印5次c,要求最后的结果是abcabcabcabc步骤简单情况先考虑简单的情况,然后进行拓展。简单版需求:线程1打印1,线程2......
  • Spring Study-lesson13-整合Mybatis-2-2023-3-19
    进一步优化将UserMapperImpl进行优化,继承系统提供的一个父类:extendsSqlSessionDaoSupport  新建一个:UserMapperImpl2类 继承父类,实现UserMapper接口。简化成一行......
  • Spring Study-lesson13-整合Mybatis-1-2023-3-19
    在配置前要加载依赖以及build (pom.xml中添加各种依赖)以及连接数据库<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"......