summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2020-12-29 08:20:34 +0800
committerGitHub <[email protected]>2020-12-29 08:20:34 +0800
commit7d11aa24a2fa6927ed0a0cf817ba622807b09c0c (patch)
treea0188deaa2c2e6753fd4e7e83d9ca79a5f2a38f2
parent936db0e396f286a7f493cdadb698cf9340a82448 (diff)
parent3d5e79248d284dd277f4c93126fc0f1a4ca0969e (diff)
Merge pull request #4199 from mysterywolf/m--
[kernel] 对IPC中减减进行摸排,防止出现减出一个很大的数
-rw-r--r--src/ipc.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/ipc.c b/src/ipc.c
index 454fcb5439..4261f617b0 100644
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -1764,8 +1764,12 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
++ mb->out_offset;
if (mb->out_offset >= mb->size)
mb->out_offset = 0;
+
/* decrease message entry */
- mb->entry --;
+ if(mb->entry > 0)
+ {
+ mb->entry --;
+ }
/* resume suspended thread */
if (!rt_list_isempty(&(mb->suspend_sender_thread)))
@@ -2439,7 +2443,10 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
mq->msg_queue_tail = RT_NULL;
/* decrease message entry */
- mq->entry --;
+ if(mq->entry > 0)
+ {
+ mq->entry --;
+ }
/* enable interrupt */
rt_hw_interrupt_enable(temp);