1 // Copyright 2017 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 5 #ifndef ZIRCON_RIGHTS_H_ 6 #define ZIRCON_RIGHTS_H_ 7 8 #include <stdint.h> 9 10 typedef uint32_t zx_rights_t; 11 #define ZX_RIGHT_NONE ((zx_rights_t)0u) 12 #define ZX_RIGHT_DUPLICATE ((zx_rights_t)1u << 0) 13 #define ZX_RIGHT_TRANSFER ((zx_rights_t)1u << 1) 14 #define ZX_RIGHT_READ ((zx_rights_t)1u << 2) 15 #define ZX_RIGHT_WRITE ((zx_rights_t)1u << 3) 16 #define ZX_RIGHT_EXECUTE ((zx_rights_t)1u << 4) 17 #define ZX_RIGHT_MAP ((zx_rights_t)1u << 5) 18 #define ZX_RIGHT_GET_PROPERTY ((zx_rights_t)1u << 6) 19 #define ZX_RIGHT_SET_PROPERTY ((zx_rights_t)1u << 7) 20 #define ZX_RIGHT_ENUMERATE ((zx_rights_t)1u << 8) 21 #define ZX_RIGHT_DESTROY ((zx_rights_t)1u << 9) 22 #define ZX_RIGHT_SET_POLICY ((zx_rights_t)1u << 10) 23 #define ZX_RIGHT_GET_POLICY ((zx_rights_t)1u << 11) 24 #define ZX_RIGHT_SIGNAL ((zx_rights_t)1u << 12) 25 #define ZX_RIGHT_SIGNAL_PEER ((zx_rights_t)1u << 13) 26 #define ZX_RIGHT_WAIT ((zx_rights_t)1u << 14) 27 #define ZX_RIGHT_INSPECT ((zx_rights_t)1u << 15) 28 #define ZX_RIGHT_MANAGE_JOB ((zx_rights_t)1u << 16) 29 #define ZX_RIGHT_MANAGE_PROCESS ((zx_rights_t)1u << 17) 30 #define ZX_RIGHT_MANAGE_THREAD ((zx_rights_t)1u << 18) 31 #define ZX_RIGHT_APPLY_PROFILE ((zx_rights_t)1u << 19) 32 #define ZX_RIGHT_SAME_RIGHTS ((zx_rights_t)1u << 31) 33 34 // Convenient names for commonly grouped rights. 35 #define ZX_RIGHTS_BASIC (ZX_RIGHT_TRANSFER | ZX_RIGHT_DUPLICATE | ZX_RIGHT_WAIT | ZX_RIGHT_INSPECT) 36 37 #define ZX_RIGHTS_IO (ZX_RIGHT_READ | ZX_RIGHT_WRITE) 38 39 #define ZX_RIGHTS_PROPERTY (ZX_RIGHT_GET_PROPERTY | ZX_RIGHT_SET_PROPERTY) 40 41 #define ZX_RIGHTS_POLICY (ZX_RIGHT_GET_POLICY | ZX_RIGHT_SET_POLICY) 42 43 #define ZX_DEFAULT_CHANNEL_RIGHTS \ 44 ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_DUPLICATE)) | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL | \ 45 ZX_RIGHT_SIGNAL_PEER) 46 47 #define ZX_DEFAULT_EVENT_RIGHTS (ZX_RIGHTS_BASIC | ZX_RIGHT_SIGNAL) 48 49 #define ZX_DEFAULT_EVENTPAIR_RIGHTS (ZX_RIGHTS_BASIC | ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER) 50 51 #define ZX_DEFAULT_FIFO_RIGHTS \ 52 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO |\ 53 ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER) 54 55 #define ZX_DEFAULT_GUEST_RIGHTS \ 56 (ZX_RIGHT_TRANSFER | ZX_RIGHT_DUPLICATE | ZX_RIGHT_WRITE |\ 57 ZX_RIGHT_INSPECT | ZX_RIGHT_MANAGE_PROCESS) 58 59 #define ZX_DEFAULT_INTERRUPT_RIGHTS (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL) 60 61 #define ZX_DEFAULT_IO_MAPPING_RIGHTS \ 62 (ZX_RIGHT_READ | ZX_RIGHT_INSPECT) 63 64 #define ZX_DEFAULT_JOB_RIGHTS \ 65 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY | ZX_RIGHTS_POLICY | ZX_RIGHT_ENUMERATE | \ 66 ZX_RIGHT_DESTROY | ZX_RIGHT_SIGNAL | ZX_RIGHT_MANAGE_JOB | ZX_RIGHT_MANAGE_PROCESS) 67 68 #define ZX_DEFAULT_LOG_RIGHTS \ 69 (ZX_RIGHTS_BASIC | ZX_RIGHT_WRITE | ZX_RIGHT_SIGNAL) 70 71 #define ZX_DEFAULT_PCI_DEVICE_RIGHTS \ 72 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO) 73 74 #define ZX_DEFAULT_PCI_INTERRUPT_RIGHTS \ 75 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL) 76 77 #define ZX_DEFAULT_PORT_RIGHTS \ 78 ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) | ZX_RIGHTS_IO) 79 80 #define ZX_DEFAULT_PROCESS_RIGHTS \ 81 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY | ZX_RIGHT_ENUMERATE | ZX_RIGHT_DESTROY | \ 82 ZX_RIGHT_SIGNAL | ZX_RIGHT_MANAGE_PROCESS | ZX_RIGHT_MANAGE_THREAD) 83 84 #define ZX_DEFAULT_RESOURCE_RIGHTS \ 85 (ZX_RIGHT_TRANSFER | ZX_RIGHT_DUPLICATE | ZX_RIGHT_WRITE |\ 86 ZX_RIGHT_INSPECT) 87 88 #define ZX_DEFAULT_SOCKET_RIGHTS \ 89 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_GET_PROPERTY |\ 90 ZX_RIGHT_SET_PROPERTY | ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER) 91 92 #define ZX_DEFAULT_THREAD_RIGHTS \ 93 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY |\ 94 ZX_RIGHT_DESTROY | ZX_RIGHT_SIGNAL | ZX_RIGHT_MANAGE_THREAD) 95 96 #define ZX_DEFAULT_TIMER_RIGHTS (ZX_RIGHTS_BASIC | ZX_RIGHT_WRITE | ZX_RIGHT_SIGNAL) 97 98 #define ZX_DEFAULT_VCPU_RIGHTS \ 99 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_EXECUTE | ZX_RIGHT_SIGNAL) 100 101 #define ZX_DEFAULT_VMAR_RIGHTS \ 102 (ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) 103 104 #define ZX_DEFAULT_VMO_RIGHTS\ 105 (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY |\ 106 ZX_RIGHT_EXECUTE | ZX_RIGHT_MAP | ZX_RIGHT_SIGNAL) 107 108 #define ZX_DEFAULT_IOMMU_RIGHTS \ 109 (ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) 110 111 #define ZX_DEFAULT_BTI_RIGHTS \ 112 ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) | ZX_RIGHTS_IO | ZX_RIGHT_MAP) 113 114 #define ZX_DEFAULT_PROFILE_RIGHTS \ 115 ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) | ZX_RIGHT_APPLY_PROFILE) 116 117 #define ZX_DEFAULT_PMT_RIGHTS \ 118 (ZX_RIGHT_INSPECT) 119 120 #define ZX_DEFAULT_SUSPEND_TOKEN_RIGHTS \ 121 (ZX_RIGHT_TRANSFER | ZX_RIGHT_INSPECT) 122 123 #define ZX_DEFAULT_PAGER_RIGHTS \ 124 (ZX_RIGHT_INSPECT | ZX_RIGHT_ENUMERATE | ZX_RIGHT_GET_PROPERTY |\ 125 ZX_RIGHT_SET_PROPERTY | ZX_RIGHT_TRANSFER) 126 127 #endif // ZIRCON_RIGHTS_H_ 128