LinuxのI / Oポートの割り当て

ご想像のとおり、あなたは残して、最初にあなたがこれらのポートへの唯一の権限を持っていることを確認することなく、I / Oポートを攻撃し始めてはいけません。カーネルがあなたのドライバは必要なポートを宣言できるようにするために登録インタフェースを提供します。このインタフェースコア機能はrequest_regionです。

 

書式#include <linuxの/ ioport.h>

構造体リソース* request_region(unsigned long型最初の、符号なしの長いN、CONSTのchar *名)。

 

この関数は、最初のスタートから、あなたはn個のポートを使用したいカーネルを伝えます。Nameパラメータは、お使いのデバイスひなこする必要があります。割り当ては、戻り値がNULLで成功した場合。NULLあなたがrequest_regionから取得する場合、あなたはポートを使用する必要はありません。

 

ポート割り当てはすべてでは/ proc / ioportsに表示されます。あなたはポートグループのニーズを割り当てることができない場合は、これが最初にそこに来る人を確認するための場所です。

 

;および機能ドライバがあなたをチェックできるようにするために、ボイドrelease_region(unsigned long型開始、符号なしlong n)を:あなたは(モジュールがアンロードされ、おそらく)I / Oポートのセットを実行すると、彼らが使用して、システムに返されるべき与えられたI / Oポートグループが利用可能かどうか:

int型check_region(unsigned long型最初の、符号なしのロングN)。

 

動作検査とその後の割り当ては、私たちの原子ではない、その戻り値は分布が成功することを保証するものではありませんので、ここでは、与えられたポートは、戻り値は、この関数の負のエラーコードで、利用できない場合は、お勧めしません。いくつかのドライバはまだそれを使用しているため、ここに記載されていますが、request_regionを呼び出すために使用されている、それが原子を割り当てるための安全な方法が完了することを保証するためにロックするために必要です。

おすすめ

転載: www.cnblogs.com/fanweisheng/p/11142214.html