Ãâ·Ñ×¢²á ²é¿´ÐÂÌû |

Chinaunix

  ƽ̨ ÂÛ̳ ²©¿Í ÎÄ¿â
×î½ü·ÃÎÊ°å¿é ·¢ÐÂÌû
²é¿´: 2255 | »Ø¸´: 2
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

[ÖжÏ] ΪʲôȱҳÒì³£µÄʱºòΨ¶À²»±£´ægs¼Ä´æÆ÷ [¸´ÖÆÁ´½Ó]

ÂÛ̳»ÕÕÂ:
0
Ìøתµ½Ö¸¶¨Â¥²ã
1Â¥ [ÊÕ²Ø(0)] [±¨¸æ]
·¢±íÓÚ 2014-12-20 10:56 |Ö»¿´¸Ã×÷Õß |µ¹Ðòä¯ÀÀ
gs¼Ä´æÆ÷µÄµØ·½´æµÄÊÇdo_page_faultµÄµØÖ·£¬¶øÏÂÃæµÄ×¢ÊÍҲ˵ÁËÕâ¸öÇé¿ö¡£Èç¹ûÓû§½ø³ÌʹÓÃÁËgs¼Ä´æÆ÷£¬·µ»ØµÄʱºò²»ÊÇÎÞ·¨»Ö¸´ÁËÂð¡£²»½öÊÇÕâÀϵͳµ÷ÓõÄʱºòҲûÓб£´ægs

ENTRY(page_fault)
        RING0_EC_FRAME
        ASM_CLAC
        pushl_cfi $do_page_fault
        ALIGN
error_code:
        /* the function address is in %gs's slot on the stack */
        pushl_cfi %fs
        /*CFI_REL_OFFSET fs, 0*/
        pushl_cfi %es
        /*CFI_REL_OFFSET es, 0*/
        pushl_cfi %ds
        /*CFI_REL_OFFSET ds, 0*/
        pushl_cfi %eax
        CFI_REL_OFFSET eax, 0
        pushl_cfi %ebp
        CFI_REL_OFFSET ebp, 0
        pushl_cfi %edi
        CFI_REL_OFFSET edi, 0
        pushl_cfi %esi
        CFI_REL_OFFSET esi, 0
        pushl_cfi %edx
        CFI_REL_OFFSET edx, 0
        pushl_cfi %ecx
        CFI_REL_OFFSET ecx, 0
        pushl_cfi %ebx
        CFI_REL_OFFSET ebx, 0

