Eu tive que definir a tabela para escrever módulos de kernel Linux na ADA, conversando primeiro sobre C, código de objeto, KBUILL, tempo de execução restrito e estratégia geral de construção.Se você iniciar a partir do final, subsys_initcall (tegra_gpio_init), você deve descobrir que o registro do driver define um retorno de chamada de sonda, definindo Tegra_gpio_direction_output como o código de concreto GPIO_CHIP Direction_Output.Para este experimento, fizemos duas implementações do LED.Adb (arquivo corporal, equivalente a ADA do arquivo de origem C .c), um em src/linux_interface/led.adb, o outro sob src/raw_io/led.adb.Usando o GCC padrão do sistema, faça com que a chamada de KBUILL usando uma sintaxe especial, o KBUILL destacará automaticamente essas dependências ao LIBC para você produzir um módulo de kernel válido (*.ko).A primeira versão de implementação da interface LED se liga à API do kernel padrão GPIO_REQUEST, GPIO_DIRECTION_OUTPUT, GPIO_GET_VALUE e GPIO_FREE FUNÇÕES expostas em incluir/linux/gpio.h.
Fonte: https://www.linux.com/audience/developers/hacking-the-linux-kernel-in-ada-part-1/