| // 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 zx; |
| |
| alias mutable_vector_void = vector<byte>; |
| alias voidptr = uint64; |
| |
| @transport("Syscall") |
| protocol Rust { |
| // Simple out ptr. |
| SimpleCase() -> (struct { |
| time time; |
| }); |
| |
| MultipleInHandles(resource struct { |
| handles vector<handle>; |
| }) -> (struct { |
| status status; |
| }); |
| |
| // noreturn handled properly. |
| @noreturn |
| ANoRetFunc(); |
| |
| // Function withot return handled properly too. |
| NoReturnValue(struct { |
| x uint32; |
| }); |
| |
| // |buffer| treated mutable. |
| InoutArgs(resource struct { |
| handle handle:VMO; |
| op uint32; |
| offset uint64; |
| size uint64; |
| buffer mutable_vector_void; |
| }) -> (struct { |
| status status; |
| }); |
| |
| // |input| treated const |
| ConstInput(struct { |
| input vector<byte>; |
| }) -> (struct { |
| status status; |
| }); |
| |
| VariousBasicTypeNames(struct { |
| a bool; |
| b byte; |
| d int32; |
| e int64; |
| f uint16; |
| g uint32; |
| h uint64; |
| i usize; |
| j uintptr; |
| k voidptr; |
| l time; |
| m ticks; |
| }); |
| }; |