Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
0b2006c8
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
12 个月 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0b2006c8
编写于
2月 15, 2011
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
begin unifying clone/thread management interface in preparation for porting
上级
59666802
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
34 deletion
+22
-34
src/internal/pthread_impl.h
src/internal/pthread_impl.h
+3
-5
src/thread/i386/clone.s
src/thread/i386/clone.s
+17
-25
src/thread/pthread_create.c
src/thread/pthread_create.c
+2
-4
未找到文件。
src/internal/pthread_impl.h
浏览文件 @
0b2006c8
...
...
@@ -20,9 +20,10 @@
#define pthread __pthread
struct
pthread
{
struct
pthread
*
self
,
*
join
;
int
errno_val
;
struct
pthread
*
self
;
unsigned
long
tlsdesc
[
4
]
;
pid_t
tid
,
pid
;
int
tsd_used
,
errno_val
,
*
errno_ptr
;
volatile
int
canceldisable
,
cancelasync
,
cancelpoint
,
cancel
;
unsigned
char
*
map_base
;
size_t
map_size
;
...
...
@@ -32,12 +33,9 @@ struct pthread {
jmp_buf
exit_jmp_buf
;
int
detached
;
int
exitlock
;
unsigned
long
tlsdesc
[
4
];
struct
__ptcb
*
cancelbuf
;
void
**
tsd
;
int
tsd_used
;
pthread_attr_t
attr
;
int
*
errno_ptr
;
};
static
inline
struct
pthread
*
__pthread_self
()
...
...
src/thread/i386/clone.s
浏览文件 @
0b2006c8
.
text
.
global
__clone
.
type
__clone
,%
function
__clone
:
movl
8
(%
esp
),%
ecx
andl
$
0xfffffff0
,
%
ecx
subl
$
28
,%
ecx
movl
16
(%
esp
),%
eax
movl
%
eax
,
12
(%
ecx
)
movl
4
(%
esp
),%
eax
movl
%
eax
,
8
(%
ecx
)
.
global
__uniclone
.
type
__uniclone
,%
function
__uniclone
:
movl
4
(%
esp
),%
ecx
subl
$
24
,%
ecx
movl
8
(%
esp
),%
eax
movl
%
eax
,
16
(%
ecx
)
movl
12
(%
esp
),%
eax
movl
%
eax
,
24
(%
ecx
)
pushl
%
ebx
pushl
%
esi
pushl
%
edi
pushl
%
ebp
movl
%
eax
,
8
(%
eax
)
leal
20
(%
eax
),%
edx
leal
4
(%
eax
),%
esi
movl
%
edx
,%
edi
movl
$
0x7d0f00
,%
ebx
movl
$
120
,%
eax
movl
12
+
12
(%
esp
),%
ebx
movl
20
+
12
(%
esp
),%
edx
movl
24
+
12
(%
esp
),%
esi
movl
28
+
12
(%
esp
),%
edi
int
$
128
popl
%
ebp
popl
%
edi
popl
%
esi
popl
%
ebx
test
%
eax
,%
eax
jnz
1
f
xorl
%
ebp
,%
ebp
call
*%
ebx
movl
%
eax
,
%
ebx
movl
$
1
,
%
eax
int
$
128
1
:
movl
%
eax
,
4
(%
esp
)
ret
.
size
__clone
,.-
__clone
.
size
__uniclone
,.-
__uniclone
src/thread/pthread_create.c
浏览文件 @
0b2006c8
...
...
@@ -152,8 +152,7 @@ static int start(void *p)
return
0
;
}
#define CLONE_MAGIC 0x7d0f00
int
__clone
(
int
(
*
)(
void
*
),
void
*
,
int
,
void
*
,
pid_t
*
,
void
*
,
pid_t
*
);
int
__uniclone
(
void
*
,
int
(
*
)(),
void
*
);
#define ROUND(x) (((x)+PAGE_SIZE-1)&-PAGE_SIZE)
...
...
@@ -203,8 +202,7 @@ int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(vo
while
(
rs
.
lock
)
__wait
(
&
rs
.
lock
,
0
,
1
,
1
);
a_inc
(
&
libc
.
threads_minus_1
);
ret
=
__clone
(
start
,
stack
,
CLONE_MAGIC
,
new
,
&
new
->
tid
,
&
new
->
tlsdesc
,
&
new
->
tid
);
ret
=
__uniclone
(
stack
,
start
,
new
);
a_dec
(
&
rs
.
blocks
);
if
(
rs
.
lock
)
__wake
(
&
rs
.
blocks
,
1
,
1
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录