From c968f1b52110e481ca9e183729b3a6ad6a2d3aeb Mon Sep 17 00:00:00 2001 From: Holger Waechtler Date: Wed, 8 Jan 2003 16:51:07 +0000 Subject: apply optimisation patches suggested by Dr. Werner Fink --- linux/drivers/media/dvb/dvb-core/dmxdev.c | 71 +++++++++++-------------- linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 3 -- 2 files changed, 32 insertions(+), 42 deletions(-) (limited to 'linux/drivers/media/dvb/dvb-core') 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) -- cgit v1.2.3