| #include <sys/stat.h> |
| |
| /* It's easy to change kernel to support stat */ |
| |
| struct stat_portable { |
| unsigned long long st_dev; |
| unsigned char __pad0[4]; |
| |
| unsigned long __st_ino; |
| unsigned int st_mode; |
| unsigned int st_nlink; |
| |
| unsigned long st_uid; |
| unsigned long st_gid; |
| |
| unsigned long long st_rdev; |
| unsigned char __pad3[4]; |
| |
| long long st_size; |
| unsigned long st_blksize; |
| unsigned long long st_blocks; |
| |
| unsigned long st_atime; |
| unsigned long st_atime_nsec; |
| |
| unsigned long st_mtime; |
| unsigned long st_mtime_nsec; |
| |
| unsigned long st_ctime; |
| unsigned long st_ctime_nsec; |
| |
| unsigned long long st_ino; |
| }; |
| |
| /* |
| The MIPS Version is |
| struct stat { |
| unsigned long st_dev; |
| unsigned long __pad0[3]; |
| |
| unsigned long long st_ino; |
| |
| unsigned int st_mode; |
| unsigned int st_nlink; |
| |
| unsigned long st_uid; |
| unsigned long st_gid; |
| |
| unsigned long st_rdev; |
| unsigned long __pad1[3]; |
| |
| long long st_size; |
| |
| unsigned long st_atime; |
| unsigned long st_atime_nsec; |
| |
| unsigned long st_mtime; |
| unsigned long st_mtime_nsec; |
| |
| unsigned long st_ctime; |
| unsigned long st_ctime_nsec; |
| |
| unsigned long st_blksize; |
| unsigned long __pad2; |
| |
| unsigned long long st_blocks; |
| }; |
| */ |
| |
| /* Real Stat Syscall */ |
| extern int stat(const char *, struct stat *); |
| |
| /* Note: The Portable Header will define stat to stat_portable */ |
| int stat_portable(const char *path, struct stat_portable *s) |
| { |
| struct stat mips_stat; |
| int ret = stat(path,&mips_stat); |
| s->st_dev = mips_stat.st_dev; |
| s->__st_ino = mips_stat.st_ino; |
| s->st_mode = mips_stat.st_mode; |
| s->st_nlink = mips_stat.st_nlink; |
| s->st_uid = mips_stat.st_uid; |
| s->st_gid = mips_stat.st_gid; |
| s->st_rdev = mips_stat.st_rdev; |
| s->st_size = mips_stat.st_size; |
| s->st_blksize = mips_stat.st_blksize; |
| s->st_blocks = mips_stat.st_blocks; |
| s->st_atime = mips_stat.st_atime; |
| s->st_atime_nsec = mips_stat.st_atime_nsec; |
| s->st_mtime = mips_stat.st_mtime; |
| s->st_mtime_nsec = mips_stat.st_mtime_nsec; |
| s->st_ctime = mips_stat.st_ctime; |
| s->st_ctime_nsec = mips_stat.st_ctime_nsec; |
| s->st_ino = mips_stat.st_ino; |
| return ret; |
| } |