aboutsummaryrefslogtreecommitdiffstats
path: root/os/rt/src/chmboxes.c
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2015-03-06 10:13:59 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2015-03-06 10:13:59 +0000
commita380d9ad03f2fcf950dad0f08652a03b738dc0e8 (patch)
tree78dfbd7a271ba17cbb8cd7383a5c7edcb87f448b /os/rt/src/chmboxes.c
parentb53489d0e4252aafe5ada7466e0b3b7c4ad5aaaf (diff)
downloadChibiOS-a380d9ad03f2fcf950dad0f08652a03b738dc0e8.tar.gz
ChibiOS-a380d9ad03f2fcf950dad0f08652a03b738dc0e8.tar.bz2
ChibiOS-a380d9ad03f2fcf950dad0f08652a03b738dc0e8.zip
More MISRA.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7716 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/rt/src/chmboxes.c')
-rw-r--r--os/rt/src/chmboxes.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/os/rt/src/chmboxes.c b/os/rt/src/chmboxes.c
index 32d0f35ea..5b8bc3f64 100644
--- a/os/rt/src/chmboxes.c
+++ b/os/rt/src/chmboxes.c
@@ -51,7 +51,7 @@
#include "ch.h"
-#if CH_CFG_USE_MAILBOXES || defined(__DOXYGEN__)
+#if (CH_CFG_USE_MAILBOXES == TRUE) || defined(__DOXYGEN__)
/*===========================================================================*/
/* Module exported variables. */
@@ -124,8 +124,12 @@ void chMBResetI(mailbox_t *mbp) {
chDbgCheckClassI();
chDbgCheck(mbp != NULL);
- mbp->mb_wrptr = mbp->mb_rdptr = mbp->mb_buffer;
- chSemResetI(&mbp->mb_emptysem, mbp->mb_top - mbp->mb_buffer);
+ mbp->mb_wrptr = mbp->mb_buffer;
+ mbp->mb_rdptr = mbp->mb_buffer;
+ /*lint -save -e946 -e947 [18.2, 18.3] Normal pointers arithmetic, it
+ is safe.*/
+ chSemResetI(&mbp->mb_emptysem, (cnt_t)(mbp->mb_top - mbp->mb_buffer));
+ /*lint -restore*/
chSemResetI(&mbp->mb_fullsem, 0);
}
@@ -186,7 +190,9 @@ msg_t chMBPostS(mailbox_t *mbp, msg_t msg, systime_t time) {
rdymsg = chSemWaitTimeoutS(&mbp->mb_emptysem, time);
if (rdymsg == MSG_OK) {
*mbp->mb_wrptr++ = msg;
+ /*lint -save -e946 [18.2] Normal pointers arithmetic, it is safe.*/
if (mbp->mb_wrptr >= mbp->mb_top) {
+ /*lint -restore*/
mbp->mb_wrptr = mbp->mb_buffer;
}
chSemSignalI(&mbp->mb_fullsem);
@@ -221,7 +227,9 @@ msg_t chMBPostI(mailbox_t *mbp, msg_t msg) {
chSemFastWaitI(&mbp->mb_emptysem);
*mbp->mb_wrptr++ = msg;
+ /*lint -save -e946 [18.2] Normal pointers arithmetic, it is safe.*/
if (mbp->mb_wrptr >= mbp->mb_top) {
+ /*lint -restore*/
mbp->mb_wrptr = mbp->mb_buffer;
}
chSemSignalI(&mbp->mb_fullsem);
@@ -285,7 +293,9 @@ msg_t chMBPostAheadS(mailbox_t *mbp, msg_t msg, systime_t time) {
rdymsg = chSemWaitTimeoutS(&mbp->mb_emptysem, time);
if (rdymsg == MSG_OK) {
+ /*lint -save -e946 [18.2] Normal pointers arithmetic, it is safe.*/
if (--mbp->mb_rdptr < mbp->mb_buffer) {
+ /*lint -restore*/
mbp->mb_rdptr = mbp->mb_top - 1;
}
*mbp->mb_rdptr = msg;
@@ -319,7 +329,9 @@ msg_t chMBPostAheadI(mailbox_t *mbp, msg_t msg) {
return MSG_TIMEOUT;
}
chSemFastWaitI(&mbp->mb_emptysem);
+ /*lint -save -e946 [18.2] Normal pointers arithmetic, it is safe.*/
if (--mbp->mb_rdptr < mbp->mb_buffer) {
+ /*lint -restore*/
mbp->mb_rdptr = mbp->mb_top - 1;
}
*mbp->mb_rdptr = msg;
@@ -385,7 +397,9 @@ msg_t chMBFetchS(mailbox_t *mbp, msg_t *msgp, systime_t time) {
rdymsg = chSemWaitTimeoutS(&mbp->mb_fullsem, time);
if (rdymsg == MSG_OK) {
*msgp = *mbp->mb_rdptr++;
+ /*lint -save -e946 [18.2] Normal pointers arithmetic, it is safe.*/
if (mbp->mb_rdptr >= mbp->mb_top) {
+ /*lint -restore*/
mbp->mb_rdptr = mbp->mb_buffer;
}
chSemSignalI(&mbp->mb_emptysem);
@@ -419,13 +433,15 @@ msg_t chMBFetchI(mailbox_t *mbp, msg_t *msgp) {
}
chSemFastWaitI(&mbp->mb_fullsem);
*msgp = *mbp->mb_rdptr++;
+ /*lint -save -e946 [18.2] Normal pointers arithmetic, it is safe.*/
if (mbp->mb_rdptr >= mbp->mb_top) {
+ /*lint -restore*/
mbp->mb_rdptr = mbp->mb_buffer;
}
chSemSignalI(&mbp->mb_emptysem);
return MSG_OK;
}
-#endif /* CH_CFG_USE_MAILBOXES */
+#endif /* CH_CFG_USE_MAILBOXES == TRUE */
/** @} */