0001
0002 #ifndef _UAPI_PR_H
0003 #define _UAPI_PR_H
0004
0005 #include <linux/types.h>
0006
0007 enum pr_type {
0008 PR_WRITE_EXCLUSIVE = 1,
0009 PR_EXCLUSIVE_ACCESS = 2,
0010 PR_WRITE_EXCLUSIVE_REG_ONLY = 3,
0011 PR_EXCLUSIVE_ACCESS_REG_ONLY = 4,
0012 PR_WRITE_EXCLUSIVE_ALL_REGS = 5,
0013 PR_EXCLUSIVE_ACCESS_ALL_REGS = 6,
0014 };
0015
0016 struct pr_reservation {
0017 __u64 key;
0018 __u32 type;
0019 __u32 flags;
0020 };
0021
0022 struct pr_registration {
0023 __u64 old_key;
0024 __u64 new_key;
0025 __u32 flags;
0026 __u32 __pad;
0027 };
0028
0029 struct pr_preempt {
0030 __u64 old_key;
0031 __u64 new_key;
0032 __u32 type;
0033 __u32 flags;
0034 };
0035
0036 struct pr_clear {
0037 __u64 key;
0038 __u32 flags;
0039 __u32 __pad;
0040 };
0041
0042 #define PR_FL_IGNORE_KEY (1 << 0)
0043
0044 #define IOC_PR_REGISTER _IOW('p', 200, struct pr_registration)
0045 #define IOC_PR_RESERVE _IOW('p', 201, struct pr_reservation)
0046 #define IOC_PR_RELEASE _IOW('p', 202, struct pr_reservation)
0047 #define IOC_PR_PREEMPT _IOW('p', 203, struct pr_preempt)
0048 #define IOC_PR_PREEMPT_ABORT _IOW('p', 204, struct pr_preempt)
0049 #define IOC_PR_CLEAR _IOW('p', 205, struct pr_clear)
0050
0051 #endif