diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-12-16 19:01:30 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-12-16 19:01:30 +0000 |
commit | 430010715e7a9af17185412273165674f3b58f20 (patch) | |
tree | 595c6897e48c954b29cc2b2e03855937f23fc182 /src/chthreads.c | |
parent | b196b277b9fe301ee2fa73f45be4d5e55d74e402 (diff) | |
download | ChibiOS-430010715e7a9af17185412273165674f3b58f20.tar.gz ChibiOS-430010715e7a9af17185412273165674f3b58f20.tar.bz2 ChibiOS-430010715e7a9af17185412273165674f3b58f20.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@141 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'src/chthreads.c')
-rw-r--r-- | src/chthreads.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/chthreads.c b/src/chthreads.c index 1f37bb808..8a27acdb9 100644 --- a/src/chthreads.c +++ b/src/chthreads.c @@ -34,8 +34,9 @@ void _InitThread(t_prio prio, t_tmode mode, Thread *tp) { tp->p_flags = mode;
tp->p_prio = prio;
tp->p_rdymsg = RDY_OK;
-#ifdef CH_USE_RT_SEMAPHORES
- tp->p_rtcnt = 0;
+#ifdef CH_USE_MUTEXES
+ tp->p_mtxlist = NULL;
+ tp->p_realprio = prio;
#endif
#ifdef CH_USE_WAITEXIT
list_init(&tp->p_waiting);
@@ -125,11 +126,14 @@ void chThdSetPriority(t_prio newprio) { chDbgAssert(newprio <= HIGHPRIO, "chthreads.c, chThdSetPriority()")
chSysLock();
-#ifdef CH_USE_RT_SEMAPHORES
- if (currp->p_rtcnt)
- currp->p_prio = newprio + MEPRIO;
+#ifdef CH_USE_MUTEXES
+ if (currp->p_prio != currp->p_realprio) {
+ if (newprio > currp->p_prio)
+ currp->p_prio = newprio;
+ }
else
currp->p_prio = newprio;
+ currp->p_realprio = newprio;
#else
currp->p_prio = newprio;
#endif
|