????????????????????globalfifo????
??????globalfifo??poll()?????У???????豸???????r_wait??w_wait?????????????????б??globalfifo?豸??????poll()???????£?
static unsigned int gloablfif0_poll(struct file *filp??poll_table *wait)
{
unsigned int mask = 0;
struct globalfifo_dev *dev = filp->private_data;
down(&dev->sem);
poll_wait(filp??&dev->r_wait ?? wait)  ;
poll_wait(filp??&dev->r_wait ?? wait)  ;
if(dev->current_len != 0)
{
mask |= POLLIN | POLLRDNORM;
}
if(dev->current_len != GLOBALFIFO_SIZE)
{
mask |= POLLOUT | POLLWRNORM;
}
up(&dev->sem);
return mask;
}
??????????
????· ?????????????????
????· ???岢???????????????
????· ???岢???????????У?
????· ????????????????????
????· ???y???????TASK_INTERRUPTIBLE???????????????TASK_UNINTERRUPTIBLE???????????????
????· ????????????
????poll?????
????· ????????????poll_table
????· ?????????????豸??????????????д?????????