Как добавить системный вызов Ядра Linux?

Я в настоящее время читаю Понятия Операционной системы 7-й выпуск Silberschartz, Galvin и Gagne. В конце главы 2 существует осуществление, "Добавьте системный вызов Ядра Linux". К сожалению, я понял структуру каталогов, что используемые авторы полностью отличаются с одним Ubuntu. Например, авторы упомянули "/usr/src/linux-2.x/include/asm-i386/unistd.h", но на моей машине, они:

  • /usr/src/linux-headers-2.6.38-10
  • /usr/src/linux-headers-2.6.38-10-generic

И в этой папке, я ничто не мог найти названным "asm-i386" :(. Интересно там документация, указанная для Ubuntu? Любое предложение значительно ценилось бы.

Спасибо,

4
задан 14 July 2011 в 00:28

2 ответа

Ubuntu не делает ничего специального. Ваша первая трудность состоит в том, что Вам не установили источник ядра, только заголовки ядрa. Авторы описывают систему с копией источника ядра в /usr/src/linux-2.x. Если Вы только компилируете внешние модули, заголовки, которые являются тем, что Вы видите в своей системе, достаточно. Ubuntu поставляет заголовки ядрa с этой целью в linux-headers-* пакеты (который Вы обычно устанавливали бы через зависимость от linux-headers-genericInstall linux-headers-genericметапакета ). Если Вы нуждаетесь в целом источнике, получаете сжатый архив от linux-source-2.6Install linux-source-2.6двоичного пакета .

Другая вещь состоит в том, что структура каталогов изменила немногим более, чем время; архитектурно-зависимые заголовки, перемещенные от include/asm-$ARCH кому: arch/$ARCH/include/asm. Кроме того, i386 и x86_64 архитектура была объединена в объединенный x86 в 2.6.24. (Больше деталей здесь.), Таким образом, теперь необходимо заглянуть arch/x86/include вместо include/asm-i386.

Вот несколько полезных ресурсов для хакеров ядра Linux:

И также считайте этот поток на Unix & Linux, которая объясняет, как определить местоположение реализации существующего syscall.

5
ответ дан 1 December 2019 в 09:06

/usr/src/linux-headers-2.6.38-10-generic/include/linux/unistd.h

или в будущих ядрах:

/usr/src/linux-headers-KERNEL_VERSION/include/asm-generic/unistd.h

:)

4
ответ дан 1 December 2019 в 09:06

Другие вопросы по тегам:

Похожие вопросы: