// 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.

#pragma once

#include <zircon/types.h>

// Rights
// The file may be read.
#define ZX_FS_RIGHT_READABLE      0x00000001
// The file may be written.
#define ZX_FS_RIGHT_WRITABLE      0x00000002
// The connection can mount and unmount filesystems.
#define ZX_FS_RIGHT_ADMIN         0x00000004
#define ZX_FS_RIGHTS              0x0000FFFF

// Flags
// If the file does not exist, it will be created.
#define ZX_FS_FLAG_CREATE         0x00010000
// The file must not exist, otherwise an error will be returned.
// Ignored without ZX_FS_FLAG_CREATE.
#define ZX_FS_FLAG_EXCLUSIVE      0x00020000
// Truncates the file before using it.
#define ZX_FS_FLAG_TRUNCATE       0x00040000
// Returns an error if the opened file is not a directory.
#define ZX_FS_FLAG_DIRECTORY      0x00080000
// The file is opened in append mode, seeking to the end of the file before each
// write.
#define ZX_FS_FLAG_APPEND         0x00100000
// If the endpoint of this request refers to a mount point, open the local
// directory, not the remote mount.
#define ZX_FS_FLAG_NOREMOTE       0x00200000
// The file underlying file should not be opened, just a reference to the file.
#define ZX_FS_FLAG_VNODE_REF_ONLY 0x00400000
// When the file has been opened, the server should transmit a description event.
// This event will be transmitted either on success or failure.
#define ZX_FS_FLAG_DESCRIBE       0x00800000

// 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