Voltar à lista
Linux x86_64Memória#154

modify_ldt

Lê ou modifica a Local Descriptor Table (LDT) por-processo, um mecanismo de segmentação de memória legado do x86.

Descrição

Resquício da era de segmentação de memória x86 de 32-bit; hoje usada quase exclusivamente por camadas de compatibilidade (Wine, emuladores de DOS/16-bit) e algumas técnicas de thread-local storage muito antigas.

man 2

Nota

Específica de x86; historicamente relevante para algumas mitigações de side-channel (ex.: variantes de Spectre) por expor estado de segmentação pouco usado.

Assinatura

int modify_ldt(int func, void * ptr, unsigned long bytecount);

Parâmetros

ParâmetroTipoDescrição
funcint0 para ler, 1/0x11 para escrever entradas da LDT.
ptrvoid *Buffer de entrada/saída com as entradas de descritor.
bytecountunsigned longTamanho de `ptr`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1funcint
rsiargumento 2ptrvoid *
rdxargumento 3bytecountunsigned long

Valor de retorno

Número de bytes lidos (leitura) ou 0 (escrita) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).

Relacionadas