Voltar à lista
Linux x86_64Memória#329

pkey_mprotect

Como mprotect, mas também associa a região a uma memory protection key (MPK).

Descrição

Memory Protection Keys (suporte de hardware em CPUs Intel/AMD recentes) permitem alternar rapidamente a permissão de várias regiões de memória associadas à mesma chave com uma única instrução em espaço de usuário (WRPKRU), sem chamada de sistema — muito mais rápido que `mprotect` repetido para alternância frequente de permissões.

man 2Desde o kernel 4.9

Assinatura

int pkey_mprotect(void * addr, size_t len, int prot, int pkey);

Parâmetros

ParâmetroTipoDescrição
addrvoid *Início da região, alinhado ao tamanho de página.
lensize_tTamanho da região.
protintProteção de memória, como em mprotect.
pkeyintChave de proteção (obtida via pkey_alloc) a associar à região.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1addrvoid *
rsiargumento 2lensize_t
rdxargumento 3protint
r10argumento 4pkeyint

Valor de retorno

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

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas