1

カーネル空間で、デバイス レジスタを 64K アライン アドレスでプログラムする必要があります。現在、kmalloc() を使用してメモリを割り当てていますが、この 64K を整列する方法がわかりません。Linux はこれを行う API を提供していますか? 同じことをするために自分のコードを書く必要がありますか?

4

1 に答える 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 に答える