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âmetro | Tipo | Descrição |
|---|---|---|
| ns_ids | __u64 * | Buffer de saída para os identificadores de namespace encontrados. |
| nr_ns_ids | size_t | Capacidade do buffer `ns_ids`, em número de identificadores. |
| ns_type | unsigned int | Filtra por tipo de namespace (0 para todos os tipos suportados). |
| spectator_pid | unsigned int | Restringe a listagem aos namespaces visíveis a partir do PID informado (0 para o processo chamador). |
| flags | unsigned int | Opções da chamada; deve ser 0 na primeira implementação. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | ns_ids__u64 * |
| rsi | argumento 2 | nr_ns_idssize_t |
| rdx | argumento 3 | ns_typeunsigned int |
| r10 | argumento 4 | spectator_pidunsigned int |
| r8 | argumento 5 | flagsunsigned 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).