我目前正在尝试实现我自己的VDSO。我使用了this tutorial,它解释了如何在2.6内核中做到这一点。
我对其进行了测试,并使其正常工作。(我成功地创建了一个内核变量并从userland访问它。)
有没有办法在内核中知道何时调用了vdso?我假设这不能同步完成(因为vdso是在userland中处理的)。但是,内核是否有可能(甚至是脏的)知道函数是否已被调用(可能带有硬件断点或其他东西)?
我想要做的是类似以下代码中的函数( my_vdso_has_been_called()):
void update_vsyscall(/* […] */) {
// […]
if(my_vdso_has_been_called())
do_something();
}注意:在arch/x86/kernel/vsyscall_64.c中可以找到update_vsyscall函数
发布于 2018-11-22 06:28:21
由于您知道如何声明共享变量并从内核和vDSO访问它,因此可以使用该方法:声明一个新变量,并在每次调用它时从vDSO递增该变量。
https://stackoverflow.com/questions/53437433
复制相似问题