OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [Documentation/] [magic-number.txt] - Diff between revs 1765 and 1782

Only display areas with differences | Details | Blame | View Log

Rev 1765 Rev 1782
This file is a registry of magic numbers which are in use.  When you
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
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
file, since it is best if the magic numbers used by various structures
are unique.
are unique.
It is a *very* good idea to protect kernel data structures with magic
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
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
has been clobbered, or (b) you've passed the wrong structure to a
routine.  This last is especially useful --- particularly when you are
routine.  This last is especially useful --- particularly when you are
passing pointers to structures via a void * pointer.  The tty code,
passing pointers to structures via a void * pointer.  The tty code,
for example, does this frequently to pass driver-specific and line
for example, does this frequently to pass driver-specific and line
discipline-specific structures back and forth.
discipline-specific structures back and forth.
The way to use magic numbers is to declare then at the beginning of
The way to use magic numbers is to declare then at the beginning of
the structure, like so:
the structure, like so:
struct tty_ldisc {
struct tty_ldisc {
        int     magic;
        int     magic;
        ...
        ...
};
};
Please follow this discipline when you are adding future enhancements
Please follow this discipline when you are adding future enhancements
to the kernel!  It has saved me countless hours of debugging,
to the kernel!  It has saved me countless hours of debugging,
especially in the screwy cases where an array has been overrun and
especially in the screwy cases where an array has been overrun and
structures following the array have been overwritten.  Using this
structures following the array have been overwritten.  Using this
discipline, these cases get detected quickly and safely.
discipline, these cases get detected quickly and safely.
                                        Theodore Ts'o
                                        Theodore Ts'o
                                        31-Mar-94
                                        31-Mar-94
The magic table is current to Linux 1.3.98.
The magic table is current to Linux 1.3.98.
                                        Michael Chastain
                                        Michael Chastain
                                        
                                        
                                        6 May 1996
                                        6 May 1996
Magic Name          Number      Structure            File
Magic Name          Number      Structure            File
===========================================================================
===========================================================================
RISCOM8_MAGIC       0x0907      struct riscom_port   drivers/char/riscom8.h
RISCOM8_MAGIC       0x0907      struct riscom_port   drivers/char/riscom8.h
APM_BIOS_MAGIC      0x4101      struct apm_struct    include/linux/apm_bios.h
APM_BIOS_MAGIC      0x4101      struct apm_struct    include/linux/apm_bios.h
CYCLADES_MAGIC      0x4359      struct cyclades_port include/linux/cyclades.h
CYCLADES_MAGIC      0x4359      struct cyclades_port include/linux/cyclades.h
FASYNC_MAGIC        0x4601      struct fasync_struct include/linux/fs.h
FASYNC_MAGIC        0x4601      struct fasync_struct include/linux/fs.h
PTY_MAGIC           0x5001      struct pty_struct    drivers/char/pty.c
PTY_MAGIC           0x5001      struct pty_struct    drivers/char/pty.c
PPP_MAGIC           0x5002      struct ppp_struct    include/linux/if_ppp.h
PPP_MAGIC           0x5002      struct ppp_struct    include/linux/if_ppp.h
SERIAL_MAGIC        0x5301      struct async_struct  include/linux/serial.h
SERIAL_MAGIC        0x5301      struct async_struct  include/linux/serial.h
SLIP_MAGIC          0x5302      struct slip          drivers/net/slip.h
SLIP_MAGIC          0x5302      struct slip          drivers/net/slip.h
STRIP_MAGIC         0x5303      struct strip         drivers/net/strip.c
STRIP_MAGIC         0x5303      struct strip         drivers/net/strip.c
TTY_MAGIC           0x5401      struct tty_struct    include/linux/tty.h
TTY_MAGIC           0x5401      struct tty_struct    include/linux/tty.h
TTY_DRIVER_MAGIC    0x5402      struct tty_driver    include/linux/tty_driver.h
TTY_DRIVER_MAGIC    0x5402      struct tty_driver    include/linux/tty_driver.h
TTY_LDISC_MAGIC     0x5403      struct tty_ldisc     include/linux/tty_ldisc.h
TTY_LDISC_MAGIC     0x5403      struct tty_ldisc     include/linux/tty_ldisc.h
SCC_MAGIC           0x8530      struct scc_channel   include/linux/scc.h
SCC_MAGIC           0x8530      struct scc_channel   include/linux/scc.h
ISDN_ASYNC_MAGIC    0x49344C01  modem_info           include/linux/isdn.h
ISDN_ASYNC_MAGIC    0x49344C01  modem_info           include/linux/isdn.h
ISDN_NET_MAGIC      0x49344C02  isdn_net_ndev        include/linux/isdn.h
ISDN_NET_MAGIC      0x49344C02  isdn_net_ndev        include/linux/isdn.h
STLI_BOARDMAGIC     0x4bc6c825  stlibrd_t            include/linux/istallion.h
STLI_BOARDMAGIC     0x4bc6c825  stlibrd_t            include/linux/istallion.h
STLI_PORTMAGIC      0xe671c7a1  stliport_t           include/linux/istallion.h
STLI_PORTMAGIC      0xe671c7a1  stliport_t           include/linux/istallion.h
STL_PANELMAGIC      0x7ef621a1  stlpanel_t           include/linux/stallion.h
STL_PANELMAGIC      0x7ef621a1  stlpanel_t           include/linux/stallion.h
STL_BOARDMAGIC      0xa2267f52  stlbrd_t             include/linux/stallion.h
STL_BOARDMAGIC      0xa2267f52  stlbrd_t             include/linux/stallion.h
STL_PORTMAGIC       0x5a7182c9  stlport_t            include/linux/stallion.h
STL_PORTMAGIC       0x5a7182c9  stlport_t            include/linux/stallion.h
PCXX_MAGIC          0x5c6df104  struct channel       drivers/char/pcxx.h
PCXX_MAGIC          0x5c6df104  struct channel       drivers/char/pcxx.h
BAYCOM_MAGIC        0x3105bac0  struct baycom_state  drivers/char/baycom.c
BAYCOM_MAGIC        0x3105bac0  struct baycom_state  drivers/char/baycom.c
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.