linux_fasync的总结

2023-10-29

fasync的总结
我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时 候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备 的状态,从而节约了资源,这就是异步通知。

相关函数原型:

int fasync_helper(struct inode *inode, struct file *filp, int mode, struct fasync_struct **fa);

作用:一个"帮忙者", 来实现 fasync 设备方法.
fasync_helper 被调用来从相关的进程列表中添加或去除入口项, 当 FASYNC 标志因一个打开文件而改变。 它的所有参数除了最后一个, 都被提供给 fasync 方法并且被直接传递. 当数据到达时 kill_fasync被用来通知相关的进程. 它的参数是被传递的信号(常常是 SIGIO)和 band 。

参数:
mode :参数是传递给方法的相同的值,
fa : 指针指向一个设备特定的 fasync_struct *

void kill_fasync(struct fasync_struct *fa, int sig, int band);

如果这个驱动支持异步通知, 这个函数可用来发送一个信号到登记在 fa 中的进程.

fasync这个东西就是为了使驱动的读写和application的读写分开,使
得application可以在驱动读写时去做别的事,

通过kill_fasync(kill_fasync(&async, SIGIO, POLL_IN)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux_fasync的总结 的相关文章

  • Linux经典书籍推荐

    Linux经典书籍推荐 入门篇 LINUX权威指南 书不错 写的很全面也比较广 涉及的不深 做为入门书籍不错 可以比较全面的了解linux 另外比较热门的也可以看看 鸟哥的私房菜 等书 偏管理类的书 如果想做server方向的可以找来看看
  • Android 获取USB设备的类型

    Version info Linux 3 10 Android 4 2 一 问题 现在有USB设备插入Android系统 那么如何得知插入的设备类型 是USB打印机 U盘 还是USB鼠标 二 USB类型规定 对于USB类型 USB组织是有规
  • 红黑树学习

    红黑树的是一种特殊的二叉搜索树 有如下性质 性质1 节点是红色或黑色 性质2 根是黑色 性质3 每个叶节点是黑色的 性质4 每个红色节点的两个子节点都是黑色 从每个叶子到根的所有路径上不能有两个连续的红色节点 性质5 从任一节点到其每个叶子
  • 趣谈操作系统原理,存储管理之页式、段式、段页式存储

    一 概述 非连续分配管理方式允许一个程序分散地装入到不相邻的内存分区 根据分区的大小是否固定分为分页式存储管理方式和分段式存储管理方式 分页存储管理方式中 又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页式存储管理方式和
  • 使用Crash工具分析 Linux dump文件

    前言 Linux 内核 以下简称内核 是一个不与特定进程相关的功能集合 内核的代码很难轻易的在调试器中执行和跟踪 开发者认为 内核如果发生了错误 就不应该继续运 行 因此内核发生错误时 它的行为通常被设定为系统崩溃 机器重启 基于动态存储器
  • linux的自旋锁struct spinlock_t的使用

    在linux中提供了一些机制用来避免竞争条件 最简单的一个种就是自旋锁 例如 当一个临界区的数据在多个函数之间被调用时 为了保护数据不被破坏 可以采用spinlock来保护临界区的数据 当然还有一个就是信号量也是可以实现临界区数据的保护的
  • linux内核分析:进程通讯方式

    信号 一旦有信号产生 我们就有下面这几种 用户进程对信号的处理方式 1 执行默认操作 Linux 对每种信号都规定了默认操作 例如 上面列表中的 Term 就是终止进程的意思 Core 的意思是 Core Dump 也即终止进程后 通过 C
  • linux源代码.tar.xz解压

    刚开始学习linux内核 在linux内核官网https www kernel org 下载 我下载的版本是 linux 2 6 34 14 tar xz 由于我的linux中没有安装 xz的解压缩软件 需要下载 http download
  • 带外数据

    定义带 外 数据 想 像一下在银行人们排起队等待处理他们的帐单 在这个队伍中每个人最后都会移到前面由出纳员进行服务 现在想像一下一个走入银行 越过整个队伍 然后用枪抵 住出纳员 这个就可以看作为带 外 数据 这个强盗越过整个队伍 是因为这把
  • 一文搞懂Linux内核页框回收(Page Frame Reclamation)

    页替换策略 Page Replacement Policy 每当讨论页替换策略 提及最多的就是基于LRU Least Recently Used 的算法 但严格来说这是不对的因为这些lists并不是严格按照LRU的顺序来维护的 在Linux
  • 为什么linux kernel默认的页面大小是4K,而不是4M或8M?

    相信很多人在看内核内存管理部分的时候 都有这样一个疑问 为什么物理页面的大小选择4K 而不是大一些或者小一些呢 这个问题没有固定的答案 仁者见仁智者见智 每个人的关注点不一样 所以这篇文章不是说给出一个固定的答案 更多的只是一篇讨论性的文章
  • 七种Linux设备驱动模型之——Device

    前言 Linux将所有的设备统一抽象为struct device结构 同时将所有的驱动统一抽象为struct device driver结构 这样设计之后就方便驱动开发工程师编写驱动 只需要将具体的设备包含struct device结构 具
  • linux设备驱动归纳总结(四):3.抢占和上下文切换

    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 上一节介绍了进程调度的一些基本概念 并简单介绍了在没有抢占的情况下
  • MPC8314 (e300核) uboot 调试

    历经2个多月 完成了MPC8314最小系统 uboot 及Linux内核和根文件系统的调试 这是我第一次从头开始做小系统和内核的移植工作 虽然调试的比较辛苦 但是收获还是很多的 下面就介绍一下调试的过程和一些原理性的东西 1 MPC8314
  • 字符设备驱动相关函数

    Linux内核中 a 使用cdev结构体来描述字符设备 b 通过其成员dev t来定义设备号 分为主 次设备号 以确定字符设备的唯一性 c 通过其成员file operations来定义字符设备驱动提供给VFS的接口函数 如常见的open
  • linux内核使用的一些算法和思想(个人总结)

    这里只罗列一些算法 其中有些在我之前的博文中有所涉及 有些没有 后续有时间再详细分析每一个算法 排名不分先后 1 trie算法 linux网络子系统中取代了之前哈希算法的新路由算法 适合有大 超大规模路由项的应用场景 2 CFS compl
  • diagnose-tools 编译报错

    在 Ubuntu 20 04 4 LTS 环境中 编译diagnose tools 执行make deps时报错 checking whether gcc m32 makes executables we can run no config
  • 第九章 tcp拥塞控制--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 Linux提供丰富的拥塞控制算法 这些算法包括Vegas Reno HSCTP High Speed TCP Westwood BIC
  • int $0x80系统调用的idea

    1 基础知识 用户态和内核态 一般现代CPU都有几种不同的指令执行级别 Linux总共划分为4个指令执行级别 内核运行在0级别上 1 2级别默认不运行 用户程序运行在3级别上 在内核指令执行级别上 代码可以执行特权指令 访问任意的物理地址
  • linux内核-软中断与Bottom Half

    中断服务一般都是在将中断请求关闭的条件下执行的 以避免嵌套而使控制复杂化 可是 如果关中断的时间持续太长就可能因为CPU不能及时响应其他的中断请求而使中断 请求 丢失 为此 内核允许在将具体的中断服务程序挂入中断请求队列时将SA INTER

随机推荐

  • Django在线教育平台项目完整实现(五)

    Django在线教育平台项目完整实现 五 九 生产环境部署 1 安装python3 7 2 mariadb和redis 3 安装Nginx 4 配置虚拟环境 5 安装uwsgi 6 测试uwsgi 7 配置Nginx 8 补充注意 九 生产
  • win10 网络凭据 一直显示用户名与密码不正确

    1 局域网共享打印机输入 ip 连接时大概显示如下图 解决办法 1 所有设置 网络和共享中心 更改高级共享设置 2 控制面板 用户账户 管理windows凭据 添加windows凭据 凭据的内容均与共享打印机的主机有关
  • 剑指Offer04:二维数组中的查找 C# 交错数组越界问题

    剑指Offer04 二维数组中的查找 C 以及交错数组越界问题IndexOutOfRangeException 数组越界异常 在该题目提交的时候报错 Unhandled exception System IndexOutOfRangeExc
  • 中国网络技术联盟——欢迎您的加入!

    欢迎广大网络技术专业人才加入 希望这里会成为您学习交流的平台 如果您遇到了技术上的难题 请您尽管提出 大家一起解决 共同进步 为了营造良好的技术交流氛围 请不要发布广告 谈论无关话题 谢谢您的合作 01群56370265 群主 大洋 02群
  • nuxt解析markdown代码块高亮、复制,显示行号

    文章目录 一 解析markdown 二 代码块高亮 三 代码块复制 四 添加行号 最终效果 一 解析markdown 使用markdownit npm i nuxtjs markdownit 在nuxt config js中modules添
  • 17.6 C++并发与多线程-unique_lock详解

    17 1 C 并发与多线程 基础概念与实现 17 2 C 并发与多线程 线程启动 结束与创建线程写法 17 3 C 并发与多线程 线程传参详解 detach坑与成员函数作为线程函数 17 4 C 并发与多线程 创建多个线程 数据共享问题分析
  • EduCoder_web实训作业--创建下拉列表

    第一关 D C C B A 第二关
  • 华为OD机试真题-最大数字 【2023.Q1】

    题目内容 给定一个由纯数字组成以字符串表示的数值 现要求字符串中的每个数字最多只能出现2次 超过的需要进行删除 删除某个重复的数字后 其它数字相对位置保持不变 如 34533 数字3重复超过2次 需要删除其中一个3 删除第一个3后获得最大数
  • ctf_show web入门 sql篇 171-239

    这里是引用 ctfshow web入门 sql篇 171 很简单直接联合查询 172 和第一题一样的查询语句 不过在显示内容时有过滤 过滤了flag union select id if username flag a username p
  • AppImage是什么,怎么用

    https blog csdn net aboutmn article details 87254930
  • 骗分导论(摘自大佬的博客)

    1 NOIP 之前的知识 2 高等图论 gt 网络流 gt 最大流 gt 最大流最小割切定理 gt 最小费用最大流 gt 容量有上下界的最大流最小流 gt 容量有上下界的最小费用最大流 gt 二分图 gt 连通图 最大独立集 最大支配集 g
  • nuxt--路由--<nuxt-link>

    参考 路由 NuxtJS Nuxt js 中文网 进入项目后启动 npm run dev Nuxt js 依据 pages 目录结构自动生成 vue router 模块的路由配置 要在页面之间使用路由 我们建议使用
  • C++学习(二十八)值传递的性能问题

    对于int 直接传值比传引用节省了一次解引用的开销 其效率当然会高 基本数据类型都是优化过的 引用传值有两个好处 1 参数可以带回来值 2 大对象无需拷贝进去 对于大对象而言引用传递效率会更高
  • 线性代数的本质(干货!)

    原文链接 https www cnblogs com TenosDoIt p 3214096 html 从大学开始接触矩阵论和线性代数 记了很多公式 但是总感觉徘徊在线性代数的门外没有进去 感觉并没有接触到它的核心概念 不巧看到了这篇博客
  • 7.Unity中c#代码学习(物理系统刚体+碰撞检测(爆炸效果实现))

    刚体 通过添加组件Physics Rigidbody 实现对物体插入物理引擎 刚体 碰撞体 查看碰撞体范围 可以编辑碰撞的范围 碰撞体 在文件中创建物理材质 右键 create Pythsics material friction摩擦力 有
  • 建站平台(WebPlus)申请建站流程图及相关使用文献

    WebPlus系统是学校信息网络中心提供的用于建设部门网站的管理平台 可实现快速建站和校内信息资源共享平台 每个独立部门原则上只能申请一个WebPlus建站空间 平台使用方法请访问 http service webplus net cn 上
  • (转)CASE WHEN 用法

    Case具有两种格式 简单Case函数和Case搜索函数 简单Case函数 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其他 END Case搜索函数 CASE WHEN sex 1 THEN 男 W
  • vue脚手架搭建、介绍和初始页面的构造(图文详细)

    文章目录 什么是vue脚手架 前置环境的安装 配置node js 安装脚手架vue cli 创建项目 项目配置 项目结构 修改初始页面 样式的less语法 什么是vue脚手架 Vue脚手架 Vue CLI 是一个官方提供的命令行工具 用于快
  • 【文件上传】绕过总结

    一般绕过会分为黑名单绕过 白名单绕过 特殊类型绕过 以下为文件上传后缀绕过 黑名单绕过 1 大小写绕过 eg a JSP a Jsp a jsP a jSP等等 2 空格绕过 一般保存文件名前后带空格 保存时都会被忽略掉 而php在传输中
  • linux_fasync的总结

    fasync的总结 我们知道 驱动程序运行在内核空间中 应用程序运行在用户空间中 两者是不能直接通信的 但在实际应用中 在设备已经准备好的时 候 我们希望通知用户程序设备已经ok 用户程序可以读取了 这样应用程序就不需要一直查询该设备 的状