1 // Copyright 2016 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 #pragma once 6 7 #include <stdint.h> 8 9 #include <zircon/compiler.h> 10 11 // Resources that require a region allocator to handle exclusive reservations 12 // are defined in a contiguous block starting at 0 up to ZX_RSRC_KIND_COUNT-1. 13 // After that point, all resource 'kinds' are abstract and need no underlying 14 // bookkeeping. It's important that ZX_RSRC_KIND_COUNT is defined for each 15 // architecture to properly allocate only the bookkeeping necessary. 16 // 17 // TODO(ZX-2419): Don't expose ZX_RSRC_KIND_COUNT to userspace 18 19 typedef uint32_t zx_rsrc_kind_t; 20 #define ZX_RSRC_KIND_MMIO ((zx_rsrc_kind_t)0u) 21 #define ZX_RSRC_KIND_IRQ ((zx_rsrc_kind_t)1u) 22 #define ZX_RSRC_KIND_IOPORT ((zx_rsrc_kind_t)2u) 23 #define ZX_RSRC_KIND_HYPERVISOR ((zx_rsrc_kind_t)3u) 24 #define ZX_RSRC_KIND_ROOT ((zx_rsrc_kind_t)4u) 25 #define ZX_RSRC_KIND_VMEX ((zx_rsrc_kind_t)5u) 26 #define ZX_RSRC_KIND_SMC ((zx_rsrc_kind_t)6u) 27 #define ZX_RSRC_KIND_COUNT ((zx_rsrc_kind_t)7u) 28 29 typedef uint32_t zx_rsrc_flags_t; 30 #define ZX_RSRC_FLAG_EXCLUSIVE ((zx_rsrc_flags_t)0x00010000u) 31 #define ZX_RSRC_FLAGS_MASK ((zx_rsrc_flags_t)ZX_RSRC_FLAG_EXCLUSIVE) 32 33 #define ZX_RSRC_EXTRACT_KIND(x) ((x) & 0x0000FFFF) 34 #define ZX_RSRC_EXTRACT_FLAGS(x) ((x) & 0xFFFF0000) 35