2015-11-19 8 views
5

私は、コヒーレントなメモリを割り当て、対応する仮想および物理アドレスを返すカーネルモジュールを作成しています。cdevからデバイスを取得する方法

モジュールをcdevとして登録し、dma_alloc_coherent()でスペースを割り当てて、dma_common_mmap()を使用してmmapしたかったのです。

dma_common_mmap()へのポインタstruct deviceへのポインタが必要です:どのように入手できますか?

答えて

0
void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag); 

この関数は、バッファの割り当てとマッピングの両方を処理します。最初の2つの引数は、必要なバッファのデバイス構造とサイズです。 この関数は、DMAマッピングの結果を2か所で返します。関数からの戻り値は、ドライバが使用できるバッファのカーネル仮想アドレスです。 関連するバスアドレスは、dma_handleに返されます。

+0

dma_alloc_coherentとmmapを動作させることができましたか。これはできない。私は自分の読み書き機能を書かなければならなかった。 – user1876942

関連する問題