V0 support for the NVIDIA Tegra 3 SoC
aboutsummaryrefslogblamecommitdiffstats
path: root/Documentation/magic-number.txt
blob: 505f19607542d5a328aebb1b06a331abbd967744 (plain) (tree)


































































                                                                                





























                                                                                     






















                                                                                   
                                                             





                                                                              
                                                                                  

                                                                            
                                                                       


                                                                           
                                                                                         
























                                                                                 
                                                                                  










                                                                               
This file is a registry of magic numbers which are in use.  When you
add a magic number to a structure, you should also add it to this
file, since it is best if the magic numbers used by various structures
are unique.

It is a *very* good idea to protect kernel data structures with magic
numbers.  This allows you to check at run time whether (a) a structure
has been clobbered, or (b) you've passed the wrong structure to a
routine.  This last is especially useful --- particularly when you are
passing pointers to structures via a void * pointer.  The tty code,
for example, does this frequently to pass driver-specific and line
discipline-specific structures back and forth.

The way to use magic numbers is to declare then at the beginning of
the structure, like so:

struct tty_ldisc {
	int	magic;
	...
};

Please follow this discipline when you are adding future enhancements
to the kernel!  It has saved me countless hours of debugging,
especially in the screwy cases where an array has been overrun and
structures following the array have been overwritten.  Using this
discipline, these cases get detected quickly and safely.

					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


Magic Name            Number      Structure            File
===========================================================================
PG_MAGIC              'P'         pg_{read,write}_hdr include/linux/pg.h
CMAGIC                0x0111      user              include/linux/a.out.h
MKISS_DRIVER_MAGIC    0x04bf      mkiss_channel     drivers/net/mkiss.h
RISCOM8_MAGIC         0x0907      riscom_port       drivers/char/riscom8.h
SPECIALIX_MAGIC       0x0907      specialix_port    drivers/char/specialix_io8.h
HDLC_MAGIC            0x239e      n_hdlc            drivers/char/n_hdlc.c
APM_BIOS_MAGIC        0x4101      apm_user          arch/i386/kernel/apm.c
CYCLADES_MAGIC        0x4359      cyclades_port     include/linux/cyclades.h
DB_MAGIC              0x4442      fc_info           drivers/net/iph5526_novram.c
DL_MAGIC              0x444d      fc_info           drivers/net/iph5526_novram.c
FASYNC_MAGIC          0x4601      fasync_struct     include/linux/fs.h
FF_MAGIC              0x4646      fc_info           drivers/net/iph5526_novram.c
ISICOM_MAGIC          0x4d54      isi_port          include/linux/isicom.h
PTY_MAGIC             0x5001                        drivers/char/pty.c
PPP_MAGIC             0x5002      ppp               include/linux/if_pppvar.h
SERIAL_MAGIC          0x5301      async_struct      include/linux/serial.h
SSTATE_MAGIC          0x5302      serial_state      include/linux/serial.h
SLIP_MAGIC            0x5302      slip              drivers/net/slip.h
STRIP_MAGIC           0x5303      strip             drivers/net/strip.c
X25_ASY_MAGIC         0x5303      x25_asy           drivers/net/x25_asy.h
SIXPACK_MAGIC         0x5304      sixpack           drivers/net/hamradio/6pack.h
AX25_MAGIC            0x5316      ax_disp           drivers/net/mkiss.h
ESP_MAGIC             0x53ee      esp_struct        drivers/char/esp.h
TTY_MAGIC             0x5401      tty_struct        include/linux/tty.h
MGSL_MAGIC            0x5401      mgsl_info         drivers/char/synclink.c
TTY_DRIVER_MAGIC      0x5402      tty_driver        include/linux/tty_driver.h
MGSLPC_MAGIC          0x5402      mgslpc_info       drivers/char/pcmcia/synclink_cs.c
TTY_LDISC_MAGIC       0x5403      tty_ldisc         include/linux/tty_ldisc.h
USB_SERIAL_MAGIC      0x6702      usb_serial        drivers/usb/serial/usb-serial.h
FULL_DUPLEX_MAGIC     0x6969                        drivers/net/tulip/de2104x.c
USB_BLUETOOTH_MAGIC   0x6d02      usb_bluetooth     drivers/usb/class/bluetty.c
RFCOMM_TTY_MAGIC      0x6d02                        net/bluetooth/rfcomm/tty.c
USB_SERIAL_PORT_MAGIC 0x7301      usb_serial_port   drivers/usb/serial/usb-serial.h
CG_MAGIC              0x00090255  ufs_cylinder_group include/linux/ufs_fs.h
A2232_MAGIC           0x000a2232  gs_port           drivers/char/ser_a2232.h
RPORT_MAGIC           0x00525001  r_port            drivers/char/rocket_int.h
LSEMAGIC              0x05091998  lse               drivers/fc4/fc.c
GDTIOCTL_MAGIC        0x06030f07  gdth_iowr_str     drivers/scsi/gdth_ioctl.h
RIEBL_MAGIC           0x09051990                    drivers/net/atarilance.c
RIO_MAGIC             0x12345678  gs_port           drivers/char/rio/rio_linux.c
SX_MAGIC              0x12345678  gs_port           drivers/char/sx.h
NBD_REQUEST_MAGIC     0x12560953  nbd_request       include/linux/nbd.h
RED_MAGIC2            0x170fc2a5  (any)             mm/slab.c