Linux x86_64Sistema de arquivos#467
open_tree_attr
Combina open_tree e mount_setattr em uma única chamada: abre uma árvore de montagem já aplicando atributos.
Descrição
Adição recente que evita a janela entre abrir uma árvore de montagem e configurar seus atributos, fechando uma pequena lacuna de atomicidade da API introduzida por open_tree/mount_setattr.
man 2Desde o kernel 6.15
Assinatura
int open_tree_attr(
int dfd,
const char * path,
unsigned int flags,
struct mount_attr * uattr,
size_t usize
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| dfd | int | Descritor do diretório base, ou AT_FDCWD. |
| path | const char * | Caminho da árvore de montagem. |
| flags | unsigned int | Flags de open_tree combinadas com AT_RECURSIVE, etc. |
| uattr | struct mount_attr * | Atributos a aplicar imediatamente à árvore aberta. |
| usize | size_t | Tamanho de `uattr`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | dfdint |
| rsi | argumento 2 | pathconst char * |
| rdx | argumento 3 | flagsunsigned int |
| r10 | argumento 4 | uattrstruct mount_attr * |
| r8 | argumento 5 | usizesize_t |
Valor de retorno
Um descritor de arquivo referenciando a árvore de montagem em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- ENOENT(2)
- Arquivo ou diretório inexistente.
- EPERM(1)
- Operação não permitida (falta de privilégio).