OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2013 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2013 The Native Client Authors. All rights reserved. |
3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 #ifndef NATIVE_CLIENT_SRC_UNTRUSTED_IRT_IRT_DEV_H_ | 6 #ifndef NATIVE_CLIENT_SRC_UNTRUSTED_IRT_IRT_DEV_H_ |
7 #define NATIVE_CLIENT_SRC_UNTRUSTED_IRT_IRT_DEV_H_ | 7 #define NATIVE_CLIENT_SRC_UNTRUSTED_IRT_IRT_DEV_H_ |
8 | 8 |
9 #include <stdarg.h> | 9 #include <stdarg.h> |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
131 * success or a non-zero value on error. | 131 * success or a non-zero value on error. |
132 */ | 132 */ |
133 #define NACL_IRT_PRIVATE_PNACL_TRANSLATOR_LINK_v0_1 \ | 133 #define NACL_IRT_PRIVATE_PNACL_TRANSLATOR_LINK_v0_1 \ |
134 "nacl-irt-private-pnacl-translator-link-0.1" | 134 "nacl-irt-private-pnacl-translator-link-0.1" |
135 struct nacl_irt_private_pnacl_translator_link { | 135 struct nacl_irt_private_pnacl_translator_link { |
136 void (*serve_link_request)(int (*func)(int nexe_fd, | 136 void (*serve_link_request)(int (*func)(int nexe_fd, |
137 const int *obj_file_fds, | 137 const int *obj_file_fds, |
138 int obj_file_fd_count)); | 138 int obj_file_fd_count)); |
139 }; | 139 }; |
140 | 140 |
141 /* | |
142 * This is an internal interface, for use by PNaCl's sandboxed compilers for | |
143 * communicating with the browser. This applies to pnacl-llc and pnacl-sz | |
144 * though how pnacl-llc and pnacl-sz use the interface can be slightly | |
145 * different (e.g., pnacl-sz will only use the first the obj_file_fds entry). | |
146 * | |
147 * serve_translate_request(funcs) loops waiting for sequences of requests | |
148 * via IPC, and then calls the appropriate callback to handle the IPC, | |
149 * on the same thread. | |
150 * | |
151 * (*) init_callback is used to initialize the translation process | |
Mark Seaborn
2015/03/26 20:39:00
Nit: how about putting the per-function comments b
jvoung (off chromium)
2015/03/26 22:30:11
That sounds good. Done.
| |
152 * with configuration info: | |
153 * |num_threads| is the number of recommended *translate* threads | |
154 * to use (there may be other worker threads). For pnacl-sz, | |
155 * num_threads == 0 is for completely sequential translation | |
156 * (no worker threads). | |
157 * |obj_file_fds| is an array of FDs for writing an output object file. | |
158 * Not all fds are valid. | |
Mark Seaborn
2015/03/26 20:39:00
What does it mean for an FD to be invalid? Does t
jvoung (off chromium)
2015/03/26 22:30:12
Hmm, right... I mixed up the "array length" from t
| |
159 * |obj_file_fd_count| number of valid fds in the beginning of the | |
Mark Seaborn
2015/03/26 20:39:00
"fds" -> "FDs" for consistency. Same above.
jvoung (off chromium)
2015/03/26 22:30:12
Done.
| |
160 * |obj_file_fds| array (the array may have invalid fds at the end). | |
161 * |cmd_flags| is \0 delimited set of command-line flags. | |
Mark Seaborn
2015/03/26 20:39:00
Do you mean "terminated" rather than "delimited"?
jvoung (off chromium)
2015/03/26 22:30:12
I really meant null-delimited. At the time we thou
| |
162 * |cmd_flags_len| is the length of the |cmd_flags| array. | |
Mark Seaborn
2015/03/26 20:39:00
Isn't this redundant if cmd_flags is null-terminat
jvoung (off chromium)
2015/03/26 22:30:12
Changed this to mean the same as "argc".
| |
163 * (*) data_callback is invoked to stream additional bitcode data | |
164 * to the translator. | |
165 * (*) end_callback is invoked to signal the end of the data stream. | |
166 * This must block until translation is actually complete and | |
167 * the translator process can be terminated. | |
168 * | |
169 * All callbacks return zero on success or a non-zero value on error. | |
170 * TODO(jvoung): Add error output. | |
171 */ | |
172 struct irt_pnacl_compile_funcs { | |
Mark Seaborn
2015/03/26 20:39:00
Use "nacl_irt_" prefix for consistency?
jvoung (off chromium)
2015/03/26 22:30:12
Done.
| |
173 int (*init_callback)(uint32_t num_threads, | |
174 int *obj_file_fds, size_t obj_file_fd_count, | |
175 const char *cmd_flags, size_t cmd_flags_len); | |
176 int (*data_callback)(unsigned char *data, size_t num_bytes); | |
Mark Seaborn
2015/03/26 20:39:00
Nit: maybe "const void *" instead, to match read/w
jvoung (off chromium)
2015/03/26 22:30:12
Done. The underlying LLVM QueueStreamer doesn't ta
| |
177 int (*end_callback)(void); | |
178 /* TODO(jvoung): have a separate method for getting internal UMA stats. */ | |
179 }; | |
180 | |
181 #define NACL_IRT_PRIVATE_PNACL_TRANSLATOR_COMPILE_v0_1 \ | |
182 "nacl-irt-private-pnacl-translator-compile-0.1" | |
183 struct nacl_irt_private_pnacl_translator_compile { | |
184 void (*serve_translate_request)( | |
185 const struct irt_pnacl_compile_funcs *funcs); | |
186 }; | |
187 | |
141 #if defined(__cplusplus) | 188 #if defined(__cplusplus) |
142 } | 189 } |
143 #endif | 190 #endif |
144 | 191 |
145 #endif /* NATIVE_CLIENT_SRC_UNTRUSTED_IRT_IRT_DEV_H */ | 192 #endif /* NATIVE_CLIENT_SRC_UNTRUSTED_IRT_IRT_DEV_H */ |
OLD | NEW |