Linux内核 – 如何将jprobe与kretprobe相匹配?
我正在编写一个内核模块来监视一些想要在调用成功时将函数参数返回到user-land(通过netlink socket)的系统调用.
我担心另一个重命名系统调用可以抢占[1] jprobe之后的当前一个,我将发送错误的返回码和参数.
编辑:本文[2]指出在kprobe处理程序期间禁用了中断.但这是否意味着整个链中断(jprobe – > kprobe – > kretprobe)或仅针对该单个kprobe禁用中断? > https://unix.stackexchange.com/questions/186355/few-questions-about-system-calls-and-kernel-modules-kernel-services-in-parallel 最佳答案
每个jprobe调用都禁用中断:不是整个序列.
在应用程序处理它们的时候,您期望多少个电话?根据您对调用的预期速度,有不同的方法.最简单的方法,如果您只需要几百个调用就可以处理它们,并且您将静态内存用于此目的,就是实现一个内存中的rename_obj_t对象的静态数组,然后使用来自内核asm的atomic_add指向下一个条目(修改数组的大小). 这样,每次返回一个唯一的静态引用,只要计数器在处理返回值之前没有回绕. atomic_add保证具有正确的内存屏障,因此您不必担心缓存一致性等问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |