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)

Confira também

IOMMU_DOMAIN_CREATE_EX

IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE