estrutura IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG (wdm.h)
A estrutura IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG contém informações necessárias para configurar um alocador lógico.
Essa estrutura é usada por IOMMU_DOMAIN_CREATE_EX para criar um alocador lógico anexado ao [IOMMU_DMA_DOMAIN] criado.
Sintaxe
typedef struct _IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG {
IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE LogicalAllocatorType;
union {
struct {
ULONG AddressWidth;
} BuddyAllocatorConfig;
};
} IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG, *PIOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG;
Membros
LogicalAllocatorType
Um valor IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE que indica o tipo de alocador lógico a ser criado.
BuddyAllocatorConfig
Fornece informações de configuração específicas para o Alocador hal buddy.
BuddyAllocatorConfig.AddressWidth
Fornece a largura do endereço para o alocador a ser criado. Os sistemas operacionais de 32 bits são limitados a uma largura de 32 bits, enquanto os sistemas operacionais de 64 bits são limitados a uma largura de 63 bits. Ao criar um domínio, a largura do endereço deve corresponder à largura máxima do endereço para os dispositivos que devem ser anexados.
Comentários
Com IOMMU_DOMAIN_CREATE_EX, um chamador pode optar por anexar um alocador lógico ao domínio que está sendo criado.
Ao interagir com esse domínio, um chamador não precisa acompanhar os mapeamentos anteriores. Em vez disso, o alocador lógico assume a responsabilidade de determinar o endereço lógico a ser usado ao mapear páginas físicas para o domínio proprietário. O alocador lógico também é responsável por manter o estado para garantir que colisões de endereço lógico não ocorram.
Atualmente, o único tipo de alocador lógico disponível é o Buddy Allocator. Esse alocador favorece endereços lógicos baixos e alocará endereços lógicos na potência de dois limites a ou acima de 4 KB. O alocador também é aumentado com um cache de valores de endereço lógico gratuitos para melhorar o desempenho da pesquisa de endereços livres.
O Buddy Allocator não permite a alocação explícita de endereço. Chamar IOMMU_MAP_IDENTITY_RANGE_EX ou IOMMU_MAP_LOGICAL_RANGE_EX com um endereço explícito fornecido em um [IOMMU_DMA_DOMAIN* criado com um BuddyAllocator falhará.
Requisitos
Requisito | Valor |
---|---|
Servidor mínimo com suporte | Windows Server 2022 |
Cabeçalho | wdm.h (include Wdm.h) |