機械翻訳について

copyout

指定したDTraceバッファから指定したユーザー空間アドレスに、指定したサイズをコピーします。

void copyout(void *src, uintptr_t addr, size_t size)

copyout関数は、指定されたバイト数を指定されたDTraceバッファから指定されたユーザー空間アドレスにコピーする破壊的関数です。 ユーザー空間アドレスは現在のスレッドに関連付けられたプロセスのアドレス空間にあります。 ユーザー空間アドレスが現在のアドレス空間で有効なフォルト・インのページに対応していない場合は、エラーが生成されます。

例8-10 コピー・アウトを使用して、DTraceバッファから指定したユーザー領域アドレスにデータをコピーする方法

この例は、copyoutを使用して、ユーザーがlsコマンドを実行するときに、writeシステム・コールのユーザー・スペース・アドレスに文字列値DTraceを書き込む方法を示しています。 このスクリプトを実行すると、システムでlsコマンドが実行されるたびに、コマンドによって返される最初の5バイトが文字列DTraceによって置換されます。

#pragma D option destructive
syscall::write:entry
/execname == "ls"/
{
    copyout("DTrace", arg1, 5);
}