Seção atômica no espaço do usuário do Linux

0

Eu preciso pegar um timestamp do relógio do host Linux e imediatamente interromper um dispositivo periférico via acesso mapeado à memória para seus registradores.

É crucial que haja o menor jitter possível no atraso entre as duas operações. A implementação atual é executada em um LKM, onde posso desabilitar interrupções e, assim, garantir que não serei interrompido. Agora eu gostaria de mover essa funcionalidade para o espaço do usuário. Lá, o código seria algo como isto:

clock_gettime(CLOCK_REALTIME, &ts_host);
periph_memory->int_controller.int_raise |= (1 << HOST_INT);

Existe uma maneira de tornar a execução deste código "atômica", ou seja, garantir que o kernel não sirva uma interrupção ou me antecipe ao executar as funções? O kernel é 4.9.82-ti-r102 #1 SMP PREEMPT .

    
por Peter Power 17.10.2018 / 10:02

0 respostas