Linux reboot()システムコールのマジックナンバー


Answers

Linus Torvalds(Linuxカーネルの開発者、Gitバージョン管理者)と彼の3人の娘の誕生日です。 システムを再起動するためのマジックナンバーとして機能します。

http://en.wikipedia.org/wiki/Linus_Torvalds

Question

Linuxプログラミングインターフェイスでは、第3章で次のように練習しています。

Linux固有のreboot()システムコールを使用してシステムを再起動する場合、2番目の引数magic2は、マジックナンバー(LINUX_REBOOT_MAGIC2など)の1つとして指定する必要があります。 これらの数字の意義は何ですか? (16進数に変換するとヒントになります)

magic2はLINUX_REBOOT_MAGIC2(672274793)、LINUX_REBOOT_MAGIC2A(85072278)、LINUX_REBOOT_MAGIC2B(369367448)、またはLINUX_REBOOT_MAGIC2C(537993216)のいずれかになります。 私は16進数でその意味を解読できませんでした。 私は/usr/include/linux/reboot.hも見ていましたが、これは/usr/include/linux/reboot.hないコメントも与えませんでした。

その後、カーネルのソースコードでsys_rebootの定義を探しました。 私が見つけたのは、ヘッダファイルの宣言だけでした。

したがって、私の最初の質問は、これらの数字の意味は何ですか? 私の2番目の質問は、 sys_rebootの定義はどこにありますか?どのように見つけましたか?

編集kernel/sys.c定義が見つかりました。 私はsys_rebootのためだけにgreopし、MAGIC番号のgrepを忘れてしまった。 私はその定義をいくつかのマクロトリックの背後に隠さなければならないと思ったので、私は/boot下のSystem.mapファイルを見て、 ctrl_alt_del横にそれを見つけました。 私はそのシンボルのために挨拶してくれました。それが私に正しいファイルをもたらしました。 私がソースコードからカーネルをコンパイルした場合、シンボルを定義したオブジェクトファイルを見つけてそこから移動しようと試みることができます。




Related