Linux, l'Interface de Programmation est un exercice dans le Chapitre 3, qui va comme ceci:
Lors de l'utilisation de l', spécifique à Linux, reboot() l'appel système pour redémarrer le système, l' deuxième argument, magic2, doit être spécifié en tant que partie d'un ensemble de magie les chiffres (p. ex., LINUX_REBOOT_MAGIC2). Quelle est la signification de ces les chiffres? (Les convertir en hexadécimal fournit un indice.)
La page de manuel nous dit magic2
peut être l'un des LINUX_REBOOT_MAGIC2 (672274793), LINUX_REBOOT_MAGIC2A (85072278), LINUX_REBOOT_MAGIC2B (369367448), ou LINUX_REBOOT_MAGIC2C (537993216). Je n'ai pas réussi à déchiffrer leur signification dans l'hex. J'ai également regardé /usr/include/linux/reboot.h
, ce qui n'a pas de commentaire non plus.
J'ai alors cherché dans le code source du noyau pour sys_reboot
s'définition. Tout ce que je trouve, c'est une déclaration dans un fichier d'en-tête.
Donc, ma première question est, quelle est la signification de ces nombres? Ma deuxième question est, où est - sys_reboot
s'définition, et comment avez-vous trouver?
EDIT: j'ai trouvé la définition de l' kernel/sys.c
. Je ne grepped pour sys_reboot
, et j'ai oublié de grep pour les numéros de MAGIE. J'ai pensé que la définition doit être caché derrière quelques macro truc, alors j'ai regardé l' System.map
fichier /boot
, et l'a trouvé à côté de ctrl_alt_del
. J'ai ensuite grepped pour ce symbole, qui m'a conduit vers le fichier correct. Si j'avais compilé le noyau à partir du code source, je pourrais essayer de trouver quel fichier de l'objet défini le symbole, et à partir de là.