Я пытаюсь установить, использует ли мое ядро Linux инструкции sysenter/sysexit для инициирования и завершения системных вызовов из пространства пользователя.
Ядро, которое я использую, — «2.6.31.12-174.2.3.fc12.x86_64».
Есть идеи?
М.
решение1
sysenter/sysexit больше зависит от вашего процессора, чем от ядра - Linux использует его с первых 2.5 дней. Linux выбирает либо SYSENTER, SYSCALL, либо устаревшие методы int 80 в зависимости от того, на каком типе процессора он работает.
Не уверен, как вы можете подтвердить, что он действительно используется. Я не думаю, что Systemtap или LTT будут смотреть на достаточно низком уровне. Может быть, вы могли бы инструментировать ядро и добавить несколько точек трассировки в код vDSO...
решение2
Единственное предложение, которое я могу придумать, это использоватьНабор инструментов трассировки Linuxчтобы создать дамп ядра и разобраться в системных вызовах.
решение3
Вы могли бы рассмотреть возможность рассмотренияСистемаTap. Благодаря этому вы сможете написать скрипт, который будет запускать действие всякий раз, когда происходит желаемое вами событие, включая системные вызовы.