首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是sysinfo()异步。信号安全?

是sysinfo()异步。信号安全?
EN

Stack Overflow用户
提问于 2022-02-16 16:48:07
回答 1查看 58关注 0票数 1

这可能是一个愚蠢的问题,但在Linux (RHEL 7/8)中是sysinfo() (来自gcc 'C')异步。信号安全?

也就是说,可以安全地从C信号处理程序调用它吗?

从命令行运行‘’或'info sysinfo‘似乎没有提到任何一种方式。

我正在寻找一种“快速”的方法来获得经过的时间(从信号处理程序或“正常”上下文)。

Posix ('man信号-安全‘)似乎说clock_gettime()是信号安全的,尽管我已经看到glibc和Posix文档在什么是信号安全和什么不是信号安全上并不总是一致的。至少我在找的地方。

例如,在https://pubs.opengroup.org/onlinepubs/9699919799/中,在“信号概念”下,‘list ()’被列为信号安全,其中显示了一个POSIX信号安全函数列表。(也在从RHEL8.5运行的“man信号-安全”下)。

但是“信息睡眠”(来自RHEL8.5)显示睡眠()是“不安全的”。(我认为,在“GNU C库参考手册2.28”文件中,GNU库参考手册与glibc的安装级别相匹配)。

我想我也不确定最终的文档应该在哪里找到(对于这个环境)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-16 19:11:28

sysinfo只是瘦系统调用包装器和异步信号安全:

代码语言:javascript
复制
00000000000feb00 <sysinfo@@GLIBC_2.2.5>:
   feb00:       mov    $0x63,%eax
   feb05:       syscall 
   feb07:       cmp    $0xfffffffffffff001,%rax
   feb0d:       jae    feb10 <sysinfo@@GLIBC_2.2.5+0x10>
   feb0f:       retq   
   feb10:       mov    0xbf359(%rip),%rcx
   feb17:       neg    %eax
   feb19:       mov    %eax,%fs:(%rcx)
   feb1c:       or     $0xffffffffffffffff,%rax
   feb20:       retq   

但是它没有vDSO加速,所以它将比clock_gettime慢得多,无论是CLOCK_REALTIME还是CLOCK_MONOTONIC,在当前的系统中都是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71145912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档