Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
11e4b925
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
11e4b925
编写于
5月 07, 2011
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize out useless default-attribute object in pthread_create
上级
4c4e22d7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
7 deletion
+7
-7
src/thread/pthread_create.c
src/thread/pthread_create.c
+7
-7
未找到文件。
src/thread/pthread_create.c
浏览文件 @
11e4b925
...
...
@@ -61,10 +61,10 @@ weak_alias(dummy, __pthread_tsd_size);
int
pthread_create
(
pthread_t
*
res
,
const
pthread_attr_t
*
attr
,
void
*
(
*
entry
)(
void
*
),
void
*
arg
)
{
int
ret
;
size_t
size
,
guard
;
size_t
size
=
DEFAULT_STACK_SIZE
+
DEFAULT_GUARD_SIZE
;
size_t
guard
=
DEFAULT_GUARD_SIZE
;
struct
pthread
*
self
=
pthread_self
(),
*
new
;
unsigned
char
*
map
,
*
stack
,
*
tsd
;
const
pthread_attr_t
default_attr
=
{
0
};
if
(
!
self
)
return
ENOSYS
;
if
(
!
libc
.
threaded
)
{
...
...
@@ -72,9 +72,10 @@ int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(vo
libc
.
threaded
=
1
;
}
if
(
!
attr
)
attr
=
&
default_attr
;
guard
=
ROUND
(
attr
->
_a_guardsize
+
DEFAULT_GUARD_SIZE
);
size
=
guard
+
ROUND
(
attr
->
_a_stacksize
+
DEFAULT_STACK_SIZE
);
if
(
attr
)
{
guard
=
ROUND
(
attr
->
_a_guardsize
+
DEFAULT_GUARD_SIZE
);
size
=
guard
+
ROUND
(
attr
->
_a_stacksize
+
DEFAULT_STACK_SIZE
);
}
size
+=
__pthread_tsd_size
;
map
=
mmap
(
0
,
size
,
PROT_READ
|
PROT_WRITE
|
PROT_EXEC
,
MAP_PRIVATE
|
MAP_ANON
,
-
1
,
0
);
if
(
!
map
)
return
EAGAIN
;
...
...
@@ -90,8 +91,7 @@ int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(vo
new
->
start_arg
=
arg
;
new
->
self
=
new
;
new
->
tsd
=
(
void
*
)
tsd
;
new
->
detached
=
attr
->
_a_detach
;
new
->
attr
=
*
attr
;
if
(
attr
)
new
->
detached
=
attr
->
_a_detach
;
new
->
unblock_cancel
=
self
->
cancel
;
memcpy
(
new
->
tlsdesc
,
self
->
tlsdesc
,
sizeof
new
->
tlsdesc
);
new
->
tlsdesc
[
1
]
=
(
uintptr_t
)
new
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录