Ядро ОС Linux

       

Как установить свой собственный системный вызов.


  • Создайте каталог в /usr/src/linux/ для вашего кода.
  • Поместите нужные вам библиотеки в /usr/include/sys/ и /usr/include/linux/
  • Поместите ваш отлинкованный модуль в ARCHIVES и подкаталог в строки SUBDIRS высокого уровня создания файла. См fs/Makefile - fs.o.
  • Поместите #define __NR_xx в unistd.h для присвоения номера вашему системному запросу, где xx - индекс описания вашего вызова. Она будет использована для установки вектора с помощью sys_call_table вызываемого ваш код.
  • Введите отправную точку для вашего системного запроса в sys_call_table в sys.h. Она будет зависеть от индекса xx в предыдущем пункте. Переменная NR_syscalls будет пересчитана автоматически.
  • Измените какой-нибудь код ядра в /fs/mm/ для установки инсрументов нужных вашему вызову.
  • Запустите процесс компановки на высшем уровне для создания вашего кода в ядре
  • После этого вам останется лишь занести системный вызов в ваши библиотеки, или использовать макрос _syscalln() в программе использующей ваши разработки, для разрешения им доступа к новому системному вызову.

    В библиографии содержаться несколько полезных ссылок на книги охватывающие эту тему. В частности полезно будет просмотреть "The 386DX Microprocessor Programmer's Reference Manual" и "Advanced 80386 Programming Techniques" Джеймса Турли.



    Содержание раздела