Voltar à lista
Linux x86_64Memória#440

process_madvise

Como madvise, mas aplicado à memória de outro processo (com permissão adequada).

Descrição

Permite que um gerenciador de memória externo (ex.: Android's lmkd/ActivityManager) libere ou ajuste o cache de páginas de outros processos sob pressão de memória, sem exigir cooperação ativa deles.

man 2Desde o kernel 5.10

Assinatura

ssize_t process_madvise(
    int pidfd,
    const struct iovec * iovec,
    size_t vlen,
    int advice,
    unsigned int flags
);

Parâmetros

ParâmetroTipoDescrição
pidfdintpidfd do processo alvo (ver pidfd_open).
iovecconst struct iovec *Vetor de regiões de memória alvo no processo remoto.
vlensize_tNúmero de elementos em `iovec`.
adviceintDica de uso, ex.: MADV_COLD, MADV_PAGEOUT.
flagsunsigned intReservado; deve ser 0.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1pidfdint
rsiargumento 2iovecconst struct iovec *
rdxargumento 3vlensize_t
r10argumento 4adviceint
r8argumento 5flagsunsigned int

Valor de retorno

Número de bytes processados em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EINVAL(22)
Argumento inválido.
EPERM(1)
Operação não permitida (falta de privilégio).
ESRCH(3)
Processo inexistente.
EBADF(9)
Descritor de arquivo inválido.

Relacionadas