blob: 7af7bb2f7dbba284afcf373ec1cfa3fd6089ccc1 [file] [log] [blame]
// Copyright 2015 The Chromium 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 "mojo/public/go/system/c_allocators.h"
#include <stdlib.h>
#include "mojo/public/c/system/core.h"
struct WaitParams MallocWaitParams() {
struct WaitParams p;
p.state = (struct MojoHandleSignalsState*)malloc(
sizeof(struct MojoHandleSignalsState));
return p;
}
void FreeWaitParams(struct WaitParams p) {
free(p.state);
}
struct WaitManyParams MallocWaitManyParams(uint32_t length) {
struct WaitManyParams p;
p.handles = (MojoHandle*)malloc(sizeof(MojoHandle) * length);
p.signals = (MojoHandleSignals*)malloc(sizeof(MojoHandleSignals) * length);
p.index = (uint32_t*)malloc(sizeof(uint32_t));
p.states = (struct MojoHandleSignalsState*)malloc(
sizeof(struct MojoHandleSignalsState) * length);
return p;
}
void FreeWaitManyParams(struct WaitManyParams p) {
free(p.handles);
free(p.signals);
free(p.index);
free(p.states);
}
struct CreateDataPipeParams MallocCreateDataPipeParams() {
struct CreateDataPipeParams p;
p.producer = (MojoHandle*)malloc(sizeof(MojoHandle));
p.consumer = (MojoHandle*)malloc(sizeof(MojoHandle));
p.opts = (struct MojoCreateDataPipeOptions*)malloc(
sizeof(struct MojoCreateDataPipeOptions));
return p;
}
void FreeCreateDataPipeParams(struct CreateDataPipeParams p) {
free(p.producer);
free(p.consumer);
free(p.opts);
}
struct CreateMessagePipeParams MallocCreateMessagePipeParams() {
struct CreateMessagePipeParams p;
p.handle0 = (MojoHandle*)malloc(sizeof(MojoHandle));
p.handle1 = (MojoHandle*)malloc(sizeof(MojoHandle));
p.opts = (struct MojoCreateMessagePipeOptions*)malloc(
sizeof(struct MojoCreateMessagePipeOptions));
return p;
}
void FreeCreateMessagePipeParams(struct CreateMessagePipeParams p) {
free(p.handle0);
free(p.handle1);
free(p.opts);
}
struct CreateSharedBufferParams MallocCreateSharedBufferParams() {
struct CreateSharedBufferParams p;
p.handle = (MojoHandle*)malloc(sizeof(MojoHandle));
p.opts = (struct MojoCreateSharedBufferOptions*)malloc(
sizeof(struct MojoCreateSharedBufferOptions));
return p;
}
void FreeCreateSharedBufferParams(struct CreateSharedBufferParams p) {
free(p.handle);
free(p.opts);
}
struct ReadMessageParams MallocReadMessageParams() {
struct ReadMessageParams p;
p.num_bytes = (uint32_t*)malloc(sizeof(uint32_t));
p.num_handles = (uint32_t*)malloc(sizeof(uint32_t));
return p;
}
void FreeReadMessageParams(struct ReadMessageParams p) {
free(p.num_bytes);
free(p.num_handles);
}
struct MessageArrays MallocMessageArrays(uint32_t num_bytes,
uint32_t num_handles) {
struct MessageArrays arrays;
arrays.bytes = (void*)malloc(num_bytes * sizeof(void));
arrays.handles = (MojoHandle*)malloc(num_handles * sizeof(MojoHandle));
return arrays;
}
void FreeMessageArrays(struct MessageArrays arrays) {
free(arrays.bytes);
free(arrays.handles);
}
struct DuplicateBufferHandleParams MallocDuplicateBufferHandleParams() {
struct DuplicateBufferHandleParams p;
p.duplicate = (MojoHandle*)malloc(sizeof(MojoHandle));
p.opts = (struct MojoDuplicateBufferHandleOptions*)malloc(
sizeof(struct MojoDuplicateBufferHandleOptions));
return p;
}
void FreeDuplicateBufferHandleParams(struct DuplicateBufferHandleParams p) {
free(p.duplicate);
free(p.opts);
}
struct MapBufferParams MallocMapBufferParams() {
struct MapBufferParams p;
p.buffer = (void**)malloc(sizeof(void*));
return p;
}
void FreeMapBufferParams(struct MapBufferParams p) {
free(p.buffer);
}
struct ReadDataParams MallocReadDataParams() {
struct ReadDataParams p;
p.num_bytes = (uint32_t*)malloc(sizeof(uint32_t));
return p;
}
void FreeReadDataParams(struct ReadDataParams p) {
free(p.num_bytes);
}
struct DataArray MallocDataArray(uint32_t length) {
struct DataArray array;
array.elements = (void*)malloc(length * sizeof(void));
return array;
}
void FreeDataArray(struct DataArray array) {
free(array.elements);
}
struct WriteDataParams MallocWriteDataParams(uint32_t length) {
struct WriteDataParams p;
p.num_bytes = (uint32_t*)malloc(sizeof(uint32_t));
p.elements = (void*)malloc(length * sizeof(void));
return p;
}
void FreeWriteDataParams(struct WriteDataParams p) {
free(p.num_bytes);
free(p.elements);
}