blob: cf6cdbd36c6f54f5a318b0ec76955f393f32b28e [file] [log] [blame]
// Copyright 2020 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.
// TODO(fxb/39732): This should be read as "library zx".
library zz;
enum stream_seek_origin : uint32 {
START = 0;
CURRENT = 1;
END = 2;
};
[Transport = "Syscall"]
protocol stream {
/// Create a stream from a VMO.
stream_create(uint32 options, handle<vmo> vmo, off seek)
-> (status status, handle<stream> out_stream);
/// Write data to a stream at the current seek offset.
/// Rights: handle must be of type ZX_OBJ_TYPE_STREAM and have ZX_RIGHT_WRITE.
stream_writev(handle<stream> handle, uint32 options, vector_iovec vector)
-> (status status, optional_usize actual);
/// Write data to a stream at the given offset.
/// Rights: handle must be of type ZX_OBJ_TYPE_STREAM and have ZX_RIGHT_WRITE.
stream_writev_at(handle<stream> handle, uint32 options, off offset, vector_iovec vector)
-> (status status, optional_usize actual);
/// Read data from a stream at the current seek offset.
/// Rights: handle must be of type ZX_OBJ_TYPE_STREAM and have ZX_RIGHT_READ.
stream_readv(handle<stream> handle, uint32 options)
-> (status status, vector_iovec vector, optional_usize actual);
/// Read data from a stream at the given offset.
/// Rights: handle must be of type ZX_OBJ_TYPE_STREAM and have ZX_RIGHT_READ.
stream_readv_at(handle<stream> handle, uint32 options, off offset)
-> (status status, vector_iovec vector, optional_usize actual);
/// Modify the seek offset.
/// Rights: handle must be of type ZX_OBJ_TYPE_STREAM and have ZX_RIGHT_READ or have ZX_RIGHT_WRITE.
stream_seek(handle<stream> handle, stream_seek_origin whence, int64 offset)
-> (status status, optional_off out_seek);
};