Linux 魔数¶
此文件是一个正在使用的魔数注册表。当您向结构中添加魔数时,您也应该将其添加到此文件中,因为最好是各种结构使用的魔数是唯一的。
使用魔数保护内核数据结构是一个非常好的主意。这允许您在运行时检查(a)结构是否被破坏,或(b)您是否将错误的结构传递给了例程。最后一点特别有用——特别是当您通过 void * 指针传递指向结构的指针时。例如,tty 代码经常这样做来回传递特定于驱动程序和线路规程的结构。
使用魔数的方法是在结构的开头声明它们,如下所示:
struct tty_ldisc {
int magic;
...
};
当您向内核添加未来增强功能时,请遵循此原则!它为我节省了无数小时的调试时间,尤其是在数组溢出和数组后面的结构被覆盖的怪异情况下。使用此原则,这些情况可以被快速安全地检测到。
更新日志
Theodore Ts'o
31 Mar 94
The magic table is current to Linux 2.1.55.
Michael Chastain
<mailto:[email protected]>
22 Sep 1997
Now it should be up to date with Linux 2.1.112. Because
we are in feature freeze time it is very unlikely that
something will change before 2.2.x. The entries are
sorted by number field.
Krzysztof G. Baranowski
<mailto: [email protected]>
29 Jul 1998
Updated the magic table to Linux 2.5.45. Right over the feature freeze,
but it is possible that some new magic numbers will sneak into the
kernel before 2.6.x yet.
Petr Baudis
<[email protected]>
03 Nov 2002
Updated the magic table to Linux 2.5.74.
Fabian Frederick
<[email protected]>
09 Jul 2003
魔数名称 |
数字 |
结构 |
文件 |
---|---|---|---|
PG_MAGIC |
‘P’ |
pg_{read,write}_hdr |
|
APM_BIOS_MAGIC |
0x4101 |
apm_user |
|
FASYNC_MAGIC |
0x4601 |
fasync_struct |
|
SLIP_MAGIC |
0x5302 |
slip |
|
BAYCOM_MAGIC |
19730510 |
baycom_state |
|
HDLCDRV_MAGIC |
0x5ac6e778 |
hdlcdrv_state |
|
KV_MAGIC |
0x5f4b565f |
kernel_vars_s |
|
CODA_MAGIC |
0xC0DAC0DA |
coda_file_info |
|
YAM_MAGIC |
0xF10A7654 |
yam_port |
|
CCB_MAGIC |
0xf2691ad2 |
ccb |
|
QUEUE_MAGIC_FREE |
0xf7e1c9a3 |
queue_entry |
|
QUEUE_MAGIC_USED |
0xf7e1cc33 |
queue_entry |
|
NMI_MAGIC |
0x48414d4d455201 |
nmi_s |
|