From dc39fea05ea07302e2c51fbfbf6b37530b124577 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 3 Jan 2008 14:27:58 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@164 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- src/chschd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/chschd.c') diff --git a/src/chschd.c b/src/chschd.c index 18a4e000f..f18169c20 100644 --- a/src/chschd.c +++ b/src/chschd.c @@ -80,11 +80,7 @@ void chSchReadyI(Thread *tp, t_msg msg) { * @note The function must be called in the system mutex zone. * @note The function is not meant to be used in the user code directly. */ -#ifdef CH_OPTIMIZE_SPEED -INLINE void chSchGoSleepS(t_tstate newstate) { -#else void chSchGoSleepS(t_tstate newstate) { -#endif Thread *otp; (otp = currp)->p_state = newstate; @@ -142,9 +138,15 @@ void chSchRescheduleS(void) { * \p chSchRescRequired() evaluates to \p TRUE. */ void chSchDoRescheduleI(void) { + Thread *otp = currp; - chSchReadyI(currp, RDY_OK); - chSchGoSleepS(PRREADY); + chSchReadyI(otp, RDY_OK); + (currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR; + rlist.r_preempt = CH_TIME_QUANTUM; +#ifdef CH_USE_TRACE + chDbgTrace(otp, currp); +#endif + chSysSwitchI(&otp->p_ctx, &currp->p_ctx); } /** -- cgit v1.2.3