Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mozi
rt-thread
提交
500d26c2
R
rt-thread
项目概览
Mozi
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
500d26c2
编写于
1月 26, 2022
作者:
H
Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize code
上级
9b445357
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
26 addition
and
59 deletion
+26
-59
components/drivers/ipc/completion.c
components/drivers/ipc/completion.c
+1
-7
components/drivers/ipc/dataqueue.c
components/drivers/ipc/dataqueue.c
+2
-8
components/drivers/ipc/waitqueue.c
components/drivers/ipc/waitqueue.c
+1
-1
include/rtdebug.h
include/rtdebug.h
+14
-11
src/ipc.c
src/ipc.c
+8
-32
未找到文件。
components/drivers/ipc/completion.c
浏览文件 @
500d26c2
...
...
@@ -58,10 +58,7 @@ rt_err_t rt_completion_wait(struct rt_completion *completion,
RT_ASSERT
(
completion
!=
RT_NULL
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
result
=
RT_EOK
;
thread
=
rt_thread_self
();
...
...
@@ -88,9 +85,6 @@ rt_err_t rt_completion_wait(struct rt_completion *completion,
rt_list_insert_before
(
&
(
completion
->
suspended_list
),
&
(
thread
->
tlist
));
/* current context checking */
RT_DEBUG_NOT_IN_INTERRUPT
;
/* start timer */
if
(
timeout
>
0
)
{
...
...
components/drivers/ipc/dataqueue.c
浏览文件 @
500d26c2
...
...
@@ -99,10 +99,7 @@ rt_err_t rt_data_queue_push(struct rt_data_queue *queue,
RT_ASSERT
(
queue
->
magic
==
DATAQUEUE_MAGIC
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
result
=
RT_EOK
;
thread
=
rt_thread_self
();
...
...
@@ -221,10 +218,7 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
RT_ASSERT
(
size
!=
RT_NULL
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
result
=
RT_EOK
;
thread
=
rt_thread_self
();
...
...
components/drivers/ipc/waitqueue.c
浏览文件 @
500d26c2
...
...
@@ -129,7 +129,7 @@ int rt_wqueue_wait(rt_wqueue_t *queue, int condition, int msec)
rt_base_t
level
;
/* current context checking */
RT_DEBUG_SCHEDULER_AVAILABLE
;
RT_DEBUG_SCHEDULER_AVAILABLE
(
RT_TRUE
)
;
tick
=
rt_tick_from_millisecond
(
msec
);
...
...
include/rtdebug.h
浏览文件 @
500d26c2
...
...
@@ -116,25 +116,28 @@ while (0)
* 2) not in interrupt context.
* 3) scheduler is not locked.
*/
#define RT_DEBUG_SCHEDULER_AVAILABLE
\
#define RT_DEBUG_SCHEDULER_AVAILABLE
(need_check)
\
do \
{ \
rt_base_t level; \
level = rt_hw_interrupt_disable(); \
if (rt_critical_level() != 0) \
if (need_check) \
{ \
rt_kprintf("Function[%s]: scheduler is not available\n", \
__FUNCTION__); \
RT_ASSERT(0) \
rt_base_t level; \
level = rt_hw_interrupt_disable(); \
if (rt_critical_level() != 0) \
{ \
rt_kprintf("Function[%s]: scheduler is not available\n", \
__FUNCTION__); \
RT_ASSERT(0) \
} \
RT_DEBUG_IN_THREAD_CONTEXT; \
rt_hw_interrupt_enable(level); \
} \
RT_DEBUG_IN_THREAD_CONTEXT; \
rt_hw_interrupt_enable(level); \
} \
while (0)
#else
#define RT_DEBUG_NOT_IN_INTERRUPT
#define RT_DEBUG_IN_THREAD_CONTEXT
#define RT_DEBUG_SCHEDULER_AVAILABLE
#define RT_DEBUG_SCHEDULER_AVAILABLE
(need_check)
#endif
#else
/* RT_DEBUG */
...
...
@@ -143,7 +146,7 @@ while (0)
#define RT_DEBUG_LOG(type, message)
#define RT_DEBUG_NOT_IN_INTERRUPT
#define RT_DEBUG_IN_THREAD_CONTEXT
#define RT_DEBUG_SCHEDULER_AVAILABLE
#define RT_DEBUG_SCHEDULER_AVAILABLE
(need_check)
#endif
/* RT_DEBUG */
...
...
src/ipc.c
浏览文件 @
500d26c2
...
...
@@ -484,11 +484,9 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)
/* parameter check */
RT_ASSERT
(
sem
!=
RT_NULL
);
RT_ASSERT
(
rt_object_get_type
(
&
sem
->
parent
.
parent
)
==
RT_Object_Class_Semaphore
);
/* current context checking */
if
(
time
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
time
!=
0
);
RT_OBJECT_HOOK_CALL
(
rt_object_trytake_hook
,
(
&
(
sem
->
parent
.
parent
)));
...
...
@@ -914,13 +912,8 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time)
struct
rt_thread
*
thread
;
/* this function must not be used in interrupt even if time = 0 */
RT_DEBUG_IN_THREAD_CONTEXT
;
/* current context checking */
if
(
time
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
RT_TRUE
);
/* parameter check */
RT_ASSERT
(
mutex
!=
RT_NULL
);
...
...
@@ -1579,12 +1572,7 @@ rt_err_t rt_event_recv(rt_event_t event,
RT_ASSERT
(
rt_object_get_type
(
&
event
->
parent
.
parent
)
==
RT_Object_Class_Event
);
/* current context checking */
RT_DEBUG_IN_THREAD_CONTEXT
;
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
RT_TRUE
);
if
(
set
==
0
)
return
-
RT_ERROR
;
...
...
@@ -2008,10 +1996,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
RT_ASSERT
(
rt_object_get_type
(
&
mb
->
parent
.
parent
)
==
RT_Object_Class_MailBox
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
/* initialize delta tick */
tick_delta
=
0
;
...
...
@@ -2256,10 +2241,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
RT_ASSERT
(
rt_object_get_type
(
&
mb
->
parent
.
parent
)
==
RT_Object_Class_MailBox
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
/* initialize delta tick */
tick_delta
=
0
;
...
...
@@ -2769,10 +2751,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
RT_ASSERT
(
size
!=
0
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
/* greater than one message size */
if
(
size
>
mq
->
msg_size
)
...
...
@@ -3084,10 +3063,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
RT_ASSERT
(
size
!=
0
);
/* current context checking */
if
(
timeout
!=
0
)
{
RT_DEBUG_SCHEDULER_AVAILABLE
;
}
RT_DEBUG_SCHEDULER_AVAILABLE
(
timeout
!=
0
);
/* initialize delta tick */
tick_delta
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录