拡張システム・コール・プローブ・マネージャー (syscallx)

syscallx プローブ・マネージャーの場合には逆に、すべての基本システム・コールをトレースできます。 基本システム・コールはカーネル拡張および基本カーネル拡張によってエクスポートされる 1 組のシステム・コールであり、これらはブート後すぐに使用できます。 後でロードされる可能性のあるカーネル拡張からエクスポートされるシステム・コールはサポートされません。 特定のシステム・コントロールまたはすべてのシステム・コールを、プローブ・ポイント組によって指定できます。 ただし、syscall プローブ・マネージャーとは異なり、syscallx のプローブ・ポイント組の 3 番目のフィールドは、実際のカーネル・エントリー・ポイント関数を示している必要があります。 また syscallx プローブ・マネージャーは、プロセス ID がプローブ・ポイント組の 2 番目のフィールドとして指定されている場合、特定のプロセスでのプローブの起動を制限します。

以下に例をいくつか示します。

/* Probe point tuple to probe the read system call entry for all processes */
@@syscallx:*:kread:entry
/* Probe point tuple to probe the fork system call exit for process with ID 434 */
@@syscallx:434:kfork:exit
/* Probe point tuple to probe entry for all base system calls */
@@syscallx:*:*:entry
/* Probe point tuple to probe exit for all base system calls for process 744 */
@@syscallx:744:*:exit

syscall プローブ・マネージャーでサポートされるシステム・コール

次の表では、syscall プローブ・マネージャーでサポートされるシステム・コール、およびカーネルでの実際の項目名を示します。
注: カーネル・エントリー名は、ここでは文書化の目的でのみ提供されています。 カーネルの項目名は、リリースごとに、またはサービスの更新後に変更される可能性があります。
表 1. syscall プローブ・マネージャーでサポートされるシステム・コール
システム・コール名 カーネルの項目名
absinterval absinterval
accept accept1
バインド (bind) バインド (bind)
閉じる 閉じる
creat creat
execve execve
exit _exit
fork kfork
getgidx getgidx
getgroups getgroups
getinterval getinterval
getpeername getpeername
getpid _getpid
getppid _getppid
getpri _getpri
getpriority _getpriority
getsockname getsockname
getsockopt getsockopt
getuidx getuidx
incinterval incinterval
kill kill
listen する listen する
lseek klseek
mknod mknod
mmap mmap
mq_close mq_close
mq_getattr mq_getattr
mq_notify mq_notify
mq_open mq_open
mq_receive mq_receive
mq_send mq_send
mq_setattr mq_setattr
mq_unlink mq_unlink
msgctl msgctl
msgget msgget
msgrcv __msgrcv
msgsnd __msgsnd
nsleep _nsleep
開く (open) kopen
pause _pause
pipe pipe
plock plock
poll _poll
読み取り kread
reboot reboot
recv _erecv
recvfrom _enrecvfrom
recvmsg _erecvmsg
選択 _select
sem_close _sem_close
sem_destroy sem_destroy
sem_getvalue sem_getvalue
sem_init sem_init
sem_open _sem_open
sem_post sem_post
sem_unlink sem_unlink
sem_wait _sem_wait
semctl semctl
semget semget
semop __semop
semtimedop __semtimedop
send _esend
sendmsg _esendmsg
sendto _esendto
setpri _setpri
setpriority _setpriority
setsockopt setsockopt
setuidx setuidx
shmat shmat
shmctl shmctl
shmdt shmdt
shmget shmget
shutdown shutdown
sigaction _sigaction
sigpending _sigpending
sigprocmask sigprocmask
sigsuspend _sigsuspend
ソケット ソケット
socketpair socketpair
stat statx
waitpid kwaitpid
書き込み kwrite

WPAR での実行

ワークロード・パーティションまたはWPARは、AIX®オペレーティング・システムの単一インスタンス内で仮想化されたオペレーティング・システム環境です。 WPAR 環境は、標準の AIX オペレーティング・システム環境とは多少異なります。

WPAR 環境では動的トレースがサポートされています。 デフォルトでは、WPAR を作成すると、PV_PROBEVUE_TRC_USER_SELFPV_PROBEVUE_TRC_USER の特権のみがその WPAR に割り当てられ、これらの特権が WPAR システムのスーパーユーザー (root) に付与されます。 グローバル区画の管理ユーザーは、設定されているデフォルト WPAR 特権の値を変更したり、WPAR の作成時に追加特権を明示的に割り当てたりできます。

WPAR の特権は、通常グローバル区画と同じ意味を持っています。 WPAR に PV_PROBEVUE_TRC_KERNEL または PV_PROBEVUE_TRC_MANAGE を割り当てる場合は注意が必要です。 PV_PROBEVUE_TRC_KERNEL 特権を持つユーザーはグローバル・カーネル変数にアクセスできますが、 PV_PROBEVUE_TRC_MANAGE 特権を持つユーザーは ProbeVue パラメーターの値を変更したり、 ProbeVueをシャットダウンしたりできます。 このような変更は、他の区画のユーザーも含めて、すべてのユーザーに影響を与えます。

WPAR で probevue コマンドを実行した場合、これは他の WPAR またはグローバル区画で実行されるプロセスを認識しません。 このため、ユーザーの同じ WPAR でのみプロセスをプローブできます。 この区画外にあるプロセス ID がプローブ指定に含まれている場合は、probevue コマンドが失敗します。 WPAR の PV_PROBEVUE_TRC_USERPV_PROBEVUE_TRC_SYSCALL の特権では、ユーザーの WPAR にあるユーザー・スペース関数、またはユーザーの WPAR にあるプロセスのシステム・コールのみがプローブ可能です。 システム・コールをプローブする場合は、syscall プローブ指定の 2 番目のフィールドを、WPAR で表示できる有効なプロセス ID に設定する必要があります。 2 番目のフィールドに * の値を割り当てることはできません。

ProbeVue セッションがモバイル WPAR で開始されると、WPAR は一時的にチェックポイント指定不可の状態に切り替わります。 ProbeVue セッションが終了すると、WPAR は再度チェックポイント指定可能になります。