struttura IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG (wdm.h)
La struttura IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG contiene informazioni necessarie per configurare un allocatore logico.
Questa struttura viene usata da IOMMU_DOMAIN_CREATE_EX per creare un allocatore logico collegato all'oggetto creato [IOMMU_DMA_DOMAIN].
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;
LogicalAllocatorType
Valore IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE che indica il tipo di allocatore logico da creare.
BuddyAllocatorConfig
Fornisce informazioni di configurazione specifiche dell'allocatore HAL Buddy.
BuddyAllocatorConfig.AddressWidth
Fornisce la larghezza dell'indirizzo per l'allocatore da creare. I sistemi operativi a 32 bit sono limitati a una larghezza di 32 bit, mentre i sistemi operativi a 64 bit sono limitati a una larghezza di 63 bit. Quando si crea un dominio, la larghezza dell'indirizzo deve corrispondere alla larghezza massima degli indirizzi per i dispositivi che devono essere collegati.
Con IOMMU_DOMAIN_CREATE_EX, un chiamante può scegliere di collegare un allocatore logico al dominio in fase di creazione.
Quando si interagisce con un dominio di questo tipo, un chiamante non deve tenere traccia dei mapping precedenti. L'allocatore logico assume invece la responsabilità di determinare l'indirizzo logico da usare durante il mapping delle pagine fisiche al dominio proprietario. L'allocatore logico è anche responsabile del mantenimento dello stato per garantire che non si verifichino conflitti di indirizzi logici.
Attualmente l'unico tipo di allocatore logico disponibile è Buddy Allocator. Questo allocatore favorirà gli indirizzi logici bassi e allocherà gli indirizzi logici alla potenza di due limiti di almeno 4 KB. L'allocatore è anche aumentato con una cache di valori di indirizzi logici liberi per migliorare le prestazioni di ricerca degli indirizzi gratuiti.
Buddy Allocator non consente l'allocazione esplicita degli indirizzi. La chiamata di IOMMU_MAP_IDENTITY_RANGE_EX o IOMMU_MAP_LOGICAL_RANGE_EX con un indirizzo esplicito fornito in un [IOMMU_DMA_DOMAIN* creato con un BuddyAllocator avrà esito negativo.
Requisito | Valore |
---|---|
server minimo supportato | Windows Server 2022 |
intestazione | wdm.h (include Wdm.h) |