| // Copyright 2016 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. |
| |
| #ifndef SYSROOT_ZIRCON_SYSCALLS_RESOURCE_H_ |
| #define SYSROOT_ZIRCON_SYSCALLS_RESOURCE_H_ |
| |
| #include <stdint.h> |
| |
| #include <zircon/compiler.h> |
| |
| // Resources that require a region allocator to handle exclusive reservations |
| // are defined in a contiguous block starting at 0 up to ZX_RSRC_KIND_COUNT-1. |
| // After that point, all resource 'kinds' are abstract and need no underlying |
| // bookkeeping. It's important that ZX_RSRC_KIND_COUNT is defined for each |
| // architecture to properly allocate only the bookkeeping necessary. |
| // |
| // TODO(ZX-2419): Don't expose ZX_RSRC_KIND_COUNT to userspace |
| |
| typedef uint32_t zx_rsrc_kind_t; |
| #define ZX_RSRC_KIND_MMIO ((zx_rsrc_kind_t)0u) |
| #define ZX_RSRC_KIND_IRQ ((zx_rsrc_kind_t)1u) |
| #define ZX_RSRC_KIND_IOPORT ((zx_rsrc_kind_t)2u) |
| #define ZX_RSRC_KIND_HYPERVISOR ((zx_rsrc_kind_t)3u) |
| #define ZX_RSRC_KIND_ROOT ((zx_rsrc_kind_t)4u) |
| #define ZX_RSRC_KIND_VMEX ((zx_rsrc_kind_t)5u) |
| #define ZX_RSRC_KIND_SMC ((zx_rsrc_kind_t)6u) |
| #define ZX_RSRC_KIND_COUNT ((zx_rsrc_kind_t)7u) |
| |
| typedef uint32_t zx_rsrc_flags_t; |
| #define ZX_RSRC_FLAG_EXCLUSIVE ((zx_rsrc_flags_t)0x00010000u) |
| #define ZX_RSRC_FLAGS_MASK ((zx_rsrc_flags_t)ZX_RSRC_FLAG_EXCLUSIVE) |
| |
| #define ZX_RSRC_EXTRACT_KIND(x) ((x)&0x0000FFFF) |
| #define ZX_RSRC_EXTRACT_FLAGS(x) ((x)&0xFFFF0000) |
| |
| #endif // SYSROOT_ZIRCON_SYSCALLS_RESOURCE_H_ |