blob: be04b5bb9c31558de4ce29f687fd490055e0efb3 [file] [log] [blame]
// Copyright 2018 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 "trace_provider.fidl.h"
// This file was machine generated with:
//
// bash$ fidlc --c-header trace_provider.fidl.h
// --c-client trace_provider.fidl.client.cpp
// --tables trace_provider.fidl.tables.cpp
// --files system/fidl/fuchsia-tracelink/tracelink.fidl
//
// and then this header (up to "End of additions ...") manually inserted.
//
// There are *no* differences with the machine generated version except the
// addition of this text WITH TWO EXCEPTIONS:
// 1) Commenting out
// #include <fuchsia/tracelink/c/fidl.h> below. Our copy of this header lives
// in trace_provider.fidl.h.
// 2) Workaround FIDL-275.
// size_t -> uint32_t conversion errors. Grep for TO_UINT32 below.
//
// Minimizing differences with generated code is critical to lessening the
// maintenance burden until we no longer check in machine generated code.
// It is currently checked in to workaround these problems:
// - zircon's build system doesn't support transitive dependencies
// - duplicate copy of tracelink is generated and compiled in garnet,
// leading to duplicate symbol linker errors
#define TO_UINT32(x) (static_cast<uint32_t>(x))
// End of additions to machine-generated file.
// WARNING: This file is machine generated by fidlc.
#include <lib/fidl/coding.h>
#include <string.h>
#include <zircon/syscalls.h>
//#include <fuchsia/tracelink/c/fidl.h>
zx_status_t fuchsia_tracelink_RegistryRegisterTraceProviderDeprecated(zx_handle_t _channel, zx_handle_t provider) {
uint32_t _wr_num_bytes = sizeof(fuchsia_tracelink_RegistryRegisterTraceProviderDeprecatedRequest);
FIDL_ALIGNDECL char _wr_bytes[_wr_num_bytes];
fuchsia_tracelink_RegistryRegisterTraceProviderDeprecatedRequest* _request = (fuchsia_tracelink_RegistryRegisterTraceProviderDeprecatedRequest*)_wr_bytes;
memset(_wr_bytes, 0, sizeof(_wr_bytes));
_request->hdr.ordinal = 1;
_request->provider = provider;
zx_handle_t _handles[ZX_CHANNEL_MAX_MSG_HANDLES];
uint32_t _wr_num_handles = 0u;
zx_status_t _status = fidl_encode(&fuchsia_tracelink_RegistryRegisterTraceProviderDeprecatedRequestTable, _wr_bytes, _wr_num_bytes, _handles, ZX_CHANNEL_MAX_MSG_HANDLES, &_wr_num_handles, NULL);
if (_status != ZX_OK)
return _status;
return zx_channel_write(_channel, 0u, _wr_bytes, _wr_num_bytes, _handles, _wr_num_handles);
}
zx_status_t fuchsia_tracelink_RegistryRegisterTraceProvider(zx_handle_t _channel, zx_handle_t provider, uint64_t pid, const char* name_data, size_t name_size) {
uint32_t _wr_num_bytes = TO_UINT32(sizeof(fuchsia_tracelink_RegistryRegisterTraceProviderRequest) + FIDL_ALIGN(name_size));
FIDL_ALIGNDECL char _wr_bytes[_wr_num_bytes];
fuchsia_tracelink_RegistryRegisterTraceProviderRequest* _request = (fuchsia_tracelink_RegistryRegisterTraceProviderRequest*)_wr_bytes;
memset(_wr_bytes, 0, sizeof(_wr_bytes));
_request->hdr.ordinal = 2;
uint32_t _next = sizeof(*_request);
_request->provider = provider;
_request->pid = pid;
_request->name.data = &_wr_bytes[_next];
_request->name.size = name_size;
memcpy(_request->name.data, name_data, name_size);
_next += TO_UINT32(FIDL_ALIGN(name_size));
zx_handle_t _handles[ZX_CHANNEL_MAX_MSG_HANDLES];
uint32_t _wr_num_handles = 0u;
zx_status_t _status = fidl_encode(&fuchsia_tracelink_RegistryRegisterTraceProviderRequestTable, _wr_bytes, _wr_num_bytes, _handles, ZX_CHANNEL_MAX_MSG_HANDLES, &_wr_num_handles, NULL);
if (_status != ZX_OK)
return _status;
return zx_channel_write(_channel, 0u, _wr_bytes, _wr_num_bytes, _handles, _wr_num_handles);
}
zx_status_t fuchsia_tracelink_RegistryRegisterTraceProviderSynchronously(zx_handle_t _channel, zx_handle_t provider, uint64_t pid, const char* name_data, size_t name_size, int32_t* out_s, bool* out_started) {
uint32_t _wr_num_bytes = TO_UINT32(sizeof(fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyRequest) + FIDL_ALIGN(name_size));
FIDL_ALIGNDECL char _wr_bytes[_wr_num_bytes];
fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyRequest* _request = (fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyRequest*)_wr_bytes;
memset(_wr_bytes, 0, sizeof(_wr_bytes));
_request->hdr.ordinal = 3;
uint32_t _next = sizeof(*_request);
_request->provider = provider;
_request->pid = pid;
_request->name.data = &_wr_bytes[_next];
_request->name.size = name_size;
memcpy(_request->name.data, name_data, name_size);
_next += TO_UINT32(FIDL_ALIGN(name_size));
zx_handle_t _handles[ZX_CHANNEL_MAX_MSG_HANDLES];
uint32_t _wr_num_handles = 0u;
zx_status_t _status = fidl_encode(&fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyRequestTable, _wr_bytes, _wr_num_bytes, _handles, ZX_CHANNEL_MAX_MSG_HANDLES, &_wr_num_handles, NULL);
if (_status != ZX_OK)
return _status;
uint32_t _rd_num_bytes = sizeof(fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyResponse);
FIDL_ALIGNDECL char _rd_bytes[_rd_num_bytes];
fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyResponse* _response = (fuchsia_tracelink_RegistryRegisterTraceProviderSynchronouslyResponse*)_rd_bytes;
zx_channel_call_args_t _args = {
.wr_bytes = _wr_bytes,
.wr_handles = _handles,
.rd_bytes = _rd_bytes,
.rd_handles = _handles,
.wr_num_bytes = _wr_num_bytes,
.wr_num_handles = _wr_num_handles,
.rd_num_bytes = _rd_num_bytes,
.rd_num_handles = ZX_CHANNEL_MAX_MSG_HANDLES,
};
uint32_t _actual_num_bytes = 0u;
uint32_t _actual_num_handles = 0u;
_status = zx_channel_call(_channel, 0u, ZX_TIME_INFINITE, &_args, &_actual_num_bytes, &_actual_num_handles);
if (_status != ZX_OK)
return _status;
// OPTIMIZED AWAY fidl_decode() of POD-only response
if (_actual_num_handles > 0) {
zx_handle_close_many(_handles, _actual_num_handles);
return ZX_ERR_INTERNAL;
}
*out_s = _response->s;
*out_started = _response->started;
return ZX_OK;
}