Quero escrever uma pequena extensão de driver Linux. Mais específico: quero gravar toda a comunicação entre o host e um M.2-nvme-ssd em um arquivo de espaço do usuário. O driver nvme é muito grande e tenho dificuldades em identificar algum lugar para começar.
Um colega meu fez algo semelhante com cartões SD. Ele rastreou o IO depois que o host recebeu a resposta do cartão e está prestes a encerrar a operação (a função é sdhci_request_done
). O rastreamento mostra solicitações e respostas com opcode, dados e carimbos de data/hora. Algo assim seria meu objetivo.
Encontrei programas que rastreiam IO, mas operam no espaço do usuário. Isso é um problema, pois posso enviar uma mensagem para o cartão diretamente do driver.
Então, minha pergunta é: onde posso acessar o driver host para obter os dados, sem atrasar as operações ou alocar muita memória. Ou existe uma função de driver que faz isso?