]>
Commit | Line | Data |
---|---|---|
1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
2 | #ifndef __ASM_GENERIC_STAT_H | |
3 | #define __ASM_GENERIC_STAT_H | |
4 | ||
5 | /* | |
6 | * Everybody gets this wrong and has to stick with it for all | |
7 | * eternity. Hopefully, this version gets used by new architectures | |
8 | * so they don't fall into the same traps. | |
9 | * | |
10 | * stat64 is copied from powerpc64, with explicit padding added. | |
11 | * stat is the same structure layout on 64-bit, without the 'long long' | |
12 | * types. | |
13 | * | |
14 | * By convention, 64 bit architectures use the stat interface, while | |
15 | * 32 bit architectures use the stat64 interface. Note that we don't | |
16 | * provide an __old_kernel_stat here, which new architecture should | |
17 | * not have to start with. | |
18 | */ | |
19 | ||
20 | #include <asm/bitsperlong.h> | |
21 | ||
22 | #define STAT_HAVE_NSEC 1 | |
23 | ||
24 | struct stat { | |
25 | unsigned long st_dev; /* Device. */ | |
26 | unsigned long st_ino; /* File serial number. */ | |
27 | unsigned int st_mode; /* File mode. */ | |
28 | unsigned int st_nlink; /* Link count. */ | |
29 | unsigned int st_uid; /* User ID of the file's owner. */ | |
30 | unsigned int st_gid; /* Group ID of the file's group. */ | |
31 | unsigned long st_rdev; /* Device number, if device. */ | |
32 | unsigned long __pad1; | |
33 | long st_size; /* Size of file, in bytes. */ | |
34 | int st_blksize; /* Optimal block size for I/O. */ | |
35 | int __pad2; | |
36 | long st_blocks; /* Number 512-byte blocks allocated. */ | |
37 | long st_atime; /* Time of last access. */ | |
38 | unsigned long st_atime_nsec; | |
39 | long st_mtime; /* Time of last modification. */ | |
40 | unsigned long st_mtime_nsec; | |
41 | long st_ctime; /* Time of last status change. */ | |
42 | unsigned long st_ctime_nsec; | |
43 | unsigned int __unused4; | |
44 | unsigned int __unused5; | |
45 | }; | |
46 | ||
47 | /* This matches struct stat64 in glibc2.1. Only used for 32 bit. */ | |
48 | #if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64) | |
49 | struct stat64 { | |
50 | unsigned long long st_dev; /* Device. */ | |
51 | unsigned long long st_ino; /* File serial number. */ | |
52 | unsigned int st_mode; /* File mode. */ | |
53 | unsigned int st_nlink; /* Link count. */ | |
54 | unsigned int st_uid; /* User ID of the file's owner. */ | |
55 | unsigned int st_gid; /* Group ID of the file's group. */ | |
56 | unsigned long long st_rdev; /* Device number, if device. */ | |
57 | unsigned long long __pad1; | |
58 | long long st_size; /* Size of file, in bytes. */ | |
59 | int st_blksize; /* Optimal block size for I/O. */ | |
60 | int __pad2; | |
61 | long long st_blocks; /* Number 512-byte blocks allocated. */ | |
62 | int st_atime; /* Time of last access. */ | |
63 | unsigned int st_atime_nsec; | |
64 | int st_mtime; /* Time of last modification. */ | |
65 | unsigned int st_mtime_nsec; | |
66 | int st_ctime; /* Time of last status change. */ | |
67 | unsigned int st_ctime_nsec; | |
68 | unsigned int __unused4; | |
69 | unsigned int __unused5; | |
70 | }; | |
71 | #endif | |
72 | ||
73 | #endif /* __ASM_GENERIC_STAT_H */ |