Linuxの(platform_driver)共通インターネットデバイスドライバAPI関数

目次

図1に示すように、デバイス層の登録、キャンセル機能

1.1、platform_device_register

1.2、platform_device_unregister

1.3、platform_add_devices

2、ドライバ層の登録解除機能

2.1、platform_driver_register

 2.2、platform_driver_登録解除

3、資源の機能へのアクセス

3.1、platform_get_resource

3.2、platform_get_irq

3.3、platform_get_resource_byname

3.4、platform_get_irq_byname

図4に示すように、メモリ・リソース機能を割り当てます

4.1、request_region

4.2、request_mem_region

 4.3、devm_request_region

 4.4、devm_request_mem_region

5、無料のアップメモリ​​リソース

5.1、release_region

5.2、release_ mem_region

5.3、devm_release_region

5.4、devm_release_mem_region


図1に示すように、デバイス層の登録、キャンセル機能

1.1、platform_device_register

プロトタイプ:int型platform_device_register(構造体platform_device * PDEV )
機能:カーネルへのプラットフォームデバイスまで
PDEV:パラメータ登録するには、プラットフォームのデバイス構造のポインタ
戻り値:0:登録が成功すると、負:登録失敗 

1.2、platform_device_unregister

プロトタイプ:void platform_device_unregister(構造体platform_device * PDEV )
機能:登録解除プラットフォームカーネルからのデバイス
パラメータ:PDEV:ログ構造へのポインタプラットフォームデバイス
戻り値:なし

1.3、platform_add_devices

プロトタイプ:int型platform_add_devices(構造体platform_device **開発者 、int型NUM)
機能:カーネルNUMプラットフォーム機器までいったん
パラメーター:開発者は、アレイプラットフォームに登録するための手段であり
戻る:0:登録が成功すると、負:登録に失敗しました

2、ドライバ層の登録解除機能

2.1、platform_driver_register

int型platform_driver_register(構造体platform_driver * DRV)
機能:カーネルをドライブするためのプラットフォーム。したがって、プラットフォームは構造用駆動装置のプローブ機能カーネル実行プラットフォームと一致するように上昇したとき
のパラメータ:登録プラットフォーム構造体ポインタを駆動するために:DRVを
0:戻り値を登録が成功すると、負:登録失敗

 2.2、platform_driver_登録解除

空platform_driver_の登録解除(構造体platform_driver * DRV )
機能:カーネルからプラットフォームのデバイスドライバのキャンセル、デバイスプラットフォームはとてもスローカーネル実行プラットフォーム駆動型構造の一致した
remove関数の
DRV:登録するドライブプラットフォーム構造体ポインタパラメータを

3、資源の機能へのアクセス

3.1、platform_get_resource

プロトタイプ:
構造体platform_get_resourceリソース*(DEV *構造体platform_device、unsigned int型、unsigned int型のNUM入力)
機能:
アドレス構造のデバイスリソース構造の指定された型の装置との関数ポインタを検出することによって。この関数は、駆動層せるの検出機能である

パラメータ:DEV:デバイスのポインタが実際にプローブ関数の引数である
リソースタイプ:タイプ
NUM:同じリソース、添字番号が付け替え、およびリソースアレイ素子層は、同一ではありません。(これは注目すべきである)
戻り値:最初のアドレスリソース構造アレイ構造は、デバイス層リソースに対応します。NULL:失敗しました

3.2、platform_get_irq

プロトタイプ:INT platform_get_irq(構造体platform_device * DEV 、unsigned int型のNUM)
機能:指定したデバイス構造ポインタデバイス割り込み開始番号リソースによって得られた数
のパラメータ:
DEV:デバイスのポインタが実際にプローブ関数パラメータである
:NUM 同様のリソースの再番号、リソース・アレイとデバイス層の後に下付き番号は同一ではありません。(この点に注意してください)
> 0:戻り値割り込み開始ナンバリングリソースを、-ENXIO:失敗しました。

3.3、platform_get_resource_byname

プロトタイプ:
構造体リソース* platform_get_resource_byname(構造体platform_device * DEV、
タイプのunsigned int型、constの文字*名)
機能:デバイス構造の名前を指定する取得デバイスポインタを経由してリソース構造のメモリ・アドレスのタイプを指定
パラメータ:
DEV:デバイスのポインタ、実際にはプローブであります関数パラメータ
名:リソース名
戻り値:デバイス層リソースに対応する第1のアドレスリソース構造アレイ構造。NULL:失敗しました

3.4、platform_get_irq_byname

