xmemdma64 Serviço Kernel
Propósito
Prepara uma página para acesso direto à memória (DMA) E/S ou processa uma página depois que a DMA E/S estiver concluída.
Sintaxe
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/xmem.h> unsigned long long xmemdma64 (
struct xmem *dp,
caddr_t xaddr,>
int flags)Parâmetros
| Item | Descrição | ||
|---|---|---|---|
| DP | Especifica um descritor de memória cruzada. | ||
| xaddr | Identifica o endereço que especifica a página para transferência. | ||
| sinalizadores | Especifica se deve preparar uma página para E/S DMA ou processá-la após a E/S DMA ser concluída. Os valores possíveis são:
|
||
Descrição
O serviço kernel xmemdma64 opera na página que é especificado pelo parâmetro xaddr na região que é especificado pelo descritor de memória cruzada. Se o descritor de memória cruzada for para o kernel, o parâmetro xaddr especifica um endereço de kernel. Caso contrário, o parâmetro xaddr especifica o deslocamento na região que está descrita no descritor de memória cruzada.
O serviço kernel xmemdma64 é fornecido para máquinas que possuem caches de memória do processador, mas que não executam a E/S DMA através do cache.
Se o parâmetro bandeira indicar XMEM_HIDE (ou seja, XMEM_UNHIDE não estiver configurado) e é o primeiro ocultar para a página, o serviço kernel xmemdma64 prepara a página para E/S DMA, dando descarga no cache e tornando a página inválida. Quando o bit XMEM_UNHIDE é configurado e ele é o último desescondo para a página, acontecem os seguintes eventos:
- A página é feita válida.
Se a página não estiver no estado de E/S do pager:
- Quaisquer processos que estejam esperando na página são readaptados.
- O bit modificado para a página é configurado, a menos que a página tenha uma chave de armazenamento de leitura.
A página é feita não válida durante operações do DMA para que não seja enderesável com qualquer endereço virtual. Ele impede qualquer processo de leitura ou carregamento de qualquer parte da página no cache durante a operação DMA.
A página que é especificada deve estar na memória e deve ser pintada.
Se o bit XMEM_ACC_CHK for configurado, então o serviço kernel xmemdma64 também verifica permissões de acesso à página. Se o acesso da página for de leitura, então, o bit XMEM_WRITE_ONLY deve ser configurado no parâmetro bandeira .
Ambiente de Execução
O serviço kernel xmemdma64 pode ser chamado a partir do ambiente processo ou interrupção .
Valores De Retorno
Na conclusão bem-sucedida, o serviço xmemdma64 retorna o endereço real correspondente aos parâmetros xaddr e xp .
Códigos De Erro
O serviço kernel xmemdma64 retorna um valor de XMEM_FAIL se um dos seguintes for true:
- O descritor era inválido.
- A página que é especificada pelo parâmetro xaddr ou xp é inválida.
- O acesso não é permitido à página.