summaryrefslogtreecommitdiffstats
path: root/mojo/public/python/c_core.pxd
blob: bd3edd933e8a8b90194d6e8f398f01ca65ebee6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# 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.

# distutils: language = c++

from cpython.buffer cimport PyBUF_CONTIG
from cpython.buffer cimport PyBUF_CONTIG_RO
from cpython.buffer cimport Py_buffer
from cpython.buffer cimport PyBuffer_FillInfo
from cpython.buffer cimport PyBuffer_Release
from cpython.buffer cimport PyObject_GetBuffer
from cpython.mem cimport PyMem_Malloc, PyMem_Free
from libc.stdint cimport int32_t, int64_t, uint32_t, uint64_t, uintptr_t

cdef extern from "mojo/public/c/system/core.h" nogil:
  # types.h
  ctypedef int64_t MojoTimeTicks

  ctypedef uint32_t MojoHandle
  const MojoHandle MOJO_HANDLE_INVALID

  ctypedef int32_t MojoResult
  const MojoResult MOJO_RESULT_OK
  const MojoResult MOJO_RESULT_CANCELLED
  const MojoResult MOJO_RESULT_UNKNOWN
  const MojoResult MOJO_RESULT_INVALID_ARGUMENT
  const MojoResult MOJO_RESULT_DEADLINE_EXCEEDED
  const MojoResult MOJO_RESULT_NOT_FOUND
  const MojoResult MOJO_RESULT_ALREADY_EXISTS
  const MojoResult MOJO_RESULT_PERMISSION_DENIED
  const MojoResult MOJO_RESULT_RESOURCE_EXHAUSTED
  const MojoResult MOJO_RESULT_FAILED_PRECONDITION
  const MojoResult MOJO_RESULT_ABORTED
  const MojoResult MOJO_RESULT_OUT_OF_RANGE
  const MojoResult MOJO_RESULT_UNIMPLEMENTED
  const MojoResult MOJO_RESULT_INTERNAL
  const MojoResult MOJO_RESULT_UNAVAILABLE
  const MojoResult MOJO_RESULT_DATA_LOSS
  const MojoResult MOJO_RESULT_BUSY
  const MojoResult MOJO_RESULT_SHOULD_WAIT

  ctypedef uint64_t MojoDeadline
  const MojoDeadline MOJO_DEADLINE_INDEFINITE

  ctypedef uint32_t MojoHandleSignals
  const MojoHandleSignals MOJO_HANDLE_SIGNAL_NONE
  const MojoHandleSignals MOJO_HANDLE_SIGNAL_READABLE
  const MojoHandleSignals MOJO_HANDLE_SIGNAL_WRITABLE
  const MojoHandleSignals MOJO_HANDLE_SIGNAL_PEER_CLOSED

  cdef struct MojoHandleSignalsState:
    MojoHandleSignals satisfied_signals
    MojoHandleSignals satisfiable_signals

  # functions.h
  MojoTimeTicks MojoGetTimeTicksNow()
  MojoResult MojoClose(MojoHandle handle)
  MojoResult MojoWait "MojoWait"(MojoHandle handle,
                                 MojoHandleSignals signals,
                                 MojoDeadline deadline,
                                 MojoHandleSignalsState* signals_state)
  MojoResult MojoWaitMany "MojoWaitMany"(const MojoHandle* handles,
                                         const MojoHandleSignals* signals,
                                         uint32_t num_handles,
                                         MojoDeadline deadline,
                                         uint32_t* result_index,
                                         MojoHandleSignalsState* signals_states)

  # message_pipe.h
  ctypedef uint32_t MojoCreateMessagePipeOptionsFlags
  const MojoCreateMessagePipeOptionsFlags MOJO_CREATE_MESSAGE_PIPE_OPTIONS_FLAG_NONE

  ctypedef uint32_t MojoWriteMessageFlags
  const MojoWriteMessageFlags MOJO_WRITE_MESSAGE_FLAG_NONE

  ctypedef uint32_t MojoReadMessageFlags
  const MojoReadMessageFlags MOJO_READ_MESSAGE_FLAG_NONE
  const MojoReadMessageFlags MOJO_READ_MESSAGE_FLAG_MAY_DISCARD

  cdef struct MojoCreateMessagePipeOptions:
    uint32_t struct_size
    MojoCreateMessagePipeOptionsFlags flags

  MojoResult MojoCreateMessagePipe(
      const MojoCreateMessagePipeOptions* options,
      MojoHandle* message_pipe_handle0,
      MojoHandle* message_pipe_handle1)

  MojoResult MojoWriteMessage(
      MojoHandle message_pipe_handle,
      const void* bytes,
      uint32_t num_bytes,
      const MojoHandle* handles,
      uint32_t num_handles,
      MojoWriteMessageFlags flags)

  MojoResult MojoReadMessage(
      MojoHandle message_pipe_handle,
      void* bytes,
      uint32_t* num_bytes,
      MojoHandle* handles,
      uint32_t* num_handles,
      MojoReadMessageFlags flags)

  # data_pipe.h
  ctypedef uint32_t MojoCreateDataPipeOptionsFlags
  const MojoCreateDataPipeOptionsFlags MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE
  const MojoCreateDataPipeOptionsFlags MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_MAY_DISCARD

  cdef struct MojoCreateDataPipeOptions:
    uint32_t struct_size
    MojoCreateDataPipeOptionsFlags flags
    uint32_t element_num_bytes
    uint32_t capacity_num_bytes

  ctypedef uint32_t MojoWriteDataFlags

  const MojoWriteDataFlags MOJO_WRITE_DATA_FLAG_NONE
  const MojoWriteDataFlags MOJO_WRITE_DATA_FLAG_ALL_OR_NONE

  ctypedef uint32_t MojoReadDataFlags

  const MojoReadDataFlags MOJO_READ_DATA_FLAG_NONE
  const MojoReadDataFlags MOJO_READ_DATA_FLAG_ALL_OR_NONE
  const MojoReadDataFlags MOJO_READ_DATA_FLAG_DISCARD
  const MojoReadDataFlags MOJO_READ_DATA_FLAG_QUERY
  const MojoReadDataFlags MOJO_READ_DATA_FLAG_PEEK

  MojoResult MojoCreateDataPipe(
      const MojoCreateDataPipeOptions* options,
      MojoHandle* data_pipe_producer_handle,
      MojoHandle* data_pipe_consumer_handle)

  MojoResult MojoWriteData(
      MojoHandle data_pipe_producer_handle,
      const void* elements,
      uint32_t* num_bytes,
      MojoWriteDataFlags flags)

  MojoResult MojoBeginWriteData(
      MojoHandle data_pipe_producer_handle,
      void** buffer,
      uint32_t* buffer_num_bytes,
      MojoWriteDataFlags flags)

  MojoResult MojoEndWriteData(
      MojoHandle data_pipe_producer_handle,
      uint32_t num_bytes_written)

  MojoResult MojoReadData(
      MojoHandle data_pipe_consumer_handle,
      void* elements,
      uint32_t* num_bytes,
      MojoReadDataFlags flags)

  MojoResult MojoBeginReadData(
      MojoHandle data_pipe_consumer_handle,
      const void** buffer,
      uint32_t* buffer_num_bytes,
      MojoReadDataFlags flags)

  MojoResult MojoEndReadData(
      MojoHandle data_pipe_consumer_handle,
      uint32_t num_bytes_read)

  # buffer.h
  ctypedef uint32_t MojoCreateSharedBufferOptionsFlags
  const MojoCreateSharedBufferOptionsFlags MOJO_CREATE_SHARED_BUFFER_OPTIONS_FLAG_NONE

  cdef struct MojoCreateSharedBufferOptions:
    uint32_t struct_size
    MojoCreateSharedBufferOptionsFlags flags

  ctypedef uint32_t MojoDuplicateBufferHandleOptionsFlags
  const MojoDuplicateBufferHandleOptionsFlags MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE

  cdef struct MojoDuplicateBufferHandleOptions:
    uint32_t struct_size
    MojoDuplicateBufferHandleOptionsFlags flags

  ctypedef uint32_t MojoMapBufferFlags
  const MojoMapBufferFlags MOJO_MAP_BUFFER_FLAG_NONE

  MojoResult MojoCreateSharedBuffer(
      const MojoCreateSharedBufferOptions* options,
      uint64_t num_bytes,
      MojoHandle* shared_buffer_handle)

  MojoResult MojoDuplicateBufferHandle(
      MojoHandle buffer_handle,
      const MojoDuplicateBufferHandleOptions* options,
      MojoHandle* new_buffer_handle)

  MojoResult MojoMapBuffer(MojoHandle buffer_handle,
                           uint64_t offset,
                           uint64_t num_bytes,
                           void** buffer,
                           MojoMapBufferFlags flags)

  MojoResult MojoUnmapBuffer(void* buffer)