Novas chamadas de sistema são adicionadas muito raramente. A maioria das novas funcionalidades do kernel pode ser alcançada através de alguns mecanismos gerais:
- Os descritores de arquivos são um recurso muito geral para o gerenciamento de recursos.
- As ações personalizadas nos descritores de arquivos ocorrem por meio de
ioctl
. - As interações também são possíveis através do sistema de arquivos proc e sua variante sysfs para informações relacionadas a hardware e driver.
Esses mecanismos gerais se beneficiam do suporte genérico existente. Por exemplo, recursos anexados a um descritor são automaticamente compartilhados com processos filhos, automaticamente fechados em execve
se sinalizado para fazer isso, liberados quando o descritor é fechado (o que acontece quando o processo morre), etc. Controle de acesso a novos recursos implementados como arquivos é fornecido através dos mecanismos de controle de acesso a arquivos bem estabelecidos (permissões, SELinux, etc.).
Esses mecanismos gerais também são mais fáceis de usar do que uma nova chamada de sistema, pois podem ser usados imediatamente, sem esperar pelo suporte da biblioteca. Uma nova entrada em /proc
pode ser usada diretamente de um script de shell. Um novo ioctl
pode ser usado diretamente do aplicativo. Uma nova chamada de sistema precisa ser declarada na biblioteca padrão.
A página de manual syscalls lista a versão do kernel na qual cada chamada de sistema foi adicionada . A maioria das novas chamadas de sistema oferece novas maneiras de manipular certos tipos de arquivos, seja para gerenciar metadados e credenciais (por exemplo, suporte de atributo estendido no 2.6) ou como operações de variações antes impossíveis (por exemplo, execveat
, renameat2
).