zx/
object_type.rs

1// Copyright 2025 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use crate::sys;
6
7/// Zircon object types.
8///
9/// # Layout
10///
11/// This type is guaranteed to have the same layout and bit patterns as `zx_obj_type_t`.
12#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
13#[repr(transparent)]
14pub struct ObjectType(sys::zx_obj_type_t);
15
16assoc_values!(ObjectType, [
17    NONE            = sys::ZX_OBJ_TYPE_NONE;
18    PROCESS         = sys::ZX_OBJ_TYPE_PROCESS;
19    THREAD          = sys::ZX_OBJ_TYPE_THREAD;
20    VMO             = sys::ZX_OBJ_TYPE_VMO;
21    CHANNEL         = sys::ZX_OBJ_TYPE_CHANNEL;
22    EVENT           = sys::ZX_OBJ_TYPE_EVENT;
23    PORT            = sys::ZX_OBJ_TYPE_PORT;
24    INTERRUPT       = sys::ZX_OBJ_TYPE_INTERRUPT;
25    PCI_DEVICE      = sys::ZX_OBJ_TYPE_PCI_DEVICE;
26    DEBUGLOG        = sys::ZX_OBJ_TYPE_DEBUGLOG;
27    SOCKET          = sys::ZX_OBJ_TYPE_SOCKET;
28    RESOURCE        = sys::ZX_OBJ_TYPE_RESOURCE;
29    EVENTPAIR       = sys::ZX_OBJ_TYPE_EVENTPAIR;
30    JOB             = sys::ZX_OBJ_TYPE_JOB;
31    VMAR            = sys::ZX_OBJ_TYPE_VMAR;
32    FIFO            = sys::ZX_OBJ_TYPE_FIFO;
33    GUEST           = sys::ZX_OBJ_TYPE_GUEST;
34    VCPU            = sys::ZX_OBJ_TYPE_VCPU;
35    TIMER           = sys::ZX_OBJ_TYPE_TIMER;
36    IOMMU           = sys::ZX_OBJ_TYPE_IOMMU;
37    BTI             = sys::ZX_OBJ_TYPE_BTI;
38    PROFILE         = sys::ZX_OBJ_TYPE_PROFILE;
39    PMT             = sys::ZX_OBJ_TYPE_PMT;
40    SUSPEND_TOKEN   = sys::ZX_OBJ_TYPE_SUSPEND_TOKEN;
41    PAGER           = sys::ZX_OBJ_TYPE_PAGER;
42    EXCEPTION       = sys::ZX_OBJ_TYPE_EXCEPTION;
43    CLOCK           = sys::ZX_OBJ_TYPE_CLOCK;
44    STREAM          = sys::ZX_OBJ_TYPE_STREAM;
45    MSI             = sys::ZX_OBJ_TYPE_MSI;
46    IOB             = sys::ZX_OBJ_TYPE_IOB;
47    COUNTER         = sys::ZX_OBJ_TYPE_COUNTER;
48]);
49
50impl ObjectType {
51    /// Creates an `ObjectType` from the underlying zircon type.
52    pub const fn from_raw(raw: sys::zx_obj_type_t) -> Self {
53        Self(raw)
54    }
55
56    /// Converts `ObjectType` into the underlying zircon type.
57    pub const fn into_raw(self) -> sys::zx_obj_type_t {
58        self.0
59    }
60}