diff options
| author | Holger Waechtler <devnull@localhost> | 2003-01-08 16:51:07 +0000 |
|---|---|---|
| committer | Holger Waechtler <devnull@localhost> | 2003-01-08 16:51:07 +0000 |
| commit | c968f1b52110e481ca9e183729b3a6ad6a2d3aeb (patch) | |
| tree | 4c6754f4ce3a7c7017192971cce4a47892bbb6bc /linux/drivers/media/dvb/dvb-core | |
| parent | 9b3d3cf6fad7c32c45bf4eb501daee377fcd3529 (diff) | |
| download | mediapointer-dvb-s2-c968f1b52110e481ca9e183729b3a6ad6a2d3aeb.tar.gz mediapointer-dvb-s2-c968f1b52110e481ca9e183729b3a6ad6a2d3aeb.tar.bz2 | |
apply optimisation patches suggested by Dr. Werner Fink <werner@suse.de>
Diffstat (limited to 'linux/drivers/media/dvb/dvb-core')
| -rw-r--r-- | linux/drivers/media/dvb/dvb-core/dmxdev.c | 71 | ||||
| -rw-r--r-- | linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 3 |
2 files changed, 32 insertions, 42 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dmxdev.c b/linux/drivers/media/dvb/dvb-core/dmxdev.c index af2da677a..92d58d5ea 100644 --- a/linux/drivers/media/dvb/dvb-core/dmxdev.c +++ b/linux/drivers/media/dvb/dvb-core/dmxdev.c @@ -975,43 +975,38 @@ static int dvb_demux_ioctl(struct inode *inode, struct file *file, } -static unsigned int dvb_demux_poll(struct file *file, poll_table *wait) +static +unsigned int dvb_demux_poll (struct file *file, poll_table *wait) { - dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); + dmxdev_filter_t *dmxdevfilter = dvb_dmxdev_file_to_filter(file); + unsigned int mask = 0; if (!dmxdevfilter) return -EINVAL; - if (dmxdevfilter->state==DMXDEV_STATE_FREE) - return 0; - - if (dmxdevfilter->buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); - - if (dmxdevfilter->buffer.pread!=dmxdevfilter->buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); + poll_wait(file, &dmxdevfilter->buffer.queue, wait); - if (dmxdevfilter->state!=DMXDEV_STATE_GO) + if (dmxdevfilter->state != DMXDEV_STATE_GO) return 0; - poll_wait(file, &dmxdevfilter->buffer.queue, wait); - - if (dmxdevfilter->state==DMXDEV_STATE_FREE) + if (dmxdevfilter->state == DMXDEV_STATE_FREE) return 0; if (dmxdevfilter->buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); + mask |= (POLLIN | POLLRDNORM | POLLPRI | POLLERR); - if (dmxdevfilter->buffer.pread!=dmxdevfilter->buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); + if (dmxdevfilter->buffer.pread != dmxdevfilter->buffer.pwrite) + mask |= (POLLIN | POLLRDNORM | POLLPRI); - return 0; + return mask; } -static int dvb_demux_release(struct inode *inode, struct file *file) + +static +int dvb_demux_release(struct inode *inode, struct file *file) { - dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); - dmxdev_t *dmxdev=dmxdevfilter->dev; + dmxdev_filter_t *dmxdevfilter = dvb_dmxdev_file_to_filter(file); + dmxdev_t *dmxdev = dmxdevfilter->dev; return dvb_dmxdev_filter_free(dmxdev, dmxdevfilter); } @@ -1063,41 +1058,39 @@ static int dvb_dvr_ioctl(struct inode *inode, struct file *file, } -static unsigned int dvb_dvr_poll(struct file *file, poll_table *wait) +static +unsigned int dvb_dvr_poll (struct file *file, poll_table *wait) { - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; + struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; + dmxdev_t *dmxdev = (dmxdev_t *) dvbdev->priv; + unsigned int mask = 0; dprintk ("function : %s\n", __FUNCTION__); - if ((file->f_flags&O_ACCMODE)==O_RDONLY) { - if (dmxdev->dvr_buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); + poll_wait(file, &dmxdev->dvr_buffer.queue, wait); - if (dmxdev->dvr_buffer.pread!=dmxdev->dvr_buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); - - poll_wait(file, &dmxdev->dvr_buffer.queue, wait); - + if ((file->f_flags&O_ACCMODE) == O_RDONLY) { if (dmxdev->dvr_buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); + mask |= (POLLIN | POLLRDNORM | POLLPRI | POLLERR); if (dmxdev->dvr_buffer.pread!=dmxdev->dvr_buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); - - return 0; + mask |= (POLLIN | POLLRDNORM | POLLPRI); } else - return (POLLOUT | POLLWRNORM | POLLPRI); + mask |= (POLLOUT | POLLWRNORM | POLLPRI); + + return mask; } -static struct file_operations dvb_dvr_fops = { + +static +struct file_operations dvb_dvr_fops = { .owner = THIS_MODULE, .read = dvb_dvr_read, .write = dvb_dvr_write, .ioctl = dvb_dvr_ioctl, .open = dvb_dvr_open, .release = dvb_dvr_release, - .poll =dvb_dvr_poll, + .poll = dvb_dvr_poll, }; static struct dvb_device dvbdev_dvr = { diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index 1ccc5e187..7acab95e5 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -590,9 +590,6 @@ unsigned int dvb_frontend_poll (struct file *file, struct poll_table_struct *wai dprintk ("%s\n", __FUNCTION__); - if (fe->events.eventw != fe->events.eventr) - return (POLLIN | POLLRDNORM | POLLPRI); - poll_wait (file, &fe->events.wait_queue, wait); if (fe->events.eventw != fe->events.eventr) |
