]> Zhao Yanbai Git Server - minix.git/commitdiff
kernel: Add SYS_PRIV_CLEAR_IPC_REFS support. 79/3079/2
authorCristiano Giuffrida <giuffrida@cs.vu.nl>
Mon, 3 Mar 2014 01:04:02 +0000 (02:04 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Wed, 16 Sep 2015 11:02:13 +0000 (11:02 +0000)
Change-Id: Ie5e86191d5040f305a5a42942d83319cd600bfb6

minix/include/minix/com.h
minix/kernel/system/do_privctl.c

index 2082eb59dcf67bd3380bb26d304d45a21bb1031b..f2474f9263718ca6b07757d12a400fbc5bbdcd45 100644 (file)
 #define SYS_PRIV_QUERY_MEM     8       /* Verify memory privilege. */
 #define SYS_PRIV_UPDATE_SYS    9       /* Update a sys privilege structure. */
 #define SYS_PRIV_YIELD        10       /* Allow process to run and suspend */
+#define SYS_PRIV_CLEAR_IPC_REFS 11     /* Clear pending IPC for the process */
 
 /* Constants for exec. FIXME: these do not belong here. */
 #define PMEF_AUXVECTORS        20
index aa1ed57f501daa00d61329fe94420af26e7002ca..ef2b9ffae649e12756187e4311800743c1121500 100644 (file)
@@ -79,6 +79,11 @@ int do_privctl(struct proc * caller, message * m_ptr)
        RTS_SET(rp, RTS_NO_PRIV);
        return(OK);
 
+  case SYS_PRIV_CLEAR_IPC_REFS:
+       /* Clear pending IPC for the process. */
+       clear_ipc_refs(rp, EDEADSRCDST);
+       return(OK);
+
   case SYS_PRIV_SET_SYS:
        /* Set a privilege structure of a blocked system process. */
        if (! RTS_ISSET(rp, RTS_NO_PRIV)) return(EPERM);