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
.