首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Kprobe处理程序打开/写入文件

从Kprobe处理程序打开/写入文件
EN

Stack Overflow用户
提问于 2015-07-14 20:41:31
回答 1查看 389关注 0票数 2

我正在使用Kprobes编写一个Linux内核模块来跟踪特定的系统调用,并且我需要从一个KProbe处理程序(具体地说,是一个Kretprobe)中写入一个文件。我知道这通常是不可取的,但是我需要将输出写到一个非常特定的位置,所以我不能使用任何标准的日志记录机制。

我可以从模块中的init()函数很好地打开/写入,但是当我尝试从探测处理程序中这样做时,内核崩溃了。

EN

回答 1

Stack Overflow用户

发布于 2015-07-14 21:24:30

来自Documentation/kspeces.txt:

探测处理程序在禁用抢占的情况下运行。根据体系结构和优化状态的不同,处理程序也可以在禁用中断的情况下运行(例如,在x86/x86-64上,kretprobe处理程序和优化的kprobe处理程序运行时不禁用中断)。在任何情况下,您的处理程序都不应该放弃CPU (例如,通过尝试获取信号量)。

换句话说,您不能在探测处理程序中休眠。因为对文件的读/写操作通常使用磁盘I/O,所以不能在处理程序中使用这些操作。

我需要将输出写到一个非常特定的位置,所以我不能使用任何标准的日志记录机制。

您可以从探测处理程序输出跟踪,例如,输出到特殊设备文件中,并运行(并行)用户空间程序,该程序只是在非常特定的位置读取该文件并写入其中一个文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31406898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档