blob: 36d46858feb9ae83cf9cd368b1a6f4d469fb85b8 [file] [log] [blame]
// Copyright 2022 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/core/core_ipcz.h"
#include "base/notreached.h"
#include "base/time/time.h"
#include "mojo/core/ipcz_api.h"
#include "third_party/ipcz/include/ipcz/ipcz.h"
namespace mojo::core {
namespace {
extern "C" {
MojoResult MojoInitializeIpcz(const struct MojoInitializeOptions* options) {
NOTREACHED();
return MOJO_RESULT_OK;
}
MojoTimeTicks MojoGetTimeTicksNowIpcz() {
return base::Time::Now().ToDeltaSinceWindowsEpoch().InMicroseconds();
}
MojoResult MojoCloseIpcz(MojoHandle handle) {
return GetIpczAPI().Close(handle, IPCZ_NO_FLAGS, nullptr);
}
MojoResult MojoQueryHandleSignalsStateIpcz(
MojoHandle handle,
MojoHandleSignalsState* signals_state) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoCreateMessagePipeIpcz(
const MojoCreateMessagePipeOptions* options,
MojoHandle* message_pipe_handle0,
MojoHandle* message_pipe_handle1) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoWriteMessageIpcz(MojoHandle message_pipe_handle,
MojoMessageHandle message,
const MojoWriteMessageOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoReadMessageIpcz(MojoHandle message_pipe_handle,
const MojoReadMessageOptions* options,
MojoMessageHandle* message) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoFuseMessagePipesIpcz(
MojoHandle handle0,
MojoHandle handle1,
const MojoFuseMessagePipesOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoCreateMessageIpcz(const MojoCreateMessageOptions* options,
MojoMessageHandle* message) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoDestroyMessageIpcz(MojoMessageHandle message) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoSerializeMessageIpcz(
MojoMessageHandle message,
const MojoSerializeMessageOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoAppendMessageDataIpcz(
MojoMessageHandle message,
uint32_t additional_payload_size,
const MojoHandle* handles,
uint32_t num_handles,
const MojoAppendMessageDataOptions* options,
void** buffer,
uint32_t* buffer_size) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoGetMessageDataIpcz(MojoMessageHandle message,
const MojoGetMessageDataOptions* options,
void** buffer,
uint32_t* num_bytes,
MojoHandle* handles,
uint32_t* num_handles) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoSetMessageContextIpcz(
MojoMessageHandle message,
uintptr_t context,
MojoMessageContextSerializer serializer,
MojoMessageContextDestructor destructor,
const MojoSetMessageContextOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoGetMessageContextIpcz(
MojoMessageHandle message,
const MojoGetMessageContextOptions* options,
uintptr_t* context) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoNotifyBadMessageIpcz(
MojoMessageHandle message,
const char* error,
uint32_t error_num_bytes,
const MojoNotifyBadMessageOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoCreateDataPipeIpcz(const MojoCreateDataPipeOptions* options,
MojoHandle* data_pipe_producer_handle,
MojoHandle* data_pipe_consumer_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoWriteDataIpcz(MojoHandle data_pipe_producer_handle,
const void* elements,
uint32_t* num_elements,
const MojoWriteDataOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoBeginWriteDataIpcz(MojoHandle data_pipe_producer_handle,
const MojoBeginWriteDataOptions* options,
void** buffer,
uint32_t* buffer_num_elements) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoEndWriteDataIpcz(MojoHandle data_pipe_producer_handle,
uint32_t num_elements_written,
const MojoEndWriteDataOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoReadDataIpcz(MojoHandle data_pipe_consumer_handle,
const MojoReadDataOptions* options,
void* elements,
uint32_t* num_elements) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoBeginReadDataIpcz(MojoHandle data_pipe_consumer_handle,
const MojoBeginReadDataOptions* options,
const void** buffer,
uint32_t* buffer_num_elements) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoEndReadDataIpcz(MojoHandle data_pipe_consumer_handle,
uint32_t num_elements_read,
const MojoEndReadDataOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoCreateSharedBufferIpcz(
uint64_t num_bytes,
const MojoCreateSharedBufferOptions* options,
MojoHandle* shared_buffer_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoDuplicateBufferHandleIpcz(
MojoHandle buffer_handle,
const MojoDuplicateBufferHandleOptions* options,
MojoHandle* new_buffer_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoMapBufferIpcz(MojoHandle buffer_handle,
uint64_t offset,
uint64_t num_bytes,
const MojoMapBufferOptions* options,
void** address) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoUnmapBufferIpcz(void* address) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoGetBufferInfoIpcz(MojoHandle buffer_handle,
const MojoGetBufferInfoOptions* options,
MojoSharedBufferInfo* info) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoCreateTrapIpcz(MojoTrapEventHandler handler,
const MojoCreateTrapOptions* options,
MojoHandle* trap_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoAddTriggerIpcz(MojoHandle trap_handle,
MojoHandle handle,
MojoHandleSignals signals,
MojoTriggerCondition condition,
uintptr_t context,
const MojoAddTriggerOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoRemoveTriggerIpcz(MojoHandle trap_handle,
uintptr_t context,
const MojoRemoveTriggerOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoArmTrapIpcz(MojoHandle trap_handle,
const MojoArmTrapOptions* options,
uint32_t* num_blocking_events,
MojoTrapEvent* blocking_events) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoWrapPlatformHandleIpcz(
const MojoPlatformHandle* platform_handle,
const MojoWrapPlatformHandleOptions* options,
MojoHandle* mojo_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoUnwrapPlatformHandleIpcz(
MojoHandle mojo_handle,
const MojoUnwrapPlatformHandleOptions* options,
MojoPlatformHandle* platform_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoWrapPlatformSharedMemoryRegionIpcz(
const MojoPlatformHandle* platform_handles,
uint32_t num_platform_handles,
uint64_t num_bytes,
const MojoSharedBufferGuid* guid,
MojoPlatformSharedMemoryRegionAccessMode access_mode,
const MojoWrapPlatformSharedMemoryRegionOptions* options,
MojoHandle* mojo_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoUnwrapPlatformSharedMemoryRegionIpcz(
MojoHandle mojo_handle,
const MojoUnwrapPlatformSharedMemoryRegionOptions* options,
MojoPlatformHandle* platform_handles,
uint32_t* num_platform_handles,
uint64_t* num_bytes,
MojoSharedBufferGuid* mojo_guid,
MojoPlatformSharedMemoryRegionAccessMode* access_mode) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoCreateInvitationIpcz(const MojoCreateInvitationOptions* options,
MojoHandle* invitation_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoAttachMessagePipeToInvitationIpcz(
MojoHandle invitation_handle,
const void* name,
uint32_t name_num_bytes,
const MojoAttachMessagePipeToInvitationOptions* options,
MojoHandle* message_pipe_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoExtractMessagePipeFromInvitationIpcz(
MojoHandle invitation_handle,
const void* name,
uint32_t name_num_bytes,
const MojoExtractMessagePipeFromInvitationOptions* options,
MojoHandle* message_pipe_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoSendInvitationIpcz(
MojoHandle invitation_handle,
const MojoPlatformProcessHandle* process_handle,
const MojoInvitationTransportEndpoint* transport_endpoint,
MojoProcessErrorHandler error_handler,
uintptr_t error_handler_context,
const MojoSendInvitationOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoAcceptInvitationIpcz(
const MojoInvitationTransportEndpoint* transport_endpoint,
const MojoAcceptInvitationOptions* options,
MojoHandle* invitation_handle) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoSetQuotaIpcz(MojoHandle handle,
MojoQuotaType type,
uint64_t limit,
const MojoSetQuotaOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoQueryQuotaIpcz(MojoHandle handle,
MojoQuotaType type,
const MojoQueryQuotaOptions* options,
uint64_t* current_limit,
uint64_t* current_usage) {
return MOJO_RESULT_UNIMPLEMENTED;
}
MojoResult MojoShutdownIpcz(const MojoShutdownOptions* options) {
NOTREACHED();
return MOJO_RESULT_OK;
}
MojoResult MojoSetDefaultProcessErrorHandlerIpcz(
MojoDefaultProcessErrorHandler handler,
const MojoSetDefaultProcessErrorHandlerOptions* options) {
return MOJO_RESULT_UNIMPLEMENTED;
}
} // extern "C"
MojoSystemThunks2 g_mojo_ipcz_thunks = {
sizeof(MojoSystemThunks2),
MojoInitializeIpcz,
MojoGetTimeTicksNowIpcz,
MojoCloseIpcz,
MojoQueryHandleSignalsStateIpcz,
MojoCreateMessagePipeIpcz,
MojoWriteMessageIpcz,
MojoReadMessageIpcz,
MojoFuseMessagePipesIpcz,
MojoCreateMessageIpcz,
MojoDestroyMessageIpcz,
MojoSerializeMessageIpcz,
MojoAppendMessageDataIpcz,
MojoGetMessageDataIpcz,
MojoSetMessageContextIpcz,
MojoGetMessageContextIpcz,
MojoNotifyBadMessageIpcz,
MojoCreateDataPipeIpcz,
MojoWriteDataIpcz,
MojoBeginWriteDataIpcz,
MojoEndWriteDataIpcz,
MojoReadDataIpcz,
MojoBeginReadDataIpcz,
MojoEndReadDataIpcz,
MojoCreateSharedBufferIpcz,
MojoDuplicateBufferHandleIpcz,
MojoMapBufferIpcz,
MojoUnmapBufferIpcz,
MojoGetBufferInfoIpcz,
MojoCreateTrapIpcz,
MojoAddTriggerIpcz,
MojoRemoveTriggerIpcz,
MojoArmTrapIpcz,
MojoWrapPlatformHandleIpcz,
MojoUnwrapPlatformHandleIpcz,
MojoWrapPlatformSharedMemoryRegionIpcz,
MojoUnwrapPlatformSharedMemoryRegionIpcz,
MojoCreateInvitationIpcz,
MojoAttachMessagePipeToInvitationIpcz,
MojoExtractMessagePipeFromInvitationIpcz,
MojoSendInvitationIpcz,
MojoAcceptInvitationIpcz,
MojoSetQuotaIpcz,
MojoQueryQuotaIpcz,
MojoShutdownIpcz,
MojoSetDefaultProcessErrorHandlerIpcz};
} // namespace
const MojoSystemThunks2* GetMojoIpczImpl() {
return &g_mojo_ipcz_thunks;
}
} // namespace mojo::core