Linux x86_64Sistema de arquivos#463
setxattrat
Como setxattr, mas resolve o caminho relativo a um descritor de diretório, unificando setxattr/lsetxattr/fsetxattr em uma única syscall *at().
Descrição
Parte de uma modernização mais recente da família de xattr para seguir o mesmo padrão *at() já usado por open/stat/unlink desde 2006.
man 2Desde o kernel 6.13
Assinatura
int setxattrat(
int dirfd,
const char * pathname,
int flags,
const char * name,
const struct xattr_args * value,
size_t size
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| dirfd | int | Descritor do diretório base, ou AT_FDCWD. |
| pathname | const char * | Caminho, absoluto ou relativo a `dirfd`. |
| flags | int | AT_SYMLINK_NOFOLLOW, AT_EMPTY_PATH. |
| name | const char * | Nome do atributo. |
| value | const struct xattr_args * | Novo valor e flags do atributo. |
| size | size_t | Tamanho de `value`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | dirfdint |
| rsi | argumento 2 | pathnameconst char * |
| rdx | argumento 3 | flagsint |
| r10 | argumento 4 | nameconst char * |
| r8 | argumento 5 | valueconst struct xattr_args * |
| r9 | argumento 6 | sizesize_t |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EEXIST(17)
- Arquivo já existe.
- ENODATA(61)
- Nenhum dado disponível.
- ENOTSUP(95)
- Sinônimo de EOPNOTSUPP — operação não suportada.