2012-07-05 68 views
2

我试图寻找一个特定的功能,e.g fstatfs结构,但我发现下面的代码,但它几乎没有,我查__set_errno宏,它只是设置错误号码。什么的glibc的源代码

int 
__fstatfs (int fd, struct statfs *buf) 
{ 
    __set_errno (ENOSYS); 
    return -1; 
} 

所以一组核心库的ASM实现,​​但如何是工作,如果是这样,为什么这些功能弱,甚至存在吗?

+0

这样就可以从调用C呢? – Linuxios 2012-07-05 15:04:17

+3

根据man fstatfs,ENOSYS的返回码意味着该文件系统不支持该调用。尝试找到另一个文件系统源。 – tinman 2012-07-05 15:06:57

+0

@tinman很多其他的功能,e.g __connect,__listen也在做着同样的code..I只是不明白架构 – daisy 2012-07-05 15:13:44

回答

3

我想这电话是依赖于操作系统的,所以你看到的只是一个存根。似乎有某种别名的io/sys/statfs.h,并为Linux实现的候选人是在sysdeps/unix/sysv/linux/fstatfs64.c文件。

+0

是的,它应该是这样的,我要更深层面上来看,非常感谢! – daisy 2012-07-05 15:20:21

+0

非常恰当,谢。 unistd.h中的大多数C库函数实际上都是由OS内核提供的,而C库实现只是内核系统调用的包装器。 – 2012-07-05 17:27:40