提交 1e63bc73 编写于 作者: N Nishanth Aravamudan 提交者: Linus Torvalds

[PATCH] telephony: fix-up schedule_timeout() usage

Use schedule_timeout_uninterruptible() instead of
set_current_state()/schedule_timeout() to reduce kernel size.
Signed-off-by: NNishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 7b4ccf8d
...@@ -2071,8 +2071,7 @@ static int ixj_ring(IXJ *j) ...@@ -2071,8 +2071,7 @@ static int ixj_ring(IXJ *j)
j->flags.ringing = 0; j->flags.ringing = 0;
return 1; return 1;
} }
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1);
if (signal_pending(current)) if (signal_pending(current))
break; break;
} }
...@@ -2086,8 +2085,7 @@ static int ixj_ring(IXJ *j) ...@@ -2086,8 +2085,7 @@ static int ixj_ring(IXJ *j)
return 1; return 1;
} }
} }
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1);
if (signal_pending(current)) if (signal_pending(current))
break; break;
} }
...@@ -2153,10 +2151,8 @@ static int ixj_release(struct inode *inode, struct file *file_p) ...@@ -2153,10 +2151,8 @@ static int ixj_release(struct inode *inode, struct file *file_p)
* Set up locks to ensure that only one process is talking to the DSP at a time. * Set up locks to ensure that only one process is talking to the DSP at a time.
* This is necessary to keep the DSP from locking up. * This is necessary to keep the DSP from locking up.
*/ */
while(test_and_set_bit(board, (void *)&j->busyflags) != 0) { while(test_and_set_bit(board, (void *)&j->busyflags) != 0)
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1);
}
if (ixjdebug & 0x0002) if (ixjdebug & 0x0002)
printk(KERN_INFO "Closing board %d\n", NUM(inode)); printk(KERN_INFO "Closing board %d\n", NUM(inode));
...@@ -3286,14 +3282,10 @@ static void ixj_write_cidcw(IXJ *j) ...@@ -3286,14 +3282,10 @@ static void ixj_write_cidcw(IXJ *j)
ixj_play_tone(j, 23); ixj_play_tone(j, 23);
clear_bit(j->board, &j->busyflags); clear_bit(j->board, &j->busyflags);
while(j->tone_state) { while(j->tone_state)
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1); while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0)
} schedule_timeout_interruptible(1);
while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) {
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(1);
}
if(ixjdebug & 0x0200) { if(ixjdebug & 0x0200) {
printk("IXJ cidcw phone%d first tone end at %ld\n", j->board, jiffies); printk("IXJ cidcw phone%d first tone end at %ld\n", j->board, jiffies);
} }
...@@ -3313,14 +3305,10 @@ static void ixj_write_cidcw(IXJ *j) ...@@ -3313,14 +3305,10 @@ static void ixj_write_cidcw(IXJ *j)
ixj_play_tone(j, 24); ixj_play_tone(j, 24);
clear_bit(j->board, &j->busyflags); clear_bit(j->board, &j->busyflags);
while(j->tone_state) { while(j->tone_state)
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1); while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0)
} schedule_timeout_interruptible(1);
while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) {
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(1);
}
if(ixjdebug & 0x0200) { if(ixjdebug & 0x0200) {
printk("IXJ cidcw phone%d sent second tone at %ld\n", j->board, jiffies); printk("IXJ cidcw phone%d sent second tone at %ld\n", j->board, jiffies);
} }
...@@ -3328,14 +3316,10 @@ static void ixj_write_cidcw(IXJ *j) ...@@ -3328,14 +3316,10 @@ static void ixj_write_cidcw(IXJ *j)
j->cidcw_wait = jiffies + ((50 * hertz) / 100); j->cidcw_wait = jiffies + ((50 * hertz) / 100);
clear_bit(j->board, &j->busyflags); clear_bit(j->board, &j->busyflags);
while(!j->flags.cidcw_ack && time_before(jiffies, j->cidcw_wait)) { while(!j->flags.cidcw_ack && time_before(jiffies, j->cidcw_wait))
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1); while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0)
} schedule_timeout_interruptible(1);
while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) {
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(1);
}
j->cidcw_wait = 0; j->cidcw_wait = 0;
if(!j->flags.cidcw_ack) { if(!j->flags.cidcw_ack) {
if(ixjdebug & 0x0200) { if(ixjdebug & 0x0200) {
...@@ -6110,10 +6094,8 @@ static int ixj_ioctl(struct inode *inode, struct file *file_p, unsigned int cmd, ...@@ -6110,10 +6094,8 @@ static int ixj_ioctl(struct inode *inode, struct file *file_p, unsigned int cmd,
* Set up locks to ensure that only one process is talking to the DSP at a time. * Set up locks to ensure that only one process is talking to the DSP at a time.
* This is necessary to keep the DSP from locking up. * This is necessary to keep the DSP from locking up.
*/ */
while(test_and_set_bit(board, (void *)&j->busyflags) != 0) { while(test_and_set_bit(board, (void *)&j->busyflags) != 0)
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(1);
schedule_timeout(1);
}
if (ixjdebug & 0x0040) if (ixjdebug & 0x0040)
printk("phone%d ioctl, cmd: 0x%x, arg: 0x%lx\n", minor, cmd, arg); printk("phone%d ioctl, cmd: 0x%x, arg: 0x%lx\n", minor, cmd, arg);
if (minor >= IXJMAX) { if (minor >= IXJMAX) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册