为什么glibc中宏`-ENOSYS`的含义是什么?

时间:2021-01-22 06:49:47

标签: glibc

我正在学习 pthread_mutex_lock,发现 pthread_mutex_lock 最终会在 glibc(2.27 版)中调用宏 lll_futex_timed_wait(),我下载了 glibc 源代码,但显示 {{1} } 被定义为lll_futex_timed_wait(),这是什么意思,如何得到它的真正定义(应该是系统调用,我也得到了linux内核的源码)?

-ENOSYS

1 个答案:

答案 0 :(得分:2)

glibc 的一大块由 sysdeps 子树下的系统和架构相关位组成。您正在查看的是一个通用存根,只有在未针对特定平台构建正确配置 glibc 时才会编译该存根。

在那些较旧的 glibc 版本中,底层 futex 细节的实际实现将驻留在 sysdeps/unix/sysv/linux/lowlevellock-futex.h 中

有趣的是,在最近的 glibc 版本中,代码被提升到“通用”树,因此,例如,如果您检查 glibc 2.32,您会看到这个宏在系统调用方面正确实现。

相关问题