| // 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_DEVICE_VFS_H_ |
| #define SYSROOT_ZIRCON_DEVICE_VFS_H_ |
| |
| #include <zircon/types.h> |
| |
| // NOTE: All the defines here with the exception of ZX_FS_MAX_RIGHTS and ZX_FS_RIGHTS_MASK are |
| // mirrored from the constants in io.fidl, and their values must be kept in sync. |
| // The FIDL definition is the source of truth: |
| // https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl |
| // Refer to link for documentation on detailed semantics of the flags. |
| // TODO(yifeit): Assert that these values are kept in sync with io.fidl. Cannot do it here as this |
| // header is used for both Fuchsia and host. |
| |
| // Rights |
| #define ZX_FS_RIGHT_READABLE 0x00000001U |
| #define ZX_FS_RIGHT_WRITABLE 0x00000002U |
| #define ZX_FS_RIGHT_ADMIN 0x00000004U |
| // All known rights. |
| #define ZX_FS_RIGHTS (ZX_FS_RIGHT_READABLE | ZX_FS_RIGHT_WRITABLE | ZX_FS_RIGHT_ADMIN) |
| // A mask for all possible rights including future extensions. |
| #define ZX_FS_RIGHTS_SPACE 0x0000FFFFU |
| // NOTE: Reserving lower 16 bits for future rights extensions. Flags should start at 0x00010000. |
| |
| // Flags |
| #define ZX_FS_FLAG_CREATE 0x00010000U |
| #define ZX_FS_FLAG_EXCLUSIVE 0x00020000U |
| #define ZX_FS_FLAG_TRUNCATE 0x00040000U |
| #define ZX_FS_FLAG_DIRECTORY 0x00080000U |
| #define ZX_FS_FLAG_APPEND 0x00100000U |
| #define ZX_FS_FLAG_NOREMOTE 0x00200000U |
| #define ZX_FS_FLAG_VNODE_REF_ONLY 0x00400000U |
| #define ZX_FS_FLAG_DESCRIBE 0x00800000U |
| #define ZX_FS_FLAG_POSIX 0x01000000U |
| #define ZX_FS_FLAG_NOT_DIRECTORY 0x02000000U |
| #define ZX_FS_FLAG_CLONE_SAME_RIGHTS 0x04000000U |
| |
| // Watch event messages are sent via the provided channel and take the form: |
| // { uint8_t event; uint8_t namelen; uint8_t name[namelen]; } |
| // Multiple events may arrive in one message, one after another. |
| // Names do not include a terminating null. |
| typedef struct { |
| uint8_t event; |
| uint8_t len; |
| char name[]; |
| } vfs_watch_msg_t; |
| |
| #define VFS_TYPE_BLOBFS 0x9e694d21 |
| #define VFS_TYPE_MINFS 0x6e694d21 |
| #define VFS_TYPE_MEMFS 0x3e694d21 |
| |
| #endif // SYSROOT_ZIRCON_DEVICE_VFS_H_ |