Voltar à lista
Linux x86_64Memória#279

move_pages

Move páginas individuais e específicas de um processo para nós NUMA escolhidos, ou apenas consulta sua localização atual.

Descrição

Controle mais fino que `migrate_pages`: opera por endereço de página individual em vez de por conjunto de nós inteiro.

man 2Desde o kernel 2.6.18

Assinatura

long move_pages(
    int pid,
    unsigned long count,
    void ** pages,
    const int * nodes,
    int * status,
    int flags
);

Parâmetros

ParâmetroTipoDescrição
pidintProcesso alvo; 0 significa o chamador.
countunsigned longNúmero de páginas em `pages`.
pagesvoid **Endereços das páginas a mover/consultar.
nodesconst int *Nó de destino para cada página, ou NULL para apenas consultar a localização atual.
statusint *Recebe o nó atual (ou código de erro) de cada página.
flagsintMPOL_MF_MOVE, MPOL_MF_MOVE_ALL.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1pidint
rsiargumento 2countunsigned long
rdxargumento 3pagesvoid **
r10argumento 4nodesconst int *
r8argumento 5statusint *
r9argumento 6flagsint

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

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

Relacionadas