1This file is a registry of magic numbers which are in use.  When you
2add a magic number to a structure, you should also add it to this
3file, since it is best if the magic numbers used by various structures
4are unique.
5
6It is a *very* good idea to protect kernel data structures with magic
7numbers.  This allows you to check at run time whether (a) a structure
8has been clobbered, or (b) you've passed the wrong structure to a
9routine.  This last is especially useful --- particularly when you are
10passing pointers to structures via a void * pointer.  The tty code,
11for example, does this frequently to pass driver-specific and line
12discipline-specific structures back and forth.
13
14The way to use magic numbers is to declare then at the beginning of
15the structure, like so:
16
17struct tty_ldisc {
18	int	magic;
19	...
20};
21
22Please follow this discipline when you are adding future enhancements
23to the kernel!  It has saved me countless hours of debugging,
24especially in the screwy cases where an array has been overrun and
25structures following the array have been overwritten.  Using this
26discipline, these cases get detected quickly and safely.
27
28					Theodore Ts'o
29					31 Mar 94
30
31The magic table is current to Linux 2.1.55.
32
33					Michael Chastain
34					<mailto:mec@shout.net>
35					22 Sep 1997
36
37Now it should be up to date with Linux 2.1.112. Because
38we are in feature freeze time it is very unlikely that
39something will change before 2.2.x. The entries are
40sorted by number field.
41
42					Krzysztof G. Baranowski
43					<mailto: kgb@knm.org.pl>
44					29 Jul 1998
45
46Magic Name            Number      Structure            File
47===========================================================================
48PG_MAGIC	      'P'	  pg_{read,write}_hdr include/linux/pg.h
49MKISS_DRIVER_MAGIC    0x04bf      mkiss_channel     drivers/net/mkiss.h
50RISCOM8_MAGIC         0x0907      riscom_port       drivers/char/riscom8.h
51APM_BIOS_MAGIC        0x4101      apm_user          arch/i386/kernel/apm.c
52CYCLADES_MAGIC        0x4359      cyclades_port     include/linux/cyclades.h
53FASYNC_MAGIC          0x4601      fasync_struct     include/linux/fs.h
54PTY_MAGIC	      0x5001	  (none at the moment)
55					            drivers/char/pty.c
56PPP_MAGIC             0x5002      ppp               include/linux/if_ppp.h
57SERIAL_MAGIC          0x5301      async_struct      include/linux/serial.h
58SSTATE_MAGIC          0x5302      serial_state      include/linux/serial.h
59SLIP_MAGIC            0x5302      slip              drivers/net/slip.h
60STRIP_MAGIC           0x5303      strip             drivers/net/strip.c
61X25_ASY_MAGIC         0x5303      x25_asy           drivers/net/x25_asy.h
62SIXPACK_MAGIC	      0x5304      sixpack	    drivers/net/hamradio/6pack.h
63AX25_MAGIC            0x5316      ax_disp           drivers/net/mkiss.h
64ESP_MAGIC             0x53ee      esp_struct        drivers/char/esp.h
65TTY_MAGIC             0x5401      tty_struct        include/linux/tty.h
66TTY_DRIVER_MAGIC      0x5402      tty_driver        include/linux/tty_driver.h
67TTY_LDISC_MAGIC       0x5403      tty_ldisc         include/linux/tty_ldisc.h
68SPECIALIX_MAGIC       0x0907      specialix_port    drivers/char/specialix_io8.h
69CG_MAGIC	      0x090255    ufs_cylinder_group include/linux/ufs_fs.h
70RPORT_MAGIC           0x525001    r_port            drivers/char/rocket_int.h
71GDTIOCTL_MAGIC	      0x06030f07  gdth_iowr_str     drivers/scsi/gdth_ioctl.h
72NBD_REQUEST_MAGIC     0x12560953  nbd_request       include/linux/nbd.h
73SLAB_RED_MAGIC2       0x170fc2a5  (any)             mm/slab.c
74BAYCOM_MAGIC          0x19730510  baycom_state      drivers/net/baycom_epp.c
75ISDN_X25IFACE_MAGIC   0x1e75a2b9  isdn_x25iface_proto_data
76                                                    drivers/isdn/isdn_x25iface.h
77ECP_MAGIC             0x21504345  cdkecpsig         include/linux/cdk.h
78LSMAGIC               0x2a3b4d2a  ls                drivers/fc4/fc.c
79LSOMAGIC              0x2a3c4e3c  lso               drivers/fc4/fc.c
80WANPIPE_MAGIC         0x414C4453  sdla_{dump,exec}  include/linux/wanpipe.h
81CODA_CNODE_MAGIC      0x47114711  coda_inode_info   include/linux/coda_fs_i.h
82ISDN_ASYNC_MAGIC      0x49344C01  modem_info        include/linux/isdn.h
83ISDN_NET_MAGIC        0x49344C02  isdn_net_local_s  include/linux/isdn.h
84STLI_BOARDMAGIC       0x4bc6c825  stlibrd           include/linux/istallion.h
85SLAB_C_MAGIC          0x4f17a36d  kmem_cache_s      mm/slab.c
86ROUTER_MAGIC          0x524d4157  wan_device        include/linux/wanrouter.h
87SLAB_RED_MAGIC1       0x5a2cf071  (any)             mm/slab.c
88STL_PORTMAGIC         0x5a7182c9  stlport           include/linux/stallion.h
89HDLCDRV_MAGIC         0x5ac6e778  hdlcdrv_state     include/linux/hdlcdrv.h
90EPCA_MAGIC     	      0x5c6df104  channel           include/linux/epca.h
91PCXX_MAGIC            0x5c6df104  channel           drivers/char/pcxx.h
92LO_MAGIC              0x68797548  nbd_device        include/linux/nbd.h
93STL_PANELMAGIC        0x7ef621a1  stlpanel          include/linux/stallion.h
94NBD_REPLY_MAGIC       0x96744668  nbd_reply         include/linux/nbd.h
95STL_BOARDMAGIC        0xa2267f52  stlbrd            include/linux/stallion.h
96SLAB_MAGIC_ALLOC      0xa5c32f2b  kmem_slab_s       mm/slab.c
97SLAB_MAGIC_DESTROYED  0xb2f23c5a  kmem_slab_s       mm/slab.c
98STLI_PORTMAGIC        0xe671c7a1  stliport          include/linux/istallion.h
99CCB_MAGIC             0xf2691ad2  ccb               drivers/scsi/ncr53c8xx.c
100