The Linux Programming Interface ha un esercizio nel Capitolo 3 che va come questo:numeri magici del sistema Linux riavvio() chiamata
Quando si utilizza il riavvio specifico per Linux() sistema di chiamata per riavviare il sistema, il il secondo argomento, magic2, deve essere specificato come uno di un set di numeri magici (ad esempio LINUX_REBOOT_MAGIC2). Qual è il significato di questi numeri ? (Conversione loro di esadecimale fornisce un indizio.)
La pagina man ci dice magic2
può essere uno dei LINUX_REBOOT_MAGIC2 (672.274.793), LINUX_REBOOT_MAGIC2A (85.072.278), LINUX_REBOOT_MAGIC2B (369.367.448), o LINUX_REBOOT_MAGIC2C (537.993.216). Non sono riuscito a decifrare il loro significato in esadecimale. Ho anche guardato a /usr/include/linux/reboot.h
, che non ha dato alcun commento utile neanche.
Ho quindi cercato nel codice sorgente del kernel per la definizione di sys_reboot
. Tutto quello che ho trovato era una dichiarazione in un file di intestazione.
Pertanto, la mia prima domanda è, qual è il significato di questi numeri? La mia seconda domanda è: dov'è la definizione di sys_reboot
e come l'hai trovata?
EDIT: Ho trovato la definizione in kernel/sys.c
. Mi sono solo innamorato di sys_reboot
e ho dimenticato di grep per i numeri MAGIC. Ho capito che la definizione deve essere nascosta dietro qualche trucco macro, quindi ho guardato il file System.map
sotto /boot
e l'ho trovato accanto a ctrl_alt_del
. Poi ho iniziato ad usare quel simbolo, che mi ha portato al file corretto. Se avessi compilato il kernel dal codice sorgente, potrei provare a trovare quale file oggetto ha definito il simbolo, e andare da lì.
+1 solo per le date;) – BlackBear
che deve essere! Avrei dovuto allineare i numeri! –
Il 28 dicembre 1969 è la data di nascita di Linus Torvalds [Wikipedia]. Gli altri sembrano essere le date di nascita dei suoi figli, anche se posso solo confermare che uno è nato nel dicembre 1996 [random googling]. –