Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

ASSERT() を使用して無効な前提条件を見つける

アサーションは非常に役立つ形式のアクティブドキュメントです。ASSERT(9F) の構文は次のとおりです。

void ASSERT(EXPRESSION)

ASSERT() マクロは、真であることが予期されている条件が実際には偽である場合、カーネルの実行を停止します。ASSERT() はプログラマに、特定のコードによって作成された前提条件を検証する方法を提供します。

ASSERT() マクロが定義されるのは、DEBUG コンパイルシンボルが定義されている場合のみです。DEBUG が定義されていない場合、ASSERT() マクロは有効になりません。

次のアサーションの例では、特定のポインタの値は NULL ではないという前提条件をテストしています。

ASSERT(ptr != NULL);

ドライバが DEBUG を使用してコンパイルされていて、実行のこの時点で ptr の値が NULL である場合、次のパニックメッセージがコンソールに出力されます。

panic: assertion failed: ptr != NULL, file: driver.c, line: 56

注 - ASSERT (9F) は DEBUG コンパイルシンボルを使用するため、どの条件付きデバッグコードでも DEBUG を使用します。