[PATCH] mips: fix-up schedule_timeout() usage
Use schedule_timeout_interruptible() instead of set_current_state()/schedule_timeout() to reduce kernel size. Also, replace custom timespectojiffies() function with globally availabe timespec_to_jiffies(). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Cc: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
52e6e63088
commit
310b587e01
@ -440,18 +440,6 @@ struct irix5_siginfo {
|
|||||||
} stuff;
|
} stuff;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline unsigned long timespectojiffies(struct timespec *value)
|
|
||||||
{
|
|
||||||
unsigned long sec = (unsigned) value->tv_sec;
|
|
||||||
long nsec = value->tv_nsec;
|
|
||||||
|
|
||||||
if (sec > (LONG_MAX / HZ))
|
|
||||||
return LONG_MAX;
|
|
||||||
nsec += 1000000000L / HZ - 1;
|
|
||||||
nsec /= 1000000000L / HZ;
|
|
||||||
return HZ * sec + nsec;
|
|
||||||
}
|
|
||||||
|
|
||||||
asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,
|
asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,
|
||||||
struct timespec *tp)
|
struct timespec *tp)
|
||||||
{
|
{
|
||||||
@ -489,14 +477,13 @@ asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,
|
|||||||
error = -EINVAL;
|
error = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
expire = timespectojiffies(tp)+(tp->tv_sec||tp->tv_nsec);
|
expire = timespec_to_jiffies(tp) + (tp->tv_sec||tp->tv_nsec);
|
||||||
}
|
}
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
long tmp = 0;
|
long tmp = 0;
|
||||||
|
|
||||||
current->state = TASK_INTERRUPTIBLE;
|
expire = schedule_timeout_interruptible(expire);
|
||||||
expire = schedule_timeout(expire);
|
|
||||||
|
|
||||||
for (i=0; i<=4; i++)
|
for (i=0; i<=4; i++)
|
||||||
tmp |= (current->pending.signal.sig[i] & kset.sig[i]);
|
tmp |= (current->pending.signal.sig[i] & kset.sig[i]);
|
||||||
|
@ -1032,8 +1032,7 @@ bad:
|
|||||||
|
|
||||||
asmlinkage int irix_sginap(int ticks)
|
asmlinkage int irix_sginap(int ticks)
|
||||||
{
|
{
|
||||||
current->state = TASK_INTERRUPTIBLE;
|
schedule_timeout_interruptible(ticks);
|
||||||
schedule_timeout(ticks);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user