diff --git a/docs/index.html b/docs/index.html index 10b088bbb..a4d9e32c2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -88,7 +88,7 @@ possible so some rules were set:
configure limits for data structures, only use lists or other dynamic data structures. See -the Documentation and +the Documentation and the demos.
  • No memory allocation inside the kernel, an allocator can be 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); } /**