1) What handles /sys/class/gpio ? A kernel module ? a driver ?
É uma interface do kernel semelhante ao diretório /proc
.
2) is it possible to have more complicated module parameters in a kernel module, with some directory structure ? Like a 'delays' directory containing the params for delays
Sim; algumas coisas em /proc
e /sys
usam hierarquias de diretório. Se você quiser modificá-los ou expandi-los, você terá que modificar o kernel.
# 3 tem uma resposta semelhante - para fazer alterações você precisa alterar o código do kernel relevante.
4) How does the gpio thing creates new/deletes files in /sys/class/gpio when you write to [un]export ?
Estes não são arquivos em disco, são apenas interfaces de sistema. 1 Quando você vai ler dados de um arquivo procfs ou sysfs, o que você está fazendo é fazer uma requisição por informações de o kernel. Os dados são formatados e retornados. Provavelmente não é armazenado em nenhum lugar da forma que você o vê, embora partes dele possam ser armazenadas no kernel.
Quando você escreve em tal arquivo - nem todos permitem isso - você está enviando um pedido ao kernel para fazer algo específico. Isso pode incluir, por exemplo, ativar ou expandir a interface do GPIO.
1. read
e write
chamadas são sempre chamadas do sistema de qualquer maneira, já que os arquivos normais normalmente estão no disco, e o kernel é necessário para acessar o hardware. Portanto, usar uma API de estilo de sistema de arquivos aqui é natural; mesmo que não sejam "arquivos reais", acessar qualquer recurso que eles representem deve envolver chamadas do sistema.