diff options
| author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2008-01-03 14:27:58 +0000 | 
|---|---|---|
| committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2008-01-03 14:27:58 +0000 | 
| commit | dc39fea05ea07302e2c51fbfbf6b37530b124577 (patch) | |
| tree | 83a7aecae872bd09b140896595830ccbb29e1ba5 /src | |
| parent | e9fd3ba81330391dbb28181a98ec1e364736b6e5 (diff) | |
| download | ChibiOS-dc39fea05ea07302e2c51fbfbf6b37530b124577.tar.gz ChibiOS-dc39fea05ea07302e2c51fbfbf6b37530b124577.tar.bz2 ChibiOS-dc39fea05ea07302e2c51fbfbf6b37530b124577.zip | |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@164 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'src')
| -rw-r--r-- | src/chschd.c | 14 | 
1 files changed, 8 insertions, 6 deletions
| 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);
  }
  /**
 | 
