ºìÁªLinuxÃÅ»§
Linux°ïÖú

LinuxÄں˽â¶ÁÈëÃÅ

·¢²¼Ê±¼ä:2007-03-16 15:30:47À´Ô´:ºìÁª×÷Õß:FL_linux
ºÜ¶àLinux °®ºÃÕ߶ÔÄں˺ܸÐÐËȤȴÎÞ´ÓÏÂÊÖ£¬±¾ÎÄÖ¼ÔÚ½éÉÜÒ»ÖÖ½â¶ÁLinuxÄÚºËÔ´ÂëµÄÈëÃÅ·½·¨£¬¶ø²»Êǽ²½âLinux¸´ÔÓµÄÄں˻úÖÆ¡£
¡¡¡¡1£®ºËÐÄÔ´³ÌÐòµÄÎļþ×éÖ¯
¡¡¡¡£¨1£©LinuxºËÐÄÔ´³ÌÐòͨ³£¶¼°²×°ÔÚ/usr/src/LinuxÏ£¬¶øÇÒËüÓÐÒ»¸ö·Ç³£¼òµ¥µÄ±àºÅÔ¼¶¨£ºÈκÎżÊýµÄºËÐÄ£¨ÖмäÊý×Ö£©È磺2.0.30¶¼ÊÇÒ»¸öÎȶ¨µÄ·¢ÐеĺËÐÄ£¬¶øÈκÎÆæÊýµÄºËÐÄÈ磺2.1.42¶¼ÊÇÒ»¸ö¿ª·¢ÖеĺËÐÄ¡£
¡¡¡¡±¾ÎÄ»ùÓÚÎȶ¨µÄ2.2.5Ô´´úÂ룬µÚ¶þ²¿·ÖµÄʵÏÖƽ̨ΪRedhat Linux 6.0¡£
¡¡¡¡£¨2£©ºËÐÄÔ´³ÌÐòµÄÎļþ°´Ê÷Ðνṹ½øÐÐ×éÖ¯£¬ÔÚÔ´³ÌÐòÊ÷µÄ×îÉϲãÄã»á¿´µ½ÕâÑùһЩĿ¼£º
¡¡¡¡arch£ºarch×ÓĿ¼°üÀ¨ÁËËùÓкÍÌåϵ½á¹¹Ïà¹ØµÄºËÐÄ´úÂë¡£ËüµÄÿһ¸ö×ÓĿ¼¶¼´ú±íÒ»ÖÖÖ§³ÖµÄÌåϵ½á¹¹£¬ÀýÈçi386¾ÍÊǹØÓÚIntel CPU¼°ÓëÖ®Ïà¼æÈÝÌåϵ½á¹¹µÄ×ÓĿ¼¡£PC»úÒ»°ã¶¼»ùÓÚ´ËĿ¼£»
¡¡¡¡include£ºinclude×ÓĿ¼°üÀ¨±àÒëºËÐÄËùÐèÒªµÄ´ó²¿·ÖÍ·Îļþ¡£Óëƽ̨Î޹صÄÍ·ÎļþÔÚinclude/linux×ÓĿ¼Ï£¬ÓëIntel CPUÏà¹ØµÄÍ·ÎļþÔÚinclude/asm£­i386×ÓĿ¼Ï£¬¶øinclude/scsiĿ¼ÔòÊÇÓйØSCSIÉ豸µÄÍ·ÎļþĿ¼£»
¡¡¡¡init£ºÕâ¸öĿ¼°üº¬ºËÐĵijõʼ»¯´úÂ루ע£º²»ÊÇϵͳµÄÒýµ¼´úÂ룩£¬°üº¬Á½¸öÎļþmain.cºÍVersion.c£¬ÕâÊÇÑо¿ºËÐÄÈçºÎ¹¤×÷µÄÒ»¸ö·Ç³£ºÃµÄÆðµã£»
¡¡¡¡Mm£ºÕâ¸öĿ¼°üÀ¨ËùÓжÀÁ¢ÓÚCPU Ìåϵ½á¹¹µÄÄÚ´æ¹ÜÀí´úÂ룬Èçҳʽ´æ´¢¹ÜÀíÄÚ´æµÄ·ÖÅäºÍÊͷŵȣ¬¶øºÍÌåϵ½á¹¹Ïà¹ØµÄÄÚ´æ¹ÜÀí´úÂëÔòλÓÚarch/£ª/mm/£¬ÀýÈçarch/i386/mm/Fault.c£»
¡¡¡¡Kernel£ºÖ÷ÒªµÄºËÐÄ´úÂ룬´ËĿ¼ÏµÄÎļþʵÏÖÁË´ó¶àÊýLinuxϵͳµÄÄں˺¯Êý£¬ÆäÖÐ×îÖØÒªµÄÎļþµ±Êôsched.c£¬Í¬Ñù£¬ºÍÌåϵ½á¹¹Ïà¹ØµÄ´úÂëÔÚarch/£ª/kernelÖУ»
¡¡¡¡Drivers£º·ÅÖÃϵͳËùÓеÄÉ豸Çý¶¯³ÌÐò£»Ã¿ÖÖÇý¶¯³ÌÐòÓÖ¸÷Õ¼ÓÃÒ»¸ö×ÓĿ¼£¬Èç/blockÏÂΪ¿éÉ豸Çý¶¯³ÌÐò£¬±ÈÈçide£¨ide.c£©¡£Èç¹ûÄãÏ£Íû²é¿´ËùÓпÉÄÜ°üº¬ÎļþϵͳµÄÉ豸ÊÇÈçºÎ³õʼ»¯µÄ£¬Äã¿ÉÒÔ¿´drivers/block/genhd.cÖеÄdevice_setup£¨£©º¯Êý¡£Ëü²»½ö³õʼ»¯Ó²ÅÌ£¬Ò²³õʼ»¯ÍøÂ磬ÒòΪ°²×°nfsÎļþϵͳµÄʱºòÐèҪʹÓÃÍøÂç¡£
¡¡¡¡ÆäËûĿ¼ÈçLib£º·ÅÖúËÐĵĿâ´úÂ룻Net£ººËÐÄÓëÍøÂçÏà¹ØµÄ´úÂ룻Ipc£º°üº¬ºËÐĵĽø³Ì¼äͨÐŵĴúÂ룻Fs£ºËùÓеÄÎļþϵͳ´úÂëºÍ¸÷ÖÖÀàÐ͵ÄÎļþ²Ù×÷´úÂ룬ËüµÄÿһ¸ö×ÓĿ¼֧³ÖÒ»¸öÎļþϵͳ£¬ÀýÈçfatºÍext2¡¢Scripts£¬´ËĿ¼°üº¬ÓÃÓÚÅäÖúËÐĵĽű¾ÎļþµÈ¡£
¡¡¡¡Ò»°ãÔÚÿ¸öĿ¼Ï¶¼ÓÐÒ»¸ö.depend ÎļþºÍÒ»¸öMakefile Îļþ£¬ÕâÁ½¸öÎļþ¶¼ÊDZàÒëʱʹÓõĸ¨ÖúÎļþ£¬×ÐϸÔĶÁÕâÁ½¸öÎļþ¶ÔŪÇå¸÷¸öÎļþÖ®¼äµÄÁªÏµºÍÒÀÍйØϵºÜÓаïÖú£¬¶øÇÒÔÚÓеÄĿ¼Ï»¹ÓÐReadme Îļþ£¬ËüÊǶԸÃĿ¼ÏµÄÎļþµÄһЩ˵Ã÷£¬Í¬ÑùÓÐÀûÓÚÎÒÃǶÔÄÚºËÔ´ÂëµÄÀí½â¡£
¡¡¡¡2£®½â¶Áʵս£ºÎªÄãµÄÄÚºËÔö¼ÓÒ»¸öϵͳµ÷ÓÃ
¡¡¡¡ËäÈ»Linux µÄÄÚºËÔ´ÂëÓÃÊ÷Ðνṹ×éÖ¯µÃ·Ç³£ºÏÀí¡¢¿Æѧ£¬°ÑÓ빦ÄÜÏà¹ØÁªµÄÎļþ¶¼·ÅÔÚͬһ¸ö×ÓĿ¼Ï£¬ÕâÑùʹµÃ³ÌÐò¸ü¾ß¿É¶ÁÐÔ¡£È»¶ø£¬Linux µÄÄÚºËÔ´ÂëʵÔÚÊÇÌ«´ó¶øÇҷdz£¸´ÔÓ£¬¼´±ã²ÉÓÃÁ˺ܺÏÀíµÄÎļþ×éÖ¯·½·¨£¬ÔÚ²»Í¬Ä¿Â¼ÏµÄÎļþÖ®¼ä»¹ÊÇÓкܶàµÄ¹ØÁª£¬·ÖÎöºËÐĵÄÒ»²¿·Ö´úÂëͨ³£Òª²é¿´ÆäËûµÄ¼¸¸öÏà¹ØµÄÎļþ£¬¶øÇÒ¿ÉÄÜÕâЩÎļþ»¹²»ÔÚͬһ¸ö×ÓĿ¼Ï¡£
¡¡¡¡ÏÂÃæ¾ÙÒ»¸ö¾ßÌåµÄÄں˷ÖÎöʵÀý£¬Ï£ÍûÄÜͨ¹ýÕâ¸öʵÀý£¬Ê¹¶ÁÕ߶ÔLinux µÄÄÚºË×éÖ¯ÓÐЩ¾ßÌåµÄÈÏʶ£¬¶ÁÕß´ÓÖÐÒ²¿ÉÒÔѧµ½Ò»Ð©¶ÔÄں˵ķÖÎö·½·¨¡£
¡¡¡¡ÒÔϼ´Îª·ÖÎöʵÀý£º
¡¡¡¡£¨1£©²Ù×÷ƽ̨
¡¡¡¡Ó²¼þ£ºCPU Intel Pentium II£»
¡¡¡¡Èí¼þ£ºRedhat Linux 6.0£¬Äں˰汾2.2.5
¡¡¡¡£¨2£©Ïà¹ØÄÚºËÔ´´úÂë·ÖÎö
¡¡¡¡¢ÙϵͳµÄÒýµ¼ºÍ³õʼ»¯£ºLinux ϵͳµÄÒýµ¼Óкü¸ÖÖ·½Ê½£¬³£¼ûµÄÓÐLilo¡¢LoadinÒýµ¼ºÍLinuxµÄ×Ô¾ÙÒýµ¼£¨bootsect£­loader£©£¬¶øºóÕßËù¶ÔÓ¦Ô´³ÌÐòΪarch/i386/boot/bootsect.S£¬ËüΪʵģʽµÄ»ã±à³ÌÐò£¬ÏÞÓÚƪ·ùÔڴ˲»×ö·ÖÎö¡£ÎÞÂÛÊÇÄÄÖÖÒýµ¼·½Ê½£¬×îºó¶¼ÒªÌøתµ½arch/i386/Kernel/setup.S¡£setup.SÖ÷ÒªÊǽøÐÐʵģʽϵijõʼ»¯£¬ÎªÏµÍ³½øÈë±£»¤Ä£Ê½×ö×¼±¸¡£´Ëºó£¬ÏµÍ³Ö´ÐÐarch/i386/kernel/head.S £¨¶Ô¾­Ñ¹Ëõºó´æ·ÅµÄÄÚºËÒªÏÈÖ´ÐÐarch/i386/boot/compressed/head.S£©£»head.S Öж¨ÒåµÄÒ»¶Î»ã±à³ÌÐòsetup_idt£¬Ëü¸ºÔð½¨Á¢Ò»ÕÅ256ÏîµÄidt±í£¨Interrupt Descriptor Table£©£¬´Ë±í±£´æ×ÅËùÓÐ×ÔÏݺÍÖжϵÄÈë¿ÚµØÖ·£¬ÆäÖаüÀ¨ÏµÍ³µ÷ÓÃ×ܿسÌÐòsystem_call µÄÈë¿ÚµØÖ·¡£µ±È»£¬³ý´ËÖ®Í⣬head.S»¹Òª×öһЩÆäËûµÄ³õʼ»¯¹¤×÷¡£
¡¡¡¡¢Úϵͳ³õʼ»¯ºóÔËÐеĵÚÒ»¸öÄں˳ÌÐòasmlinkage void __init start_kernel£¨void£© ¶¨ÒåÔÚ/usr/src/linux/init/main.cÖУ¬Ëüͨ¹ýµ÷ÓÃusr/src/linux/arch/i386/kernel/traps.c ÖеÄÒ»¸öº¯Êývoid __init trap_init£¨void£© °Ñ¸÷¸ö×ÔÏݺÍÖжϷþÎñ³ÌÐòµÄÈë¿ÚµØÖ·ÉèÖõ½idt±íÖУ¬ÆäÖÐϵͳµ÷ÓÃ×ܿسÌÐòsystem_cal¾ÍÊÇÖжϷþÎñ³ÌÐòÖ®Ò»£»void __init trap_init£¨void£©º¯ÊýÔòͨ¹ýµ÷ÓÃÒ»¸öºêset_system_gate£¨SYSCALL_VECTOR£¬£¦system_call£©£¬°Ñϵͳµ÷ÓÃ×ܿسÌÐòµÄÈë¿Ú¹ÒÔÚÖжÏ0x80ÉÏ¡£
¡¡¡¡ÆäÖÐSYSCALL_VECTRÊǶ¨ÒåÔÚ/usr/src/linux/arch/i386/kernel/irq.hÖеÄÒ»¸ö³£Á¿0x80£¬¶øsystem_call ¼´ÎªÖжÏ×ܿسÌÐòµÄÈë¿ÚµØÖ·£¬ÖжÏ×ܿسÌÐòÓûã±àÓïÑÔ¶¨ÒåÔÚ/usr/src/linux/arch/i386/kernel/entry.SÖС£
¡¡¡¡¢ÛÖжÏ×ܿسÌÐòÖ÷Òª¸ºÔð±£´æ´¦Àí»úÖ´ÐÐϵͳµ÷ÓÃÇ°µÄ״̬£¬¼ìÑ鵱ǰµ÷ÓÃÊÇ·ñºÏ·¨£¬²¢¸ù¾Ýϵͳµ÷ÓÃÏòÁ¿£¬Ê¹´¦Àí»úÌøתµ½±£´æÔÚsys_call_table ±íÖеÄÏàӦϵͳ·þÎñÀý³ÌµÄÈë¿Ú£¬´Óϵͳ·þÎñÀý³Ì·µ»Øºó»Ö¸´´¦Àí»ú״̬ÍË»ØÓû§³ÌÐò¡£
¡¡¡¡¶øϵͳµ÷ÓÃÏòÁ¿Ôò¶¨ÒåÔÚ/usr/src/linux/include/asm£­386/unistd.h ÖУ¬sys_call_table ±í¶¨ÒåÔÚ/usr/src/linux/arch/i386/kernel/entry.S ÖУ¬Í¬Ê±ÔÚ/usr/src/linux/include/asm£­386/unistd.h ÖÐÒ²¶¨ÒåÁËϵͳµ÷ÓõÄÓû§±à³Ì½Ó¿Ú¡£
¡¡¡¡¢ÜÓɴ˿ɼû£¬LinuxµÄϵͳµ÷ÓÃÒ²ÏñDOSϵͳµÄint 21hÖжϷþÎñ£¬´ó°Ñ0x80ÖжÏ×÷Ϊ×ܵÄÈë¿Ú£¬È»ºóתµ½±£´æÔÚsys_call_table±íÖеĸ÷ÖÖÖжϷþÎñÀý³ÌµÄÈë¿ÚµØÖ·£¬Ìṩ¸÷ÖÖ²»Í¬µÄÖжϷþÎñ¡£
¡¡¡¡ÌṩÉÏÔ´´úÂë·ÖÎö¿ÉÖª£¬ÒªÔö¼ÓÒ»¸öϵͳµ÷ÓþͱØÐëÔÚsys_call_table±íÖÐÔö¼ÓÒ»Ï²¢ÔÚÆäÖб£´æºÃ×Ô¼ºµÄϵͳ·þÎñÀý³ÌµÄÈë¿ÚµØÖ·£¬È»ºóÖØбàÒëÄںˣ¬µ±È»£¬ÏµÍ³·þÎñÀý³ÌÊDZز»¿ÉÉٵġ£
¡¡¡¡ÓÉ´Ë¿ÉÖª£¬ÔÚ´Ë°æLinuxÄÚºËÔ´³ÌÐò<2.2.5>ÖУ¬Óëϵͳµ÷ÓÃÏà¹ØµÄÔ´³ÌÐòÎļþ¾Í°üÀ¨ÒÔÏÂÕâЩ£º
¡¡¡¡£ª arch/i386/boot/bootsect.S
¡¡¡¡£ª rch/i386/Kernel/setup.S
¡¡¡¡£ª rch/i386/boot/compressed/head.S
¡¡¡¡£ª rch/i386/kernel/head.S
¡¡¡¡£ª nit/main.c
¡¡¡¡£ª rch/i386/kernel/traps.c
¡¡¡¡£ª rch/i386/kernel/entry.S
¡¡¡¡£ª rch/i386/kernel/irq.h
¡¡¡¡£ª nclude/asm£­386/unistd.h
¡¡¡¡µ±È»£¬ÕâÖ»ÊÇÉæ¼°µ½µÄ¼¸¸öÖ÷ÒªÎļþ¡£¶øÊÂʵÉÏ£¬Ôö¼Óϵͳµ÷ÓÃÕæÕýÒªÐ޸ĵÄÎļþÖ»ÓÐinclude/asm£­386/unistd.h ºÍarch/i386/kernel/entry.SÁ½¸ö¡£
¡¡¡¡£¨3£©Ô´ÂëµÄÐÞ¸Ä
¡¡¡¡¢Ùkernel/sys.cÖÐÔö¼Óϵͳ·þÎñÀý³ÌÈçÏ£º
¡¡¡¡asmlinkage int sys_addtotal£¨int numdata£©
¡¡¡¡{ int i=0£¬enddata=0;
¡¡¡¡¡¡ while£¨i<=numdata£©
¡¡¡¡¡¡ enddata+=i++;
¡¡¡¡¡¡ return enddata; }
¡¡¡¡¸Ãº¯ÊýÓÐÒ»¸öint ÐÍÈë¿Ú²ÎÊýnumdata £¬ ²¢·µ»Ø´Ó0 µ½numdata µÄÀÛ¼ÓÖµ£¬È»¶øÒ²¿ÉÒÔ°Ñϵͳ·þÎñÀý³Ì·ÅÔÚÒ»¸ö×Ô¼º¶¨ÒåµÄÎļþ»òÆäËûÎļþÖУ¬Ö»ÊÇÒªÔÚÏàÓ¦ÎļþÖÐ×÷±ØÒªµÄ˵Ã÷¡£
¡¡¡¡¢Ú°Ñsmlinkage int sys_addtotal£¨ int£© µÄÈë¿ÚµØÖ·¼Óµ½sys_call_table±íÖС£
¡¡¡¡arch/i386/kernel/entry.S ÖеÄ×îºó¼¸ÐÐÔ´´úÂëÐÞ¸ÄǰΪ:
¡¡¡¡.long SYMBOL_NAME£¨sys_sendfile£©
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£© /* streams1 */
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£© /* streams2 */
¡¡¡¡.long SYMBOL_NAME£¨sys_vfork£© /* 190 */
¡¡¡¡.rept NR_syscalls-190
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£©
¡¡¡¡.endr
¡¡¡¡Ð޸ĺóΪ:
¡¡¡¡.long SYMBOL_NAME£¨sys_sendfile£©
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£© /* streams1 */
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£© /* streams2 */
¡¡¡¡.long SYMBOL_NAME£¨sys_vfork£© /* 190 */
¡¡¡¡/* add by I */
¡¡¡¡.long SYMBOL_NAME£¨sys_addtotal£©
¡¡¡¡.rept NR_syscalls-191
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£©
¡¡¡¡.endr
¡¡¡¡¢Û°ÑÔö¼ÓµÄsys_call_table ±íÏîËù¶ÔÓ¦µÄÏòÁ¿£¬ÔÚinclude/asm-386/unistd.h ÖнøÐбØÒªÉêÃ÷£¬ÒÔ¹©Óû§½ø³ÌºÍÆäËûϵͳ½ø³Ì²éѯ»òµ÷Óá£
¡¡¡¡Ôö¼ÓºóµÄ²¿·Ö/usr/src/linux/include/asm-386/unistd.h ÎļþÈçÏÂ:
¡¡¡¡#define __NR_sendfile 187
¡¡¡¡#define __NR_getpmsg 188
¡¡¡¡#define __NR_putpmsg 189
¡¡¡¡#define __NR_vfork 190
¡¡¡¡/* add by I */
¡¡¡¡#define __NR_addtotal 191
¡¡¡¡¢Ü²âÊÔ³ÌÐò£¨test.c£©ÈçÏÂ:
¡¡¡¡#include
¡¡¡¡#include
¡¡¡¡_syscall1£¨int£¬addtotal£¬int£¬ num£©
¡¡¡¡main£¨£©
¡¡¡¡{¡¡int i£¬j;
¡¡¡¡¡¡do
¡¡¡¡printf£¨\"Please input a numbern\"£©;
¡¡¡¡while£¨scanf£¨\"%d\"£¬&i£©==EOF£©;
¡¡¡¡if£¨£¨j=addtotal£¨i£©£©==-1£©
¡¡¡¡printf£¨\"Error occurred in syscall-addtotal£¨£©£¬n\"£©;
¡¡¡¡printf£¨\"Total from 0 to %d is %d n\"£¬i£¬j£©; }
¡¡¡¡¶ÔÐ޸ĺóµÄеÄÄں˽øÐбàÒ룬²¢Òýµ¼Ëü×÷ΪеIJÙ×÷ϵͳ£¬ÔËÐм¸¸ö³ÌÐòºó¿ÉÒÔ·¢ÏÖÒ»ÇÐÕý³££»ÔÚеÄϵͳ϶ԲâÊÔ³ÌÐò½øÐбàÒ루ע£ºÓÉÓÚÔ­Äں˲¢Î´Ìṩ´Ëϵͳµ÷Óã¬ËùÒÔÖ»ÓÐÔÚ±àÒëºóµÄÐÂÄÚºËÏ£¬´Ë²âÊÔ³ÌÐò²Å¿ÉÄܱ»±àÒëͨ¹ý£©£¬ÔËÐÐÇé¿öÈçÏ£º
¡¡¡¡$gcc .test test.c
¡¡¡¡$./test
¡¡¡¡Please input a number
¡¡¡¡36
¡¡¡¡Total from 0 to 36 is 666
¡¡¡¡Ð޸ijɹ¦ºó¶ÔÏà¹ØÔ´Âë½øÒ»²½·ÖÎö¿ÉÖª£¬ÔÚ´Ë°æ±¾µÄÄÚºËÖУ¬´Ó/usr/src/linux/arch/i386/kernel/entry.S ÎļþÖжÔsys_call_table ±íµÄÉèÖÿÉÒÔ¿´³ö£¬Óкü¸¸öϵͳµ÷ÓõķþÎñÀý³Ì¶¼ÊǶ¨ÒåÔÚ/usr/src/linux/kernel/sys.c ÖеÄͬһ¸öº¯Êý£º
¡¡¡¡asmlinkage int sys_ni_syscall£¨void£©
¡¡¡¡{¡¡return -ENOSYS; }
¡¡¡¡ÀýÈçµÚ188ÏîºÍµÚ189Ïî¾ÍÊÇÈç´Ë£º
¡¡¡¡.long SYMBOL_NAME£¨sys_sendfile£©
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£© /* streams1 */
¡¡¡¡.long SYMBOL_NAME£¨sys_ni_syscall£© /* streams2 */
¡¡¡¡.long SYMBOL_NAME£¨sys_vfork£© /* 190 */
¡¡¡¡¶øÕâÁ½ÏîÔÚÎļþ/usr/src/linux/include/asm-386/unistd.h ÖÐÈ´ÉêÃ÷ÈçÏ£º
¡¡¡¡#define __NR_sendfile 187
¡¡¡¡#define __NR_getpmsg 188 /* some people actually want streams */
¡¡¡¡#define __NR_putpmsg 189 /* some people actually want streams */
¡¡¡¡#define __NR_vfork 190
¡¡¡¡Óɴ˿ɼû£¬ÔÚ´Ë°æ±¾µÄÄÚºËÔ´´úÂëÖУ¬ÓÉÓÚasmlinkage int sys_ni_syscall£¨void£© º¯Êý²¢²»½øÐÐÈκβÙ×÷£¬ËùÒÔ°üÀ¨getpmsg£¬ putpmsg ÔÚÄڵĺü¸¸öϵͳµ÷Óö¼ÊDz»½øÐÐÈκβÙ×÷µÄ£¬¼´ÓдýÀ©³äµÄ¿Õµ÷Ó㻵«ËüÃÇÈ´ÈÔȻռÓÃ×Åsys_call_table±íÏ¹À¼ÆÕâÊÇÉè¼ÆÕßÃÇΪÁË·½±ãÀ©³äϵͳµ÷Óöø°²Åŵģ¬ËùÒÔÖ»ÐèÔö¼ÓÏàÓ¦·þÎñÀý³Ì£¨ÈçÔö¼Ó·þÎñÀý³Ìgetmsg»òputpmsg£©£¬¾Í¿ÉÒÔ´ïµ½Ôö¼Óϵͳµ÷ÓõÄ×÷Óá£
¡¡¡¡3£®½áÊøÓï
¡¡¡¡ÒªÍêÈ«½â¶ÁÅÓ´ó¸´ÔÓµÄLinuxÄںˣ¬Ò»ÆªÎÄÕÂÔ¶Ô¶²»ÄܽéÉÜÇå³þ£¬¶øÇÒÓëϵͳµ÷ÓÃÏà¹ØµÄ´úÂëÒ²Ö»ÊÇÄÚºËÖм«Æä΢СµÄÒ»²¿·Ö£¬ÖØÒªµÄÊÇ·½·¨£¬ÕÆÎպõķÖÎö·½·¨£¬ËùÒÔÉÏÊö·ÖÎöÖ»ÊÇÆð¸öÒýµ¼×÷Ó㬶øÕæÕýµÄ·ÖÎö»¹Óдý¶ÁÕß×Ô¼ºµÄŬÁ¦
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 3 ÌõÆÀÂÛ

  1. caiyao ÓÚ 2007-05-28 21:04:20·¢±í:

    :0L

  2. makefile ÓÚ 2007-05-06 11:11:27·¢±í:

    ¹»Ïêϸ£¬²»´í

  3. lightwave1986 ÓÚ 2007-05-01 18:32:47·¢±í:

    ¸ßÊÖ£¡¸ÐлÕýÔÚѧϰÖÐ