1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
2 | #ifndef _UAPI_PR_H |
3 | #define _UAPI_PR_H |
4 | |
5 | #include <linux/types.h> |
6 | |
7 | enum pr_status { |
8 | PR_STS_SUCCESS = 0x0, |
9 | /* |
10 | * The following error codes are based on SCSI, because the interface |
11 | * was originally created for it and has existing users. |
12 | */ |
13 | /* Generic device failure. */ |
14 | PR_STS_IOERR = 0x2, |
15 | PR_STS_RESERVATION_CONFLICT = 0x18, |
16 | /* Temporary path failure that can be retried. */ |
17 | PR_STS_RETRY_PATH_FAILURE = 0xe0000, |
18 | /* The request was failed due to a fast failure timer. */ |
19 | PR_STS_PATH_FAST_FAILED = 0xf0000, |
20 | /* The path cannot be reached and has been marked as failed. */ |
21 | PR_STS_PATH_FAILED = 0x10000, |
22 | }; |
23 | |
24 | enum pr_type { |
25 | PR_WRITE_EXCLUSIVE = 1, |
26 | PR_EXCLUSIVE_ACCESS = 2, |
27 | PR_WRITE_EXCLUSIVE_REG_ONLY = 3, |
28 | PR_EXCLUSIVE_ACCESS_REG_ONLY = 4, |
29 | PR_WRITE_EXCLUSIVE_ALL_REGS = 5, |
30 | PR_EXCLUSIVE_ACCESS_ALL_REGS = 6, |
31 | }; |
32 | |
33 | struct pr_reservation { |
34 | __u64 key; |
35 | __u32 type; |
36 | __u32 flags; |
37 | }; |
38 | |
39 | struct pr_registration { |
40 | __u64 old_key; |
41 | __u64 new_key; |
42 | __u32 flags; |
43 | __u32 __pad; |
44 | }; |
45 | |
46 | struct pr_preempt { |
47 | __u64 old_key; |
48 | __u64 new_key; |
49 | __u32 type; |
50 | __u32 flags; |
51 | }; |
52 | |
53 | struct pr_clear { |
54 | __u64 key; |
55 | __u32 flags; |
56 | __u32 __pad; |
57 | }; |
58 | |
59 | #define PR_FL_IGNORE_KEY (1 << 0) /* ignore existing key */ |
60 | |
61 | #define IOC_PR_REGISTER _IOW('p', 200, struct pr_registration) |
62 | #define IOC_PR_RESERVE _IOW('p', 201, struct pr_reservation) |
63 | #define IOC_PR_RELEASE _IOW('p', 202, struct pr_reservation) |
64 | #define IOC_PR_PREEMPT _IOW('p', 203, struct pr_preempt) |
65 | #define IOC_PR_PREEMPT_ABORT _IOW('p', 204, struct pr_preempt) |
66 | #define IOC_PR_CLEAR _IOW('p', 205, struct pr_clear) |
67 | |
68 | #endif /* _UAPI_PR_H */ |
69 | |