|  | // Copyright 2021 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. | 
|  |  | 
|  | #include <lib/fdio/unsafe.h> | 
|  |  | 
|  | #include "fdio_unistd.h" | 
|  |  | 
|  | __EXPORT | 
|  | fdio_t* fdio_unsafe_fd_to_io(int fd) { | 
|  | fdio_ptr io = fd_to_io(fd); | 
|  | if (io == nullptr) { | 
|  | return nullptr; | 
|  | } | 
|  | return fbl::ExportToRawPtr(&io); | 
|  | } | 
|  |  | 
|  | __EXPORT | 
|  | void fdio_unsafe_wait_begin(fdio_t* io, uint32_t events, zx_handle_t* handle_out, | 
|  | zx_signals_t* signals_out) { | 
|  | return io->wait_begin(events, handle_out, signals_out); | 
|  | } | 
|  |  | 
|  | __EXPORT | 
|  | void fdio_unsafe_wait_end(fdio_t* io, zx_signals_t signals, uint32_t* events_out) { | 
|  | return io->wait_end(signals, events_out); | 
|  | } | 
|  |  | 
|  | __EXPORT | 
|  | void fdio_unsafe_release(fdio_t* io) { __UNUSED auto release = fbl::ImportFromRawPtr(io); } | 
|  |  | 
|  | __EXPORT | 
|  | zx_handle_t fdio_unsafe_borrow_channel(fdio_t* io) { | 
|  | if (io == nullptr) { | 
|  | return ZX_HANDLE_INVALID; | 
|  | } | 
|  |  | 
|  | zx_handle_t handle = ZX_HANDLE_INVALID; | 
|  | if (io->borrow_channel(&handle) != ZX_OK) { | 
|  | return ZX_HANDLE_INVALID; | 
|  | } | 
|  | return handle; | 
|  | } |