1#![allow(unused_imports)]
9
10use bitflags::bitflags;
11use zerocopy::{FromBytes, IntoBytes};
12
13#[repr(C)]
14#[derive(IntoBytes, FromBytes, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
15pub struct Rights(u32);
16
17bitflags::bitflags! {
18 impl Rights : u32 {
19 const DUPLICATE = 1 << 0;
20 const TRANSFER = 1 << 1;
21 const READ = 1 << 2;
22 const WRITE = 1 << 3;
23 const EXECUTE = 1 << 4;
24 const MAP = 1 << 5;
25 const GET_PROPERTY = 1 << 6;
26 const SET_PROPERTY = 1 << 7;
27 const ENUMERATE = 1 << 8;
28 const DESTROY = 1 << 9;
29 const SET_POLICY = 1 << 10;
30 const GET_POLICY = 1 << 11;
31 const SIGNAL = 1 << 12;
32 const SIGNAL_PEER = 1 << 13;
33 const WAIT = 1 << 14;
34 const INSPECT = 1 << 15;
35 const MANAGE_JOB = 1 << 16;
36 const MANAGE_PROCESS = 1 << 17;
37 const MANAGE_THREAD = 1 << 18;
38 const APPLY_PROFILE = 1 << 19;
39 const MANAGE_SOCKET = 1 << 20;
40 const OP_CHILDREN = 1 << 21;
41 const RESIZE = 1 << 22;
42 const ATTACH_VMO = 1 << 23;
43 const MANAGE_VMO = 1 << 24;
44 const SAME_RIGHTS = 1 << 31;
45 }
46}
47
48pub const RIGHTS_BASIC: Rights = Rights::from_bits_truncate(0b1100000000000011); pub const RIGHTS_IO: Rights = Rights::from_bits_truncate(0b1100); pub const RIGHTS_PROPERTY: Rights = Rights::from_bits_truncate(0b11000000); pub const RIGHTS_POLICY: Rights = Rights::from_bits_truncate(0b110000000000); pub const DEFAULT_CHANNEL_RIGHTS: Rights = Rights::from_bits_truncate(0b1111000000001110); pub const DEFAULT_EVENT_RIGHTS: Rights = Rights::from_bits_truncate(0b1101000000000011);