diff options
| author | Meco Man <[email protected]> | 2020-12-29 00:49:18 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2020-12-29 00:49:18 +0800 |
| commit | 3d5e79248d284dd277f4c93126fc0f1a4ca0969e (patch) | |
| tree | a0188deaa2c2e6753fd4e7e83d9ca79a5f2a38f2 /src | |
| parent | 3bca2cfb418f03c529fc8563b62c19d391caf90b (diff) | |
[kernel] 对IPC中减减进行摸排,防止出现减出一个很大的数
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipc.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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); |
