拡張システム・コール・プローブ・マネージャー (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 プローブ・マネージャーでサポートされるシステム・コール
| システム・コール名 | カーネルの項目名 |
|---|---|
| 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_SELF と PV_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_USER と PV_PROBEVUE_TRC_SYSCALL の特権では、ユーザーの WPAR にあるユーザー・スペース関数、またはユーザーの WPAR にあるプロセスのシステム・コールのみがプローブ可能です。 システム・コールをプローブする場合は、syscall プローブ指定の 2 番目のフィールドを、WPAR で表示できる有効なプロセス ID に設定する必要があります。 2 番目のフィールドに * の値を割り当てることはできません。
ProbeVue セッションがモバイル WPAR で開始されると、WPAR は一時的にチェックポイント指定不可の状態に切り替わります。 ProbeVue セッションが終了すると、WPAR は再度チェックポイント指定可能になります。