系统调用下

1.系统调用简易的伪代码

#systme call
#asm pseudo code
#系统调用处理过程的伪代码
.macro INTERRUPT_RETURN
    iret
.endm
.macro SAVE_ALL
    ...
.endm
.macro RESTORE_INT_REGS
    ...
.endm
ENTRY(system_call)
    SAVE_ALL
system_call:
    call *sys_call_table(,%eax,4)
    movl %eax,PT_EAX(%esp)    #store the return value
syscall_exit:
    testl $_TIF_ALLWORK_MASK,%ecx    #current->work
    jne syscall_exit_work
restall_all:
    RESTORE_INT_REGS
irq_return:
    INTERRUPT_RETURN
ENDPROC(system_call)
syscall_exit_work:
    testl $_TIF_WORK_SYSCALL_EXIT,%ecx
    jz work_pending
END(syscall_exit_work)
work_pending:
    testb $_TIF_NEED_RESCHED,%c1
    jz work_notifysig
work_resched:
    call schedule
    jz restall_all
work_notifysig:
    ...
END(work_pending)

2.系统调用简易的流程图

image

 

posted on 2016-05-09 18:00  LeoSanford  阅读(136)  评论(0编辑  收藏  举报

levels of contents