Index: mojo/public/c/system/thunks.h |
diff --git a/mojo/public/c/system/thunks.h b/mojo/public/c/system/thunks.h |
index 161faf135097ec2973943bf0a85c01d4f5d0d487..31d22890ff820b824b8285df51e91b43d87ee365 100644 |
--- a/mojo/public/c/system/thunks.h |
+++ b/mojo/public/c/system/thunks.h |
@@ -13,28 +13,10 @@ |
#include "mojo/public/c/system/core.h" |
#include "mojo/public/c/system/system_export.h" |
-// The embedder needs to bind the basic Mojo Core functions of a DSO to those of |
-// the embedder when loading a DSO that is dependent on mojo_system. |
-// The typical usage would look like: |
-// base::ScopedNativeLibrary app_library( |
-// base::LoadNativeLibrary(app_path_, &error)); |
-// typedef MojoResult (*MojoSetSystemThunksFn)(MojoSystemThunks*); |
-// MojoSetSystemThunksFn mojo_set_system_thunks_fn = |
-// reinterpret_cast<MojoSetSystemThunksFn>(app_library.GetFunctionPointer( |
-// "MojoSetSystemThunks")); |
-// MojoSystemThunks system_thunks = MojoMakeSystemThunks(); |
-// size_t expected_size = mojo_set_system_thunks_fn(&system_thunks); |
-// if (expected_size > sizeof(MojoSystemThunks)) { |
-// LOG(ERROR) |
-// << "Invalid DSO. Expected MojoSystemThunks size: " |
-// << expected_size; |
-// break; |
-// } |
- |
-// Structure used to bind the basic Mojo Core functions of a DSO to those of |
-// the embedder. |
-// This is the ABI between the embedder and the DSO. It can only have new |
-// functions added to the end. No other changes are supported. |
+// Structure used to bind the basic Mojo Core functions to an embedder |
+// implementation. This is intended to eventually be used as a stable ABI |
+// between a Mojo embedder and some loaded application code, but for now it is |
+// still effectively safe to rearrange entries as needed. |
#pragma pack(push, 8) |
struct MojoSystemThunks { |
size_t size; // Should be set to sizeof(MojoSystemThunks). |
@@ -115,11 +97,18 @@ struct MojoSystemThunks { |
MojoHandle* handles, |
MojoResult* results, |
struct MojoHandleSignalsState* signals_states); |
- MojoResult (*Watch)(MojoHandle handle, |
+ MojoResult (*CreateWatcher)(MojoWatcherCallback callback, |
+ MojoHandle* watcher_handle); |
+ MojoResult (*Watch)(MojoHandle watcher_handle, |
+ MojoHandle handle, |
MojoHandleSignals signals, |
- MojoWatchCallback callback, |
uintptr_t context); |
- MojoResult (*CancelWatch)(MojoHandle handle, uintptr_t context); |
+ MojoResult (*CancelWatch)(MojoHandle watcher_handle, uintptr_t context); |
+ MojoResult (*ArmWatcher)(MojoHandle watcher_handle, |
+ uint32_t* num_ready_contexts, |
+ uintptr_t* ready_contexts, |
+ MojoResult* ready_results, |
+ MojoHandleSignalsState* ready_signals_states); |
MojoResult (*FuseMessagePipes)(MojoHandle handle0, MojoHandle handle1); |
MojoResult (*WriteMessageNew)(MojoHandle message_pipe_handle, |
MojoMessageHandle message, |