Подтвердить что ты не робот

Магические номера системного вызова reboot() Linux

Интерфейс программирования Linux имеет упражнение в главе 3, которое выглядит следующим образом:

При использовании Linux-специфичной перезагрузки() системный вызов для перезагрузки системы, Второй аргумент magic2 должен быть как один из множества магии номера (например, LINUX_REBOOT_MAGIC2). Каково значение этих номера? (Преобразование их в hexadecimal предоставляет ключ.)

На странице руководства нам сообщается, что magic2 может быть одним из LINUX_REBOOT_MAGIC2 (672274793), LINUX_REBOOT_MAGIC2A (85072278), LINUX_REBOOT_MAGIC2B (369367448) или LINUX_REBOOT_MAGIC2C (537993216). Я не смог расшифровать их значение в шестнадцатеричном формате. Я также посмотрел на /usr/include/linux/reboot.h, который также не дал никакого полезного комментария.

Затем я искал в исходном коде ядра для определения sys_reboot. Все, что я нашел, было объявлением в файле заголовка.

Поэтому мой первый вопрос: каково значение этих чисел? Мой второй вопрос: где sys_reboot определение и как вы его нашли?

EDIT. Я нашел определение в kernel/sys.c. Я только скорчил для sys_reboot и забыл grep для чисел MAGIC. Я решил, что определение должно быть скрыто за каким-то макро-трюком, поэтому я просмотрел файл System.map в /boot и нашел его рядом с ctrl_alt_del. Затем я перебрал этот символ, который привел меня к правильному файлу. Если бы я скомпилировал ядро ​​из исходного кода, я мог бы попытаться найти, какой файл объекта определил символ, и оттуда.

4b9b3361

Ответ 1

Просто догадайтесь, но эти цифры выглядят более интересными в hex:

672274793 = 0x28121969
 85072278 = 0x05121996
369367448 = 0x16041998
537993216 = 0x20112000

Дни рождения детей разработчиков или разработчиков?

Что касается поиска реализации syscall, я сделал git grep -n LINUX_REBOOT_MAGIC2 и нашел определение в kernel/sys.c. Я полагаю, символ sys_reboot генерируется SYSCALL_DEFINE4(reboot, ... gubbins.

Ответ 2

Это день рождения Линуса Торвальдса (разработчика ядра Linux и управления версией Git) и его трех дочерей. работает как магические номера для перезагрузки системы.

http://en.wikipedia.org/wiki/Linus_Torvalds