Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
f01d3518
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看板
提交
f01d3518
编写于
4月 03, 2011
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
simplify calling of timer signal handler
上级
06baa2b5
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
6 addition
and
12 deletion
+6
-12
src/internal/libc.h
src/internal/libc.h
+1
-2
src/thread/pthread_create.c
src/thread/pthread_create.c
+4
-7
src/time/timer_create.c
src/time/timer_create.c
+1
-3
未找到文件。
src/internal/libc.h
浏览文件 @
f01d3518
...
...
@@ -10,13 +10,12 @@ struct __libc {
void
(
*
lock
)(
volatile
int
*
);
void
(
*
lockfile
)(
FILE
*
);
void
(
*
fork_handler
)(
int
);
void
(
*
sigtimer
)(
);
int
(
*
rsyscall
)(
int
,
long
,
long
,
long
,
long
,
long
,
long
);
int
(
*
atexit
)(
void
(
*
)(
void
));
void
(
*
fini
)(
void
);
void
(
*
ldso_fini
)(
void
);
volatile
int
threads_minus_1
;
int
ofl_lock
;
int
(
*
rsyscall
)(
int
,
long
,
long
,
long
,
long
,
long
,
long
);
FILE
*
ofl_head
;
};
...
...
src/thread/pthread_create.c
浏览文件 @
f01d3518
...
...
@@ -4,6 +4,7 @@ static void dummy_1(pthread_t self)
{
}
weak_alias
(
dummy_1
,
__pthread_tsd_run_dtors
);
weak_alias
(
dummy_1
,
__sigtimer_handler
);
#ifdef __pthread_unwind_next
#undef __pthread_unwind_next
...
...
@@ -47,13 +48,9 @@ static void docancel(struct pthread *self)
static
void
cancel_handler
(
int
sig
,
siginfo_t
*
si
,
void
*
ctx
)
{
struct
pthread
*
self
=
__pthread_self
();
if
(
!
self
->
cancel
)
{
if
(
si
->
si_code
==
SI_TIMER
&&
libc
.
sigtimer
)
libc
.
sigtimer
(
sig
,
si
,
ctx
);
return
;
}
if
(
self
->
canceldisable
)
return
;
if
(
self
->
cancelasync
||
(
self
->
cancelpoint
==
1
&&
PC_AT_SYS
(
ctx
)))
if
(
si
->
si_code
==
SI_TIMER
)
__sigtimer_handler
(
self
);
if
(
self
->
cancel
&&
!
self
->
canceldisable
&&
(
self
->
cancelasync
||
(
self
->
cancelpoint
==
1
&&
PC_AT_SYS
(
ctx
))))
docancel
(
self
);
}
...
...
src/time/timer_create.c
浏览文件 @
f01d3518
...
...
@@ -13,10 +13,9 @@ struct start_args {
struct
sigevent
*
sev
;
};
static
void
sighandler
(
int
sig
,
siginfo_t
*
si
,
void
*
ctx
)
void
__sigtimer_handler
(
pthread_t
self
)
{
int
st
;
pthread_t
self
=
__pthread_self
();
void
(
*
notify
)(
union
sigval
)
=
(
void
(
*
)(
union
sigval
))
self
->
start
;
union
sigval
val
=
{
.
sival_ptr
=
self
->
start_arg
};
...
...
@@ -72,7 +71,6 @@ int timer_create(clockid_t clk, struct sigevent *evp, timer_t *res)
*
res
=
(
void
*
)(
2
*
timerid
+
1
);
break
;
case
SIGEV_THREAD
:
if
(
!
libc
.
sigtimer
)
libc
.
sigtimer
=
sighandler
;
if
(
sev
.
sigev_notify_attributes
)
attr
=
*
sev
.
sigev_notify_attributes
;
else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录