1#![allow(clippy::bad_bit_mask)]
9
10use crate::sys;
11use bitflags::bitflags;
12use zerocopy::{FromBytes, Immutable};
13
14#[repr(transparent)]
18#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, FromBytes, Immutable)]
19pub struct Rights(sys::zx_rights_t);
20
21bitflags! {
22 impl Rights: sys::zx_rights_t {
23 const NONE = sys::ZX_RIGHT_NONE;
24 const DUPLICATE = sys::ZX_RIGHT_DUPLICATE;
25 const TRANSFER = sys::ZX_RIGHT_TRANSFER;
26 const READ = sys::ZX_RIGHT_READ;
27 const WRITE = sys::ZX_RIGHT_WRITE;
28 const EXECUTE = sys::ZX_RIGHT_EXECUTE;
29 const MAP = sys::ZX_RIGHT_MAP;
30 const GET_PROPERTY = sys::ZX_RIGHT_GET_PROPERTY;
31 const SET_PROPERTY = sys::ZX_RIGHT_SET_PROPERTY;
32 const ENUMERATE = sys::ZX_RIGHT_ENUMERATE;
33 const DESTROY = sys::ZX_RIGHT_DESTROY;
34 const SET_POLICY = sys::ZX_RIGHT_SET_POLICY;
35 const GET_POLICY = sys::ZX_RIGHT_GET_POLICY;
36 const SIGNAL = sys::ZX_RIGHT_SIGNAL;
37 const SIGNAL_PEER = sys::ZX_RIGHT_SIGNAL_PEER;
38 const WAIT = sys::ZX_RIGHT_WAIT;
39 const INSPECT = sys::ZX_RIGHT_INSPECT;
40 const MANAGE_JOB = sys::ZX_RIGHT_MANAGE_JOB;
41 const MANAGE_PROCESS = sys::ZX_RIGHT_MANAGE_PROCESS;
42 const MANAGE_THREAD = sys::ZX_RIGHT_MANAGE_THREAD;
43 const APPLY_PROFILE = sys::ZX_RIGHT_APPLY_PROFILE;
44 const MANAGE_SOCKET = sys::ZX_RIGHT_MANAGE_SOCKET;
45 const OP_CHILDREN = sys::ZX_RIGHT_OP_CHILDREN;
46 const RESIZE = sys::ZX_RIGHT_RESIZE;
47 const ATTACH_VMO = sys::ZX_RIGHT_ATTACH_VMO;
48 const MANAGE_VMO = sys::ZX_RIGHT_MANAGE_VMO;
49 const SAME_RIGHTS = sys::ZX_RIGHT_SAME_RIGHTS;
50
51 const BASIC = sys::ZX_RIGHT_TRANSFER | sys::ZX_RIGHT_DUPLICATE |
52 sys::ZX_RIGHT_WAIT | sys::ZX_RIGHT_INSPECT;
53 const IO = sys::ZX_RIGHT_READ | sys::ZX_RIGHT_WRITE;
54 const PROPERTY = sys::ZX_RIGHT_GET_PROPERTY | sys::ZX_RIGHT_SET_PROPERTY;
55 const POLICY = sys::ZX_RIGHT_GET_POLICY | sys::ZX_RIGHT_SET_POLICY;
56 const RESOURCE_BASIC = sys::ZX_RIGHT_TRANSFER | sys::ZX_RIGHT_DUPLICATE |
57 sys::ZX_RIGHT_WRITE | sys::ZX_RIGHT_INSPECT;
58
59 const CHANNEL_DEFAULT = sys::ZX_RIGHT_TRANSFER | sys::ZX_RIGHT_WAIT |
62 sys::ZX_RIGHT_INSPECT |sys::ZX_RIGHT_READ |
63 sys::ZX_RIGHT_WRITE | sys::ZX_RIGHT_SIGNAL |
64 sys::ZX_RIGHT_SIGNAL_PEER;
65 const VMO_DEFAULT = Self::BASIC.bits() | Self::IO.bits() | Self::PROPERTY.bits() | Self::MAP.bits() | sys::ZX_RIGHT_SIGNAL;
66 }
67}
68
69impl std::fmt::Debug for Rights {
70 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
71 bitflags::parser::to_writer(self, f)
72 }
73}