blob: f4e7726d697b6464073c31035dc8c4d8b1c457ba [file] [log] [blame] [edit]
// Copyright 2017 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 "private.h"
__EXPORT zx_status_t _zx_channel_call(zx_handle_t handle, uint32_t options, zx_time_t deadline,
const zx_channel_call_args_t* args, uint32_t* actual_bytes,
uint32_t* actual_handles) {
zx_status_t status = SYSCALL_zx_channel_call_noretry(handle, options, deadline, args,
actual_bytes, actual_handles);
while (unlikely(status == ZX_ERR_INTERNAL_INTR_RETRY)) {
status = SYSCALL_zx_channel_call_finish(deadline, args, actual_bytes, actual_handles);
}
return status;
}
VDSO_INTERFACE_FUNCTION(zx_channel_call);
__EXPORT zx_status_t _zx_channel_call_etc(zx_handle_t handle, uint32_t options, zx_time_t deadline,
zx_channel_call_etc_args_t* args, uint32_t* actual_bytes,
uint32_t* actual_handles) {
zx_status_t status = SYSCALL_zx_channel_call_etc_noretry(handle, options, deadline, args,
actual_bytes, actual_handles);
while (unlikely(status == ZX_ERR_INTERNAL_INTR_RETRY)) {
status = SYSCALL_zx_channel_call_etc_finish(deadline, args, actual_bytes, actual_handles);
}
return status;
}
VDSO_INTERFACE_FUNCTION(zx_channel_call_etc);