Voltar à lista
Linux x86_64Namespaces#470

listns

Lista os namespaces visíveis para o processo chamador, com filtragem por tipo e proprietário.

Descrição

Adição recente que fornece uma forma direta de enumerar namespaces ativos no sistema — antes disso, descobrir todos os namespaces exigia varrer `/proc/*/ns/*` de todos os processos, algo caro e sujeito a condições de corrida.

man 2Desde o kernel 6.13

Diferença entre versões

Uma das syscalls mais recentes da tabela x86_64; ainda pouco documentada fora do código-fonte do kernel no momento em que esta referência foi escrita.

Assinatura

int listns(
    __u64 * ns_ids,
    size_t nr_ns_ids,
    unsigned int ns_type,
    unsigned int spectator_pid,
    unsigned int flags
);

Parâmetros

ParâmetroTipoDescrição
ns_ids__u64 *Buffer de saída para os identificadores de namespace encontrados.
nr_ns_idssize_tCapacidade do buffer `ns_ids`, em número de identificadores.
ns_typeunsigned intFiltra por tipo de namespace (0 para todos os tipos suportados).
spectator_pidunsigned intRestringe a listagem aos namespaces visíveis a partir do PID informado (0 para o processo chamador).
flagsunsigned intOpções da chamada; deve ser 0 na primeira implementação.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1ns_ids__u64 *
rsiargumento 2nr_ns_idssize_t
rdxargumento 3ns_typeunsigned int
r10argumento 4spectator_pidunsigned int
r8argumento 5flagsunsigned int

Valor de retorno

Número de identificadores de namespace escritos em `ns_ids` em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EINVAL(22)
Argumento inválido.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
ESRCH(3)
Processo inexistente.
EPERM(1)
Operação não permitida (falta de privilégio).

Relacionadas

Mesma categoria