#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; }