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, |
}; |