linux内核那些事之fatal_signal_pending/signal_pending/cond_resched-程序员宅基地

技术标签: 内核源码分析  运维  linux  服务器  

在内核开发或者驱动开发过程中,不可避免需要使用较长循环的代码处理,尤其是内核代码中有很多for(;;)获取while(1)循环 等待硬件或者某个条件触发才能退出循环,这样做其实是非常危险,如果退出条件长期达不到条件,就会一直死循环下去,直接卡住整个内核或者某个驱动模块,即使在用户层发送control +c 信号,内核层也无法补捉退出循环

为了解决上述,为了解决死循环导致卡死问题,能够在内核层捕获control+ c信号,内核开发一系列接口fatal_signal_pending/signal_pending用于在内核层能够捕获control +信号

fatal_signal_pending/signal_pending

fatal_signal_pending/signal_pending()接口为内核提供用于捕捉信号接口,一般在开发驱动中为了防止死循环卡死内核,可以使用上述接口用于捕获KILL信号,例如使用方法如下:

while(!fatal_signal_pending(current) {
    // infinite loop
}

用于捕获用户向当前进程发送的signal信号,在内核代码尤其是驱动代码中有大量循环中使用该方法防止各种异常导致无法终止现象,例如ext4文件系统中ext4_readdir()函数:


static int ext4_readdir(struct file *file, struc
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42730667/article/details/121624316

智能推荐

vulnhub靶场之DC-3_dc-3靶场-程序员宅基地

文章浏览阅读949次,点赞21次,收藏20次。如果您的网站正在运行 Joomla,您可以对您的网站使用 JoomScan 实用程序来发现漏洞或仅提供有助于攻击您网站的一般信息。漏洞扫描器(JoomScan)是一个开源项目,其主要目的是实现漏洞检测的自动化,以增强Joomla CMS开发的安全性。与以前的 DC 版本一样,这个版本是为初学者设计的,尽管这一次只有一个标志,一个入口点,根本没有任何线索。Linux 技能和对 Linux 命令行的熟悉是必须的,对基本渗透测试工具的一些经验也是必须的。我们可以看到用户名爆破出来了,密码是加密的,我们进行解密。_dc-3靶场

RK3568-i2c-适配rx8010时钟芯片-程序员宅基地

文章浏览阅读730次。【代码】RK3568-i2c-适配8010rtc时钟芯片。_rx8010

python numpy.datetime64 的坑(与datetime之间的转换,以及pandas获取指定时间段内容问题)_datetime64 type does not support sum operations-程序员宅基地

文章浏览阅读2.9w次,点赞14次,收藏42次。好久没写博客了,最近在写项目时用到了 numpy.datetime64这个神坑,遇到了太多的问题,百度资料也很少(还是去stackoverflow搜吧),大多数还是错的。因此在这里做个总结,写个技术笔记,希望也能帮到大家吧!datetime64 与 datetime.datetime的相互转换:一行代码解决:(dt64 - np.datetime64('1970-01-01T00:00:0..._datetime64 type does not support sum operations

css 根据手机屏幕适应页面高度_css中手机端一屏的高度是多少-程序员宅基地

文章浏览阅读3.3k次。1、根据正常的web网页设计实现页面2、@media screen and (max-width: 375px){} 需要根据页面调整不同高度的class或ID在该样式里面进行调整。eg:@media screen and (max-width: 375px){body{height: 400px;}.list{height: 360px;}.fin_css中手机端一屏的高度是多少

【目标检测】YOLOv5算法实现(四):正样本匹配与损失计算_yolov5损失计算-程序员宅基地

文章浏览阅读1.6k次,点赞48次,收藏30次。本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码,删减了源码中部分内容,满足个人科研需求。本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模块即可实现其他版本的YOLO算法。_yolov5损失计算

python中and not的用法-python中not的用法-程序员宅基地

文章浏览阅读4.6k次。python中的not具体表示是什么:在python中not是逻辑判断词,用于布尔型True和False,not True为False,not False为True,以下是几个常用的not的用法:(1) not与逻辑判断句if连用,代表not后面的表达式为False的时候,执行冒号后面的语句。比如:a = Falseif not a: (这里因为a是False,所以not a就是True)pri..._python and not

随便推点

“Femtocell认知无线电频谱感知算法性能仿真与Matlab实现“-程序员宅基地

文章浏览阅读72次。本文介绍了Femtocell认知无线电频谱感知算法的性能仿真,并提供了在Matlab中实现该算法的源代码。该算法基于感知技术,通过监测和分析无线电频谱环境的特征,包括频谱利用率、干扰水平等,来判断可用频谱资源的位置和质量,并在不干扰主要网络的前提下,将其分配给Femtocell用户。最后,输出可用频谱列表。通过对Femtocell认知无线电频谱感知算法的性能仿真,我们可以评估该算法在不同频谱环境下的表现。然而,需要注意的是,本文提供的示例代码仅用于演示算法的实现过程,并不涵盖算法的完整性和复杂性。

Git命令行基本操作_android git命令行操作-程序员宅基地

文章浏览阅读306次。0. 安装Git网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。Windows安装如https://blog.csdn.net/qq_36730649/article/details/901801711. Git基本配置git config可以配置git的参数,可以使用git config..._android git命令行操作

基于Django的智慧旅游系统的设计与实现-计算机毕业设计源码+LW文档_智慧旅游app数据库详细设计-程序员宅基地

文章浏览阅读87次。本文首先介绍了智慧旅游系统的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的智慧旅游系统,这样可以有效地解决智慧旅游管理信息混乱的局面。(2) 操作简便:本系统适合分技术和用户使用,同时系统操作简单,而且系统不复杂繁琐。关键字:智慧旅游系统;_智慧旅游app数据库详细设计

爬虫五(Scrapy框架整体流程介绍、Scrapy解析数据爬取Cnblogs文章信息、Settings相关配置提高爬取效率、持久化方案保存到本地数据库、爬虫中间件)_scrapy数据流程-程序员宅基地

文章浏览阅读605次。S详细介绍了crapy框架整体流程介绍、Scrapy解析数据爬取Cnblogs文章信息、Settings相关配置提高爬取效率、持久化方案保存到本地数据库、爬虫中间件_scrapy数据流程

简单总结无线CPE、无线AP、无线网桥的不同之处【转】-程序员宅基地

文章浏览阅读3.2k次。转自:http://www.4008075595.com/content_4_3_750.html参考文档:http://www.360doc.com/content/17/0703/13/35216974_668430080.shtml三句话简单总结无线CPE、无线AP、无线网桥的不同之处作者:腾远智拓来源:www.4008075595.com时间:2..._无线网桥 拆解

金九银十Android面试复习题集:关于四大组件中的Activity你了解多少?-程序员宅基地

文章浏览阅读754次,点赞14次,收藏21次。面试造火箭,工作拧螺丝。虽然我只想拧螺丝,但是我们却需要通过造火箭来找到拧螺丝的工作。有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。那我们该怎么做才能做到年薪60万+呢,对于程序员来说,只有不断学习,不断提升自己的实力。我之前有篇文章提到过,感兴趣的可以看看,到底要学习哪些知识才能达到年薪60万+。

推荐文章

热门文章

相关标签