The Linux Programming Interface a un exercice au chapitre 3 qui va comme ceci:Les nombres magiques du redémarrage Linux() système d'appel
Lorsque vous utilisez le redémarrage spécifique à Linux() appel système pour redémarrer le système, le Le deuxième argument, magic2, doit être spécifié comme l'un des nombres magiques (par exemple, LINUX_REBOOT_MAGIC2). Quelle est la signification de ces numéros ? (Les convertir en hexadécimal fournit un indice.)
La page de manuel nous dit magic2
peut être l'un des LINUX_REBOOT_MAGIC2 (672.274.793), LINUX_REBOOT_MAGIC2A (85072278), LINUX_REBOOT_MAGIC2B (369.367.448), ou LINUX_REBOOT_MAGIC2C (537993216). J'ai échoué à déchiffrer leur signification en hex. J'ai également regardé /usr/include/linux/reboot.h
, qui n'a donné aucun commentaire utile non plus. J'ai ensuite cherché dans le code source du noyau pour sys_reboot
définition. Tout ce que j'ai trouvé était une déclaration dans un fichier d'en-tête. Par conséquent, ma première question est la suivante: quelle est la signification de ces chiffres? Ma deuxième question est: où est la définition de sys_reboot
, et comment l'avez-vous trouvée?
EDIT: J'ai trouvé la définition dans kernel/sys.c
. J'ai seulement grepped pour sys_reboot
, et j'ai oublié de grep pour les numéros MAGIC. Je pensais que la définition devait être cachée derrière un certain tour de macro, donc j'ai regardé le fichier System.map
sous /boot
, et l'ai trouvé à côté de ctrl_alt_del
. J'ai ensuite salué pour ce symbole, ce qui m'a conduit au bon fichier. Si j'avais compilé le noyau à partir du code source, je pourrais essayer de trouver quel fichier objet a défini le symbole, et partir de là.
+1 seulement pour les dates;) – BlackBear
ça doit être ça! J'aurais dû aligner les chiffres! –
Le 28 décembre 1969 est la date de naissance de Linus Torvalds [Wikipedia]. Les autres semblent être les dates de naissance de ses enfants, bien que je puisse seulement confirmer que l'un est né en décembre 1996 [googling aléatoire]. –