struktur NET_DMA_DESCRIPTOR (netdma.h)
Sintaks
typedef struct _NET_DMA_DESCRIPTOR {
union {
ULONG TransferSize;
struct {
ULONG DCAContext : 32;
} DCAContext32;
struct {
ULONG DCAContext : 16;
ULONG Reserved : 16;
} DCAContext16;
struct {
ULONG DCAContext : 8;
ULONG Reserved : 24;
} DCAContext8;
};
ULONG ControlFlags;
PHYSICAL_ADDRESS SourceAddress;
PHYSICAL_ADDRESS DestinationAddress;
PHYSICAL_ADDRESS NextDescriptor;
union {
ULONG64 Reserved1;
PHYSICAL_ADDRESS NextSourceAddress;
};
union {
ULONG64 Reserved2;
PHYSICAL_ADDRESS NextDestinationAddress;
};
ULONG64 UserContext1;
ULONG64 UserContext2;
} NET_DMA_DESCRIPTOR, *PNET_DMA_DESCRIPTOR;
Anggota
TransferSize
Ukuran, dalam byte, dari blok memori yang terkait dengan deskriptor DMA ini.
Driver penyedia NetDMA 2.0 dan yang lebih baru menggunakan anggota DCAContext32, DCAContext16, dan DCAContext8 dengan TransferSize untuk mendukung Akses Cache Langsung (DCA).
DCAContext32
Konteks DCA 32 bit.
DCAContext32.DCAContext
Konteks DCA.
DCAContext16
Konteks DCA 16 bit.
DCAContext16.DCAContext
Konteks DCA.
DCAContext16.Reserved
Bit yang dipesan.
DCAContext8
Konteks DCA 8 bit.
DCAContext8.DCAContext
Konteks DCA.
DCAContext8.Reserved
Bit yang dipesan.
ControlFlags
Sekumpulan bendera yang menentukan operasi yang harus dilakukan mesin DMA untuk deskriptor DMA ini. Anggota ini harus berisi satu atau beberapa nilai berikut (dikombinasikan dengan operasi OR bitwise):
Kecuali dinyatakan lain, deskripsi berlaku untuk ketika bit diatur. | Makna |
---|---|
|
Penyedia NetDMA versi 2.0 atau yang lebih baru memulai salinan dari alamat fisik sumber yang ditentukan di anggota SourceAddress dan ketika mencapai akhir halaman pertama, ia melanjutkan salinan dari alamat fisik yang ditentukan dalam anggota NextSourceAddress . |
|
Penyedia NetDMA versi 2.0 atau yang lebih baru memulai salinan ke alamat fisik tujuan yang ditentukan di anggota DestinationAddress dan ketika mencapai akhir halaman pertama, ia melanjutkan salinan ke alamat fisik yang ditentukan dalam anggota NextDestinationAddress . |
|
Mesin DMA harus mengidentifikasi deskriptor sebagai deskriptor perubahan konteks .
Antarmuka NetDMA mengirimkan deskriptor perubahan konteks ke penyedia NetDMA berkemampuan DCA untuk mengatur prosesor target DCA dari data tujuan untuk semua transfer DMA pada saluran NetDMA. Antarmuka NetDMA menggunakan anggota DCAContext8 dalam deskriptor perubahan konteks untuk menentukan pengidentifikasi pengontrol interupsi (APIC) yang dapat diprogram tingkat lanjut 8-bit dari prosesor target untuk saluran. Penyedia NetDMA berkemampuan DCA harus menjaga afinitas DCA saluran DMA dengan prosesor selama belum menerima deskriptor perubahan konteks baru. Antarmuka NetDMA mengirimkan deskriptor perubahan konteks satu kali setelah saluran dialokasikan dan sekali lagi ketika NetDMA mendeteksi bahwa penyedia DMA mungkin telah kehilangan konteks perangkat keras (misalnya, setelah operasi tangguhkan dan lanjutkan). |
|
Jika jenis operasi DMA adalah transfer DMA standar, mesin DMA harus mengirim petunjuk DCA untuk data tujuan ke prosesor target DCA yang telah ditetapkan ke saluran DMA.
Untuk mengatur prosesor target DCA dari saluran DMA, antarmuka NetDMA sebelumnya mengirimkan deskriptor perubahan konteks ke saluran tersebut. |
|
Mesin DMA harus menghasilkan gangguan untuk saluran DMA terkait setelah memproses deskriptor DMA ini.
Ketika bit ini dibersihkan, mesin DMA tidak menghasilkan gangguan. |
|
Alamat sumber tidak boleh diinti.
Ketika bit ini dibersihkan, alamat sumber berada di ruang memori yang koheren, dan setiap baris cache CPU harus diintip. Klien DMA harus memverifikasi bahwa pengintaian cache CPU tidak diperlukan untuk operasi DMA yang tepat. |
|
Alamat tujuan tidak boleh diinti.
Ketika bit ini dibersihkan, alamat tujuan berada di ruang memori yang koheren, dan setiap baris cache CPU harus diintip. Klien DMA harus memverifikasi bahwa pengintaian cache CPU tidak diperlukan untuk operasi DMA yang tepat. |
|
Anggota CompletionVirtualAddress dan CompletionPhysicalAddress di NET_DMA_CHANNEL_PARAMETERS struktur mereferensikan nilai status penyelesaian. Mesin DMA memperbarui nilai status penyelesaian ketika menyelesaikan pemrosesan deskriptor ini.
Nilai status penyelesaian adalah kombinasi seluruh 64-bit dari alamat fisik deskriptor DMA terbaru yang diproses mesin DMA, dan informasi status tambahan. Ketika bit ini dibersihkan, mesin DMA tidak menggunakan CompletionVirtualAddress atau CompletionPhysicalAddress. |
|
Mesin DMA menjamin bahwa semua penulisan untuk deskriptor ini, termasuk data dan status penyelesaian, selesai sebelum membaca data untuk deskriptor berikutnya.
Ketika bit ini dibersihkan, mesin DMA dapat mulai memproses deskriptor berikutnya sebelum menyelesaikan pemrosesan deskriptor ini. |
|
Transfer DMA tidak diperlukan untuk deskriptor ini. Mesin DMA tidak diperlukan untuk memeriksa anggota TransferSize, SourceAddress, atau DestinationAddress .
Ketika bit ini dibersihkan, transfer DMA mungkin diperlukan atau mungkin transfer panjang nol. Mesin DMA harus memeriksa anggota TransferSize, SourceAddress, atau DestinationAddress . Catatan Jika bit ini diatur atau dibersihkan, klien NetDMA harus selalu memastikan bahwa deskriptor menentukan parameter transfer yang valid.
|
Bitmasks berikut mengidentifikasi bit yang tersisa di anggota ControlFlags :
SourceAddress
Alamat fisik blok memori yang merupakan sumber untuk transfer DMA.
DestinationAddress
Alamat fisik blok memori yang merupakan tujuan untuk transfer DMA.
NextDescriptor
Alamat fisik struktur NET_DMA_DESCRIPTOR berikutnya dalam daftar deskriptor yang ditautkan. Jika deskriptor ini adalah deskriptor terakhir dalam daftar, NextDescriptor adalah NULL.
Reserved1
Nilai ULONG64 yang dicadangkan untuk digunakan oleh mesin DMA atau driver penyedia DMA. Driver penyedia NetDMA 2.0 dan yang lebih baru menggunakan anggota NextSourceAddress dari gabungan dengan Reserved1 untuk mendukung Pemisahan Halaman Sumber dan Tujuan.
NextSourceAddress
Alamat fisik halaman kedua alamat sumber yang digunakan dalam pemisah halaman sumber.
Reserved2
Nilai ULONG64 yang dicadangkan untuk menggunakan mesin DMA atau driver penyedia DMA untuk digunakan. Driver penyedia NetDMA 2.0 dan yang lebih baru menggunakan anggota NextDestinationAddress dari gabungan dengan Reserved2 untuk mendukung Pemisahan Halaman Sumber dan Tujuan.
NextDestinationAddress
Alamat fisik halaman kedua alamat tujuan yang digunakan dalam hentian halaman tujuan.
UserContext1
Nilai ULONG64 yang dicadangkan untuk digunakan antarmuka NetDMA.
UserContext2
Nilai ULONG64 yang dicadangkan untuk digunakan antarmuka NetDMA.
Keterangan
Struktur NET_DMA_DESCRIPTOR menentukan informasi sumber, tujuan, dan kontrol untuk satu transfer DMA dalam daftar deskriptor DMA yang ditautkan.
Untuk memulai transfer DMA, antarmuka NetDMA menyediakan alamat fisik struktur NET_DMA_DESCRIPTOR pada parameter DescriptorPhysicalAddress dari fungsi ProviderStartDma driver penyedia DMA. Parameter DescriptorVirtualAddress berisi alamat virtual deskriptor.
Anggota NextDescriptor dari struktur NET_DMA_DESCRIPTOR berisi alamat fisik struktur NET_DMA_DESCRIPTOR berikutnya dalam daftar deskriptor yang ditautkan.
Antarmuka NetDMA memanggil fungsi ProviderAppendDma driver penyedia DMA untuk menambahkan daftar deskriptor DMA yang ditautkan setelah deskriptor terakhir pada saluran DMA.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung untuk driver NetDMA 2.0 di Windows Server 2008. (Menambahkan nextSourceAddress, NextDestinationAddress, DCAContext32, DCAContext16, dan anggota DCAContext8.) Didukung untuk driver NetDMA 1.1 di Windows Server 2008. Didukung untuk driver NetDMA 1.0 di Windows Server 2008 dan Windows Vista. |
Header | netdma.h (termasuk Netdma.h) |