• 系统调用下


    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

     

  • 相关阅读:
    redis基础
    Django Meta
    Django Query
    Django FileFieldManage
    Django Managers管理器
    Django 模型
    Pytables h5py
    python 高级部分
    Python和HDF 5大数据应用
    是时候放弃pipeline 模型 ?
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5474894.html
Copyright © 2020-2023  润新知