Ser informado quando um vdso específico é executado

2

Atualmente, estou tentando implementar meu próprio VDSO. Eu usei este tutorial que explica como fazer isso para um kernel 2.6. p>

Eu testei e consegui isso funcionar. (Consegui criar uma variável do kernel e acessá-la da userland).

Existe uma maneira de ser conhecido no kernel quando o vdso é chamado? Eu suponho que isso não pode ser feito de forma síncrona (como o vdso é tratado no userland). Mas existe alguma possibilidade (mesmo suja) do kernel para saber se a função foi chamada (talvez com um ponto de interrupção de hardware ou algo assim)?

O que eu gostaria de fazer é algo como a função my_vdso_has_been_called() ) neste código:

void update_vsyscall(/* […] */) {
    // […]
    if(my_vdso_has_been_called())
        do_something();
}

Nota: a função update_vsyscall pode ser encontrada em arch/x86/kernel/vsyscall_64.c

    
por Maxime B. 21.11.2018 / 18:15

1 resposta

1

Como você sabe como declarar uma variável compartilhada e acessá-la do kernel e do vDSO, é possível usar isso: declarar uma nova variável e incrementá-la a partir do vDSO sempre que ela for chamada.

    
por 21.11.2018 / 23:28