Die Linux-Programmierschnittstelle enthält eine Übung in Kapitel 3, die folgendermaßen aussieht:
Wenn Sie den Linux-spezifischen Systemaufruf reboot () zum Neustart des Systems verwenden, muss das zweite Argument, magic2, als eine von mehreren magischen Zahlen angegeben werden (z. B. LINUX_REBOOT_MAGIC2). Welche Bedeutung haben diese Zahlen? (Die Konvertierung in hexadezimal liefert einen Hinweis.)
Die Manpage gibt an, dass es magic2sich um LINUX_REBOOT_MAGIC2 (672274793), LINUX_REBOOT_MAGIC2A (85072278), LINUX_REBOOT_MAGIC2B (369367448) oder LINUX_REBOOT_MAGIC232 (537) handeln kann. Ich konnte ihre Bedeutung nicht hexadezimal entziffern. Ich habe mir auch angeschaut /usr/include/linux/reboot.h, was auch keinen hilfreichen Kommentar gab.
Ich habe dann im Quellcode des Kernels nach der sys_rebootDefinition gesucht . Ich fand nur eine Deklaration in einer Header-Datei.
Meine erste Frage lautet daher: Welche Bedeutung haben diese Zahlen? Meine zweite Frage ist, wo ist sys_rebootdie Definition und wie haben Sie sie gefunden?
EDIT : Ich fand die Definition in kernel/sys.c. Ich habe nur sys_rebootnach den MAGIC-Nummern gesucht und vergessen. Ich dachte, die Definition muss hinter einem Makrotrick versteckt sein, also schaute ich mir die System.mapDatei unter /bootan und fand sie neben ctrl_alt_del. Ich suchte dann nach diesem Symbol, was mich zur richtigen Datei führte. Wenn ich den Kernel aus dem Quellcode kompiliert hätte, könnte ich versuchen, herauszufinden, welche Objektdatei das Symbol definiert, und von dort aus fortfahren.