Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1213)

Unified Diff: mojo/nacl/sfi/nacl_bindings/mojo_irt.c

Issue 1778753002: Implement MojoGetBufferInformation(), part 3. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/nacl/sfi/nacl_bindings/mojo_irt.c
diff --git a/mojo/nacl/sfi/nacl_bindings/mojo_irt.c b/mojo/nacl/sfi/nacl_bindings/mojo_irt.c
index 3595f0b6aed3f5de4b05d452032859ef084da2d2..6ff49310d93f3714fe34f14c997e52afd860d8e3 100644
--- a/mojo/nacl/sfi/nacl_bindings/mojo_irt.c
+++ b/mojo/nacl/sfi/nacl_bindings/mojo_irt.c
@@ -28,61 +28,126 @@ static void DoMojoCall(uint32_t params[], nacl_abi_size_t num_params) {
imc_sendmsg(NACL_MOJO_DESC, &msgh, 0);
}
-static MojoResult irt_MojoCreateSharedBuffer(
- const struct MojoCreateSharedBufferOptions* options,
- uint64_t num_bytes,
- MojoHandle* shared_buffer_handle) {
- uint32_t params[5];
+static MojoResult irt__MojoGetInitialHandle(MojoHandle* handle) {
+ uint32_t params[3];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
params[0] = 0;
- params[1] = (uint32_t)(options);
- params[2] = (uint32_t)(&num_bytes);
- params[3] = (uint32_t)(shared_buffer_handle);
- params[4] = (uint32_t)(&result);
+ params[1] = (uint32_t)(handle);
+ params[2] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt_MojoDuplicateBufferHandle(
- MojoHandle buffer_handle,
- const struct MojoDuplicateBufferHandleOptions* options,
- MojoHandle* new_buffer_handle) {
+static MojoTimeTicks irt_MojoGetTimeTicksNow() {
+ uint32_t params[2];
+ MojoTimeTicks result = 0;
+ params[0] = 1;
+ params[1] = (uint32_t)(&result);
+ DoMojoCall(params, sizeof(params));
+ return result;
+};
+
+static MojoResult irt_MojoClose(MojoHandle handle) {
+ uint32_t params[3];
+ MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
+ params[0] = 2;
+ params[1] = (uint32_t)(&handle);
+ params[2] = (uint32_t)(&result);
+ DoMojoCall(params, sizeof(params));
+ return result;
+};
+
+static MojoResult irt_MojoWait(
+ MojoHandle handle,
+ MojoHandleSignals signals,
+ MojoDeadline deadline,
+ struct MojoHandleSignalsState* signals_state) {
+ uint32_t params[6];
+ MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
+ params[0] = 3;
+ params[1] = (uint32_t)(&handle);
+ params[2] = (uint32_t)(&signals);
+ params[3] = (uint32_t)(&deadline);
+ params[4] = (uint32_t)(signals_state);
+ params[5] = (uint32_t)(&result);
+ DoMojoCall(params, sizeof(params));
+ return result;
+};
+
+static MojoResult irt_MojoWaitMany(
+ const MojoHandle* handles,
+ const MojoHandleSignals* signals,
+ uint32_t num_handles,
+ MojoDeadline deadline,
+ uint32_t* result_index,
+ struct MojoHandleSignalsState* signals_states) {
+ uint32_t params[8];
+ MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
+ params[0] = 4;
+ params[1] = (uint32_t)(handles);
+ params[2] = (uint32_t)(signals);
+ params[3] = (uint32_t)(&num_handles);
+ params[4] = (uint32_t)(&deadline);
+ params[5] = (uint32_t)(result_index);
+ params[6] = (uint32_t)(signals_states);
+ params[7] = (uint32_t)(&result);
+ DoMojoCall(params, sizeof(params));
+ return result;
+};
+
+static MojoResult irt_MojoCreateMessagePipe(
+ const struct MojoCreateMessagePipeOptions* options,
+ MojoHandle* message_pipe_handle0,
+ MojoHandle* message_pipe_handle1) {
uint32_t params[5];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 1;
- params[1] = (uint32_t)(&buffer_handle);
- params[2] = (uint32_t)(options);
- params[3] = (uint32_t)(new_buffer_handle);
+ params[0] = 5;
+ params[1] = (uint32_t)(options);
+ params[2] = (uint32_t)(message_pipe_handle0);
+ params[3] = (uint32_t)(message_pipe_handle1);
params[4] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt_MojoMapBuffer(
- MojoHandle buffer_handle,
- uint64_t offset,
- uint64_t num_bytes,
- void** buffer,
- MojoMapBufferFlags flags) {
- uint32_t params[7];
+static MojoResult irt_MojoWriteMessage(
+ MojoHandle message_pipe_handle,
+ const void* bytes,
+ uint32_t num_bytes,
+ const MojoHandle* handles,
+ uint32_t num_handles,
+ MojoWriteMessageFlags flags) {
+ uint32_t params[8];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 2;
- params[1] = (uint32_t)(&buffer_handle);
- params[2] = (uint32_t)(&offset);
+ params[0] = 6;
+ params[1] = (uint32_t)(&message_pipe_handle);
+ params[2] = (uint32_t)(bytes);
params[3] = (uint32_t)(&num_bytes);
- params[4] = (uint32_t)(buffer);
- params[5] = (uint32_t)(&flags);
- params[6] = (uint32_t)(&result);
+ params[4] = (uint32_t)(handles);
+ params[5] = (uint32_t)(&num_handles);
+ params[6] = (uint32_t)(&flags);
+ params[7] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt_MojoUnmapBuffer(void* buffer) {
- uint32_t params[3];
+static MojoResult irt_MojoReadMessage(
+ MojoHandle message_pipe_handle,
+ void* bytes,
+ uint32_t* num_bytes,
+ MojoHandle* handles,
+ uint32_t* num_handles,
+ MojoReadMessageFlags flags) {
+ uint32_t params[8];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 3;
- params[1] = (uint32_t)(&buffer);
- params[2] = (uint32_t)(&result);
+ params[0] = 7;
+ params[1] = (uint32_t)(&message_pipe_handle);
+ params[2] = (uint32_t)(bytes);
+ params[3] = (uint32_t)(num_bytes);
+ params[4] = (uint32_t)(handles);
+ params[5] = (uint32_t)(num_handles);
+ params[6] = (uint32_t)(&flags);
+ params[7] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
@@ -93,7 +158,7 @@ static MojoResult irt_MojoCreateDataPipe(
MojoHandle* data_pipe_consumer_handle) {
uint32_t params[5];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 4;
+ params[0] = 8;
params[1] = (uint32_t)(options);
params[2] = (uint32_t)(data_pipe_producer_handle);
params[3] = (uint32_t)(data_pipe_consumer_handle);
@@ -109,7 +174,7 @@ static MojoResult irt_MojoWriteData(
MojoWriteDataFlags flags) {
uint32_t params[6];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 5;
+ params[0] = 9;
params[1] = (uint32_t)(&data_pipe_producer_handle);
params[2] = (uint32_t)(elements);
params[3] = (uint32_t)(num_bytes);
@@ -126,7 +191,7 @@ static MojoResult irt_MojoBeginWriteData(
MojoWriteDataFlags flags) {
uint32_t params[6];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 6;
+ params[0] = 10;
params[1] = (uint32_t)(&data_pipe_producer_handle);
params[2] = (uint32_t)(buffer);
params[3] = (uint32_t)(buffer_num_bytes);
@@ -141,7 +206,7 @@ static MojoResult irt_MojoEndWriteData(
uint32_t num_bytes_written) {
uint32_t params[4];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 7;
+ params[0] = 11;
params[1] = (uint32_t)(&data_pipe_producer_handle);
params[2] = (uint32_t)(&num_bytes_written);
params[3] = (uint32_t)(&result);
@@ -156,7 +221,7 @@ static MojoResult irt_MojoReadData(
MojoReadDataFlags flags) {
uint32_t params[6];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 8;
+ params[0] = 12;
params[1] = (uint32_t)(&data_pipe_consumer_handle);
params[2] = (uint32_t)(elements);
params[3] = (uint32_t)(num_bytes);
@@ -173,7 +238,7 @@ static MojoResult irt_MojoBeginReadData(
MojoReadDataFlags flags) {
uint32_t params[6];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 9;
+ params[0] = 13;
params[1] = (uint32_t)(&data_pipe_consumer_handle);
params[2] = (uint32_t)(buffer);
params[3] = (uint32_t)(buffer_num_bytes);
@@ -188,7 +253,7 @@ static MojoResult irt_MojoEndReadData(
uint32_t num_bytes_read) {
uint32_t params[4];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 10;
+ params[0] = 14;
params[1] = (uint32_t)(&data_pipe_consumer_handle);
params[2] = (uint32_t)(&num_bytes_read);
params[3] = (uint32_t)(&result);
@@ -196,142 +261,82 @@ static MojoResult irt_MojoEndReadData(
return result;
};
-static MojoTimeTicks irt_MojoGetTimeTicksNow() {
- uint32_t params[2];
- MojoTimeTicks result = 0;
- params[0] = 11;
- params[1] = (uint32_t)(&result);
- DoMojoCall(params, sizeof(params));
- return result;
-};
-
-static MojoResult irt_MojoClose(MojoHandle handle) {
- uint32_t params[3];
- MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 12;
- params[1] = (uint32_t)(&handle);
- params[2] = (uint32_t)(&result);
- DoMojoCall(params, sizeof(params));
- return result;
-};
-
-static MojoResult irt_MojoWait(
- MojoHandle handle,
- MojoHandleSignals signals,
- MojoDeadline deadline,
- struct MojoHandleSignalsState* signals_state) {
- uint32_t params[6];
+static MojoResult irt_MojoCreateSharedBuffer(
+ const struct MojoCreateSharedBufferOptions* options,
+ uint64_t num_bytes,
+ MojoHandle* shared_buffer_handle) {
+ uint32_t params[5];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 13;
- params[1] = (uint32_t)(&handle);
- params[2] = (uint32_t)(&signals);
- params[3] = (uint32_t)(&deadline);
- params[4] = (uint32_t)(signals_state);
- params[5] = (uint32_t)(&result);
+ params[0] = 15;
+ params[1] = (uint32_t)(options);
+ params[2] = (uint32_t)(&num_bytes);
+ params[3] = (uint32_t)(shared_buffer_handle);
+ params[4] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt_MojoWaitMany(
- const MojoHandle* handles,
- const MojoHandleSignals* signals,
- uint32_t num_handles,
- MojoDeadline deadline,
- uint32_t* result_index,
- struct MojoHandleSignalsState* signals_states) {
- uint32_t params[8];
+static MojoResult irt_MojoDuplicateBufferHandle(
+ MojoHandle buffer_handle,
+ const struct MojoDuplicateBufferHandleOptions* options,
+ MojoHandle* new_buffer_handle) {
+ uint32_t params[5];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 14;
- params[1] = (uint32_t)(handles);
- params[2] = (uint32_t)(signals);
- params[3] = (uint32_t)(&num_handles);
- params[4] = (uint32_t)(&deadline);
- params[5] = (uint32_t)(result_index);
- params[6] = (uint32_t)(signals_states);
- params[7] = (uint32_t)(&result);
+ params[0] = 16;
+ params[1] = (uint32_t)(&buffer_handle);
+ params[2] = (uint32_t)(options);
+ params[3] = (uint32_t)(new_buffer_handle);
+ params[4] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt_MojoCreateMessagePipe(
- const struct MojoCreateMessagePipeOptions* options,
- MojoHandle* message_pipe_handle0,
- MojoHandle* message_pipe_handle1) {
+static MojoResult irt_MojoGetBufferInformation(
+ MojoHandle buffer_handle,
+ struct MojoBufferInformation* info,
+ uint32_t info_num_bytes) {
uint32_t params[5];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 15;
- params[1] = (uint32_t)(options);
- params[2] = (uint32_t)(message_pipe_handle0);
- params[3] = (uint32_t)(message_pipe_handle1);
+ params[0] = 17;
+ params[1] = (uint32_t)(&buffer_handle);
+ params[2] = (uint32_t)(info);
+ params[3] = (uint32_t)(&info_num_bytes);
params[4] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt_MojoWriteMessage(
- MojoHandle message_pipe_handle,
- const void* bytes,
- uint32_t num_bytes,
- const MojoHandle* handles,
- uint32_t num_handles,
- MojoWriteMessageFlags flags) {
- uint32_t params[8];
+static MojoResult irt_MojoMapBuffer(
+ MojoHandle buffer_handle,
+ uint64_t offset,
+ uint64_t num_bytes,
+ void** buffer,
+ MojoMapBufferFlags flags) {
+ uint32_t params[7];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 16;
- params[1] = (uint32_t)(&message_pipe_handle);
- params[2] = (uint32_t)(bytes);
+ params[0] = 18;
+ params[1] = (uint32_t)(&buffer_handle);
+ params[2] = (uint32_t)(&offset);
params[3] = (uint32_t)(&num_bytes);
- params[4] = (uint32_t)(handles);
- params[5] = (uint32_t)(&num_handles);
- params[6] = (uint32_t)(&flags);
- params[7] = (uint32_t)(&result);
- DoMojoCall(params, sizeof(params));
- return result;
-};
-
-static MojoResult irt_MojoReadMessage(
- MojoHandle message_pipe_handle,
- void* bytes,
- uint32_t* num_bytes,
- MojoHandle* handles,
- uint32_t* num_handles,
- MojoReadMessageFlags flags) {
- uint32_t params[8];
- MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 17;
- params[1] = (uint32_t)(&message_pipe_handle);
- params[2] = (uint32_t)(bytes);
- params[3] = (uint32_t)(num_bytes);
- params[4] = (uint32_t)(handles);
- params[5] = (uint32_t)(num_handles);
- params[6] = (uint32_t)(&flags);
- params[7] = (uint32_t)(&result);
+ params[4] = (uint32_t)(buffer);
+ params[5] = (uint32_t)(&flags);
+ params[6] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
-static MojoResult irt__MojoGetInitialHandle(MojoHandle* handle) {
+static MojoResult irt_MojoUnmapBuffer(void* buffer) {
uint32_t params[3];
MojoResult result = MOJO_RESULT_INVALID_ARGUMENT;
- params[0] = 18;
- params[1] = (uint32_t)(handle);
+ params[0] = 19;
+ params[1] = (uint32_t)(&buffer);
params[2] = (uint32_t)(&result);
DoMojoCall(params, sizeof(params));
return result;
};
struct nacl_irt_mojo kIrtMojo = {
- &irt_MojoCreateSharedBuffer,
- &irt_MojoDuplicateBufferHandle,
- &irt_MojoMapBuffer,
- &irt_MojoUnmapBuffer,
- &irt_MojoCreateDataPipe,
- &irt_MojoWriteData,
- &irt_MojoBeginWriteData,
- &irt_MojoEndWriteData,
- &irt_MojoReadData,
- &irt_MojoBeginReadData,
- &irt_MojoEndReadData,
+ &irt__MojoGetInitialHandle,
&irt_MojoGetTimeTicksNow,
&irt_MojoClose,
&irt_MojoWait,
@@ -339,7 +344,18 @@ struct nacl_irt_mojo kIrtMojo = {
&irt_MojoCreateMessagePipe,
&irt_MojoWriteMessage,
&irt_MojoReadMessage,
- &irt__MojoGetInitialHandle,
+ &irt_MojoCreateDataPipe,
+ &irt_MojoWriteData,
+ &irt_MojoBeginWriteData,
+ &irt_MojoEndWriteData,
+ &irt_MojoReadData,
+ &irt_MojoBeginReadData,
+ &irt_MojoEndReadData,
+ &irt_MojoCreateSharedBuffer,
+ &irt_MojoDuplicateBufferHandle,
+ &irt_MojoGetBufferInformation,
+ &irt_MojoMapBuffer,
+ &irt_MojoUnmapBuffer,
};

Powered by Google App Engine
This is Rietveld 408576698