ÂÛ̳»ÕÕÂ:
15
ÉäÊÖ×ù
ÈÕÆÚ:2014-02-26 13:45:082015Äêӭдº»ÕÕÂ
ÈÕÆÚ:2015-03-04 09:54:452015Äê´Ç¾ÉËê»ÕÕÂ
ÈÕÆÚ:2015-03-03 16:54:15ÑòÄêдº¸£ÕÂ
ÈÕÆÚ:2015-02-26 08:47:552015ÄêÑÇÖÞ±­Ö®¿¨Ëþ¶û
ÈÕÆÚ:2015-02-03 08:33:45ÉäÊÖ×ù
ÈÕÆÚ:2014-12-31 08:36:51ˮƿ×ù
ÈÕÆÚ:2014-06-04 08:33:52ÌìЫ×ù
ÈÕÆÚ:2014-05-14 14:30:41Ìì³Ó×ù
ÈÕÆÚ:2014-04-21 08:37:08´¦Å®×ù
ÈÕÆÚ:2014-04-18 16:57:05Ðç¹·
ÈÕÆÚ:2014-04-04 12:21:33¼¼ÊõͼÊé»ÕÕÂ
ÈÕÆÚ:2014-03-25 09:00:29
2Â¥ [±¨¸æ]
·¢±íÓÚ 2014-12-23 16:44 |Ö»¿´¸Ã×÷Õß
¶ÑÕ»ÖÐÔ­±¾ÓÃÓÚ´æ·ÅgsµÄslotÖ»ÊÇÁÙʱÓÃÀ´´æ·ÅÒ»ÏÂdo_page_faultµÄµØÖ·£¬gsµÄÄÚÈݺóÃ滹ÊÇͨ¹ýecx¼Ä´æÆ÷£¬ÖØзÅÈë¸ÃλÖÃÁË¡£
error_code:
        /* the function address is in %gs's slot on the stack */
        pushl_cfi %fs
        /*CFI_REL_OFFSET fs, 0*/
        pushl_cfi %es
        /*CFI_REL_OFFSET es, 0*/
        pushl_cfi %ds
        /*CFI_REL_OFFSET ds, 0*/
        pushl_cfi %eax
        CFI_REL_OFFSET eax, 0
        pushl_cfi %ebp
        CFI_REL_OFFSET ebp, 0
        pushl_cfi %edi
        CFI_REL_OFFSET edi, 0
        pushl_cfi %esi
        CFI_REL_OFFSET esi, 0
        pushl_cfi %edx
        CFI_REL_OFFSET edx, 0
        pushl_cfi %ecx
        CFI_REL_OFFSET ecx, 0
        pushl_cfi %ebx
        CFI_REL_OFFSET ebx, 0
        cld
        movl $(__KERNEL_PERCPU), %ecx
        movl %ecx, %fs
        UNWIND_ESPFIX_STACK
        # ½«gs±£´æµ½ecx¼Ä´æÆ÷ÖÐ
        GS_TO_REG %ecx

        # ½«¶ÑÕ»ÖÐÔ­±¾´æ·Ågs´¦µÄÄÚÈÝ(ÏÖÔÚÊÇÒì³£´¦Àíº¯Êýdo_page_faultµÄµØÖ·)£¬±£´æµ½ediÖÐ
        movl PT_GS(%esp), %edi                # get the function address
        movl PT_ORIG_EAX(%esp), %edx        # get the error code
        movl $-1, PT_ORIG_EAX(%esp)        # no syscall to restart
        # ½«ecxÖеÄÄÚÈÝ·ÅÈëµ½gs(%esp)ÖУ¬´ËʱecxÖб£´æµÄÊÇÔ­gsµÄÄÚÈÝ
        REG_TO_PTGS %ecx

        # ÉèÖÃgsÄÚÈÝΪ__KERNEL_STACK_CANARY(ÓëgccµÄstack protectorÏà¹Ø£¬Î´¿ªÆô´Ë¹¦ÄܵĻ°£¬Êµ¼ÊΪ0)
        SET_KERNEL_GS %ecx
        # È¡__USER_DS£¬·ÅÈëdsºÍesÖÐ
        movl $(__USER_DS), %ecx
        movl %ecx, %ds
        movl %ecx, %es
        TRACE_IRQS_OFF
        movl %esp,%eax                        # pt_regs pointer
        # µ÷ÓÃÒì³£´¦ÀíºÍº¯Êý
        call *%edi
        # Òì³£·µ»Ø
        jmp ret_from_exception
        CFI_ENDPROC
END(page_fault)

ÂÛ̳»ÕÕÂ:
0
3Â¥ [±¨¸æ]
·¢±íÓÚ 2014-12-28 16:16 |Ö»¿´¸Ã×÷Õß
ÊÇÎÒ¿´Â©ÁË£¬·Ç³£Ð»Ð»
ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔ»ØÌû µÇ¼ | ×¢²á

±¾°æ»ý·Ö¹æÔò ·¢±í»Ø¸´

  

±±¾©Ê¢ÍØÓÅѶÐÅÏ¢¼¼ÊõÓÐÏÞ¹«Ë¾. °æȨËùÓÐ ¾©ICP±¸16024965ºÅ-6 ±±¾©Êй«°²¾Öº£µí·Ö¾ÖÍø¼àÖÐÐı¸°¸±àºÅ£º11010802020122 niuxiaotong@pcpop.com 17352615567
δ³ÉÄê¾Ù±¨×¨Çø
Öйú»¥ÁªÍøЭ»á»áÔ±  ÁªÏµÎÒÃÇ£ºhuangweiwei@itpub.net
¸ÐлËùÓйØÐĺÍÖ§³Ö¹ýChinaUnixµÄÅóÓÑÃÇ ×ªÔر¾Õ¾ÄÚÈÝÇë×¢Ã÷Ô­×÷ÕßÃû¼°³ö´¦

Çå³ý Cookies - ChinaUnix - Archiver - WAP - TOP