]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/missing_stat.h
license: LGPL-2.1+ -> LGPL-2.1-or-later
[thirdparty/systemd.git] / src / basic / missing_stat.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
e01819f8
YW
2#pragma once
3
4#include <linux/types.h>
5#include <sys/stat.h>
6
7#if WANT_LINUX_STAT_H
8#include <linux/stat.h>
9#endif
10
69b3fa14
LP
11/* Thew newest definition we are aware of (fa2fcf4f1df1559a0a4ee0f46915b496cc2ebf60; 5.8) */
12#define STATX_DEFINITION { \
13 __u32 stx_mask; \
14 __u32 stx_blksize; \
15 __u64 stx_attributes; \
16 __u32 stx_nlink; \
17 __u32 stx_uid; \
18 __u32 stx_gid; \
19 __u16 stx_mode; \
20 __u16 __spare0[1]; \
21 __u64 stx_ino; \
22 __u64 stx_size; \
23 __u64 stx_blocks; \
24 __u64 stx_attributes_mask; \
25 struct statx_timestamp stx_atime; \
26 struct statx_timestamp stx_btime; \
27 struct statx_timestamp stx_ctime; \
28 struct statx_timestamp stx_mtime; \
29 __u32 stx_rdev_major; \
30 __u32 stx_rdev_minor; \
31 __u32 stx_dev_major; \
32 __u32 stx_dev_minor; \
33 __u64 stx_mnt_id; \
34 __u64 __spare2; \
35 __u64 __spare3[12]; \
36}
37
e01819f8
YW
38#if !HAVE_STRUCT_STATX
39struct statx_timestamp {
9cb6c6ec
YW
40 __s64 tv_sec;
41 __u32 tv_nsec;
42 __s32 __reserved;
e01819f8 43};
69b3fa14
LP
44
45struct statx STATX_DEFINITION;
e01819f8
YW
46#endif
47
69b3fa14
LP
48/* Always define the newest version we are aware of as a distinct type, so that we can use it even if glibc
49 * defines an older definition */
50struct new_statx STATX_DEFINITION;
51
ca194a2a
LP
52/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
53#ifndef AT_STATX_SYNC_AS_STAT
54#define AT_STATX_SYNC_AS_STAT 0x0000
55#endif
56
57/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
58#ifndef AT_STATX_FORCE_SYNC
59#define AT_STATX_FORCE_SYNC 0x2000
60#endif
61
e01819f8 62/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
ddb439b8
LP
63#ifndef AT_STATX_DONT_SYNC
64#define AT_STATX_DONT_SYNC 0x4000
e01819f8
YW
65#endif
66
67/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
ddb439b8
LP
68#ifndef STATX_TYPE
69#define STATX_TYPE 0x00000001U
70#endif
71
72/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
73#ifndef STATX_MODE
74#define STATX_MODE 0x00000002U
75#endif
76
ca194a2a
LP
77/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
78#ifndef STATX_NLINK
79#define STATX_NLINK 0x00000004U
80#endif
81
ddb439b8
LP
82/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
83#ifndef STATX_UID
84#define STATX_UID 0x00000008U
85#endif
86
ca194a2a
LP
87/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
88#ifndef STATX_GID
89#define STATX_GID 0x00000010U
90#endif
91
ddb439b8
LP
92/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
93#ifndef STATX_ATIME
94#define STATX_ATIME 0x00000020U
95#endif
96
97/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
98#ifndef STATX_MTIME
99#define STATX_MTIME 0x00000040U
100#endif
101
102/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
103#ifndef STATX_CTIME
104#define STATX_CTIME 0x00000080U
105#endif
106
107/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
108#ifndef STATX_INO
109#define STATX_INO 0x00000100U
110#endif
111
ca194a2a
LP
112/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
113#ifndef STATX_SIZE
114#define STATX_SIZE 0x00000200U
115#endif
116
117/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
118#ifndef STATX_BLOCKS
119#define STATX_BLOCKS 0x00000400U
120#endif
121
ddb439b8
LP
122/* a528d35e8bfcc521d7cb70aaf03e1bd296c8493f (4.11) */
123#ifndef STATX_BTIME
124#define STATX_BTIME 0x00000800U
e01819f8 125#endif
69b3fa14
LP
126
127/* fa2fcf4f1df1559a0a4ee0f46915b496cc2ebf60 (5.8) */
128#ifndef STATX_MNT_ID
129#define STATX_MNT_ID 0x00001000U
130#endif
5f104080
LP
131
132/* 80340fe3605c0e78cfe496c3b3878be828cfdbfe (5.8) */
133#ifndef STATX_ATTR_MOUNT_ROOT
134#define STATX_ATTR_MOUNT_ROOT 0x00002000 /* Root of a mount */
135#endif