Linux设备驱动模板:poll
Linux设备驱动模板:poll
Linux设备驱动模板:poll
- #define FIFO_MAX_SIZE 1024
- struct xxx_dev
- {
- struct cdev cdev;
- wait_queue_head_t r_wait;
- wait_queue_head_t w_wait;
- int length;
- };
- struct xxx_dev *xxx_devp;
- static unsigned int xxx_poll(struct file *filp, poll_table * wait)
- {
- unsigned char mask = 0;
- struct xxx_dev *xxx_dev = filp.private_data;
- // poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table * p)
- poll_wait(filp, xxx_dev.r_wait, wait);
- poll_wait(filp, xxx_dev.w_wait, wait);
- if (xxx_dev.length != 0)
- {
- mask |= POLLIN | POLLRDNORM;
- }
- if (xxx_dev.length != XXX_MAX_SIZE)
- {
- mask |= POLLOUT | POLLWRNORM;
- }
- return mask;
- }
评论暂时关闭