Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
290eeb45
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
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,发现更多精彩内容 >>
未验证
提交
290eeb45
编写于
7月 31, 2018
作者:
B
Bernard Xiong
提交者:
GitHub
7月 31, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1675 from heyuanjie87/lwp
[lwp]给thread添加lwp成员
上级
e6fedb6e
2373a9c7
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
19 addition
and
10 deletion
+19
-10
components/dfs/src/dfs.c
components/dfs/src/dfs.c
+1
-1
components/lwp/lwp.c
components/lwp/lwp.c
+5
-8
include/rtdef.h
include/rtdef.h
+9
-1
src/thread.c
src/thread.c
+4
-0
未找到文件。
components/dfs/src/dfs.c
浏览文件 @
290eeb45
...
...
@@ -510,7 +510,7 @@ struct dfs_fdtable* dfs_fdtable_get(void)
#ifdef RT_USING_LWP
struct
rt_lwp
*
lwp
;
lwp
=
(
struct
rt_lwp
*
)
rt_thread_self
()
->
user_data
;
lwp
=
(
struct
rt_lwp
*
)
rt_thread_self
()
->
lwp
;
if
(
lwp
)
fdt
=
&
lwp
->
fdt
;
else
...
...
components/lwp/lwp.c
浏览文件 @
290eeb45
...
...
@@ -46,14 +46,14 @@ extern void lwp_user_entry(void *args, const void *text, void *data);
void
lwp_set_kernel_sp
(
uint32_t
*
sp
)
{
struct
rt_lwp
*
user_data
;
user_data
=
(
struct
rt_lwp
*
)
rt_current_thread
->
user_data
;
user_data
=
(
struct
rt_lwp
*
)
rt_current_thread
->
lwp
;
user_data
->
kernel_sp
=
sp
;
}
uint32_t
*
lwp_get_kernel_sp
(
void
)
{
struct
rt_lwp
*
user_data
;
user_data
=
(
struct
rt_lwp
*
)
rt_current_thread
->
user_data
;
user_data
=
(
struct
rt_lwp
*
)
rt_current_thread
->
lwp
;
return
user_data
->
kernel_sp
;
}
...
...
@@ -286,7 +286,7 @@ static void lwp_cleanup(struct rt_thread *tid)
dbg_log
(
DBG_INFO
,
"thread: %s, stack_addr: %08X
\n
"
,
tid
->
name
,
tid
->
stack_addr
);
lwp
=
(
struct
rt_lwp
*
)
tid
->
user_data
;
lwp
=
(
struct
rt_lwp
*
)
tid
->
lwp
;
if
(
lwp
->
lwp_type
==
LWP_TYPE_DYN_ADDR
)
{
...
...
@@ -327,16 +327,13 @@ static void lwp_cleanup(struct rt_thread *tid)
static
void
lwp_thread
(
void
*
parameter
)
{
volatile
uint32_t
tmp
;
rt_thread_t
tid
;
struct
rt_lwp
*
lwp
;
rt_kprintf
(
"%08x %08x
\n
"
,
&
tmp
,
tmp
);
lwp
=
(
struct
rt_lwp
*
)
parameter
;
rt_lwp_mem_init
(
lwp
);
tid
=
rt_thread_self
();
tid
->
user_data
=
(
rt_uint32_t
)
lwp
;
tid
->
lwp
=
lwp
;
tid
->
cleanup
=
lwp_cleanup
;
lwp_user_entry
(
lwp
->
args
,
lwp
->
text_entry
,
lwp
->
data
);
...
...
@@ -344,7 +341,7 @@ static void lwp_thread(void *parameter)
struct
rt_lwp
*
rt_lwp_self
(
void
)
{
return
(
struct
rt_lwp
*
)
rt_thread_self
()
->
user_data
;
return
(
struct
rt_lwp
*
)
rt_thread_self
()
->
lwp
;
}
int
exec
(
char
*
filename
,
int
argc
,
char
**
argv
)
...
...
include/rtdef.h
浏览文件 @
290eeb45
...
...
@@ -496,6 +496,10 @@ typedef siginfo_t rt_siginfo_t;
#define RT_THREAD_CTRL_CHANGE_PRIORITY 0x02
/**< Change thread priority. */
#define RT_THREAD_CTRL_INFO 0x03
/**< Get thread information. */
#ifdef RT_USING_LWP
struct
rt_lwp
;
#endif
/**
* Thread structure
*/
...
...
@@ -556,7 +560,11 @@ struct rt_thread
void
(
*
cleanup
)(
struct
rt_thread
*
tid
);
/**< cleanup function when thread exit */
rt_uint32_t
user_data
;
/**< private user data beyond this thread */
rt_uint32_t
user_data
;
/**< private user data beyond this thread */
#ifdef RT_USING_LWP
struct
rt_lwp
*
lwp
;
/**< if NULL it's a kernel thread */
#endif
};
typedef
struct
rt_thread
*
rt_thread_t
;
...
...
src/thread.c
浏览文件 @
290eeb45
...
...
@@ -199,6 +199,10 @@ static rt_err_t _rt_thread_init(struct rt_thread *thread,
thread
->
si_list
=
RT_NULL
;
#endif
#ifdef RT_USING_LWP
thread
->
lwp
=
RT_NULL
;
#endif
RT_OBJECT_HOOK_CALL
(
rt_thread_inited_hook
,
(
thread
));
return
RT_EOK
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录