estructura IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG (wdm.h)
La estructura IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG contiene información necesaria para configurar un asignador lógico.
Esta estructura la usa IOMMU_DOMAIN_CREATE_EX para crear un asignador lógico asociado al [IOMMU_DMA_DOMAIN] creado.
Sintaxis
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;
Miembros
LogicalAllocatorType
Valor de IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE que indica el tipo de asignador lógico que se va a crear.
BuddyAllocatorConfig
Proporciona información de configuración específica del asignador de HAL Buddy.
BuddyAllocatorConfig.AddressWidth
Proporciona el ancho de dirección para que se cree el asignador. Los sistemas operativos de 32 bits están limitados a un ancho de 32 bits, mientras que los sistemas operativos de 64 bits están limitados a un ancho de 63 bits. Al crear un dominio, el ancho de dirección debe corresponder al ancho de dirección máximo para los dispositivos que se espera que se conecten.
Comentarios
Con IOMMU_DOMAIN_CREATE_EX, un autor de la llamada puede optar por asociar un asignador lógico al dominio que se va a crear.
Al interactuar con este dominio, un llamador no necesita realizar un seguimiento de las asignaciones anteriores. En su lugar, el asignador lógico asume la responsabilidad de determinar la dirección lógica que se va a usar al asignar páginas físicas al dominio propietario. El asignador lógico también es responsable de mantener el estado para asegurarse de que no se produzcan colisiones de direcciones lógicas.
Actualmente, el único tipo de asignador lógico disponible es el asignador de Buddy. Este asignador favorece las direcciones lógicas bajas y asignará direcciones lógicas a la potencia de dos límites en o por encima de 4 KB. El asignador también se aumenta con una memoria caché de valores de dirección lógica libres para mejorar el rendimiento de la búsqueda de direcciones gratuitas.
El asignador de Buddy no permite la asignación explícita de direcciones. Se producirá un error al llamar a IOMMU_MAP_IDENTITY_RANGE_EX o IOMMU_MAP_LOGICAL_RANGE_EX con una dirección explícita proporcionada en un [IOMMU_DMA_DOMAIN* creado con un BuddyAllocator.
Requisitos
Requisito | Value |
---|---|
Servidor mínimo compatible | Windows Server 2022 |
Encabezado | wdm.h (incluya Wdm.h) |