Solaris 動的トレースガイド

特殊なアクション

この節では、データ記録アクションでも破壊アクションでもないアクションについて説明します。

投機アクション

投機トレース関連のアクションには、speculate()commit()、および discard() があります。これらのアクションについては、第 13 章投機トレースを参照してください。

exit()

void exit(int status)

exit() アクションでは、トレースをただちに終了できます。また、DTrace コンシューマに、トレースを終了し、最終処理を行い、指定された状態 status で exit(3C) を呼び出すように指示できます。exit() は状態をユーザーレベルに戻すという点でデータ記録アクションに分類されます。ただし、その他のデータ記録アクションとは異なり、exit() を投機的にトレースすることはできません。exit() は、バッファーポリシーとは関係なく、DTrace コンシューマを終了させます。exit() はデータ記録アクションなので、落とされることがあります。

exit() を呼び出すと、ほかの CPU 上ですでに実行中の DTrace アクションだけが最後まで実行されます。どの CPU 上でも、新しいアクションは実行されません。この規則の唯一の例外は、END プローブの処理です。END プローブは、DTrace コンシューマが exit() アクションを処理し、トレースを終了するように指示したあとで呼び出されます。