From: Daniel Pereira <danielmaraboo@gmail.com>
To: linux-doc@vger.kernel.org
Cc: corbet@lwn.net
Subject: [PATCH 02/10] docs/translations/pt_BR: admin-guide: add sysfs-rules.rst
Date: Fri, 2 Oct 2026 14:11:25 -0300 [thread overview]
Message-ID: <20261002171133.50969-3-danielmaraboo@gmail.com> (raw)
In-Reply-To: <20261002171133.50969-1-danielmaraboo@gmail.com>
Add translation of sysfs-rules.rst to Portuguese and update
admin-guide/index.rst.
Signed-off-by: Daniel Pereira <danielmaraboo@gmail.com>
---
.../translations/pt_BR/admin-guide/index.rst | 6 +-
.../pt_BR/admin-guide/sysfs-rules.rst | 195 ++++++++++++++++++
2 files changed, 200 insertions(+), 1 deletion(-)
create mode 100644 Documentation/translations/pt_BR/admin-guide/sysfs-rules.rst
diff --git a/Documentation/translations/pt_BR/admin-guide/index.rst b/Documentation/translations/pt_BR/admin-guide/index.rst
index 2db14d3b4..90f536bdb 100644
--- a/Documentation/translations/pt_BR/admin-guide/index.rst
+++ b/Documentation/translations/pt_BR/admin-guide/index.rst
@@ -32,9 +32,13 @@ Uma grande parte da interface administrativa do kernel são os sistemas de
arquivos virtuais /proc e sysfs; estes documentos descrevem como interagir
com eles.
+.. toctree::
+ :maxdepth: 1
+
+ sysfs-rules
+
Todolist:
-* sysfs-rules
* sysctl/index
* cputopology
* abi
diff --git a/Documentation/translations/pt_BR/admin-guide/sysfs-rules.rst b/Documentation/translations/pt_BR/admin-guide/sysfs-rules.rst
new file mode 100644
index 000000000..97459a9a0
--- /dev/null
+++ b/Documentation/translations/pt_BR/admin-guide/sysfs-rules.rst
@@ -0,0 +1,195 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+Regras sobre como acessar informações no sysfs
+==============================================
+
+O sysfs exportado pelo kernel expõe detalhes internos de implementação do
+kernel e depende de estruturas e do leiaute internos do kernel. Há um consenso
+entre os desenvolvedores do kernel de que o kernel Linux não fornece uma API
+interna estável. Portanto, existem aspectos da interface do sysfs que podem
+não ser estáveis entre lançamentos do kernel.
+
+Para minimizar o risco de quebrar os usuários do sysfs — que, na maioria dos
+casos, são aplicações de espaço de usuário de baixo nível — a cada novo
+lançamento do kernel, os usuários do sysfs devem seguir algumas regras para usar
+uma forma o mais abstrata possível de acessar esse sistema de arquivos. Os
+programas udev e HAL atuais já implementam isso, e os usuários são incentivados
+a se conectar, se possível, às abstrações que esses programas fornecem em vez de
+acessar o sysfs diretamente.
+
+Mas, se você realmente quer ou precisa acessar o sysfs diretamente, siga as
+seguintes regras e, assim, seus programas deverão funcionar com versões
+futuras da interface do sysfs.
+
+- Não use a libsysfs
+ Ela faz suposições sobre o sysfs que não são verdadeiras. Sua API não
+ oferece nenhuma abstração; ela expõe todos os detalhes de implementação do
+ driver-core do kernel em sua própria API. Portanto, ela não é melhor do que
+ ler diretórios e abrir os próprios arquivos.
+ Além disso, ela não é mantida ativamente no sentido de refletir o
+ desenvolvimento atual do kernel. O objetivo de fornecer uma interface
+ estável para o sysfs falhou; ela causa mais problemas do que resolve. Ela
+ viola muitas das regras deste documento.
+
+- sysfs está sempre em ``/sys``
+ Analisar ``/proc/mounts`` é perda de tempo. Outros pontos de montagem são um
+ bug de configuração do sistema que você não deve tentar contornar. Para
+ casos de teste, talvez ofereça suporte a uma variável de ambiente
+ ``SYSFS_PATH`` para sobrescrever o comportamento da aplicação, mas nunca
+ tente procurar pelo sysfs. Nunca tente montá-lo, a menos que você seja um
+ script de inicialização inicial (early boot).
+
+- Dispositivos são apenas "dispositivos"
+ Não existe algo como dispositivos de classe, de barramento, físicos,
+ interfaces e afins com os quais você possa contar no espaço de usuário.
+ Tudo é simplesmente um "dispositivo". Tipos como classe, barramento,
+ físico... são apenas detalhes de implementação do kernel que não devem ser
+ esperados por aplicações que procuram dispositivos no sysfs.
+
+ As propriedades de um dispositivo são:
+
+ - devpath (``/devices/pci0000:00/0000:00:1d.1/usb2/2-2/2-2:1.0``)
+
+ - idêntico ao valor de DEVPATH no evento enviado pelo kernel na criação e
+ remoção do dispositivo
+ - a chave única para o dispositivo naquele momento
+ - o caminho do kernel para o diretório do dispositivo sem o ``/sys`` inicial,
+ e sempre começando com uma barra
+ - todos os elementos de um devpath devem ser diretórios reais. Links
+ simbólicos apontando para /sys/devices devem ser sempre resolvidos para o
+ seu alvo real e o caminho do alvo deve ser usado para acessar o dispositivo.
+ Dessa forma, o devpath para o dispositivo corresponde ao devpath do kernel
+ usado no momento do evento.
+ - usar ou expor valores de symlinks como elementos em uma string de devpath
+ é um bug na aplicação
+
+ - nome do kernel (``sda``, ``tty``, ``0000:00:1f.2``, ...)
+
+ - um nome de diretório, idêntico ao último elemento do devpath
+ - as aplicações precisam lidar com espaços e caracteres como ``!`` no
+ nome
+
+ - subsistema (``block``, ``tty``, ``pci``, ...)
+
+ - string simples, nunca um caminho ou um link
+ - recuperado através da leitura do link "subsystem" e usando apenas o
+ último elemento do caminho de destino
+
+ - driver (``tg3``, ``ata_piix``, ``uhci_hcd``)
+
+ - uma string simples, que pode conter espaços, nunca um caminho ou um
+ link
+ - é recuperado pela leitura do link "driver" e usando apenas o último
+ elemento do caminho de destino
+ - dispositivos que não possuem o link "driver" simplesmente não possuem um
+ driver; copiar o valor do driver no contexto de um dispositivo filho é
+ um bug na aplicação
+
+ - atributos
+
+ - os arquivos no diretório do dispositivo ou arquivos abaixo de subdiretórios
+ do mesmo diretório de dispositivo
+ - acessar atributos alcançados por um symlink apontando para outro dispositivo,
+ como o link "device", é um bug na aplicação
+
+ Tudo o mais é apenas um detalhe de implementação do driver-core do kernel
+ que não deve ser presumido como estável entre lançamentos do kernel.
+
+- Propriedades de dispositivos pais nunca pertencem a um dispositivo filho.
+ Sempre olhe para os próprios dispositivos pais para determinar as propriedades
+ de contexto do dispositivo. Se o dispositivo ``eth0`` ou ``sda`` não tiver
+ um link "driver", então esse dispositivo não possui um driver. Seu valor é vazio.
+ Nunca copie nenhuma propriedade do dispositivo pai para um dispositivo filho.
+ As propriedades do dispositivo pai podem mudar dinamicamente sem qualquer aviso
+ para o dispositivo filho.
+
+- Hierarquia em uma única árvore de dispositivos
+ Há apenas um lugar válido no sysfs onde a hierarquia pode ser examinada
+ e este é abaixo de: ``/sys/devices.``
+ Está planejado que todos os diretórios de dispositivos terminarão na árvore
+ abaixo deste diretório.
+
+- Classificação por subsistema
+ Atualmente, existem três locais para classificação de dispositivos:
+ ``/sys/block,`` ``/sys/class`` e ``/sys/bus.`` Está planejado que estes não
+ conterão diretórios de dispositivos em si, mas apenas listas planas de
+ symlinks apontando para a árvore unificada ``/sys/devices``.
+ Todos os três locais têm regras completamente diferentes sobre como acessar
+ informações de dispositivos. Está planejado fundir todos os três diretórios de
+ classificação em um único local em ``/sys/subsystem``, seguindo o leiaute dos
+ diretórios de barramentos. Todos os barramentos e classes, incluindo o
+ subsistema de blocos convertido, aparecerão lá.
+ Os dispositivos pertencentes a um subsistema criarão um symlink no diretório
+ "devices" em ``/sys/subsystem/<name>/devices``,
+
+ Se ``/sys/subsystem`` existir, ``/sys/bus``, ``/sys/class`` e ``/sys/block``
+ podem ser ignorados. Se ele não existir, você sempre terá que varrer todos os
+ três locais, já que o kernel é livre para mover um subsistema de um local para
+ o outro, desde que os dispositivos ainda sejam acessíveis pelo mesmo nome de
+ subsistema.
+
+ Presumir que ``/sys/class/<subsystem>`` e ``/sys/bus/<subsystem>``, ou
+ ``/sys/block`` e ``/sys/class/block`` não são intercambiáveis é um bug na
+ aplicação.
+
+- Bloco
+ O subsistema de blocos convertido em ``/sys/class/block`` ou
+ ``/sys/subsystem/block`` conterá os links para discos e partições no mesmo
+ nível, nunca em uma hierarquia. Presumir que o subsistema de blocos contém
+ apenas discos e não dispositivos de partição na mesma lista plana é um bug
+ na aplicação.
+
+- Link "device" e links <subsystem>:<kernel name>
+ Nunca dependa do link "device". O link "device" é uma solução alternativa
+ para o leiaute antigo, onde dispositivos de classe não são criados em
+ ``/sys/devices/`` como os dispositivos de barramento. Se a resolução de links
+ de um diretório de dispositivo não terminar em ``/sys/devices/``, você pode
+ usar o link "device" para encontrar os dispositivos pais em ``/sys/devices/``;
+ esse é o único uso válido do link "device"; ele nunca deve aparecer em nenhum
+ caminho como um elemento. Presumir a existência do link "device" para um
+ dispositivo em ``/sys/devices/`` é um bug na aplicação.
+ Acessar ``/sys/class/net/eth0/device`` é um bug na aplicação.
+
+ Nunca dependa dos links específicos de classe de volta para o diretório
+ ``/sys/class``. Esses links também são uma solução paliativa para o erro de
+ projeto no qual dispositivos de classe não são criados em ``/sys/devices.``
+ Se um diretório de dispositivo não contiver diretórios para dispositivos
+ filhos, esses links podem ser usados para encontrar os dispositivos filhos em
+ ``/sys/class.`` Esse é o único uso válido desses links; eles nunca devem
+ aparecer em nenhum caminho como um elemento. Presumir a existência desses links
+ para dispositivos que são diretórios reais de dispositivos filhos na árvore
+ ``/sys/devices`` é um bug na aplicação.
+
+ Está planejado remover todos esses links quando todos os diretórios de
+ dispositivos de classe residirem em ``/sys/devices.``
+
+- A posição dos dispositivos ao longo da cadeia de dispositivos pode mudar.
+ Nunca dependa de uma posição específica do dispositivo pai no devpath,
+ ou da cadeia de dispositivos pais. O kernel é livre para inserir dispositivos
+ na cadeia. Você deve sempre requisitar o dispositivo pai que procura pelo
+ valor do seu subsistema. Você precisa percorrer a cadeia para cima até
+ encontrar o dispositivo correspondente ao subsistema esperado. Depender de
+ uma posição específica de um dispositivo pai ou expor caminhos relativos
+ usando ``../`` para acessar a cadeia de pais é um bug na aplicação.
+
+- Ao ler e gravar arquivos de atributos de dispositivo do sysfs, evite a dependência
+ de códigos de erro específicos sempre que possível. Isso minimiza o acoplamento
+ com a implementação do tratamento de erros dentro do kernel.
+
+ Em geral, falhas ao ler ou gravar atributos de dispositivos no sysfs devem
+ propagar erros sempre que possível. Erros comuns incluem, mas não estão
+ limitados a:
+
+ ``-EIO``: A operação de leitura ou gravação não é suportada, tipicamente
+ retornada pelo próprio sistema sysfs se o ponteiro de leitura ou gravação
+ for ``NULL``.
+
+ ``-ENXIO``: A operação de leitura ou gravação falhou
+
+ Os códigos de erro não serão alterados sem um bom motivo, e caso uma alteração
+ nos códigos de erro resulte em quebra no espaço de usuário, ela será corrigida,
+ ou a alteração causadora será revertida.
+
+ As aplicações do espaço de usuário podem, no entanto, esperar que o formato e
+ o conteúdo dos arquivos de atributos permaneçam consistentes na ausência de uma
+ mudança no atributo de versão no contexto de um determinado atributo.
--
2.47.3
next prev parent reply other threads:[~2026-10-02 17:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-02 17:11 [PATCH 00/10] docs/translations/pt_BR: admin-guide: add multiple translations Daniel Pereira
2026-10-02 17:11 ` [PATCH 01/10] docs/translations/pt_BR: admin-guide: add features.rst Daniel Pereira
2026-10-02 17:11 ` Daniel Pereira [this message]
2026-10-02 17:11 ` [PATCH 03/10] docs/translations/pt_BR: admin-guide: add sysctl/index.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 04/10] docs/translations/pt_BR: admin-guide: add cputopology.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 05/10] docs/translations/pt_BR: admin-guide: add hw-vuln/index.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 06/10] docs/translations/pt_BR: admin-guide: add LSM/index.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 07/10] docs/translations/pt_BR: admin-guide: add perf-security.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 08/10] docs/translations/pt_BR: admin-guide: add bootconfig.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 09/10] docs/translations/pt_BR: admin-guide: add kernel-parameters.rst Daniel Pereira
2026-10-02 17:11 ` [PATCH 10/10] docs/translations/pt_BR: admin-guide: add efi-stub.rst Daniel Pereira
2026-10-14 17:18 ` [PATCH 00/10] docs/translations/pt_BR: admin-guide: add multiple translations Jonathan Corbet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261002171133.50969-3-danielmaraboo@gmail.com \
--to=danielmaraboo@gmail.com \
--cc=corbet@lwn.net \
--cc=linux-doc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.