Clone of chromium aad1ce808763f59c7a3753e08f1500a104ecc6fd refs/remotes/origin/HEAD
diff --git a/mojo/nacl/generator/interface.py b/mojo/nacl/generator/interface.py
new file mode 100644
index 0000000..2a23fd7
--- /dev/null
+++ b/mojo/nacl/generator/interface.py
@@ -0,0 +1,108 @@
+# Copyright 2014 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.
+
+# pylint: disable=F0401
+
+import interface_dsl
+
+def MakeInterface():
+  mojo = interface_dsl.Interface()
+
+  f = mojo.Func('MojoCreateSharedBuffer', 'MojoResult')
+  f.Param('options').InStruct('MojoCreateSharedBufferOptions').Optional()
+  f.Param('num_bytes').In('uint64_t')
+  f.Param('shared_buffer_handle').Out('MojoHandle')
+
+  f = mojo.Func('MojoDuplicateBufferHandle', 'MojoResult')
+  f.Param('buffer_handle').In('MojoHandle')
+  f.Param('options').InStruct('MojoDuplicateBufferHandleOptions').Optional()
+  f.Param('new_buffer_handle').Out('MojoHandle')
+
+  f = mojo.Func('MojoMapBuffer', 'MojoResult')
+  f.Param('buffer_handle').In('MojoHandle')
+  f.Param('offset').In('uint64_t')
+  f.Param('num_bytes').In('uint64_t')
+  f.Param('buffer').Out('void*')
+  f.Param('flags').In('MojoMapBufferFlags')
+
+  f = mojo.Func('MojoUnmapBuffer', 'MojoResult')
+  f.Param('buffer').In('void*')
+
+  f = mojo.Func('MojoCreateDataPipe', 'MojoResult')
+  f.Param('options').InStruct('MojoCreateDataPipeOptions').Optional()
+  f.Param('data_pipe_producer_handle').Out('MojoHandle')
+  f.Param('data_pipe_consumer_handle').Out('MojoHandle')
+
+  f = mojo.Func('MojoWriteData', 'MojoResult')
+  f.Param('data_pipe_producer_handle').In('MojoHandle')
+  f.Param('elements').InArray('void', 'num_bytes')
+  f.Param('num_bytes').InOut('uint32_t')
+  f.Param('flags').In('MojoWriteDataFlags')
+
+  f = mojo.Func('MojoBeginWriteData', 'MojoResult')
+  f.Param('data_pipe_producer_handle').In('MojoHandle')
+  f.Param('buffer').Out('void*')
+  f.Param('buffer_num_bytes').InOut('uint32_t')
+  f.Param('flags').In('MojoWriteDataFlags')
+
+  f = mojo.Func('MojoEndWriteData', 'MojoResult')
+  f.Param('data_pipe_producer_handle').In('MojoHandle')
+  f.Param('num_bytes_written').In('uint32_t')
+
+  f = mojo.Func('MojoReadData', 'MojoResult')
+  f.Param('data_pipe_consumer_handle').In('MojoHandle')
+  f.Param('elements').OutArray('void', 'num_bytes')
+  f.Param('num_bytes').InOut('uint32_t')
+  f.Param('flags').In('MojoReadDataFlags')
+
+  f = mojo.Func('MojoBeginReadData', 'MojoResult')
+  f.Param('data_pipe_consumer_handle').In('MojoHandle')
+  f.Param('buffer').Out('const void*')
+  f.Param('buffer_num_bytes').InOut('uint32_t')
+  f.Param('flags').In('MojoReadDataFlags')
+
+  f = mojo.Func('MojoEndReadData', 'MojoResult')
+  f.Param('data_pipe_consumer_handle').In('MojoHandle')
+  f.Param('num_bytes_read').In('uint32_t')
+
+  f = mojo.Func('MojoGetTimeTicksNow', 'MojoTimeTicks')
+
+  f = mojo.Func('MojoClose', 'MojoResult')
+  f.Param('handle').In('MojoHandle')
+
+  f = mojo.Func('MojoWait', 'MojoResult')
+  f.Param('handle').In('MojoHandle')
+  f.Param('signals').In('MojoHandleSignals')
+  f.Param('deadline').In('MojoDeadline')
+
+  f = mojo.Func('MojoWaitMany', 'MojoResult')
+  f.Param('handles').InArray('MojoHandle', 'num_handles')
+  f.Param('signals').InArray('MojoHandleSignals', 'num_handles')
+  f.Param('num_handles').In('uint32_t')
+  f.Param('deadline').In('MojoDeadline')
+
+  f = mojo.Func('MojoCreateMessagePipe', 'MojoResult')
+  f.Param('options').InStruct('MojoCreateMessagePipeOptions').Optional()
+  f.Param('message_pipe_handle0').Out('MojoHandle')
+  f.Param('message_pipe_handle1').Out('MojoHandle')
+
+  f = mojo.Func('MojoWriteMessage', 'MojoResult')
+  f.Param('message_pipe_handle').In('MojoHandle')
+  f.Param('bytes').InArray('void', 'num_bytes').Optional()
+  f.Param('num_bytes').In('uint32_t')
+  f.Param('handles').InArray('MojoHandle', 'num_handles').Optional()
+  f.Param('num_handles').In('uint32_t')
+  f.Param('flags').In('MojoWriteMessageFlags')
+
+  f = mojo.Func('MojoReadMessage', 'MojoResult')
+  f.Param('message_pipe_handle').In('MojoHandle')
+  f.Param('bytes').OutArray('void', 'num_bytes').Optional()
+  f.Param('num_bytes').InOut('uint32_t').Optional()
+  f.Param('handles').OutArray('MojoHandle', 'num_handles').Optional()
+  f.Param('num_handles').InOut('uint32_t').Optional()
+  f.Param('flags').In('MojoReadMessageFlags')
+
+  mojo.Finalize()
+
+  return mojo