diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-09-05 15:31:27 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-09-05 15:31:27 +0000 |
commit | 7dfa36f86d896cdb824a9137a81f324c8243c4d9 (patch) | |
tree | 5b83e2db6919eaeaf8705830adea1939885b310a /os/kernel/include/scheduler.h | |
parent | 3ee19d119a4a960a6bed887a1be775e7e7fd55cb (diff) | |
download | ChibiOS-7dfa36f86d896cdb824a9137a81f324c8243c4d9.tar.gz ChibiOS-7dfa36f86d896cdb824a9137a81f324c8243c4d9.tar.bz2 ChibiOS-7dfa36f86d896cdb824a9137a81f324c8243c4d9.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1148 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/kernel/include/scheduler.h')
-rw-r--r-- | os/kernel/include/scheduler.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/os/kernel/include/scheduler.h b/os/kernel/include/scheduler.h index 235761216..00294e190 100644 --- a/os/kernel/include/scheduler.h +++ b/os/kernel/include/scheduler.h @@ -78,6 +78,12 @@ typedef struct { extern ReadyList rlist; +#ifdef CH_CURRP_REGISTER_CACHE +register Thread *currp asm(CH_CURRP_REGISTER_CACHE); +#else +#define currp rlist.r_current +#endif + /* * Scheduler APIs. */ @@ -96,11 +102,19 @@ extern "C" { } #endif -#ifdef CH_CURRP_REGISTER_CACHE -register Thread *currp asm(CH_CURRP_REGISTER_CACHE); -#else -#define currp rlist.r_current -#endif +/** + * @brief Determines if yielding is possible. + * @details This function returns @p TRUE if there is a ready thread with + * equal or higher priority. + */ +#define chSchCanYieldS() (firstprio(&rlist.r_queue) >= currp->p_prio) + +/** + * @brief Determines if the current thread must reschedule. + * @details This function returns @p TRUE if there is a ready thread with + * higher priority. + */ +#define chSchMustRescheduleS() (firstprio(&rlist.r_queue) >= currp->p_prio) #endif /* _SCHEDULER_H_ */ |