summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-06-20 15:44:53 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-06-20 15:44:53 +0000
commitc2745b603cfacbc6070ba4da72bcb3e8c4900e28 (patch)
treef167275143a0ea867af2a6577d025e061f21a855 /include
parent212ebb4f4ded3e357b51a5032e04ab87f1613eeb (diff)
Fix struct stat64 in the 32-bit kernel and struct stat in the 64-bit
kernel to match each other and the the glibc definition. The glibc part of this change has been sent to Andreas.
Diffstat (limited to 'include')
-rw-r--r--include/asm-mips/stat.h62
-rw-r--r--include/asm-mips64/stat.h24
2 files changed, 38 insertions, 48 deletions
diff --git a/include/asm-mips/stat.h b/include/asm-mips/stat.h
index 8dc6698e6..e8892d3da 100644
--- a/include/asm-mips/stat.h
+++ b/include/asm-mips/stat.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MIPS_STAT_H
-#define __ASM_MIPS_STAT_H
+#ifndef _ASM_STAT_H
+#define _ASM_STAT_H
#include <linux/types.h>
@@ -52,41 +52,35 @@ struct stat {
unsigned int st_gen;
};
-/* This matches struct stat64 in glibc2.1, hence the absolutely
- * insane amounts of padding around dev_t's.
- * XXX We don't ship glibc 2.1 for MIPS yet, so this structure may be
- * changed without breaking compatibility. You've been warned.
+/*
+ * This matches struct stat64 in glibc2.1, hence the absolutely insane
+ * amounts of padding around dev_t's. The memory layout is the same as of
+ * struct stat of the 64-bit kernel.
*/
+
struct stat64 {
unsigned long st_dev;
- unsigned char __pad0[8];
-
- unsigned long st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
-
- unsigned long st_uid;
- unsigned long st_gid;
-
- unsigned short st_rdev;
- unsigned char __pad3[10];
-
+ unsigned long st_pad0[3]; /* Reserved for st_dev expansion */
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ unsigned long st_rdev;
+ unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */
long long st_size;
+ /*
+ * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
+ * but we don't have it under Linux.
+ */
+ time_t st_atime;
+ unsigned long reserved0; /* Reserved for st_atime expansion */
+ time_t st_mtime;
+ unsigned long reserved1; /* Reserved for st_atime expansion */
+ time_t st_ctime;
+ unsigned long reserved2; /* Reserved for st_atime expansion */
unsigned long st_blksize;
-
- unsigned long st_blocks; /* Number 512-byte blocks allocated. */
- unsigned long __pad4; /* future possible st_blocks high bits */
-
- unsigned long st_atime;
- unsigned long __pad5;
-
- unsigned long st_mtime;
- unsigned long __pad6;
-
- unsigned long st_ctime;
- unsigned long __pad7; /* will be high 32 bits of ctime someday */
-
- unsigned long __unused1;
- unsigned long __unused2;
+ long long st_blocks;
};
-#endif /* __ASM_MIPS_STAT_H */
+
+#endif /* _ASM_STAT_H */
diff --git a/include/asm-mips64/stat.h b/include/asm-mips64/stat.h
index 8fdcd95d4..e84dcb7ec 100644
--- a/include/asm-mips64/stat.h
+++ b/include/asm-mips64/stat.h
@@ -3,7 +3,8 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 1995, 1999 Ralf Baechle
+ * Copyright (C) 1995, 1999, 2000 Ralf Baechle
+ * Copyright (C) 2000 Silicon Graphics, Inc.
*/
#ifndef _ASM_STAT_H
#define _ASM_STAT_H
@@ -54,35 +55,30 @@ struct stat32 {
unsigned int st_gen;
};
+/* The memory layout is the same as of struct stat64 of the 32-bit kernel. */
struct stat {
dev_t st_dev;
- long st_pad1[3]; /* Reserved for network id */
+ unsigned int st_pad0[3]; /* Reserved for st_dev expansion */
ino_t st_ino;
mode_t st_mode;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
- long st_pad2[2];
+ unsigned int st_pad1[3]; /* Reserved for st_rdev expansion */
off_t st_size;
- long st_pad3;
/*
* Actually this should be timestruc_t st_atime, st_mtime and st_ctime
* but we don't have it under Linux.
*/
time_t st_atime;
- long reserved0;
+ unsigned int reserved0; /* Reserved for st_atime expansion */
time_t st_mtime;
- long reserved1;
+ unsigned int reserved1; /* Reserved for st_atime expansion */
time_t st_ctime;
- long reserved2;
- long st_blksize;
- long st_blocks;
- char st_fstype[16]; /* Filesystem type name */
- long st_pad4[8];
- /* Linux specific fields */
- unsigned int st_flags;
- unsigned int st_gen;
+ unsigned int reserved2; /* Reserved for st_atime expansion */
+ unsigned int st_blksize;
+ unsigned long st_blocks;
};
#endif /* _ASM_STAT_H */