From: Nishanth Aravamudan <nacc@us.ibm.com>

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().

(akpm: this patch relies on other stuff in -mm, please don't apply)

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 arch/mips/kernel/irixsig.c |   17 ++---------------
 arch/mips/kernel/sysirix.c |    3 +--
 2 files changed, 3 insertions(+), 17 deletions(-)

diff -puN arch/mips/kernel/irixsig.c~mips-fix-up-schedule_timeout-usage arch/mips/kernel/irixsig.c
--- 25/arch/mips/kernel/irixsig.c~mips-fix-up-schedule_timeout-usage	Wed Aug 17 17:00:35 2005
+++ 25-akpm/arch/mips/kernel/irixsig.c	Wed Aug 17 17:00:35 2005
@@ -441,18 +441,6 @@ struct irix5_siginfo {
 	} 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,
 				struct timespec *tp)
 {
@@ -490,14 +478,13 @@ asmlinkage int irix_sigpoll_sys(unsigned
 			error = -EINVAL;
 			goto out;
 		}
-		expire = timespectojiffies(tp)+(tp->tv_sec||tp->tv_nsec);
+		expire = timespec_to_jiffies(tp) + (tp->tv_sec||tp->tv_nsec);
 	}
 
 	while(1) {
 		long tmp = 0;
 
-		current->state = TASK_INTERRUPTIBLE;
-		expire = schedule_timeout(expire);
+		expire = schedule_timeout_interruptible(expire);
 
 		for (i=0; i<=4; i++)
 			tmp |= (current->pending.signal.sig[i] & kset.sig[i]);
diff -puN arch/mips/kernel/sysirix.c~mips-fix-up-schedule_timeout-usage arch/mips/kernel/sysirix.c
--- 25/arch/mips/kernel/sysirix.c~mips-fix-up-schedule_timeout-usage	Wed Aug 17 17:00:35 2005
+++ 25-akpm/arch/mips/kernel/sysirix.c	Wed Aug 17 17:00:35 2005
@@ -1035,8 +1035,7 @@ bad:
 
 asmlinkage int irix_sginap(int ticks)
 {
-	current->state = TASK_INTERRUPTIBLE;
-	schedule_timeout(ticks);
+	schedule_timeout_interruptible(ticks);
 	return 0;
 }
 
_