В настоящее время я пытаюсь реализовать свой собственный VDSO.Я использовал этот учебник , который объясняет, как сделать это для ядра 2.6.
Я проверил это, и я получил это работает.(Мне удалось создать переменную ядра и получить к ней доступ из пользовательского пространства.)
Есть ли способ узнать в ядре, когда вызывается vdso?Я предполагаю, что это не может быть сделано синхронно (так как vdso обрабатывается в пользовательском пространстве).Но есть ли какая-либо возможность (даже грязная) из ядра узнать, была ли вызвана функция (может быть, с аппаратной точкой останова или чем-то еще)?
Что я хотел бы сделать, это что-то вроде функции my_vdso_has_been_called()
) в этом коде:
void update_vsyscall(/* […] */) {
// […]
if(my_vdso_has_been_called())
do_something();
}
Примечание: функцию update_vsyscall
можно найти в arch/x86/kernel/vsyscall_64.c