The Linux Programming Interface имеет упражнение в главе 3, которая идет как это:магических чисел в Linux перезагрузки() системного вызова
При использовании Linux-конкретной перезагрузки() системного вызова для перезагрузки системы, то второй аргумент magic2 должен быть указан как один из наборов магии номеров (например, LINUX_REBOOT_MAGIC2). Каково значение этих номеров? (Преобразование их в шестнадцатеричный дает ключ.)
страница человек говорит нам 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
. Я только grepped для sys_reboot
, и забыл grep для чисел MAGIC. Я решил, что определение должно быть скрыто за каким-то макро-трюком, поэтому я посмотрел файл System.map
под номером /boot
и нашел его рядом с ctrl_alt_del
. Затем я перебрал этот символ, который привел меня к правильному файлу. Если бы я скомпилировал ядро из исходного кода, я мог бы попытаться найти, какой файл объекта определил символ, и оттуда оттуда.
+1 только для даты;) – BlackBear
Это должно быть! Я должен был выровнять цифры! –
28 декабря 1969 года - дата рождения Линуса Торвальдса [Википедия]. Другие, кажется, даты рождения его детей, хотя я могу только подтвердить, что он родился в декабре 1996 года [случайный гуглинг]. –