aboutsummaryrefslogtreecommitdiffstats
path: root/src/chthreads.c
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-12-16 19:01:30 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-12-16 19:01:30 +0000
commit430010715e7a9af17185412273165674f3b58f20 (patch)
tree595c6897e48c954b29cc2b2e03855937f23fc182 /src/chthreads.c
parentb196b277b9fe301ee2fa73f45be4d5e55d74e402 (diff)
downloadChibiOS-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.c14
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