aboutsummaryrefslogtreecommitdiffstats
path: root/os/rt/src
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-09-24 14:01:10 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-09-24 14:01:10 +0000
commit419dd123e740ddbdb56a2a76a0b49e9f8480a785 (patch)
tree6c8501e4ab9b70f89f362105e5db8206d8d36a6d /os/rt/src
parent844094dc44cb49b534191cde1d60a05b7d6e00d9 (diff)
downloadChibiOS-419dd123e740ddbdb56a2a76a0b49e9f8480a785.tar.gz
ChibiOS-419dd123e740ddbdb56a2a76a0b49e9f8480a785.tar.bz2
ChibiOS-419dd123e740ddbdb56a2a76a0b49e9f8480a785.zip
Added chMBResetI().
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7313 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/rt/src')
-rw-r--r--os/rt/src/chmboxes.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/os/rt/src/chmboxes.c b/os/rt/src/chmboxes.c
index 31a5e5970..b7ae4f7d1 100644
--- a/os/rt/src/chmboxes.c
+++ b/os/rt/src/chmboxes.c
@@ -105,14 +105,29 @@ void chMBObjectInit(mailbox_t *mbp, msg_t *buf, cnt_t n) {
*/
void chMBReset(mailbox_t *mbp) {
+ chSysLock();
+ chMBResetI(mbp);
+ chSchRescheduleS();
+ chSysUnlock();
+}
+
+/**
+ * @brief Resets a @p mailbox_t object.
+ * @details All the waiting threads are resumed with status @p MSG_RESET and
+ * the queued messages are lost.
+ *
+ * @param[in] mbp the pointer to an initialized @p mailbox_t object
+ *
+ * @api
+ */
+void chMBResetI(mailbox_t *mbp) {
+
+ chDbgCheckClassI();
chDbgCheck(mbp != NULL);
- chSysLock();
mbp->mb_wrptr = mbp->mb_rdptr = mbp->mb_buffer;
chSemResetI(&mbp->mb_emptysem, mbp->mb_top - mbp->mb_buffer);
chSemResetI(&mbp->mb_fullsem, 0);
- chSchRescheduleS();
- chSysUnlock();
}
/**