在Linux驱动程序中,使用等待队列的作用?

在Linux驱动程序中,使用等待队列的作用?,第1张

我帮你搜索到如下的回复希望对你有帮助《Linux就该这么学》

概念与术语

1内核里面的一个队列,可以将对象加入到队列中,

2可以选择条件休眠和无条件休眠,一般情况下是条件休眠用得较多。

3作用:阻塞读。当运用程序读数据但是现在姿带还无数据可读时,往往会先挂起,

4让其他线程先走,等有数据可读时或洞再唤醒。

5那么什么时候唤醒呢?怎样唤醒呢?

6这里等待队列就派上用场了。读的时候若无数据可读则加入到等待队列中,

7写入的时候唤醒这个队列。迹团芦

8可以类比运用程序编程中的pthread_cond_wait()与pthread_cond_broadcast()记忆。

函数接口

include/linux/wait.h

挂载就是把硬盘设备连接到某个目录下。比如mount -t vfat -o utf8 /dev/sda1 /mnt/winC,就是把/dev/sda1这个分区(我的机器上对应的是win下的C盘)挂载到/mnt/winC下。目录可以自行创建,好记就行。雀兄挂载以后对目录的 *** 作就是对相应分区的 *** 作。目录的顷腔袭内容变成相应分区下的内容。而原来的内容就看不见了(被隐藏起来了,并没有删除),卸载(比如:umount /mnt/winXC)之后圆枝原来的内容就又回来了。

pause函数使调用进程挂起直至捕捉到一个信号。

#include

int

pause(void)

返回:-1,errno设置为EINTR

只有执行了一个信号处理程序并从其返回时穗禅,pause才返回。

/*************************************

使用alarm函数定时,然后通过pause()等待alarm函数的信号。

1:使用alarm函数的时候要注意alarm函数的覆盖性,即在一个进程中采用一次alarm函数则该进程之前的alarm函数将毕尺失效。

2:pause函数为将进程挂起,然后等待信号。

3:因为alarm函数在定时器到点的时候产生的信号默认为让该进程退出。因此本代码运行5秒然后直接退出,终端不会输出printf中的语句。

tips:挂起和阻塞的区别为,挂起是进程主动行为猜数尘,阻塞是进程的被动行为。

*************************************/

#include

#include

#include

int

main(int

argc,char

*argv[])

{

int

ret

ret=alarm(5)

pause()

printf("will

this

be

printed?\n")

}

#include

#include

#include

int

main()

{

int

ret

ret=alarm(5)

pause()

printf("I

have

been

waken

up.\n",ret)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8215780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存