У меня есть требование написать драйвер устройства Linux в пользовательском пространстве.Как улавливать системные вызовы в библиотеке пользовательского пространства в Linux?
Как написать библиотеку, которая при соединении с приложением может обрабатывать системные вызовы для определенного устройства.
Приложение должно быть в состоянии использовать open()
, read()
, write()
, ioctl()
на таких устройствах, как /dev/mydev0
, но эти вызовы должны прекратить в пользовательском пространстве библиотеки вместо модуля ядра.
Просьба сообщить, если это возможно и как я могу это достичь.
Вы можете подстерегать C оберток таких системных вызовов, используя обычные 'LD_PRELOAD' трюки; вы не можете напрямую захватить инструкции 'int 80' /' sysenter' (т. е. если кто-то называет «вручную» syscall, не проходя через оболочку libc) так же легко. –
Привет, Не могли бы вы рассказать о том, как эти «трюки» LD_PRELOAD работают? Это может быть что-то, что я могу использовать. –
http://superuser.com/a/370054/25859 –