Sysfs

Sysfs é um sistema de arquivos virtual introduzido pelo kernel Linux 2.6. Sysfs para exportar do espaço do kernel para o espaço do usuário as informações sobre os dispositivos do sistema e drivers , e também é usado para configurar certas funcionalidades centrais.

História

Durante o ciclo de desenvolvimento do kernel 2.5 ( ramo experimental que se tornará o kernel 2.6), o modelo de driver do Linux foi introduzido a fim de superar certas deficiências do kernel 2.4:

O Sysfs foi projetado para exportar as informações presentes na árvore de dispositivos que não sobrecarregariam mais o procfs . Foi escrito por Patrick Mochel. Maneesh Soni mais tarde escreveu um patch permitindo o uso de memória de massa por sysfs para reduzir sua pegada de RAM em mainframes.

Sysfs é um sistema de arquivos na memória que foi originalmente baseado em ramfs . Ramfs foi escrito durante a estabilização do kernel 2.4.0. Graças à sua simplicidade e ao uso do VFS , ele fornece uma excelente base para derivar dele para a criação de novos sistemas de arquivos na memória.

Sysfs foi inicialmente chamado de DDFS (Device Driver Filesystem, sistema de arquivos para drivers de dispositivo em inglês) e criado para depurar o novo modelo de driver para sua escrita. Anteriormente, a depuração era feita usando procfs para exportar uma árvore de dispositivo, mas sob fortes recomendações de Linus Torvalds , foi decidido usar um novo sistema de arquivos baseado em ramfs. Quando esse novo modelo de driver foi integrado ao kernel 2.5.1, ele recebeu o nome de driverfs .

Durante o ano seguinte de desenvolvimento do kernel branch 2.5, os recursos da infraestrutura do modelo de driver e driverfs começaram a se provar muito úteis para outros subsistemas. O kobjects foi desenvolvido para fornecer um mecanismo para gerenciamento centralizado de objetos e o driverfs foi renomeado para sysfs para expressar sua ignorância dos subsistemas nos quais se baseia.

Visão geral técnica

Para cada objeto adicionado à árvore do modelo de driver (drivers, dispositivos, classes de dispositivos), um diretório é criado em sysfs. O relacionamento pai / filho é representado como subdiretórios em / sys / devices / (representando a camada física). O subdiretório / sys / bus / é preenchido com links simbólicos , representando como cada dispositivo pertence a diferentes barramentos . / sys / class / mostra dispositivos agrupados em classes, como dispositivos de rede, por exemplo, enquanto / sys / block / contém dispositivos de bloco .

Para dispositivos e seus drivers, atributos podem ser criados. Eles são arquivos simples , a única restrição é que cada um pode conter apenas um valor e / ou autorizar a informação de apenas um valor (ao contrário de alguns arquivos procfs, que precisam ser usados ​​por um longo tempo). Viajado). Esses arquivos são colocados no subdiretório do driver correspondente ao dispositivo. O uso de grupos de atributos é possível criando um subdiretório preenchido com atributos.

Alguns ônibus

PCI

Exporta informações sobre dispositivos PCI .

USB

Contém informações do host e do dispositivo USB .

Sysfs e espaço do usuário

O Sysfs é usado por alguns utilitários para acessar informações sobre o hardware e seus drivers (módulos do kernel, como udev ou HAL por exemplo). Os scripts foram escritos para acessar informações previamente obtidas via procfs , e alguns scripts para configurar o hardware e seus drivers por meio de seus atributos.

Artigos relacionados

links externos