blob: 177a30a1a31431b9b873c563398edaaab609748b [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 zz;
using zx;
// This file is copies of some syscalls that cover more unusual features (see
// annotations at the method).
using const_futexptr = int32;
using Futex = int32;
using mutable_uint32 = uint32;
using mutable_vector_void = vector<byte>;
using optional_signals = signals;
using signals = uint32;
using time = int64;
using usize = uint64;
using vector_void_u32size = vector<byte>;
enum Clock : uint32 {
MONOTONIC = 0;
UTC = 1;
THREAD = 2;
};
[Transport="Syscall"]
protocol Selection {
// Special futex handling.
FutexRequeue(const_futexptr value_ptr,
uint32 wake_count,
Futex current_value,
const_futexptr requeue_ptr,
uint32 requeue_count,
handle new_requeue_owner) ->
(zx.status status);
// Optional output (signals).
ObjectWaitOne(handle handle, signals signals, time deadline) ->
(zx.status status, optional_signals observed);
// Argument reordering.
[ArgReorder="handle,data,offset,data_size,actual"]
KtraceRead(handle<resource> handle, mutable_vector_void data, uint32 offset) ->
(zx.status status, usize actual);
// Mutable uint32 in the middle of input parameters (rather than as an
// output).
PciCfgPioRw(handle<resource> handle,
uint8 bus,
uint8 dev,
uint8 func,
uint8 offset,
mutable_uint32 val,
usize width,
bool write) ->
(zx.status status);
// uint32_t for size of a "vector".
JobSetPolicy(handle<job> handle, uint32 options, uint32 topic, vector_void_u32size policy) ->
(zx.status status);
// Handling of enums.
ClockGet(Clock clock_id) -> (zx.status status, time out);
};