カーネル空間で、デバイス レジスタを 64K アライン アドレスでプログラムする必要があります。現在、kmalloc() を使用してメモリを割り当てていますが、この 64K を整列する方法がわかりません。Linux はこれを行う API を提供していますか? 同じことをするために自分のコードを書く必要がありますか?
質問する
2743 次
1 に答える
2
次のアプローチを試してください。
最初に kmem_cache_create(...) 関数を呼び出して、構造体のキャッシュ プールを作成します。キャッシュ プールは、次のように 64K に配置する必要があります。
buff_64k_cachep = kmem_cache_create("buff_64k_cache",
sizeof(struct test_struct),
1<<16, /* 64k alignment */
flags,
);
次に kmem_cache_alloc(...) と kmem_cache_free(...) を呼び出して、必要なバッファを割り当てて解放します。
于 2013-05-17T09:03:48.287 に答える