-
「名前」 - 関数の目的を簡単に示します。
-
「形式」 - ソースコードに含まれる関数のエントリポイントの構文を示します。必要なヘッダーには、#include 指示子を示します。
-
「インタフェースレベル」 - すべてのアーキテクチャ依存関係について説明します。
-
「引数」 - 関数を呼び出すのに必要なすべての引数について説明します。
-
「機能説明」 - 関数に関する概要情報を記載します。
-
「戻り値」 - 関数を呼び出した結果の戻り値とメッセージについて説明します。
-
「コンテキスト」 - 関数を呼び出すことのできるドライバコンテキスト (ユーザー、カーネル、割り込み、および高レベルな割り込み) を示します。
-
ユーザースレッドにより直接呼び出された場合は、ドライバ関数にユーザーコンテキストがあります。ドライバの read(9E) エントリポイントを read(2) システムコールから呼び出した場合も、ユーザーコンテキストがあります。
-
カーネルのほかの部分から呼び出された場合は、ドライバ関数にカーネルコンテキストがあります。ブロックデバイスドライバでは、デバイスにページを書き込むために、strategy(9E) エントリポイントがページデーモンによって呼び出される可能性があります。ページデーモンは現在のユーザースレッドとは関係がないので、この場合、strategy(9E) がカーネルコンテキストを持ちます。
-
割り込みコンテキスト はカーネルコンテキストですが、同時にそれに関連する割り込みレベルも持ちます。ドライバ割り込みルーチンは、割り込みコンテキストを持ちます。
注 –
割り込みコンテキストでも入手できる mutex をユーザーコンテキストまたはカーネルコンテキストで入手した場合、この mutex を持つユーザーコンテキストスレッドまたはカーネルコンテキストスレッドは、この mutex を所有している限り、割り込みコンテキストによって強制されるすべての制限に影響されます。ドライバで mutex を適切に処理する方法について詳しくは、mutex(9F) のマニュアルページを参照してください。
-
高レベルの割り込みコンテキストは、割り込みコンテキストの、より制限の厳しい形式です。ddi_intr_hilevel(9F) で、割り込みが高レベルの場合、ddi_add_intr(9F) を使ってその割り込みに追加されたドライバ割り込みルーチンは、高レベルの割り込みコンテキストで実行します。このような割り込みルーチンは、ddi_trigger_softintr(9F)、mutex_enter(9F) 、および mutex_exit(9F) を呼び出すことしかできません。さらに、mutex_enter(9F) とmutex_exit(9F) は、ddi_get_iblock_cookie(9F) で返された ddi_iblock_cookieで初期化される mutex 上でしか呼び出せない可能性があります。
-
「関連項目」 - 「使用法」とソースから参照される関連する関数で、さらに詳細な情報を参照できます。
-
「使用例」 - ドライバコードで関数を使用する方法を示します。