git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6165 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
9dcb2a31c0
commit
752b44ba0e
|
@ -499,6 +499,28 @@
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Idle thread enter hook.
|
||||||
|
* @note This hook is invoked within a critical zone, no OS functions
|
||||||
|
* should be invoked from here.
|
||||||
|
* @note This macro can be used to activate a power saving mode.
|
||||||
|
*/
|
||||||
|
#if !defined(CH_CFG_IDLE_ENTER_HOOK) || defined(__DOXYGEN__)
|
||||||
|
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Idle thread leave hook.
|
||||||
|
* @note This hook is invoked within a critical zone, no OS functions
|
||||||
|
* should be invoked from here.
|
||||||
|
* @note This macro can be used to deactivate a power saving mode.
|
||||||
|
*/
|
||||||
|
#if !defined(CH_CFG_IDLE_LEAVE_HOOK) || defined(__DOXYGEN__)
|
||||||
|
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Idle Loop hook.
|
* @brief Idle Loop hook.
|
||||||
* @details This hook is continuously invoked by the idle thread loop.
|
* @details This hook is continuously invoked by the idle thread loop.
|
||||||
|
|
|
@ -125,6 +125,11 @@ void chSchGoSleepS(tstate_t newstate) {
|
||||||
otp->p_preempt = CH_CFG_TIME_QUANTUM;
|
otp->p_preempt = CH_CFG_TIME_QUANTUM;
|
||||||
#endif
|
#endif
|
||||||
setcurrp(queue_fifo_remove(&ch.rlist.r_queue));
|
setcurrp(queue_fifo_remove(&ch.rlist.r_queue));
|
||||||
|
#if defined(CH_CFG_IDLE_ENTER_HOOK)
|
||||||
|
if (currp->p_prio == IDLEPRIO) {
|
||||||
|
CH_CFG_IDLE_ENTER_HOOK();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
currp->p_state = CH_STATE_CURRENT;
|
currp->p_state = CH_STATE_CURRENT;
|
||||||
chSysSwitch(currp, otp);
|
chSysSwitch(currp, otp);
|
||||||
}
|
}
|
||||||
|
@ -237,6 +242,11 @@ void chSchWakeupS(thread_t *ntp, msg_t msg) {
|
||||||
else {
|
else {
|
||||||
thread_t *otp = chSchReadyI(currp);
|
thread_t *otp = chSchReadyI(currp);
|
||||||
setcurrp(ntp);
|
setcurrp(ntp);
|
||||||
|
#if defined(CH_CFG_IDLE_LEAVE_HOOK)
|
||||||
|
if (otp->p_prio == IDLEPRIO) {
|
||||||
|
CH_CFG_IDLE_LEAVE_HOOK();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
ntp->p_state = CH_STATE_CURRENT;
|
ntp->p_state = CH_STATE_CURRENT;
|
||||||
chSysSwitch(ntp, otp);
|
chSysSwitch(ntp, otp);
|
||||||
}
|
}
|
||||||
|
@ -302,6 +312,11 @@ void chSchDoRescheduleBehind(void) {
|
||||||
otp = currp;
|
otp = currp;
|
||||||
/* Picks the first thread from the ready queue and makes it current.*/
|
/* Picks the first thread from the ready queue and makes it current.*/
|
||||||
setcurrp(queue_fifo_remove(&ch.rlist.r_queue));
|
setcurrp(queue_fifo_remove(&ch.rlist.r_queue));
|
||||||
|
#if defined(CH_CFG_IDLE_LEAVE_HOOK)
|
||||||
|
if (otp->p_prio == IDLEPRIO) {
|
||||||
|
CH_CFG_IDLE_LEAVE_HOOK();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
currp->p_state = CH_STATE_CURRENT;
|
currp->p_state = CH_STATE_CURRENT;
|
||||||
#if CH_CFG_TIME_QUANTUM > 0
|
#if CH_CFG_TIME_QUANTUM > 0
|
||||||
otp->p_preempt = CH_CFG_TIME_QUANTUM;
|
otp->p_preempt = CH_CFG_TIME_QUANTUM;
|
||||||
|
@ -325,6 +340,11 @@ void chSchDoRescheduleAhead(void) {
|
||||||
otp = currp;
|
otp = currp;
|
||||||
/* Picks the first thread from the ready queue and makes it current.*/
|
/* Picks the first thread from the ready queue and makes it current.*/
|
||||||
setcurrp(queue_fifo_remove(&ch.rlist.r_queue));
|
setcurrp(queue_fifo_remove(&ch.rlist.r_queue));
|
||||||
|
#if defined(CH_CFG_IDLE_LEAVE_HOOK)
|
||||||
|
if (otp->p_prio == IDLEPRIO) {
|
||||||
|
CH_CFG_IDLE_LEAVE_HOOK();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
currp->p_state = CH_STATE_CURRENT;
|
currp->p_state = CH_STATE_CURRENT;
|
||||||
|
|
||||||
otp->p_state = CH_STATE_READY;
|
otp->p_state = CH_STATE_READY;
|
||||||
|
|
Loading…
Reference in New Issue