JF Linux Kernel 2.2 Documentation: /usr/src/linux/Documentation/magic-number.txt

magic-number.txt

使用中のマジック・ナンバーの登録簿 [プレインテキスト版]


このファイルは使用中のマジック・ナンバーの登録簿です.構造体にマジック・
ナンバーを含める際にはこのファイルにも加えるべきです.個々の構造体で使
われるマジック・ナンバーは一意なのがよいからです.

マジック・ナンバーでカーネルのデータ構造体を保護するのは「大変」よいこ
とです.(a) 構造体が壊されたか,(b) 誤った構造体をルーチンに渡したか,
実行時に調査することができるようになります.後者は特に(ポインタを構造
体に void * 型ポインタ経由で渡している場合には)有効です.例えば,tty 
コードは,ドライバーや行制御に特定な構造体を前後して渡すために,これを
頻繁に行います.

マジック・ナンバーの使用法は,以下のように,構造体の最初で宣言します:

struct tty_ldisc {
	int	magic;
	...
};

カーネルに将来拡張を加える時には,この規則に従ってください!それで膨大
なデバッグ時間が減りました.特に,配列の範囲を越えてしまって,その配列
に続く構造体が上書きされるという奇妙な場合.この規則を使うと,これらの
事例は迅速かつ安全に見つけられます.

					Theodore Ts'o
					31-Mar-94

Linux 1.3.98 に通用するマジック・テーブル.

					Michael Chastain
					<mec@duracef.shout.net>
					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

訳者: 山縣 敦 <ayamagat@phys.metro-u.ac.jp>

Linux カーネル 2.2 付属文書一覧へ戻る