Linuxのreboot()システムコールのマジックナンバー
質問
Linux プログラミング インターフェース には、第3章にこのような練習問題があります。
Linux特有のreboot() システムコールを使ってシステムをリブートする場合 第2引数の magic2 は マジックナンバーのセットの1つとして指定する必要があります。 数 (例: LINUX_REBOOT_MAGIC2) のいずれかを指定する必要があります。 これらの数字の意味は何ですか? これらの数字の意味は何ですか?(16進数に変換することで、そのヒントが得られます。 16 進数に変換するとヒントが得られます)。
マニュアルページには
magic2
は LINUX_REBOOT_MAGIC2 (672274793), LINUX_REBOOT_MAGIC2A (85072278), LINUX_REBOOT_MAGIC2B (369367448), または LINUX_REBOOT_MAGIC2C (537993216) から一つを指定できるそうです。16進数で意味を解読するのは失敗しました。また
/usr/include/linux/reboot.h
も見てみましたが、これも役に立つコメントは得られませんでした。
次に、私はカーネルのソースコードで
sys_reboot
の定義を探しました。私が見つけたのは、ヘッダー ファイル内の宣言だけでした。
したがって、私の最初の疑問は、これらの数字の意味は何なのか、ということです。第二の疑問は
sys_reboot
の定義はどこにあるのか、そしてどうやってそれを見つけたのか?
EDIT
: で定義されていることがわかりました。
kernel/sys.c
. を grep しただけです。
sys_reboot
のみを検索し、MAGICナンバーを検索するのを忘れていました。私は、定義が何らかのマクロのトリックの後ろに隠されているに違いないと考え、そのために
System.map
ファイルの下にある
/boot
の隣にあります。
ctrl_alt_del
. そして、そのシンボルを grep して、正しいファイルへと導きました。もし私がソース コードからカーネルをコンパイルしていたなら、どのオブジェクト ファイルがそのシンボルを定義しているかを見つけ、そこから行くことができました。
どのように解決するのですか?
単なる推測ですが、これらの数字は16進数の方が面白そうです。
672274793 = 0x28121969
85072278 = 0x05121996
369367448 = 0x16041998
537993216 = 0x20112000
開発者の誕生日、開発者の子供の誕生日?
syscallの実装を見つけることについては、私が行ったのは
git grep -n LINUX_REBOOT_MAGIC2
を実行したところ、kernel/sys.c に定義が見つかりました。
sys_reboot
が生成されるのは
SYSCALL_DEFINE4(reboot, ...
gubbins と思われます。
関連
-
Linuxにおけるxinetdサービスの管理方法に関するケーススタディ
-
Linux Mintでフェード効果をオンにする方法は?
-
2020年deepin Deep OS V20のアップデートによる更新情報
-
エラーの解決方法 お客様のバージョンは /bin/bash: java: コマンドが見つかりませんでした。
-
floor'への未定義の参照/`&'への未定義の参照
-
[解決済み] libstdc++.so.5: 共有オブジェクトファイルを開くことができない - しかしライブラリはインストールされており最新である
-
[解決済み] IOCTL Linuxデバイスドライバ [終了しました]
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
LinuxでPingを無効にする、または許可する設定方法
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
Linuxにおけるxinetdサービスの管理方法に関するケーススタディ
-
deepinシステムからログアウトする方法は?deepinシステムからログアウトし、ユーザーを切り替える方法
-
Kali Linuxのマウスライトテーマを変更する方法は?マウスカーソルのテーマを変更するためのヒント
-
deepinシステムのバージョン番号を見るには?deepinシステムのバージョン情報を見るコツ
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] 標準エラー出力を /dev/null にリダイレクトする。
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?