当前位置: 技术问答>linux和unix
请教select函数
来源: 互联网 发布时间:2015-11-19
本文导语: e = select (FD_SETSIZE, in, out, except, timeout) ; 比如fd是in里面的一个文件描述符。fd是我自己写的一个驱动的设备,它的read如下, static ssize_t my_read(struct inode *inode, char *buf, unsigned long count) { down_interruptible(&my_sem...
e = select (FD_SETSIZE, in, out, except, timeout) ;
比如fd是in里面的一个文件描述符。fd是我自己写的一个驱动的设备,它的read如下,
static ssize_t my_read(struct inode *inode, char *buf, unsigned long count)
{
down_interruptible(&my_sem);
put_user(s_mydata,buf);
return 1;
}
那么,select函数是非阻塞的调用my_read来检测数据是否就绪?如果是,select的测试周期是多少呢?另外,比如像我这个read函数,怎样算“数据就绪”呢?我的read不是总可以读到数据吗?
困惑中,请达人指点。
谢谢了。
比如fd是in里面的一个文件描述符。fd是我自己写的一个驱动的设备,它的read如下,
static ssize_t my_read(struct inode *inode, char *buf, unsigned long count)
{
down_interruptible(&my_sem);
put_user(s_mydata,buf);
return 1;
}
那么,select函数是非阻塞的调用my_read来检测数据是否就绪?如果是,select的测试周期是多少呢?另外,比如像我这个read函数,怎样算“数据就绪”呢?我的read不是总可以读到数据吗?
困惑中,请达人指点。
谢谢了。
|
看Linux Device Driver 3/e,里边对于驱动要提供select/poll接口有很详细的描述。
|
select不会调你的read.如果你有poll的话到是会调。