162306a36Sopenharmony_ci.. include:: ../disclaimer-sp.rst
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci:Original: :ref:`Documentation/process/magic-number.rst <magicnumbers>`
462306a36Sopenharmony_ci:Translator: Carlos Bilbao <carlos.bilbao@amd.com>
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci.. _sp_magicnumbers:
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciNúmeros mágicos de Linux
962306a36Sopenharmony_ci========================
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciEste archivo es un registro de los números mágicos que están en uso. Cuando
1262306a36Sopenharmony_ciusted incluya un número mágico a una estructura, también debe agregarlo a
1362306a36Sopenharmony_cieste documento, ya que es mejor si los números mágicos utilizados por
1462306a36Sopenharmony_civarias estructuras son únicos.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciEs una muy buena idea proteger las estructuras de datos del kernel con
1762306a36Sopenharmony_cinúmeros mágicos. Esto le permite verificar en tiempo de ejecución si (a)
1862306a36Sopenharmony_ciuna estructura ha sido manipulada, o (b) ha pasado la estructura incorrecta
1962306a36Sopenharmony_cia una rutina. Esto último es especialmente útil --- particularmente cuando
2062306a36Sopenharmony_cipasa punteros a estructuras a través de un puntero void \*. El código tty,
2162306a36Sopenharmony_cipor ejemplo, hace esto con frecuencia para pasar información específica del
2262306a36Sopenharmony_cidriver y líneas de estructuras específicas de protocolo de un lado al
2362306a36Sopenharmony_ciotro.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciLa forma de usar números mágicos es declararlos al principio de la
2662306a36Sopenharmony_ciestructura, así::
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	struct tty_ldisc {
2962306a36Sopenharmony_ci		int	magic;
3062306a36Sopenharmony_ci		...
3162306a36Sopenharmony_ci	};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciPor favor, siga este método cuando agregue futuras mejoras al kernel! Me ha
3462306a36Sopenharmony_ciahorrado innumerables horas de depuración, especialmente en los casos
3562306a36Sopenharmony_cicomplicados donde una matriz ha sido invadida y las estructuras que siguen
3662306a36Sopenharmony_cia la matriz se han sobrescrito. Usando este método, estos casos se detectan
3762306a36Sopenharmony_cide forma rápida y segura.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciChangelog::
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci					Theodore Ts'o
4262306a36Sopenharmony_ci					31 Mar 94
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  La tabla mágica ha sido actualizada para Linux 2.1.55.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci					Michael Chastain
4762306a36Sopenharmony_ci					<mailto:mec@shout.net>
4862306a36Sopenharmony_ci					22 Sep 1997
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  Ahora debería estar actualizada con Linux 2.1.112. Porque
5162306a36Sopenharmony_ci  estamos en fase de "feature freeze", es muy poco probable que
5262306a36Sopenharmony_ci  algo cambiará antes de 2.2.x. Las entradas son
5362306a36Sopenharmony_ci  ordenados por campo numérico.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci					Krzysztof G. Baranowski
5662306a36Sopenharmony_ci					<mailto: kgb@knm.org.pl>
5762306a36Sopenharmony_ci					29 Jul 1998
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  Se actualizó la tabla mágica a Linux 2.5.45. Justo sobre el feature
6062306a36Sopenharmony_ci  freeze, pero es posible que algunos nuevos números mágicos se cuelen en
6162306a36Sopenharmony_ci  el kernel antes de 2.6.x todavía.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci					Petr Baudis
6462306a36Sopenharmony_ci					<pasky@ucw.cz>
6562306a36Sopenharmony_ci					03 Nov 2002
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  La tabla mágica ha sido actualizada para Linux 2.5.74.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci					Fabian Frederick
7062306a36Sopenharmony_ci					<ffrederick@users.sourceforge.net>
7162306a36Sopenharmony_ci					09 Jul 2003
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci===================== ================ ======================== ==========================================
7462306a36Sopenharmony_ciMagic Name            Number           Structure                File
7562306a36Sopenharmony_ci===================== ================ ======================== ==========================================
7662306a36Sopenharmony_ciPG_MAGIC              'P'              pg_{read,write}_hdr      ``include/linux/pg.h``
7762306a36Sopenharmony_ciAPM_BIOS_MAGIC        0x4101           apm_user                 ``arch/x86/kernel/apm_32.c``
7862306a36Sopenharmony_ciFASYNC_MAGIC          0x4601           fasync_struct            ``include/linux/fs.h``
7962306a36Sopenharmony_ciSLIP_MAGIC            0x5302           slip                     ``drivers/net/slip.h``
8062306a36Sopenharmony_ciBAYCOM_MAGIC          0x19730510       baycom_state             ``drivers/net/baycom_epp.c``
8162306a36Sopenharmony_ciHDLCDRV_MAGIC         0x5ac6e778       hdlcdrv_state            ``include/linux/hdlcdrv.h``
8262306a36Sopenharmony_ciKV_MAGIC              0x5f4b565f       kernel_vars_s            ``arch/mips/include/asm/sn/klkernvars.h``
8362306a36Sopenharmony_ciCODA_MAGIC            0xC0DAC0DA       coda_file_info           ``fs/coda/coda_fs_i.h``
8462306a36Sopenharmony_ciYAM_MAGIC             0xF10A7654       yam_port                 ``drivers/net/hamradio/yam.c``
8562306a36Sopenharmony_ciCCB_MAGIC             0xf2691ad2       ccb                      ``drivers/scsi/ncr53c8xx.c``
8662306a36Sopenharmony_ciQUEUE_MAGIC_FREE      0xf7e1c9a3       queue_entry              ``drivers/scsi/arm/queue.c``
8762306a36Sopenharmony_ciQUEUE_MAGIC_USED      0xf7e1cc33       queue_entry              ``drivers/scsi/arm/queue.c``
8862306a36Sopenharmony_ciNMI_MAGIC             0x48414d4d455201 nmi_s                    ``arch/mips/include/asm/sn/nmi.h``
8962306a36Sopenharmony_ci===================== ================ ======================== ==========================================
90