fix rt_channel lock. (#8244)

This commit is contained in:
geniusgogo
2023-11-10 21:37:07 +08:00
committed by GitHub
parent 589641258e
commit 9acebb07dc
4 changed files with 253 additions and 189 deletions

View File

@@ -79,6 +79,10 @@ int lwp_component_init(void)
{
LOG_E("%s: lwp_pid_init() failed", __func__);
}
else if ((rc = rt_channel_component_init()) != RT_EOK)
{
LOG_E("%s: rt_channel_component_init failed", __func__);
}
return rc;
}
INIT_COMPONENT_EXPORT(lwp_component_init);

File diff suppressed because it is too large Load Diff

View File

@@ -63,6 +63,8 @@ rt_err_t rt_raw_channel_recv(rt_channel_t ch, rt_channel_msg_t data);
rt_err_t rt_raw_channel_recv_timeout(rt_channel_t ch, rt_channel_msg_t data, rt_int32_t time);
rt_err_t rt_raw_channel_peek(rt_channel_t ch, rt_channel_msg_t data);
rt_err_t rt_channel_component_init(void);
#ifdef __cplusplus
}
#endif

View File

@@ -1449,6 +1449,7 @@ struct rt_channel
{
struct rt_ipc_object parent; /**< inherit from object */
struct rt_thread *reply; /**< the thread will be reply */
struct rt_spinlock slock; /**< spinlock of this channel */
rt_list_t wait_msg; /**< the wait queue of sender msg */
rt_list_t wait_thread; /**< the wait queue of sender thread */
rt_wqueue_t reader_queue; /**< channel poll queue */