Linux内核机制—wait唤醒机制

  1. 定义并初始化等待队列头 wait_queue_head

  2. 定义并初始化 wait_queue_entry

autoremove_wake_function() 就是实际执行唤醒本线程的回调函数,其支持的唤醒mode是通过参数传入的,也就是说由显示调用的唤醒函数决定的。如下:

  1. 准备休眠

  2. 将当前任务切走,让出CPU,进入等待状态

  3. 等待的事件发生后被唤醒

(1) 支持的唤醒函数

(2) 示例

展开为:

示例中的线程唤醒回调函数是 autoremove_wake_function()。

  1. 结束等待

  2. binder驱动中的一个删减后的例子

  3. 必须要根据wait时指定的休眠类型,来选择唤醒的类型。

  4. wake_up_xxx() 函数只是提供了一个唤醒框架,最终还是要调用到wait entry的回调函数执行实际的唤醒,回调函数中调用的 try_to_wake_up() 应该是最终归一的唤醒函数。

  5. wake_up_xxx() 函数只是提供了一个唤醒框架中,采用书签这个虚拟的wait entry机制,来限制每次最大唤醒任务数量为64个,以免持有 rq->lock 过长时间。

Original: https://www.cnblogs.com/hellokitty2/p/16514441.html
Author: Hello-World3
Title: Linux内核机制—wait唤醒机制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/27510/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • GitHub:超分辨率最全资料集锦

    前言 本文将分享的内容是:超分辨率(Super Resolution,SR)最全资料合集,涵盖了SISR、VSR等。 在这里插入图片描述 一张图看懂超分辨率SR作用 注:文末附超分…

    Linux 2022年8月30日
    0181
  • Linux 内核:利用of_函数读取设备树结点/属性信息

    设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,我们在编写驱动的时候需要获取到这些信息。 Linux 内核给我们提供了一系列的函数来获取设备树中的节点…

    Linux 2022年8月11日
    0152
  • Linux创建用户,SFTP只允许访问指定目录

    首先创建用户 我这里配置lus1这个用户目录,为sftp指向目录,即/home/lus1/ 重启sshd服务 指定文件夹权限 这时,lus1即可SFTP登录,并且只能访问指定的目录…

    Linux 2022年8月24日
    0152
  • windows环境安装VNC及远程连接linux(centos7)

    基础环境: 客户端:windows 10 服务器:centos7 软件:windows客户端安装 VNC-Viewer-6.21.1109-Windows.exe 下载地址:htt…

    Linux 2022年9月10日
    0175
  • Prometheus学习笔记(2)Prometheus部署

    Prometheus的安装配置启动 1、Prometheus二进制安装 2、Prometheus容器化安装 Prometheus的安装配置启动 1、Prometheus二进制安装 …

    Linux 2022年8月26日
    0146
  • docker-linux下的部署和基本命令

    Docker 安装 官方网站上有各种环境下的安装指南,比如:CentOS、Ubuntu 和 Debian 系列的安装。 我们现在关注的是基于CentOS 7.x的安装。 [En] …

    2022年8月8日
    0227
  • linux查找并替换命令

    find ./ -maxdepth 3 -type f -name “*Makefile” |xargs sed -i “s/CXX = g++…

    Linux 2022年8月20日
    0148
  • 【Linux】查看硬盘占用情况

    一. 获取硬盘容量信息 df -h 二. 获取目录占用硬盘容量大小 max-depth:目录深度 /root/ :目录路径 –max-depth=1 /root/:获取…

    Linux 2022年8月24日
    0155
  • linux下以‘-’开头的文件名

    linux下以’-‘开头的文件名,cp、mv、rm、ls等对他都是无效的: 那怎么来处理呢,想办法绕过-符号就行了:使用./ 扩展:对于文件名中带空格 mv…

    Linux 2022年8月26日
    0193
  • git remote: warning: suboptimal pack – out of memory

    今天在使用git clone项目的时候出现 “remote: warning: suboptimal pack – out of memory”…

    Linux 2022年8月30日
    0139
  • 你的团队工作量饱和吗?

    虽然参与软件开发的人被称为工程师和技术人员,但他们实际上是工匠。手艺一定是一技之长,或多或少都有一技之长,门外汉做不到,很难完全理解方式,合作的过程怕上当:-)。 [En] Alt…

    Linux 2022年11月5日
    0135
  • 双系统设置默认启动系统

    在原有windows系统下,我们装完Ubuntu系统后,会出现Ubuntu的grub引导界面(倒计时后自动进入Ubuntu),如下图所示。 假设我们需要将倒计时后默认启动的系统改为…

    Linux 2022年11月8日
    088
  • Linux知识:/root/.bashrc与/etc/profile的异同

    要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。 交互式模式就是s…

    Linux 2022年8月24日
    0127
  • Linux 查看运行中进程的 umask

    线上某台虚机因为故障重装了系统(基线 CentOS 6.9 内核 2.6.x),重新部署了应用。这个应用会生成一个文件,到NFS挂载目录。 而这个 NFS 挂载目录是一个 FTP …

    Linux 2022年9月10日
    0125
  • Postman 正确使用姿势

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介: Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的…

    Linux 2022年11月8日
    092
  • Ubuntu 22.04多系统自动探测开启方案

    OS Prober is Disabled in Ubuntu 22.04, Here’s a Workaround OS Prober is Disabled in …

    Linux 2022年8月26日
    0119
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总