2009-11-02 3 views
1

Я пытаюсь добавить новый syscall в Red Hat 8.0, и я смущен каким-то аспектом механизма. Я следую этому руководству: http://www.linuxjournal.com/article/3326, в котором подробно описаны шаги по обновлению таблицы syscall в entry.S и unistd.h.Как syscall находится в Linux?

Тем не менее, я не могу понять, как компилятор действительно находит, где syscall реализован из этой информации. Очевидно, что есть что-то, что связано с #include s, но я не могу найти никаких указаний на включение в них, а также не обнаруживать многие из системных вызовов в коде. Что мне нужно сделать для моего syscall, который можно найти?

+0

Кстати, RedHat 8.0 действительно * действительно * старый к настоящему времени. Почему бы не работать с ядром Linux 2.6.31? Я бы использовал Gentoo как дистрибутив. Нет ничего лучше, чем Gentoo для программиста, ИМХО. –

ответ

5

Библиотека C предоставляет функции, которые выглядят как системные вызовы. На самом деле происходит то, что вызывается функция библиотеки C, а затем вызывается системный вызов.

Если вы добавите новый системный вызов, то для его удобства использования вам нужно будет добавить его в библиотеку C и перекомпилировать это тоже.

Или вы можете использовать функцию syscall и макросы, предоставленные библиотекой C: syscall и _syscall.

Просьба man syscall и man _syscall для получения более подробной информации.

Смежные вопросы