牛蹄印章_VX_iibull
iibull
偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1747)
ER69XX项目归纳(5)
驱动(18)
Delphi(11)
dotNet(13)
Meego(4)
Kernel(25)
U-BOOT(7)
Oracle(15)
工作(6)
2024年(23)
2023年(26)
2022年(112)
2021年(217)
2020年(157)
2019年(192)
2018年(81)
2017年(78)
2016年(70)
2015年(52)
2014年(40)
2013年(51)
2012年(85)
2011年(45)
2010年(231)
2009年(287)
miaoyule
shiye
General_
cehnjinj
zhuping_
gongping
zzbok
garfield
transist
gaokeke1
WhiteChe
Owen_Zha
xuguangm
albertyo
jjgo
敲代码的
Alaer0v0
liaojun
分类: LINUX
2010-11-23 14:07:58
fcntl(fd, F_SETSIG, SIG_MYSIG); //把当前设备文件fd上报的SIGIO作为自定义SIG_SOFTPOWEROFF的信号处理
fcntl(fd, F_SETSIG, SIG_MYSIG); //把当前设备文件fd上报的SIGIO作为
自定义SIG_SOFTPOWEROFF
的信号处理
signal(SIG_MYSIG, ProcSIG_SIG_MYSIG); //对自定义的信号量建立处理句柄////sigaction int flags; fcntl(fd ,F_SETOWN, getpid()); //应用可以接收驱动的SIGURG或SIGIO信号 flags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, flags|FASYNC);//也可以在open函数使用O_ASYNC标志
signal(
SIG_MYSIG
, ProcSIG_
); //对自定义的信号量建立处理句柄//
//sigaction
int flags; fcntl(fd ,F_SETOWN, getpid()); //应用可以接收驱动的SIGURG或SIGIO信号 flags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, flags|FASYNC);//也可以在open函数使用O_ASYNC标志
/* 当F_SETFL被执行来打开FASYNC,驱动的fasync方法被调用 */
/*
*/
static int scull_p_fasync(int fd, struct file *filp, int mode) { struct scull_pipe *dev = filp->private_data; return fasync_helper(fd, filp, mode, &dev->async_queue); }
/* 当数据到达,所有注册异步通知的进程必须获得一个SIGIO信号 */
...
if (dev->async_queue)
kill_fasync(&dev->async_queue, SIGIO, POLL_IN);
/* 当要通知用户进程设备可被写入时,参数应当使用POLL_OUT */
/* 当设备被关闭或者去除FASYNC标志时,需要从异步列表中去除此用户进程 */
/* remove this filp from the asynchrounously notified filp's */
scull_p_fasync(-1, filp, 0);
上一篇:6.3. poll 和 select
下一篇:6.5. llseek
登录 注册