プロトタイプ:INT platform_get_irq_byname(構造体platform_device * DEV 、CONST文字*名)
機能:指定ポインタデバイス割り込み開始番号リソースにより得られるデバイス構造の名前
パラメータ:
DEV:デバイスのポインタが実際にプローブ関数パラメータである
割り込みリソース名:名前
戻り値:> 0:割り込み開始ナンバリング資源; -ENXIO:失敗

図4に示すように、メモリ・リソース機能を割り当てます

4.1、request_region

プロトタイプ:
ます。#define request_region(スタート、N-、名前)__request_region(&ioport_resource、(スタート)、(N-)、(名)、0)
機能:IOポートのカーネル適用期間(IORESOURCE_IOのタイプ)(未使用)
パラメータ:
スタート:開始アドレス
N:連続サイズ
名:ユーザー名、カーネルの登録。
戻り値:
非NULL:合格者には、リソース構造のメモリアドレス*リソース構造体の
NULL:IOポートのリソースアプリケーションが他の人によって占領されている、アプリケーションが失敗します。

4.2、request_mem_region

プロトタイプ:
の#define request_mem_region(スタート、N-、名前)__request_region(&iomem_resource、(スタート)、(N-)、(名)、0)
機能:カーネルメモリセクションIO(適用するIORESOURCE_MEMのタイプ)
パラメータ:
スタート:スタートアドレス
N:連続サイズ
名:ユーザー名、カーネルの登録。
戻り値:
非NULL:合格者には、リソース構造のメモリアドレス*リソース構造体の
NULL:アプリケーションのIOメモリリソースは、他の人によって占領されている、アプリケーションが失敗します。
非常に多くの実際のプログラミングではこのマクロの使用。

 4.3、devm_request_region

プロトタイプ:
ます。#define devm_request_region(DEV、[スタート]、N-、名)\
__devm_request_region(DEV、&ioport_resource、(スタート)、(N-)、(名))
機能:IOポート(のカーネルの適用期間IORESOURCE_IOのタイプ)、機能とrequest_region同じ
パラメータ:
DEV:デバイスのポインタ、構造体*デバイスの
開始:開始アドレス
N:連続サイズ
名:ユーザー名、カーネルの登録。
戻り値:
非NULL:合格者には、リソース構造のメモリアドレス*リソース構造体の
NULL:IOポートのリソースアプリケーションが他の人によって占領されている、アプリケーションが失敗します。

 4.4、devm_request_mem_region

プロトタイプ:
の#define devm_request_mem_region(DEV、[スタート]、N-、名)\
__devm_request_region(DEV、&iomem_resource、(スタート)、(N-)、(名))
機能:カーネルの適用期間IOメモリ(IORESOURCE_MEMのタイプ)(使用適用しますIOレジスタ
パラメータ:
DEV:デバイスのポインタ、構造体*デバイスの
開始:開始アドレス
N:連続サイズ
名:ユーザー名、カーネルの登録。
戻り値:
非NULL:合格者には、リソース構造のメモリアドレス*リソース構造体の
NULL:アプリケーションのIOメモリリソースは、他の人によって占領されている、アプリケーションが失敗します。
非常に多くの実際のプログラミングではこのマクロの使用。

5、無料のアップメモリ​​リソース

5.1、release_region

プロトタイプ:
ます。#define release_region(スタート、N-)__release_region(&ioport_resource、(スタート)、(N-))
機能:request_regionアプリケーションを使用イオリリースポートスペース期間。
パラメータ:

開始:開始アドレス
N:連続サイズ

5.2、release_ mem_region

#define release_mem_region(開始、N)__release_region (&iomem_resource、(スタート)、(N))
機能:request_mem_regionイオアプリケーションのメモリ空間を使用して、放出期間。
パラメータ:
スタート:開始アドレス
N:連続サイズ

5.3、devm_release_region

__devm_release_region(DEV、&ioport_resource、(スタート)、(N))
と同じこのマクロ前release_region、より多くの種類の構造体デバイスのポインタ装置DEVパラメータ*

5.4、devm_release_mem_region

devm_release_mem_regionのに#define(DEV、スタート、N-)\
__devm_release_region(DEV、&iomem_resource、(スタート)、(N-))
と同じこのマクロ以前release_mem_regionが、より多くのタイプstructデバイスのポインタデバイスdevのパラメータ*

 

 

 

 

公開された136元の記事 ウォンの賞賛112 ・は 60000 +を見て

おすすめ

転載: blog.csdn.net/shenlong1356/article/details/104448348