Index: src/trusted/platform/nacl_process.h |
diff --git a/src/trusted/platform/nacl_process.h b/src/trusted/platform/nacl_process.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9120d1107225f8806ced9cbd31ad8de80a917ddd |
--- /dev/null |
+++ b/src/trusted/platform/nacl_process.h |
@@ -0,0 +1,95 @@ |
+/* |
+ * Copyright (c) 2012 The Native Client Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+/* |
+ * NaCl Service Runtime process abstraction layer. |
+ */ |
+ |
+#ifndef NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_PROCESS_H_ |
+#define NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_PROCESS_H_ |
+ |
+#include "native_client/src/include/nacl_base.h" |
+#include "native_client/src/include/nacl_compiler_annotations.h" |
+#include "native_client/src/include/portability.h" |
+ |
+EXTERN_C_BEGIN |
+ |
+#if NACL_LINUX || NACL_OSX || defined(__native_client__) |
Mark Seaborn
2012/08/24 00:22:42
Why "defined(__native_client__)" when this isn't b
|
+# include "native_client/src/trusted/platform/posix/nacl_process_types.h" |
+#elif NACL_WINDOWS |
+# include "native_client/src/trusted/platform/win/nacl_process_types.h" |
+#else |
+# error Unsupported platform |
+#endif |
+ |
+EXTERN_C_BEGIN |
+ |
+/* |
+ * Portable process creation and management interface. |
+ */ |
+ |
+/* |
+ * Flags available for NaClProcessLaunch. |
+ */ |
+#define NACL_PROCESS_LAUNCH_NEW_GROUP 0x1 /* new process group */ |
Mark Seaborn
2012/08/24 00:22:42
I am sceptical you really need this feature, and y
|
+#define NACL_PROCESS_LAUNCH_CLOSE_FDS 0x2 /* close all open fds */ |
+ |
+/* |
+ * Launch a process via the command line |cmd|. |
+ * |
+ * Upon success, if |npp| handle is non-NULL, it will be filled in with the |
+ * handle of the launched process. |
+ * |
+ * Returns 1 upon success. |
+ */ |
+int NaClProcessLaunch(struct NaClProcess *npp, |
+ char *const *argv, |
+ char *const *envp, |
+ int flags); |
+ |
+/* |
+ * Attempts to kill the process identified by the process handle |npp, |
Mark Seaborn
2012/08/24 00:22:42
Missing "|": "|npp|"
|
+ * giving it the specified exit code. If |wait| is true, wait for the |
+ * process to be actually terminated before returning. |
+ * |
+ * Returns 1 on success, 0 otherwise. |
+ */ |
+int NaClProcessKill(struct NaClProcess *npp, int exit_code, int wait); |
+ |
+/* |
+ * Return status values from NaClGetStatus. |
+ */ |
+#define NACL_PROCESS_STATUS_NORMAL_EXIT 0 /* zero exit status */ |
+#define NACL_PROCESS_STATUS_ABNORMAL_EXIT 1 /* non-zero exit status */ |
+#define NACL_PROCESS_STATUS_KILLED 2 /* SIGKILL or task manager */ |
+#define NACL_PROCESS_STATUS_CRASHED 3 /* e.g. segmentation fault */ |
+#define NACL_PROCESS_STATUS_STILL_RUNNING 4 /* child hasn't exited yet */ |
+ |
+/* |
+ * Get the status of process identified by the process handle |npp|. |
+ * |
+ * Note: on Linux, this function will only return a useful result the |
+ * first time it is called after the child exists (because it reaps the |
+ * child and the information will no longer be available). |
+ * |
+ * Returns 1 on success, 0 otherwise. |
+ */ |
+int NaClProcessGetStatus(struct NaClProcess *npp, |
+ int *status); |
+ |
+/* |
+ * Waits for process to exit. On POSIX systems, if the process hasn't been |
+ * signaled then puts the exit code in |exit_code|; otherwise it's considered |
+ * a failure. On Windows |exit_code| is always filled. |
+ * |
+ * Returns 1 on success, 0 otherwise. |
+ */ |
+int NaClProcessWaitForExitCode(struct NaClProcess *npp, |
+ int *exit_code); |
+ |
+EXTERN_C_END |
+ |
+#endif /* NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_PROCESS_H_ */ |