skypopen: tweaking the OSS audio driver, still gives a load average higher than snd-dummy + snd-pcm-oss on CentOS 5 (but not much more, and lower cpu load), but now is very very good on tickless kernels, eg: Ubuntu 10.04 LTS

This commit is contained in:
Giovanni Maruzzelli 2010-12-14 08:38:57 -06:00
parent 7997d24f33
commit 739ac99e3b
2 changed files with 15 additions and 15 deletions

View File

@ -1,6 +1,6 @@
# Comment/uncomment the following line to disable/enable debugging
#DEBUG = y
LDDINC=/usr/src/linux-headers-2.6.32-26-server/include
#LDDINC=/usr/src/linux-headers-2.6.32-26-server/include
# Add your debugging flag (or not) to CFLAGS
ifeq ($(DEBUG),y)

View File

@ -67,7 +67,7 @@ void my_timer_callback_inq( unsigned long data )
{
struct scull_dev *dev = (void *)data;
dev->readable=1;
//dev->readable=1;
wake_up_interruptible(&dev->inq);
mod_timer( &dev->timer_inq, jiffies + msecs_to_jiffies(GIOVA_SLEEP) );
@ -77,7 +77,7 @@ void my_timer_callback_outq( unsigned long data )
{
struct scull_dev *dev = (void *)data;
dev->writable=1;
//dev->writable=1;
wake_up_interruptible(&dev->outq);
mod_timer( &dev->timer_outq, jiffies + msecs_to_jiffies(GIOVA_SLEEP) );
}
@ -172,14 +172,14 @@ ssize_t scull_read(struct file *filp, char __user *buf, size_t count,
{
struct scull_dev *dev = filp->private_data;
//DEFINE_WAIT(wait);
//prepare_to_wait(&dev->inq, &wait, TASK_INTERRUPTIBLE);
//schedule();
//finish_wait(&dev->inq, &wait);
DEFINE_WAIT(wait);
prepare_to_wait(&dev->inq, &wait, TASK_INTERRUPTIBLE);
schedule();
finish_wait(&dev->inq, &wait);
//memset(buf, 255, count);
wait_event_interruptible(dev->inq, dev->readable);
dev->readable=0;
//wait_event_interruptible(dev->inq, dev->readable);
//dev->readable=0;
return count;
}
@ -188,13 +188,13 @@ ssize_t scull_write(struct file *filp, const char __user *buf, size_t count,
loff_t *f_pos)
{
struct scull_dev *dev = filp->private_data;
//DEFINE_WAIT(wait);
//prepare_to_wait(&dev->outq, &wait, TASK_INTERRUPTIBLE);
//schedule();
//finish_wait(&dev->outq, &wait);
DEFINE_WAIT(wait);
prepare_to_wait(&dev->outq, &wait, TASK_INTERRUPTIBLE);
schedule();
finish_wait(&dev->outq, &wait);
wait_event_interruptible(dev->outq, dev->writable);
dev->writable=0;
//wait_event_interruptible(dev->outq, dev->writable);
//dev->writable=0;
return count;