diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-02-20 20:14:42 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-02-20 20:14:42 +0000 |
commit | daabc2b079b17a41ca2f1a2a6423373f811402ba (patch) | |
tree | 9a1b5552939d5ee04de29b10e0de0eb4defedea9 /src/chmsg.c | |
parent | 83762f45fdeaa0702186ce7773242859350c90ab (diff) | |
download | ChibiOS-daabc2b079b17a41ca2f1a2a6423373f811402ba.tar.gz ChibiOS-daabc2b079b17a41ca2f1a2a6423373f811402ba.tar.bz2 ChibiOS-daabc2b079b17a41ca2f1a2a6423373f811402ba.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@791 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'src/chmsg.c')
-rw-r--r-- | src/chmsg.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/chmsg.c b/src/chmsg.c index c2aee871e..6744b7ac9 100644 --- a/src/chmsg.c +++ b/src/chmsg.c @@ -45,8 +45,9 @@ */
msg_t chMsgSend(Thread *tp, msg_t msg) {
- chSysLock();
+ chDbgCheck(tp != NULL, "chMsgSend");
+ chSysLock();
msg_insert(currp, &tp->p_msgqueue);
currp->p_msg = msg;
currp->p_wtthdp = tp;
@@ -54,7 +55,6 @@ msg_t chMsgSend(Thread *tp, msg_t msg) { chSchReadyI(tp);
chSchGoSleepS(PRSNDMSG);
msg = currp->p_rdymsg;
-
chSysUnlock();
return msg;
}
@@ -76,17 +76,18 @@ msg_t chMsgSend(Thread *tp, msg_t msg) { */
msg_t chMsgSendWithEvent(Thread *tp, msg_t msg, eventmask_t mask) {
- chSysLock();
-
- chDbgAssert(tp->p_state != PRWTMSG, "chmsg.c, chMsgSendWithEvent()");
+ chDbgCheck(tp != NULL, "chMsgSendWithEvent");
+ chSysLock();
+ chDbgAssert(tp->p_state != PRWTMSG,
+ "chMsgSendWithEvent(), #1",
+ "waiting for messages not events");
chEvtSignalI(tp, mask);
msg_insert(currp, &tp->p_msgqueue);
currp->p_wtthdp = tp;
currp->p_msg = msg;
chSchGoSleepS(PRSNDMSG);
msg = currp->p_rdymsg;
-
chSysUnlock();
return msg;
}
@@ -105,11 +106,9 @@ msg_t chMsgWait(void) { msg_t msg;
chSysLock();
-
if (!chMsgIsPendingI(currp))
chSchGoSleepS(PRWTMSG);
msg = chMsgGetI(currp);
-
chSysUnlock();
return msg;
}
@@ -129,9 +128,7 @@ msg_t chMsgGet(void) { msg_t msg;
chSysLock();
-
msg = chMsgIsPendingI(currp) ? chMsgGetI(currp) : (msg_t)NULL;
-
chSysUnlock();
return msg;
}
@@ -150,10 +147,10 @@ msg_t chMsgGet(void) { void chMsgRelease(msg_t msg) {
chSysLock();
-
- chDbgAssert(chMsgIsPendingI(currp), "chmsg.c, chMsgRelease()");
+ chDbgAssert(chMsgIsPendingI(currp),
+ "chMsgRelease(), #1",
+ "no message pending");
chSchWakeupS(fifo_remove(&currp->p_msgqueue), msg);
-
chSysUnlock();
}
|