linux/Documentation/zh_CN/magic-number.txt
<<
>>
Prefs
   1Chinese translated version of Documentation/magic-number.txt
   2
   3If you have any comment or update to the content, please post to LKML directly.
   4However, if you have problem communicating in English you can also ask the
   5Chinese maintainer for help.  Contact the Chinese maintainer, if this
   6translation is outdated or there is problem with translation.
   7
   8Chinese maintainer: Jia Wei Wei <harryxiyou@gmail.com>
   9---------------------------------------------------------------------
  10Documentation/magic-number.txt的中文翻译
  11
  12如果想评论或更新本文的内容,请直接发信到LKML。如果你使用英文交流有困难的话,也可
  13以向中文版维护者求助。如果本翻译更新不及时或者翻译存在问题,请联系中文版维护者。
  14
  15中文版维护者: 贾威威 Jia Wei Wei <harryxiyou@gmail.com>
  16中文版翻译者: 贾威威 Jia Wei Wei <harryxiyou@gmail.com>
  17中文版校译者: 贾威威 Jia Wei Wei <harryxiyou@gmail.com>
  18
  19以下为正文
  20---------------------------------------------------------------------
  21这个文件是有关当前使用的魔术值注册表。当你给一个结构添加了一个魔术值,你也应该把这个魔术值添加到这个文件,因为我们最好把用于各种结构的魔术值统一起来。
  22
  23使用魔术值来保护内核数据结构是一个非常好的主意。这就允许你在运行期检查(a)一个结构是否已经被攻击,或者(b)你已经给一个例行程序通过了一个错误的结构。后一种情况特别地有用---特别是当你通过一个空指针指向结构体的时候。tty源码,例如,经常通过特定驱动使用这种方法并且反复地排列特定方面的结构。
  24
  25使用魔术值的方法是在结构的开始处声明的,如下:
  26
  27struct tty_ldisc {
  28        int     magic;
  29        ...
  30};
  31
  32当你以后给内核添加增强功能的时候,请遵守这条规则!这样就会节省数不清的调试时间,特别是一些古怪的情况,例如,数组超出范围并且重新写了超出部分。遵守这个规则,‪这些情况可以被快速地,安全地避免。
  33
  34                Theodore Ts'o
  35                  31 Mar 94
  36
  37给当前的Linux 2.1.55添加魔术表。
  38
  39                Michael Chastain
  40                <mailto:mec@shout.net>
  41                22 Sep 1997
  42
  43现在应该最新的Linux 2.1.112.因为在特性冻结期间,不能在2.2.x前改变任何东西。这些条目被数域所排序。
  44
  45                Krzysztof G.Baranowski
  46                <mailto: kgb@knm.org.pl>
  47                29 Jul 1998
  48
  49更新魔术表到Linux 2.5.45。刚好越过特性冻结,但是有可能还会有一些新的魔术值在2.6.x之前融入到内核中。
  50
  51                Petr Baudis
  52                <pasky@ucw.cz>
  53                03 Nov 2002
  54
  55更新魔术表到Linux 2.5.74。
  56
  57                Fabian Frederick
  58                <ffrederick@users.sourceforge.net>
  59                09 Jul 2003
  60
  61魔术名                 地址         结构               所在文件
  62===========================================================================
  63PG_MAGIC              'P'         pg_{read,write}_hdr include/linux/pg.h
  64CMAGIC                0x0111      user              include/linux/a.out.h
  65MKISS_DRIVER_MAGIC    0x04bf      mkiss_channel     drivers/net/mkiss.h
  66RISCOM8_MAGIC         0x0907      riscom_port       drivers/char/riscom8.h
  67SPECIALIX_MAGIC       0x0907      specialix_port    drivers/char/specialix_io8.h
  68HDLC_MAGIC            0x239e      n_hdlc            drivers/char/n_hdlc.c
  69APM_BIOS_MAGIC        0x4101      apm_user          arch/x86/kernel/apm_32.c
  70CYCLADES_MAGIC        0x4359      cyclades_port     include/linux/cyclades.h
  71DB_MAGIC              0x4442      fc_info           drivers/net/iph5526_novram.c
  72DL_MAGIC              0x444d      fc_info           drivers/net/iph5526_novram.c
  73FASYNC_MAGIC          0x4601      fasync_struct     include/linux/fs.h
  74FF_MAGIC              0x4646      fc_info           drivers/net/iph5526_novram.c
  75ISICOM_MAGIC          0x4d54      isi_port          include/linux/isicom.h
  76PTY_MAGIC             0x5001                        drivers/char/pty.c
  77PPP_MAGIC             0x5002      ppp               include/linux/if_pppvar.h
  78SERIAL_MAGIC          0x5301      async_struct      include/linux/serial.h
  79SSTATE_MAGIC          0x5302      serial_state      include/linux/serial.h
  80SLIP_MAGIC            0x5302      slip              drivers/net/slip.h
  81STRIP_MAGIC           0x5303      strip             drivers/net/strip.c
  82X25_ASY_MAGIC         0x5303      x25_asy           drivers/net/x25_asy.h
  83SIXPACK_MAGIC         0x5304      sixpack           drivers/net/hamradio/6pack.h
  84AX25_MAGIC            0x5316      ax_disp           drivers/net/mkiss.h
  85ESP_MAGIC             0x53ee      esp_struct        drivers/char/esp.h
  86TTY_MAGIC             0x5401      tty_struct        include/linux/tty.h
  87MGSL_MAGIC            0x5401      mgsl_info         drivers/char/synclink.c
  88TTY_DRIVER_MAGIC      0x5402      tty_driver        include/linux/tty_driver.h
  89MGSLPC_MAGIC          0x5402      mgslpc_info       drivers/char/pcmcia/synclink_cs.c
  90TTY_LDISC_MAGIC       0x5403      tty_ldisc         include/linux/tty_ldisc.h
  91USB_SERIAL_MAGIC      0x6702      usb_serial        drivers/usb/serial/usb-serial.h
  92FULL_DUPLEX_MAGIC     0x6969                        drivers/net/ethernet/dec/tulip/de2104x.c
  93USB_BLUETOOTH_MAGIC   0x6d02      usb_bluetooth     drivers/usb/class/bluetty.c
  94RFCOMM_TTY_MAGIC      0x6d02                        net/bluetooth/rfcomm/tty.c
  95USB_SERIAL_PORT_MAGIC 0x7301      usb_serial_port   drivers/usb/serial/usb-serial.h
  96CG_MAGIC              0x00090255  ufs_cylinder_group include/linux/ufs_fs.h
  97A2232_MAGIC           0x000a2232  gs_port           drivers/char/ser_a2232.h
  98RPORT_MAGIC           0x00525001  r_port            drivers/char/rocket_int.h
  99LSEMAGIC              0x05091998  lse               drivers/fc4/fc.c
 100GDTIOCTL_MAGIC        0x06030f07  gdth_iowr_str     drivers/scsi/gdth_ioctl.h
 101RIEBL_MAGIC           0x09051990                    drivers/net/atarilance.c
 102RIO_MAGIC             0x12345678  gs_port           drivers/char/rio/rio_linux.c
 103SX_MAGIC              0x12345678  gs_port           drivers/char/sx.h
 104NBD_REQUEST_MAGIC     0x12560953  nbd_request       include/linux/nbd.h
 105RED_MAGIC2            0x170fc2a5  (any)             mm/slab.c
 106BAYCOM_MAGIC          0x19730510  baycom_state      drivers/net/baycom_epp.c
 107ISDN_X25IFACE_MAGIC   0x1e75a2b9  isdn_x25iface_proto_data
 108                                                    drivers/isdn/isdn_x25iface.h
 109ECP_MAGIC             0x21504345  cdkecpsig         include/linux/cdk.h
 110LSOMAGIC              0x27091997  lso               drivers/fc4/fc.c
 111LSMAGIC               0x2a3b4d2a  ls                drivers/fc4/fc.c
 112WANPIPE_MAGIC         0x414C4453  sdla_{dump,exec}  include/linux/wanpipe.h
 113CS_CARD_MAGIC         0x43525553  cs_card           sound/oss/cs46xx.c
 114LABELCL_MAGIC         0x4857434c  labelcl_info_s    include/asm/ia64/sn/labelcl.h
 115ISDN_ASYNC_MAGIC      0x49344C01  modem_info        include/linux/isdn.h
 116CTC_ASYNC_MAGIC       0x49344C01  ctc_tty_info      drivers/s390/net/ctctty.c
 117ISDN_NET_MAGIC        0x49344C02  isdn_net_local_s  drivers/isdn/i4l/isdn_net_lib.h
 118SAVEKMSG_MAGIC2       0x4B4D5347  savekmsg          arch/*/amiga/config.c
 119STLI_BOARDMAGIC       0x4bc6c825  stlibrd           include/linux/istallion.h
 120CS_STATE_MAGIC        0x4c4f4749  cs_state          sound/oss/cs46xx.c
 121SLAB_C_MAGIC          0x4f17a36d  kmem_cache        mm/slab.c
 122COW_MAGIC             0x4f4f4f4d  cow_header_v1     arch/um/drivers/ubd_user.c
 123I810_CARD_MAGIC       0x5072696E  i810_card         sound/oss/i810_audio.c
 124TRIDENT_CARD_MAGIC    0x5072696E  trident_card      sound/oss/trident.c
 125ROUTER_MAGIC          0x524d4157  wan_device        include/linux/wanrouter.h
 126SCC_MAGIC             0x52696368  gs_port           drivers/char/scc.h
 127SAVEKMSG_MAGIC1       0x53415645  savekmsg          arch/*/amiga/config.c
 128GDA_MAGIC             0x58464552  gda               arch/mips/include/asm/sn/gda.h
 129RED_MAGIC1            0x5a2cf071  (any)             mm/slab.c
 130STL_PORTMAGIC         0x5a7182c9  stlport           include/linux/stallion.h
 131EEPROM_MAGIC_VALUE    0x5ab478d2  lanai_dev         drivers/atm/lanai.c
 132HDLCDRV_MAGIC         0x5ac6e778  hdlcdrv_state     include/linux/hdlcdrv.h
 133EPCA_MAGIC            0x5c6df104  channel           include/linux/epca.h
 134PCXX_MAGIC            0x5c6df104  channel           drivers/char/pcxx.h
 135KV_MAGIC              0x5f4b565f  kernel_vars_s     arch/mips/include/asm/sn/klkernvars.h
 136I810_STATE_MAGIC      0x63657373  i810_state        sound/oss/i810_audio.c
 137TRIDENT_STATE_MAGIC   0x63657373  trient_state      sound/oss/trident.c
 138M3_CARD_MAGIC         0x646e6f50  m3_card           sound/oss/maestro3.c
 139FW_HEADER_MAGIC       0x65726F66  fw_header         drivers/atm/fore200e.h
 140SLOT_MAGIC            0x67267321  slot              drivers/hotplug/cpqphp.h
 141SLOT_MAGIC            0x67267322  slot              drivers/hotplug/acpiphp.h
 142LO_MAGIC              0x68797548  nbd_device        include/linux/nbd.h
 143OPROFILE_MAGIC        0x6f70726f  super_block       drivers/oprofile/oprofilefs.h
 144M3_STATE_MAGIC        0x734d724d  m3_state          sound/oss/maestro3.c
 145STL_PANELMAGIC        0x7ef621a1  stlpanel          include/linux/stallion.h
 146VMALLOC_MAGIC         0x87654320  snd_alloc_track   sound/core/memory.c
 147KMALLOC_MAGIC         0x87654321  snd_alloc_track   sound/core/memory.c
 148PWC_MAGIC             0x89DC10AB  pwc_device        drivers/usb/media/pwc.h
 149NBD_REPLY_MAGIC       0x96744668  nbd_reply         include/linux/nbd.h
 150STL_BOARDMAGIC        0xa2267f52  stlbrd            include/linux/stallion.h
 151ENI155_MAGIC          0xa54b872d  midway_eprom      drivers/atm/eni.h
 152SCI_MAGIC             0xbabeface  gs_port           drivers/char/sh-sci.h
 153CODA_MAGIC            0xC0DAC0DA  coda_file_info    include/linux/coda_fs_i.h
 154DPMEM_MAGIC           0xc0ffee11  gdt_pci_sram      drivers/scsi/gdth.h
 155STLI_PORTMAGIC        0xe671c7a1  stliport          include/linux/istallion.h
 156YAM_MAGIC             0xF10A7654  yam_port          drivers/net/hamradio/yam.c
 157CCB_MAGIC             0xf2691ad2  ccb               drivers/scsi/ncr53c8xx.c
 158QUEUE_MAGIC_FREE      0xf7e1c9a3  queue_entry       drivers/scsi/arm/queue.c
 159QUEUE_MAGIC_USED      0xf7e1cc33  queue_entry       drivers/scsi/arm/queue.c
 160HTB_CMAGIC            0xFEFAFEF1  htb_class         net/sched/sch_htb.c
 161NMI_MAGIC             0x48414d4d455201 nmi_s        arch/mips/include/asm/sn/nmi.h
 162
 163请注意,在声音记忆管理中仍然有一些特殊的为每个驱动定义的魔术值。查看include/sound/sndmagic.h来获取他们完整的列表信息。很多OSS声音驱动拥有自己从声卡PCI ID构建的魔术值-他们也没有被列在这里。
 164
 165IrDA子系统也使用了大量的自己的魔术值,查看include/net/irda/irda.h来获取他们完整的信息。
 166
 167HFS是另外一个比较大的使用魔术值的文件系统-你可以在fs/hfs/hfs.h中找到他们。
 168
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.