Merge tag 'nfs-for-4.15-2' of git://git.linux-nfs.org/projects/anna/linux-nfs
[linux-2.6-microblaze.git] / include / uapi / linux / pr.h
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_type {
8         PR_WRITE_EXCLUSIVE              = 1,
9         PR_EXCLUSIVE_ACCESS             = 2,
10         PR_WRITE_EXCLUSIVE_REG_ONLY     = 3,
11         PR_EXCLUSIVE_ACCESS_REG_ONLY    = 4,
12         PR_WRITE_EXCLUSIVE_ALL_REGS     = 5,
13         PR_EXCLUSIVE_ACCESS_ALL_REGS    = 6,
14 };
15
16 struct pr_reservation {
17         __u64   key;
18         __u32   type;
19         __u32   flags;
20 };
21
22 struct pr_registration {
23         __u64   old_key;
24         __u64   new_key;
25         __u32   flags;
26         __u32   __pad;
27 };
28
29 struct pr_preempt {
30         __u64   old_key;
31         __u64   new_key;
32         __u32   type;
33         __u32   flags;
34 };
35
36 struct pr_clear {
37         __u64   key;
38         __u32   flags;
39         __u32   __pad;
40 };
41
42 #define PR_FL_IGNORE_KEY        (1 << 0)        /* ignore existing key */
43
44 #define IOC_PR_REGISTER         _IOW('p', 200, struct pr_registration)
45 #define IOC_PR_RESERVE          _IOW('p', 201, struct pr_reservation)
46 #define IOC_PR_RELEASE          _IOW('p', 202, struct pr_reservation)
47 #define IOC_PR_PREEMPT          _IOW('p', 203, struct pr_preempt)
48 #define IOC_PR_PREEMPT_ABORT    _IOW('p', 204, struct pr_preempt)
49 #define IOC_PR_CLEAR            _IOW('p', 205, struct pr_clear)
50
51 #endif /* _UAPI_PR_H */