このファイルは使用中のマジック・ナンバーの登録簿です.構造体にマジック・ ナンバーを含める際にはこのファイルにも加えるべきです.個々の構造体で使 われるマジック・ナンバーは一意なのがよいからです. マジック・ナンバーでカーネルのデータ構造体を保護するのは「大変」よいこ とです.(a) 構造体が壊されたか,(b) 誤った構造体をルーチンに渡したか, 実行時に調査することができるようになります.後者は特に(ポインタを構造 体に void * 型ポインタ経由で渡している場合には)有効です.例えば,tty コードは,ドライバーや行制御に特定な構造体を前後して渡すために,これを 頻繁に行います. マジック・ナンバーの使用法は,以下のように,構造体の最初で宣言します: struct tty_ldisc { int magic; ... }; カーネルに将来拡張を加える時には,この規則に従ってください!それで膨大 なデバッグ時間が減りました.特に,配列の範囲を越えてしまって,その配列 に続く構造体が上書きされるという奇妙な場合.この規則を使うと,これらの 事例は迅速かつ安全に見つけられます. Theodore Ts'o 31-Mar-94 Linux 1.3.98 に通用するマジック・テーブル. Michael Chastain 6 May 1996 マジック名 ナンバー 構造体 ファイル =========================================================================== RISCOM8_MAGIC 0x0907 struct riscom_port drivers/char/riscom8.h APM_BIOS_MAGIC 0x4101 struct apm_struct include/linux/apm_bios.h CYCLADES_MAGIC 0x4359 struct cyclades_port include/linux/cyclades.h FASYNC_MAGIC 0x4601 struct fasync_struct include/linux/fs.h PTY_MAGIC 0x5001 struct pty_struct drivers/char/pty.c PPP_MAGIC 0x5002 struct ppp_struct include/linux/if_ppp.h SERIAL_MAGIC 0x5301 struct async_struct include/linux/serial.h SLIP_MAGIC 0x5302 struct slip drivers/net/slip.h STRIP_MAGIC 0x5303 struct strip drivers/net/strip.c TTY_MAGIC 0x5401 struct tty_struct include/linux/tty.h TTY_DRIVER_MAGIC 0x5402 struct tty_driver include/linux/tty_driver.h TTY_LDISC_MAGIC 0x5403 struct tty_ldisc include/linux/tty_ldisc.h SCC_MAGIC 0x8530 struct scc_channel include/linux/scc.h ISDN_ASYNC_MAGIC 0x49344C01 modem_info include/linux/isdn.h ISDN_NET_MAGIC 0x49344C02 isdn_net_ndev include/linux/isdn.h STLI_BOARDMAGIC 0x4bc6c825 stlibrd_t include/linux/istallion.h STLI_PORTMAGIC 0xe671c7a1 stliport_t include/linux/istallion.h STL_PANELMAGIC 0x7ef621a1 stlpanel_t include/linux/stallion.h STL_BOARDMAGIC 0xa2267f52 stlbrd_t include/linux/stallion.h STL_PORTMAGIC 0x5a7182c9 stlport_t include/linux/stallion.h PCXX_MAGIC 0x5c6df104 struct channel drivers/char/pcxx.h BAYCOM_MAGIC 0x3105bac0 struct baycom_state drivers/char/baycom.c 訳者: 山縣 敦