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:mec@shout.net>
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: kgb@knm.org.pl>
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
<pasky@ucw.cz>
03 Nov 2002
Updated the magic table to Linux 2.5.74.
Fabian Frederick
<ffrederick@users.sourceforge.net>
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 |
|