千家信息网

Sinlinx A64开发板Linux内核等待队列poll中什么是阻塞与非阻塞

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍Sinlinx A64开发板Linux内核等待队列poll中什么是阻塞与非阻塞,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 开发平台 芯灵思Sinlinx A
千家信息网最后更新 2026年10月31日Sinlinx A64开发板Linux内核等待队列poll中什么是阻塞与非阻塞

这篇文章给大家介绍Sinlinx A64开发板Linux内核等待队列poll中什么是阻塞与非阻塞,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

 开发平台 芯灵思Sinlinx A64内存: 1GB   存储: 4GB开发板详细参数 https://m.tb.cn/h.3wMaSKm**

阻塞:阻塞调用是指调用结果返回之前,当前进程程会被挂起(休眠)。函数只有在得到结果之后才会返回。默认情况下,文件都是以这种方式打开。 非阻塞:指在不能立刻得到结果之前,该函数不会阻塞当前进程程,而会立刻返回。应用程序可选择以阻塞或非阻塞方式打开设备文件,然后设备进行读写操作,如果驱动的读写函数支持阻塞和非阻塞功能,这两种打开方式才会有区别。

阻塞示例 :fd = open("/xxx/word", O_RDONLY ); // 默认阻塞方式打开 如果此时没有数据可以读取,则执行休眠 如果有数据可以读取,则马上读取数据,不休眠,读取数据后马上返回。 非阻塞示例 :fd = open("/xxx/word", O_RDONLY | O_NONBLOCK ); //非阻塞方式打开 如果此时已经有数据可以读取,则读取数据再返回。 如果没有数据可以读,也马上返回,但是返回一个错误码。

1)驱动中如何得到用户空间应用程序打开的方式?
open一个设备,内核会创建一个file结构,并且把打开方式的数值存放到file结构成员f_flags成员中,驱动程序的read,write 接口可以使用参数file指针取得文件打开方式。file结构中有一个成员是f_flags ,创建时候,内核会把open 函数的最后一个参数 flag 数值保存在 f_flags 变量中。

static ssize_t xxx_read(struct file *pfile, char user *buf, size_t count, loff_t *poff){    ……    //判断当前是否有按键动作    if(没有按键动作)    {        //判断 pfile->f_flags 成员是否设置 O_NONBLOCK          if(pfile->f_flags & O_NONBLOCK) //表示用户空间使用非阻塞打开        {                return - EAGAIN; //返回一个错误码,告诉用户空间你可以再尝试读取        }        //阻塞方式打开,没有数据就休眠,不马上返回else        {                //休眠,等待有按键动作唤醒进程。        }    }}

2)如何知道是否有按键动作? 如果按键按键或松开时刻,会产生一个中断,所以,在中断程序设置一个标志即可。 定义一个全局变量,初始值为 0,表示没有按键动作发生,在中断程序中设置这个变量值为 1,表示发生按键动作。

3)如何让进程进入休眠状态? 最简单,最直接的休眠方式: msleep 函数 这个函数:一旦调用,则调用进程会休眠指定长的时间,时间一到内核会唤醒这个进程. //休眠,等待有按键动作唤醒进程。

    while(press == 0)                 msleep(5); // 休眠5ms

关于Sinlinx A64开发板Linux内核等待队列poll中什么是阻塞与非阻塞就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阻塞 方式 休眠 按键 数据 动作 函数 内核 程序 进程 开发 成员 马上 参数 文件 用户 空间 结构 结果 设备 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳互联网络科技有限公司 互联网科技公司怎么样 云电互联网科技 互联网科技论坛 恒生科技互联网指数分析 华中科技有哪些互联网大佬 互联网科技博主是什么意思 互联网公司科技股 互联网金融科技展 乌苏新华互联网科技做什么的 广州新华互联网科技学校电竞方面 互联网科技大赛获奖感言 为客找房互联网科技公司怎么样 华中科技大学互联网的牛人 怎样加入科技互联网 深圳互联网科技的发展 宁波跨境商互联网科技有限公司 全球科技与互联网公司市值变化 陕西九四连强互联网科技有限公司 三亚科技创新互联网基地 互联网黑科技 广州淘业互联网络科技 宜安科技 互联网金融 美国互联网黑科技 有木互联网科技 科技类的互联网平台 互联网科技类展会 深圳卡尔迅互联网科技有限公司怎么样 赶超互联网科技 微信多开 美国五大互联网科技公司市值多少
0