blob: 0de638ed802de9743994a145fd5a56e0ca2b37a4 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//! Type-safe bindings for Zircon rights.
// Rights::NONE is not actually a flag but that's not very likely to be confusing
#![allow(clippy::bad_bit_mask)]
use bitflags::bitflags;
use fuchsia_zircon_sys as sys;
bitflags! {
/// Rights associated with a handle.
///
/// See [rights](https://fuchsia.dev/fuchsia-src/concepts/kernel/rights) for more information.
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Rights: sys::zx_rights_t {
const NONE = sys::ZX_RIGHT_NONE;
const DUPLICATE = sys::ZX_RIGHT_DUPLICATE;
const TRANSFER = sys::ZX_RIGHT_TRANSFER;
const READ = sys::ZX_RIGHT_READ;
const WRITE = sys::ZX_RIGHT_WRITE;
const EXECUTE = sys::ZX_RIGHT_EXECUTE;
const MAP = sys::ZX_RIGHT_MAP;
const GET_PROPERTY = sys::ZX_RIGHT_GET_PROPERTY;
const SET_PROPERTY = sys::ZX_RIGHT_SET_PROPERTY;
const ENUMERATE = sys::ZX_RIGHT_ENUMERATE;
const DESTROY = sys::ZX_RIGHT_DESTROY;
const SET_POLICY = sys::ZX_RIGHT_SET_POLICY;
const GET_POLICY = sys::ZX_RIGHT_GET_POLICY;
const SIGNAL = sys::ZX_RIGHT_SIGNAL;
const SIGNAL_PEER = sys::ZX_RIGHT_SIGNAL_PEER;
const WAIT = sys::ZX_RIGHT_WAIT;
const INSPECT = sys::ZX_RIGHT_INSPECT;
const MANAGE_JOB = sys::ZX_RIGHT_MANAGE_JOB;
const MANAGE_PROCESS = sys::ZX_RIGHT_MANAGE_PROCESS;
const MANAGE_THREAD = sys::ZX_RIGHT_MANAGE_THREAD;
const APPLY_PROFILE = sys::ZX_RIGHT_APPLY_PROFILE;
const MANAGE_SOCKET = sys::ZX_RIGHT_MANAGE_SOCKET;
const RESIZE = sys::ZX_RIGHT_RESIZE;
const SAME_RIGHTS = sys::ZX_RIGHT_SAME_RIGHTS;
const BASIC = sys::ZX_RIGHT_TRANSFER | sys::ZX_RIGHT_DUPLICATE |
sys::ZX_RIGHT_WAIT | sys::ZX_RIGHT_INSPECT;
const IO = sys::ZX_RIGHT_READ | sys::ZX_RIGHT_WRITE;
const PROPERTY = sys::ZX_RIGHT_GET_PROPERTY | sys::ZX_RIGHT_SET_PROPERTY;
const POLICY = sys::ZX_RIGHT_GET_POLICY | sys::ZX_RIGHT_SET_POLICY;
const RESOURCE_BASIC = sys::ZX_RIGHT_TRANSFER | sys::ZX_RIGHT_DUPLICATE |
sys::ZX_RIGHT_WRITE | sys::ZX_RIGHT_INSPECT;
// Default rights for a newly created object of a particular type.
// See zircon/system/public/zircon/rights.h
const CHANNEL_DEFAULT = sys::ZX_RIGHT_TRANSFER | sys::ZX_RIGHT_WAIT |
sys::ZX_RIGHT_INSPECT |sys::ZX_RIGHT_READ |
sys::ZX_RIGHT_WRITE | sys::ZX_RIGHT_SIGNAL |
sys::ZX_RIGHT_SIGNAL_PEER;
const VMO_DEFAULT = Self::BASIC.bits() | Self::IO.bits() | Self::PROPERTY.bits() | Self::MAP.bits() | sys::ZX_RIGHT_SIGNAL;
}
}