1#include <sys/stat.h> 2#include <errno.h> 3#include <fcntl.h> 4#include "syscall.h" 5#include "libc.h" 6 7void __procfdname(char *, unsigned); 8 9int fstat(int fd, struct stat *st) 10{ 11 int ret = __syscall(SYS_fstat, fd, st); 12 if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) 13 return __syscall_ret(ret); 14 15 char buf[15+3*sizeof(int)]; 16 __procfdname(buf, fd); 17#ifdef SYS_stat 18 return syscall(SYS_stat, buf, st); 19#else 20 return syscall(SYS_fstatat, AT_FDCWD, buf, st, 0); 21#endif 22} 23 24LFS64(fstat); 25