問題タブ [network-driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows NIC ドライバーのパラメーターをプログラムで変更する方法は?
MTU サイズ、RX/TX キュー サイズ、および割り込み調停モードを設定するコードを記述する必要があります。そのような目的で使用できる API を教えてください。
c - 割り当てられたハードウェア レジスタ メモリに書き込みおよびアクセスするための変数で void ポインタを使用できますか?
r8169_main ドライバーでは、レジスターの変数を void ポインターとして持っています。
このページでは
カーネルは通常、仮想アドレスを使用します。kmalloc()、vmalloc()、および同様のインターフェイスによって返されるアドレスはすべて仮想アドレスであり、void * に格納できます。
仮想メモリ システム (TLB、ページ テーブルなど) は、仮想アドレスを CPU の物理アドレスに変換し、「phys_addr_t」または「resource_size_t」として格納されます。カーネルは、レジスタなどのデバイス リソースを物理アドレスとして管理します
そのため、物理アドレスを使用してレジスタを処理するには、phys_addr_t
または にすることができますresource_size_t
。しかし、なぜr8168イーサネットドライバーで彼らがこのようにしたのかについて私は混乱しています
ボイドポインタで
void ポインタは通常仮想アドレスで使用されますが、レジスタは仮想アドレスではありません。レジスタにvoidポインタを使用する理由は何でしょうか
それとも、void ポインタには何でも含めることができるからですか。
その再利用性。任意のものを指すことができ、任意のものに置き換えることができます。これは、resource_size_t または phys_addr_t を必要とするレジスタを使用して、物理アドレス データ型の代わりに void ポインタを使用できることを意味します。
void __iomem *mmio_addr;
または、メモリにマップされたIOでは、すべてのレジスタがドライバとデバイスにもあるメモリ領域に配置されているためです。