blob: 3914f7dda9dbae9598cb7d309a683b7d93985e0c [file] [log] [blame]
// Copyright 2019 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.
library fuchsia.hardware.goldfish.pipe;
using zx;
/// Signal that will be active on event handle if the Read() method
/// will return data.
const uint32 SIGNAL_READABLE = 0x01000000; // ZX_USER_SIGNAL_0
/// Signal that will be active on event handle if the Write() method
/// will accept data.
const uint32 SIGNAL_WRITABLE = 0x02000000; // ZX_USER_SIGNAL_1
/// Signal that will be active on event handle if the device has been
/// disconnected.
const uint32 SIGNAL_HANGUP = 0x04000000; // ZX_USER_SIGNAL_2
[Layout = "Simple"]
protocol Device {
/// Request new IO buffer size. Can fail if out of memory. Discards
/// contents of existing buffer on success. Leaves existing buffer
/// intact on failure.
SetBufferSize(uint64 size) -> (zx.status res);
/// Set event used to signal device state. Discards existing event
/// after having transferred device state to the new event.
SetEvent(handle<event> event);
/// Acquire VMO for IO buffer. Can be called multiple times. Each call
/// returns a new handle to the VMO.
GetBuffer() -> (zx.status res, handle<vmo>? vmo);
/// Attempt to read up to count bytes into IO buffer at specified offset.
/// Returns ZX_ERR_SHOULD_WAIT if pipe device is not readable.
Read(uint64 count, uint64 offset) -> (zx.status res, uint64 actual);
/// Writes up to count bytes from the IO buffer at specified offset.
/// Returns ZX_ERR_SHOULD_WAIT if pipe device is not writable.
Write(uint64 count, uint64 offset) -> (zx.status res, uint64 actual);
};