1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #ifndef _NNPFS_ATTR_H
37 #define _NNPFS_ATTR_H
38
39 #define XA_V_NONE 0
40 #define XA_V_MODE (1 << 0)
41 #define XA_V_NLINK (1 << 1)
42 #define XA_V_SIZE (1 << 2)
43 #define XA_V_UID (1 << 3)
44 #define XA_V_GID (1 << 4)
45 #define XA_V_ATIME (1 << 5)
46 #define XA_V_MTIME (1 << 6)
47 #define XA_V_CTIME (1 << 7)
48 #define XA_V_FILEID (1 << 8)
49 #define XA_V_TYPE (1 << 9)
50
51 #define NNPFS_FILE_NON 1
52 #define NNPFS_FILE_REG 2
53 #define NNPFS_FILE_DIR 3
54 #define NNPFS_FILE_BLK 4
55 #define NNPFS_FILE_CHR 5
56 #define NNPFS_FILE_LNK 6
57 #define NNPFS_FILE_SOCK 7
58 #define NNPFS_FILE_FIFO 8
59 #define NNPFS_FILE_BAD 9
60
61 #define XA_CLEAR(xa_p) \
62 ((xa_p)->valid = XA_V_NONE)
63 #define XA_SET_MODE(xa_p, value) \
64 (((xa_p)->valid) |= XA_V_MODE, ((xa_p)->xa_mode) = value)
65 #define XA_SET_NLINK(xa_p, value) \
66 (((xa_p)->valid) |= XA_V_NLINK, ((xa_p)->xa_nlink) = value)
67 #define XA_SET_SIZE(xa_p, value) \
68 (((xa_p)->valid) |= XA_V_SIZE, ((xa_p)->xa_size) = value)
69 #define XA_SET_UID(xa_p, value) \
70 (((xa_p)->valid) |= XA_V_UID, ((xa_p)->xa_uid) = value)
71 #define XA_SET_GID(xa_p, value) \
72 (((xa_p)->valid) |= XA_V_GID, ((xa_p)->xa_gid) = value)
73 #define XA_SET_ATIME(xa_p, value) \
74 (((xa_p)->valid) |= XA_V_ATIME, ((xa_p)->xa_atime) = value)
75 #define XA_SET_MTIME(xa_p, value) \
76 (((xa_p)->valid) |= XA_V_MTIME, ((xa_p)->xa_mtime) = value)
77 #define XA_SET_CTIME(xa_p, value) \
78 (((xa_p)->valid) |= XA_V_CTIME, ((xa_p)->xa_ctime) = value)
79 #define XA_SET_FILEID(xa_p, value) \
80 (((xa_p)->valid) |= XA_V_FILEID, ((xa_p)->xa_fileid) = value)
81 #define XA_SET_TYPE(xa_p, value) \
82 (((xa_p)->valid) |= XA_V_TYPE, ((xa_p)->xa_type) = value)
83
84
85 #define XA_VALID_MODE(xa_p) \
86 (((xa_p)->valid) & XA_V_MODE)
87 #define XA_VALID_NLINK(xa_p) \
88 (((xa_p)->valid) & XA_V_NLINK)
89 #define XA_VALID_SIZE(xa_p) \
90 (((xa_p)->valid) & XA_V_SIZE)
91 #define XA_VALID_UID(xa_p) \
92 (((xa_p)->valid) & XA_V_UID)
93 #define XA_VALID_GID(xa_p) \
94 (((xa_p)->valid) & XA_V_GID)
95 #define XA_VALID_ATIME(xa_p) \
96 (((xa_p)->valid) & XA_V_ATIME)
97 #define XA_VALID_MTIME(xa_p) \
98 (((xa_p)->valid) & XA_V_MTIME)
99 #define XA_VALID_CTIME(xa_p) \
100 (((xa_p)->valid) & XA_V_CTIME)
101 #define XA_VALID_FILEID(xa_p) \
102 (((xa_p)->valid) & XA_V_FILEID)
103 #define XA_VALID_TYPE(xa_p) \
104 (((xa_p)->valid) & XA_V_TYPE)
105
106 struct xfs_attr {
107 uint32_t valid;
108 uint32_t xa_mode;
109
110 uint32_t xa_nlink;
111 uint32_t xa_size;
112
113 uint32_t xa_uid;
114 uint32_t xa_gid;
115
116 uint32_t xa_atime;
117 uint32_t xa_mtime;
118
119 uint32_t xa_ctime;
120 uint32_t xa_fileid;
121
122 uint32_t xa_type;
123 uint32_t pad1;
124 };
125
126 #endif