2012-07-05 67 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