estrutura NET_DMA_DESCRIPTOR (netdma.h)
Sintaxe
typedef struct _NET_DMA_DESCRIPTOR {
union {
ULONG TransferSize;
struct {
ULONG DCAContext : 32;
} DCAContext32;
struct {
ULONG DCAContext : 16;
ULONG Reserved : 16;
} DCAContext16;
struct {
ULONG DCAContext : 8;
ULONG Reserved : 24;
} DCAContext8;
};
ULONG ControlFlags;
PHYSICAL_ADDRESS SourceAddress;
PHYSICAL_ADDRESS DestinationAddress;
PHYSICAL_ADDRESS NextDescriptor;
union {
ULONG64 Reserved1;
PHYSICAL_ADDRESS NextSourceAddress;
};
union {
ULONG64 Reserved2;
PHYSICAL_ADDRESS NextDestinationAddress;
};
ULONG64 UserContext1;
ULONG64 UserContext2;
} NET_DMA_DESCRIPTOR, *PNET_DMA_DESCRIPTOR;
Membros
TransferSize
O tamanho, em bytes, do bloco de memória associado a esse descritor de DMA.
Os drivers de provedor NetDMA 2.0 e posteriores usam os membros DCAContext32, DCAContext16 e DCAContext8 da união com TransferSize para dar suporte ao Acesso direto ao cache (DCA).
DCAContext32
Um contexto DCA de 32 bits.
DCAContext32.DCAContext
Um contexto de DCA.
DCAContext16
Um contexto DCA de 16 bits.
DCAContext16.DCAContext
Um contexto de DCA.
DCAContext16.Reserved
Bits reservados.
DCAContext8
Um contexto DCA de 8 bits.
DCAContext8.DCAContext
Um contexto de DCA.
DCAContext8.Reserved
Bits reservados.
ControlFlags
Um conjunto de sinalizadores que especificam as operações que o mecanismo de DMA deve executar para esse descritor de DMA. Esse membro deve conter um ou mais dos seguintes valores (combinados com uma operação OR bit a bit):
A menos que indicado de outra forma, as descrições se aplicam a quando o bit é definido. | Significado |
---|---|
|
Um provedor NetDMA versão 2.0 ou posterior inicia a cópia do endereço físico de origem especificado no membro SourceAddress e, quando chega ao final da primeira página, ele continua a cópia do endereço físico especificado no membro NextSourceAddress . |
|
Um provedor NetDMA versão 2.0 ou posterior inicia a cópia para o endereço físico de destino especificado no membro DestinationAddress e, quando chega ao final da primeira página, ele continua a cópia para o endereço físico especificado no membro NextDestinationAddress . |
|
O mecanismo de DMA deve identificar o descritor como um descritor de alteração de contexto .
A interface NetDMA envia um descritor de alteração de contexto para provedores NetDMA compatíveis com DCA para definir o processador de destino DCA dos dados de destino para todas as transferências de DMA em um canal NetDMA. A interface NetDMA usa o membro DCAContext8 em um descritor de alteração de contexto para especificar o identificador APIC (controlador de interrupção programável avançado) de 8 bits do processador de destino para o canal. Um provedor NetDMA compatível com DCA deve manter a afinidade de DCA de um canal DMA com um processador, desde que não tenha recebido um novo descritor de alteração de contexto. A interface NetDMA envia um descritor de alteração de contexto uma vez após o canal ter sido alocado e novamente quando o NetDMA detecta que o provedor de DMA pode ter perdido o contexto de hardware (por exemplo, após uma operação de suspensão e retomada). |
|
Se o tipo de operação DMA for uma transferência de DMA padrão, o mecanismo de DMA deverá enviar uma dica de DCA para os dados de destino para o processador de destino DCA que foi atribuído ao canal DMA.
Para definir o processador de destino DCA de um canal DMA, a interface NetDMA enviou anteriormente um descritor de alteração de contexto para esse canal. |
|
O mecanismo de DMA deve gerar uma interrupção para o canal de DMA associado depois de processar esse descritor de DMA.
Quando esse bit é limpo, o mecanismo de DMA não gera uma interrupção. |
|
O endereço de origem não deve ser bisbilhotado.
Quando esse bit é limpo, o endereço de origem está em um espaço de memória coerente e cada linha de cache da CPU deve ser bisbilhotada. O cliente DMA deve verificar se a espionagem de caches de CPU não é necessária para uma operação de DMA adequada. |
|
O endereço de destino não deve ser bisbilhotado.
Quando esse bit é limpo, o endereço de destino está em um espaço de memória coerente e cada linha de cache da CPU deve ser bisbilhotada. O cliente DMA deve verificar se a espionagem de caches de CPU não é necessária para uma operação de DMA adequada. |
|
Os membros CompletionVirtualAddress e CompletionPhysicalAddress no NET_DMA_CHANNEL_PARAMETERS estrutura referenciar um valor de status de conclusão. O mecanismo de DMA atualiza o valor de status de conclusão quando conclui o processamento desse descritor.
O valor de status de conclusão é uma combinação de 64 bits de largura do endereço físico do descritor de DMA mais recente que o mecanismo de DMA processou e informações adicionais status. Quando esse bit é limpo, o mecanismo de DMA não usa CompletionVirtualAddress ou CompletionPhysicalAddress. |
|
O mecanismo de DMA garante que todas as gravações para esse descritor, incluindo dados e status de conclusão, sejam concluídas antes de ler os dados do próximo descritor.
Quando esse bit é limpo, o mecanismo de DMA pode começar a processar o próximo descritor antes de concluir o processamento desse descritor. |
|
Uma transferência de DMA não é necessária para esse descritor. O mecanismo de DMA não é necessário para marcar os membros TransferSize, SourceAddress ou DestinationAddress.
Quando esse bit é limpo, uma transferência de DMA pode ser necessária ou pode ser uma transferência de comprimento zero. O mecanismo de DMA deve marcar os membros TransferSize, SourceAddress ou DestinationAddress. Nota Se esse bit for definido ou desmarcado, o cliente NetDMA sempre deverá garantir que o descritor defina parâmetros de transferência válidos.
|
As máscaras de bits a seguir identificam os bits restantes no membro ControlFlags :
SourceAddress
O endereço físico de um bloco de memória que é uma origem para a transferência de DMA.
DestinationAddress
O endereço físico de um bloco de memória que é um destino para a transferência de DMA.
NextDescriptor
O endereço físico do próximo NET_DMA_DESCRIPTOR estrutura na lista vinculada de descritores. Se esse descritor for o último descritor na lista, NextDescriptor será NULL.
Reserved1
Um valor ULONG64 reservado para o mecanismo de DMA ou o driver do provedor de DMA a ser usado. Os drivers de provedor NetDMA 2.0 e posteriores usam o membro NextSourceAddress do sindicato com Reserved1 para dar suporte à Quebra de Página de Origem e Destino.
NextSourceAddress
O endereço físico da segunda página do endereço de origem usado na quebra de página de origem.
Reserved2
Um valor ULONG64 reservado para usar o mecanismo de DMA ou o driver do provedor de DMA a ser usado. Os drivers de provedor NetDMA 2.0 e posteriores usam o membro NextDestinationAddress da união com Reserved2 para dar suporte à Quebra de Página de Origem e Destino.
NextDestinationAddress
O endereço físico da segunda página do endereço de destino usado na quebra de página de destino.
UserContext1
Um valor ULONG64 reservado para a interface NetDMA a ser usada.
UserContext2
Um valor ULONG64 reservado para a interface NetDMA a ser usada.
Comentários
A estrutura NET_DMA_DESCRIPTOR especifica as informações de origem, destino e controle para uma única transferência de DMA em uma lista vinculada de descritores de DMA.
Para iniciar uma transferência de DMA, a interface NetDMA fornece o endereço físico de uma estrutura NET_DMA_DESCRIPTOR no parâmetro DescriptorPhysicalAddress da função ProviderStartDma do driver do provedor de DMA. O parâmetro DescriptorVirtualAddress contém o endereço virtual do descritor.
O membro NextDescriptor de uma estrutura NET_DMA_DESCRIPTOR contém o endereço físico da próxima estrutura NET_DMA_DESCRIPTOR na lista vinculada de descritores.
A interface NetDMA chama a função ProviderAppendDma de um driver de provedor de DMA para acrescentar uma lista vinculada de descritores de DMA após o último descritor em um canal DMA.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte para drivers NetDMA 2.0 no Windows Server 2008. (Adicionados membros NextSourceAddress, NextDestinationAddress, DCAContext32, DCAContext16 e DCAContext8.) Com suporte para drivers NetDMA 1.1 no Windows Server 2008. Com suporte para drivers NetDMA 1.0 no Windows Server 2008 e no Windows Vista. |
Cabeçalho | netdma.h (inclua Netdma.h) |