From 419dd123e740ddbdb56a2a76a0b49e9f8480a785 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 24 Sep 2014 14:01:10 +0000 Subject: Added chMBResetI(). git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7313 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/rt/src/chmboxes.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'os/rt/src') 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(); } /** -- cgit v1.2.3