Как разобрать системный вызов - PullRequest
0 голосов
/ 14 декабря 2011

Если у меня есть виртуальный адрес системного вызова, могу ли я разобрать этот системный вызов? Я хочу сделать это на работающем ядре, чтобы выяснить, какие адреса обрабатываются конкретным системным вызовом во время работы.

Я использую 32-битное ядро ​​2.6.38 (x86).

1 Ответ

0 голосов
/ 14 декабря 2011

Я не уверен, что ваш вопрос очень важен.

Пожалуйста, прочитайте больше о системных вызовах , ядер , операционных системах , linux и ядро ​​linux

По сути, системный вызов является (с точки зрения приложения) атомарной операцией, реализуемой одной машинной инструкцией (int 0x80,syscall и т. Д.) С несколькими инструкциями по бухгалтерскому учету до (например, загрузка аргументов системного вызова в регистры) и после (например, установка errno).Когда это происходит, управление переходит в ядро ​​с (своего рода) другим адресным пространством и другим защитным кольцом ;вот список системных вызовов linux

Реальный код, выполняющий системный вызов, находится внутри ядра.Вы можете получить код ядра Linux на kernel.org

См. Также Linux Assembly Howto и asm.sourceforge.net

Чтобы понять, что система вызывает для данного приложения или процесса, используйте strace

...