do_notify_resume

这篇具有很好参考价值的文章主要介绍了do_notify_resume。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

asmlinkage void do_notify_resume(struct pt_regs *regs,
                 unsigned long thread_flags)
{
    /*
     * The assembly code enters us with IRQs off, but it hasn't
     * informed the tracing code of that for efficiency reasons.
     * Update the trace code with the current status.
     */
    trace_hardirqs_off();

    do {
        /* Check valid user FS if needed */
        addr_limit_user_check();

        if (thread_flags & _TIF_NEED_RESCHED) {
            /* Unmask Debug and SError for the next task */
            local_daif_restore(DAIF_PROCCTX_NOIRQ);

            schedule();
        } else {
            local_daif_restore(DAIF_PROCCTX);

            if (thread_flags & _TIF_UPROBE)
                uprobe_notify_resume(regs);

            if (thread_flags & _TIF_SIGPENDING)
                do_signal(regs);

            if (thread_flags & _TIF_NOTIFY_RESUME) {
                clear_thread_flag(TIF_NOTIFY_RESUME);
                tracehook_notify_resume(regs);
                rseq_handle_notify_resume(NULL, regs);
            }

            if (thread_flags & _TIF_FOREIGN_FPSTATE)
                fpsimd_restore_current_state();
        }

        local_daif_mask();
        thread_flags = READ_ONCE(current_thread_info()->flags);
    } while (thread_flags & _TIF_WORK_MASK);
}

/*
 * Load the userland FPSIMD state of 'current' from memory, but only if the
 * FPSIMD state already held in the registers is /not/ the most recent FPSIMD
 * state of 'current'
 */
void fpsimd_restore_current_state(void)
{
    /*
     * For the tasks that were created before we detected the absence of
     * FP/SIMD, the TIF_FOREIGN_FPSTATE could be set via fpsimd_thread_switch(),
     * e.g, init. This could be then inherited by the children processes.
     * If we later detect that the system doesn't support FP/SIMD,
     * we must clear the flag for  all the tasks to indicate that the
     * FPSTATE is clean (as we can't have one) to avoid looping for ever in
     * do_notify_resume().
     */
    if (!system_supports_fpsimd()) {
        clear_thread_flag(TIF_FOREIGN_FPSTATE);
        return;
    }

    get_cpu_fpsimd_context();

    if (test_and_clear_thread_flag(TIF_FOREIGN_FPSTATE)) {
        task_fpsimd_load();
        fpsimd_bind_task_to_cpu();
    }

    put_cpu_fpsimd_context();
}

work_pending:
    mov    x0, sp                // 'regs'
    bl    do_notify_resume
#ifdef CONFIG_TRACE_IRQFLAGS
    bl    trace_hardirqs_on        // enabled while in userspace
#endif
    ldr    x1, [tsk, #TSK_TI_FLAGS]    // re-check for single-step
    b    finish_ret_to_user
/*文章来源地址https://www.toymoban.com/news/detail-568468.html

到了这里,关于do_notify_resume的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 颜值即正义,献礼就业季,打造多颜色多字体双飞翼布局技术简历模版(Resume)

    一年好景君须记,最是橙黄橘绿时。金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律千篇的老式模版,平平无奇,味同嚼蜡,没错,蜡都要沿着嘴角流下来了。本次我们基于Html和Css3打造一款独立实现的高颜值简历模板,就

    2023年04月14日
    浏览(65)
  • linux/drivers/leds/leds-gpio.c学习

    `linux/drivers/leds/leds-gpio.c` 是 Linux 内核中的一个驱动程序文件,用于控制 GPIO 引脚上的 LED 灯。下面是对该文件的更详细解读: 1. 头文件引入:该文件引入了一些必要的头文件,包括 `linux/kernel.h`、`linux/module.h`、`linux/gpio/consumer.h` 等。这些头文件提供了在内核中进行 GPIO 和 L

    2024年02月14日
    浏览(31)
  • Gradle: javax.net.ssl.SSLException: No PSK available. Unable to resume.

    今天在使用 gradle 构建项目过程中, 发现一个 ssl 问题: JDK 11中存在一个错误:https://bugs.openjdk.java.net/browse/JDK-8213202 可通过如下方式解决/避免: 等待JDK 12发布 更新到JDK 11.0.3+,其中包括backport(向后移植) 使用此命令行参数作为解决方法:-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 建

    2024年02月07日
    浏览(49)
  • Linux Centos7安装更新GPU driver驱动和cuda:

    目录 1. 查看显卡版本命令: 2. 更新驱动: 2.1 下载显卡驱动 2.2 安装前配置 2.3 安装显卡驱动 3. 下载更换cuda版本: 3.1 下载cuda: 3.2 安装过程中遇到一些选项,同意协议accept 3.3 vi ~/.bashrc末端加上配置信息 参考连接: nvidia-smi:GPU驱动版本,driverAPI(支持的最高cuda版本)。

    2024年02月15日
    浏览(46)
  • 驱动 | Linux | NVMe | 1. NVMe Driver的前世今生和工作原理概述

    本文主要参考这里 1 ’ 2 的解析和 linux 源码 3 。 此处推荐一个可以便捷查看 linux 源码的网站 bootlin 4 。 更新:2022 / 02 / 19 NVMe 离不开 PCIe , NVMe SSD 是 PCIe 的 endpoint 。 PCIe 是 x86 平台上一种流行的外设总线,由于其 Plug and Play 的特性,目前很多外设都通过 PCI Bus 与 Host 通信,

    2024年02月16日
    浏览(43)
  • 嵌入式Linux 开发经验:platform_driver_register 的使用方法

    嵌入式Linux 设备驱动开发时,经常遇到平台驱动 platform_driver_register 的注册,最近深入了看了驱动开发为何使用平台驱动 开发一个设备驱动时,为了实现 设备的 打开、关闭、控制等操作,可以注册为 Linux misc 设备,不过在这之前,可以先使用 platform_driver_register 注册平台驱动

    2024年01月15日
    浏览(39)
  • wait 和 notify

    ✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:阅己,越己,悦己;自行,自省,自醒;无味,无谓,无畏。 由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序. wai

    2024年02月02日
    浏览(103)
  • QT之一种notifiation使用

    使用Qt5实现的消息提醒功能。 本文借助消息通知开源框架实现消息通知功能,软件包在上面。 在pro工程中包含qtnotify2.pri 效果如下 效果如下 效果如下

    2024年02月12日
    浏览(26)
  • Gradle编译时报错 Caused by: javax.net.ssl.SSLException: No PSK available. Unable to resume.

    Gradle编译时报错 Caused by: javax.net.ssl.SSLException: No PSK available. Unable to resume. 这是 JDK 11 的一个bug, 升级到 JDK 11.0.3+ 可以解决 bug: https://bugs.openjdk.java.net/browse/JDK-8213202 不想升级的话可以手动修改 $JAVA_HOME/conf/security/java.security 文件, 找到 jdk.tls.disabledAlgorithms=SSLv3 所在的那一行,在行

    2024年02月12日
    浏览(96)
  • 多线程中的wait和notify

    由于线程之间是抢占式执行的,所以线程之间的执行先后顺序难以预知。但实际上是希望合理的协调多个线程之间的执行先后顺序。  完成这个协调工作,主要涉及到三个方法 *wait()/wait(long timeout);让当前线程进入等待状态。 *notify()/notifyAll();唤醒在当前对象上等待的线程。

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包