Администратор тестов расширенных системных вызовов (syscallx)
Администратор тестов syscallx позволяет отследить все системные вызовы. Базовые системные вызовы - это набор системных вызовов, экспортируемый ядром и его базовыми расширениями, и доступный сразу после загрузки. Не поддерживаются системные вызовы, загружаемые уже после загрузки системы. В кортеже тестовой точки может быть указан отдельный системный вызов или же все вызовы. В отличие от администратора тестов syscall, третье поле кортежа тестовой точки для syscallx должно указывать фактическую функцию точки входа ядра. Если ИД процесса указан во втором поле кортежа тестовой точки, то администратор тестов syscallx ограничивает число активируемых тестов для данного процесса.
Примеры:
/* Кортеж тестовой точки для тестирования системного вызова read для всех процессов */
@@syscallx:*:kread:entry
/* Кортеж тестовой точки для тестирования системного вызова fork для процесса 434 */
@@syscallx:434:kfork:exit
/* Кортеж тестовой точки для тестирования точки входа всех системных вызовов */
@@syscallx:*:*:entry
/* Кортеж тестовой точки для тестирования точки входа всех системных вызовов для процесса 744 */
@@syscallx:744:*:exit
Системные вызовы, поддерживаемые администратором тестов syscall
| Имя системного вызова | Имя точки входа ядра |
|---|---|
| absinterval | absinterval |
| accept | accept1 |
| bind | bind |
| close | close |
| 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 |
| read | kread |
| reboot | reboot |
| recv | _erecv |
| recvfrom | _enrecvfrom |
| recvmsg | _erecvmsg |
| select | _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 |
| выключение | выключение |
| sigaction | _sigaction |
| sigpending | _sigpending |
| sigprocmask | sigprocmask |
| sigsuspend | _sigsuspend |
| socket | socket |
| socketpair | socketpair |
| stat | statx |
| waitpid | kwaitpid |
| write | kwrite |
Запуск в WPAR
Разделы рабочей схемы (WPAR) - это виртуальные среды операционной системы, работающие под управлением одного экземпляра реальной операционной системы AIX. Среда WPAR некоторым образом отличается от стандартной среды операционной системы AIX.
В среде WPAR поддерживается динамическая трассировка. По умолчанию при создании WPAR этому разделу WPAR будут присвоены только привилегии PV_PROBEVUE_TRC_USER_SELF и PV_PROBEVUE_TRC_USER, причем эти права доступа будут предоставлены администратору (root) системы WPAR. Пользователь admin из глобального раздела может изменить значение набора привилегий WPAR, задаваемое по умолчанию, или может явным образом присвоить дополнительные права доступа при создании WPAR.
Привилегии в разделе WPAR обычно имеют такое же смысловое значение, как и в глобальном разделе. Следует проявлять осторожность при присвоении привилегий PV_PROBEVUE_TRC_KERNEL или PV_PROBEVUE_TRC_MANAGE разделу WPAR. Любой пользователь с правами доступа PV_PROBEVUE_TRC_KERNEL может обратиться к глобальным переменным ядра, а пользователь с правами доступа PV_PROBEVUE_TRC_MANAGE может изменить значения параметров ProbeVue или завершить работу ProbeVue. Эти изменения отразятся на всех пользователях, даже из других разделов.
При вводе команды probevue в разделе WPAR в нем будут невидимы процессы, запущенные в других WPAR или в глобальном разделе. Поэтому можно тестировать процессы только в собственном WPAR. Команда probevue не будет выполнена, если в спецификации теста содержится ИД процесса, выполняемого за пределами данного раздела. Права доступа PV_PROBEVUE_TRC_USER и PV_PROBEVUE_TRC_SYSCALL в разделе WPAR позволяют тестировать только функции пользовательского пространства или системные вызовы процессов, выполняемых в собственном WPAR. При тестировании системных вызовов необходимо во втором поле спецификации теста syscall указать допустимый ИД процесса, видимого в разделе WPAR. Использование значения * во втором поле не поддерживается.
Если сеанс ProbeVue инициирован в мобильном WPAR, то выполняется временное переключение WPAR в состояние, не допускающее использование контрольных точек. После завершения сеанса ProbeVue в разделе WPAR опять можно использовать контрольные точки.