抢占在中断中的判断

ret_from_intr:
    DISABLE_INTERRUPTS(CLBR_ANY)
    TRACE_IRQS_OFF

    LEAVE_IRQ_STACK

    testb    $3, CS(%rsp)
    jz    retint_kernel

    /* Interrupt came from user space */
GLOBAL(retint_user)
    mov    %rsp,%rdi
    call    prepare_exit_to_usermode
    TRACE_IRQS_IRETQ
    SWAPGS
    jmp    restore_regs_and_iret

/* Returning to kernel space */
retint_kernel:
#ifdef CONFIG_PREEMPT
    /* Interrupts are off */
    /* Check if we need preemption */
    bt    $9, EFLAGS(%rsp)        /* were interrupts off? */
    jnc    1f
0:    cmpl    $0, PER_CPU_VAR(__preempt_count)
    jnz    1f
    call    preempt_schedule_irq
    jmp    0b
1:
#endif
    /*
     * The iretq could re-enable interrupts:
     */
    TRACE_IRQS_IRETQ

/*
 * At this label, code paths which return to kernel and to user,
 * which come from interrupts/exception and from syscalls, merge.
 */
GLOBAL(restore_regs_and_iret)
    RESTORE_EXTRA_REGS
restore_c_regs_and_iret:
    RESTORE_C_REGS
    REMOVE_PT_GPREGS_FROM_STACK 8
    INTERRUPT_RETURN

//4.14.5

时间: 2024-10-21 10:15:57

抢占在中断中的判断的相关文章

linux内核学习:中断中推后执行的部分

软中断-softirq 特点 相同和不同的软中断都可以在不同处理器上同时执行 一个软中断不会抢占另一个软中断 何时执行 从中断程序返回时 ksoftirqd线程中 显示调用 软中断最多有32个,一个32位的整型数据可以被用来标记刮起的软中断 使用策略 软中断应用于确实需要的场合,目前只有网络驱动和SCSI驱动中使用.另外,内核定时器和tasklet建立在软中断之上. 使用方法 注册软中断 void open_softirq(int nr, void (*action)(struct softir

oracle中如何判断一个字符串是否含有汉字

oracle中如何判断一个字符串是否含有汉字 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ①全角字符的判断,或者是含有汉字的字符串的判断 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2.2 实验环境介绍 11.2.0.3  RHEL6.5 一.2.3 本文简介 看到网友问,怎么查询表中某个字段数据是不是包含了

Java中如何判断一个double类型的数据为0?

Java中如何判断一个double类型的数据为0 其实这个问题很简单,只是很多时候考虑复杂了,直接用==判断即可.下面给出测试例子: /**  * 如何判断一个double类型的数据为0  *  * @author leizhimin 2014/8/27 10:31  */ public class Test4 {     public static void main(String[] args) {         double x = 0.00000000000000000;       

随想录(中断中真的不能上下文切换吗)

[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 记得在读书的时候,操作系统的老师就告诉我们,在cpu处理中断的时候,是不能进行上下文切换的.至于原因是什么,就说是影响中断啦.影响性能什么的.再往下深层次一点,就没有了.当然了,对老师的话,我们当然是深信不疑的. 等到后来自己port ucos2实时系统的时候发现,原来在中断返回的时候是可以进行中断上下文切换的.为什么呢?因为cpu刚刚处理了中断,而原来某个高优先级的任务可能刚刚在中断里面被唤

JavaScript中正则表达式判断匹配规则以及常用的方法

JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可

160304-02、JS 中如何判断null 和undefined

JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断. 以下是不正确的用法: var exp = undefined;if (exp == undefined){    alert("undefined");} exp 为 null 时,也会得到与 undefined 相同的结果,虽然 null 和 undefined 不一样.注意:要同时判断 undefined 和 null 时可使用本法.

shell中条件判断if中的-z到-d的意思

shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ -d FILE ] 如果 FILE 存在且是一个目录则为真. [ -e FILE ] 如果 FILE 存在则为真. [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真. [ -g FILE ] 如果 FILE 存在且已经设置了SGID则

ThinkPHP3.2中if判断条件是两个变量

<select name="typeId"> <foreach name="typeInfo" item="v"> <if condition="$v[typeId] eq $article[typeId]"> <option value="{$v.typeId}" selected>{$v.name}</option> <else/>

在EasyUI中统一判断是否有选中行,如果有则将选中行数据传入回调函数

function procossWithSeletedData(func) { var rowData = $("#tbGrid").datagrid("getSelected"); if (rowData) { func(rowData); //调用回调函数 并传入 选中行数据 } else { $.msgBoxObj.showMsgErr("没有选中行..........!");//提示信息 } } 在EasyUI中统一判断是否有选中行,如果