Linux 内核中处理阻塞访问的方法:等待队列

本文深入探讨了Linux内核如何通过等待队列处理阻塞进程的唤醒,详细介绍了等待队列头、队列项的添加与移除,以及wait_event系列函数的应用,旨在理解阻塞IO时的内核机制。
摘要由CSDN通过智能技术生成

一. 简介

上一篇文章简单介绍了 什么是Linux阻塞与非阻塞IO。文章地址如下:

Linux阻塞与非阻塞IO简介-CSDN博客

本文来学习Linux内核提供的唤醒阻塞进程机制:等待队列。

二.  Linux 内核唤醒阻塞进程的机制:等待队列

阻塞访问最大的好处就是,当设备文件不可操作的时候进程可以进入休眠状态,这样可以把 CPU资源让出来。但是,当设备文件可用时就必须唤醒进程,一般在中断函数里完成唤醒进程的工作。

Linux内核提供了等待队列(wait queue)来实现阻塞进程的唤醒工作。

下面来学习Linux内核中等待队列涉及的结构体与 API函数。

1.  等待队列头

如果我们要在驱动中使用等待队列,必须创建并初始化一个等待队列头,等待队列头使用结构体
wait_queue_head_t 表示,wait_queue_head_t 结构体定义在文件 include/linux/wait.h 中,结构体内 容如下所示:
struct __wait_queue {
	unsigned int		flags;
	void			*private;
	wait_queue_func_t	func;
	struct list_head	task_list;
};

typedef struct __wait_queue_head wait_queue_head_t;

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值