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