fix: 解决nanosleep 接口的rmtp参数被错误清零问题
主干不存在该问题,已解决. nanosleep 使线程进入到了可被信号中断的状态,当线程睡眠被信号 中断,线程回复运行态时,若rmtp不为NULL,则会将sleep剩余的时间 记录在rmtp参数中返回,但是如果线程sleep过程中未被信号唤醒, 则忽略该参数。 由于鸿蒙中nanosleep是不可被打断的,即rmtp应该被忽略,而不是清零。 Close #I48FMT Signed-off-by: wanghao-free <wanghao453@huawei.com>
This commit is contained in:
parent
3e6bab5158
commit
0c203c1e57
|
@ -355,13 +355,18 @@ int SysNanoSleep(const struct timespec *rqtp, struct timespec *rmtp)
|
|||
{
|
||||
int ret;
|
||||
struct timespec srqtp;
|
||||
struct timespec srmtp = { 0 };
|
||||
struct timespec srmtp;
|
||||
|
||||
if (!rqtp || LOS_ArchCopyFromUser(&srqtp, rqtp, sizeof(struct timespec))) {
|
||||
errno = EFAULT;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
if (rmtp && LOS_ArchCopyFromUser(&srmtp, rmtp, sizeof(struct timespec))) {
|
||||
errno = EFAULT;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
ret = nanosleep(&srqtp, rmtp ? &srmtp : NULL);
|
||||
if (ret < 0) {
|
||||
return -get_errno();
|
||||
|
|
Loading…
Reference in New Issue