Linux x86_64Sistema & diversos#309
getcpu
Consulta em qual CPU e nó NUMA a thread chamadora está executando neste instante.
Descrição
Informação inerentemente instável (a thread pode migrar de CPU logo depois da chamada), mas útil como dica para otimizações sensíveis a NUMA/cache. Também exposta via vDSO para evitar o custo de uma troca de contexto completa.
man 2
Assinatura
int getcpu(unsigned int * cpu, unsigned int * node);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| cpu | unsigned int * | Se não for NULL, recebe o número da CPU atual. |
| node | unsigned int * | Se não for NULL, recebe o nó NUMA atual. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | cpuunsigned int * |
| rsi | argumento 2 | nodeunsigned int * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- ENOSYS(38)
- Chamada de sistema não implementada nesta versão do kernel.