Index: src/public/chrome_main.h |
diff --git a/src/public/chrome_main.h b/src/public/chrome_main.h |
index cba42d7caadf41b1c69167ab75ef95f783fecb87..a6d604999dfd600d13feadedffaa77d97080069b 100644 |
--- a/src/public/chrome_main.h |
+++ b/src/public/chrome_main.h |
@@ -18,16 +18,50 @@ |
EXTERN_C_BEGIN |
+struct NaClApp; |
struct NaClValidationCache; |
/* |
- * Descriptor number for initial_ipc_desc. This is chosen so as not |
- * to conflict with NACL_SERVICE_PORT_DESCRIPTOR, |
- * NACL_SERVICE_ADDRESS_DESCRIPTOR and export_addr_to inside |
- * NaClChromeMainStart(). |
+ * The old, deprecated interface usage is as follows: |
+ * |
+ * struct NaClChromeMainArgs *args = NaClChromeMainArgsCreate(); |
+ * // Now NaCl is partially initialized, so the following is allowed: |
+ * args->initial_ipc_fd = NaClDescMakeCustomDesc(...); |
+ * // Fill out more of args... |
+ * NaClChromeMainStart(args); |
+ * |
+ * The new, preferred interface usage is as follows: |
+ * |
+ * #if OS_POSIX |
+ * NaClChromeMainSetUrandomFd(urandom_fd); |
+ * #endif |
+ * NaClChromeMainInit(); |
+ * // The following may be done in any order: |
+ * struct NaClApp *nap = NaClAppCreate(); |
+ * struct NaClChromeMainArgs *args = NaClChromeMainArgsCreate(); |
+ * // Fill out args... |
+ * NaClAppSetDesc(nap, NACL_CHROME_DESC_BASE, NaClDescMakeCustomDesc(...)); |
+ * NaClChromeMainStartApp(nap, args); |
*/ |
-#define NACL_CHROME_INITIAL_IPC_DESC 6 |
+ |
+/* |
+ * Embedders of NaCl may use descriptor numbers of |
+ * NACL_CHROME_DESC_BASE and higher when setting up a NaClApp's |
+ * initial descriptors using NaClAppSetDesc(). |
+ * |
+ * This number is chosen so as not to conflict with |
+ * NACL_SERVICE_PORT_DESCRIPTOR, NACL_SERVICE_ADDRESS_DESCRIPTOR and |
+ * export_addr_to inside NaClChromeMainStart(). |
+ */ |
+#define NACL_CHROME_DESC_BASE 6 |
+ |
+/* |
+ * Descriptor number for initial_ipc_desc. |
+ * |
+ * Deprecated: use NaClAppSetDesc() and NACL_CHROME_DESC_BASE instead. |
+ */ |
+#define NACL_CHROME_INITIAL_IPC_DESC NACL_CHROME_DESC_BASE |
struct NaClChromeMainArgs { |
@@ -50,6 +84,8 @@ struct NaClChromeMainArgs { |
* Descriptor to provide to untrusted code as descriptor number |
* NACL_CHROME_INITIAL_IPC_DESC. For use by the Chrome-IPC-based |
* PPAPI proxy. Optional; may be NULL. |
+ * |
+ * Deprecated: use NaClAppSetDesc() instead. |
*/ |
struct NaClDesc *initial_ipc_desc; |
@@ -116,6 +152,8 @@ struct NaClChromeMainArgs { |
* takes ownership of the file descriptor. In principle this is |
* optional and may be -1, although startup may fail if this is not |
* provided. |
+ * |
+ * Deprecated: use NaClChromeMainSetUrandomFd() instead. |
*/ |
int urandom_fd; |
@@ -154,12 +192,36 @@ struct NaClChromeMainArgs { |
#endif |
}; |
+#if NACL_LINUX || NACL_OSX |
+/* |
+ * Sets a file descriptor for /dev/urandom for reading random data. |
+ * This takes ownership of the file descriptor. This is intended for |
+ * use inside an outer sandbox where NaCl may not be able to open() |
+ * /dev/urandom. |
+ * |
+ * If this is called, it must be called before NaClChromeMainInit(), |
+ * otherwise NaClChromeMainInit() will try to open() /dev/urandom. |
+ */ |
+void NaClChromeMainSetUrandomFd(int urandom_fd); |
+#endif |
+ |
+/* Initialize NaCl. This must be called before NaClAppCreate(). */ |
+void NaClChromeMainInit(void); |
+ |
/* Create a new args struct containing default values. */ |
struct NaClChromeMainArgs *NaClChromeMainArgsCreate(void); |
-/* Launch NaCl. */ |
+/* |
+ * Launch NaCl. This does not return. |
+ * |
+ * Deprecated: use NaClAppCreate() and NaClChromeMainStartApp() instead. |
+ */ |
void NaClChromeMainStart(struct NaClChromeMainArgs *args); |
+/* Launch NaCl. This does not return. */ |
+void NaClChromeMainStartApp(struct NaClApp *nap, |
+ struct NaClChromeMainArgs *args); |
+ |
EXTERN_C_END |