Linux x86_64Sistema de arquivos#468
file_getattr
Consulta atributos específicos de sistema de arquivos de um arquivo (ex.: flags de inode ext4/Btrfs), de forma estruturada.
Descrição
Substitui parte do uso overloaded de `ioctl` (como FS_IOC_GETFLAGS) por uma interface própria e mais consistente entre sistemas de arquivos.
man 2Desde o kernel 6.13
Assinatura
int file_getattr(
int dfd,
const char * filename,
struct file_attr * ufattr,
size_t usize,
unsigned int at_flags
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| dfd | int | Descritor do diretório base, ou AT_FDCWD. |
| filename | const char * | Caminho, absoluto ou relativo a `dfd`. |
| ufattr | struct file_attr * | Recebe os atributos do arquivo. |
| usize | size_t | Tamanho de `ufattr`. |
| at_flags | unsigned int | AT_SYMLINK_NOFOLLOW, AT_EMPTY_PATH. |
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 | filenameconst char * |
| rdx | argumento 3 | ufattrstruct file_attr * |
| r10 | argumento 4 | usizesize_t |
| r8 | argumento 5 | at_flagsunsigned int |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EINVAL(22)
- Argumento inválido.
- ENOTTY(25)
- Operação de controle inapropriada para o dispositivo (não é um terminal).
- EOPNOTSUPP(95)
- Operação não suportada nesse socket/arquivo (também ENOTSUP).