Voltar à lista
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âmetroTipoDescrição
dirfdintDescritor do diretório base, ou AT_FDCWD.
pathnameconst char *Caminho, absoluto ou relativo a `dirfd`.
flagsintAT_SYMLINK_NOFOLLOW, AT_EMPTY_PATH.
nameconst char *Nome do atributo.
valueconst struct xattr_args *Novo valor e flags do atributo.
sizesize_tTamanho de `value`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1dirfdint
rsiargumento 2pathnameconst char *
rdxargumento 3flagsint
r10argumento 4nameconst char *
r8argumento 5valueconst struct xattr_args *
r9argumento 6sizesize_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.

Relacionadas