Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc

Issue 23005005: [NaCl SDK] nacl_io: Add initial implementations of kill and signal (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc
diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc b/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc
index cb517347afa5882839f57d115923017af76bbe6d..304017aa7f3dde91c398e4ea9c573f8fb0a83514 100644
--- a/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc
+++ b/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc
@@ -21,7 +21,9 @@ using namespace nacl_io;
return x; \
}
+static ScopedKernelProxy* s_scoped_kp;
static KernelProxy* s_kp;
+static bool s_kp_owned;
void ki_init(void* kp) {
ki_init_ppapi(kp, 0, NULL);
@@ -32,8 +34,15 @@ void ki_init_ppapi(void* kp,
PPB_GetInterface get_browser_interface) {
kernel_wrap_init();
- if (kp == NULL) kp = new KernelProxy();
- s_kp = static_cast<KernelProxy*>(kp);
+ if (kp == NULL) {
+ s_kp = new KernelProxy();
+ s_kp_owned = true;
+ } else {
+ s_kp = static_cast<KernelProxy*>(kp);
+ s_kp_owned = false;
+ }
+
+ s_scoped_kp = new ScopedKernelProxy(s_kp);
PepperInterface* ppapi = NULL;
if (instance && get_browser_interface)
@@ -48,7 +57,10 @@ int ki_is_initialized() {
void ki_uninit() {
kernel_wrap_uninit();
+ if (s_kp_owned)
+ delete s_scoped_kp;
s_kp = NULL;
+ s_scoped_kp = NULL;
}
int ki_chdir(const char* path) {
@@ -257,6 +269,21 @@ int ki_tcsetattr(int fd, int optional_actions,
return s_kp->tcsetattr(fd, optional_actions, termios_p);
}
+int ki_kill(pid_t pid, int sig) {
+ ON_NOSYS_RETURN(-1);
+ return s_kp->kill(pid, sig);
+}
+
+sighandler_t ki_signal(int signum, sighandler_t handler) {
+ ON_NOSYS_RETURN(SIG_ERR);
+ return s_kp->sigset(signum, handler);
+}
+
+sighandler_t ki_sigset(int signum, sighandler_t handler) {
+ ON_NOSYS_RETURN(SIG_ERR);
+ return s_kp->sigset(signum, handler);
+}
+
#ifdef PROVIDES_SOCKET_API
// Socket Functions
int ki_accept(int fd, struct sockaddr* addr, socklen_t* len) {

Powered by Google App Engine
This is Rietveld 408576698