structure IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG (wdm.h)
La structure IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG contient les informations requises pour configurer un allocateur logique.
Cette structure est utilisée par IOMMU_DOMAIN_CREATE_EX pour créer un allocateur logique attaché au [IOMMU_DMA_DOMAIN] créé.
Syntaxe
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;
Membres
LogicalAllocatorType
Valeur IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE qui indique le type d’allocateur logique à créer.
BuddyAllocatorConfig
Fournit des informations de configuration spécifiques à hal Buddy Allocator.
BuddyAllocatorConfig.AddressWidth
Fournit la largeur d’adresse de l’allocateur à créer. Les systèmes d’exploitation 32 bits sont limités à une largeur de 32 bits, tandis que les systèmes d’exploitation 64 bits sont limités à une largeur de 63 bits. Lors de la création d’un domaine, la largeur d’adresse doit correspondre à la largeur d’adresse maximale pour les appareils qui doivent être attachés.
Remarques
Avec IOMMU_DOMAIN_CREATE_EX, un appelant peut choisir d’attacher un allocateur logique au domaine en cours de création.
Lors de l’interaction avec un tel domaine, un appelant n’a pas besoin de suivre les mappages précédents. Au lieu de cela, l’allocateur logique prend la responsabilité de déterminer l’adresse logique à utiliser lors du mappage de pages physiques au domaine propriétaire. L’allocateur logique est également responsable de la maintenance de l’état pour s’assurer que les collisions d’adresses logiques ne se produisent pas.
Actuellement, le seul type d’allocateur logique disponible est l’allocateur buddy. Cet allocateur favorise les adresses logiques faibles et alloue des adresses logiques sur une puissance de deux limites égales ou supérieures à 4 Ko. L’allocateur est également augmenté avec un cache de valeurs d’adresse logique gratuites pour améliorer les performances de la recherche d’adresse gratuite.
L’objet Buddy Allocator n’autorise pas l’allocation d’adresses explicite. L’appel IOMMU_MAP_IDENTITY_RANGE_EX ou IOMMU_MAP_LOGICAL_RANGE_EX avec une adresse explicite fournie sur un [IOMMU_DMA_DOMAIN* créé avec un BuddyAllocator échoue.
Configuration requise
Condition requise | Valeur |
---|---|
Serveur minimal pris en charge | Windows Server 2022 |
En-tête | wdm.h (inclure Wdm.h) |