]> Zhao Yanbai Git Server - minix.git/commitdiff
getsid() implementation
authorBen Gras <ben@minix3.org>
Tue, 2 Aug 2011 17:22:08 +0000 (19:22 +0200)
committerBen Gras <ben@minix3.org>
Tue, 2 Aug 2011 20:16:59 +0000 (22:16 +0200)
common/include/minix/callnr.h
common/include/minix/com.h
lib/nbsd_libc/sys-minix/Makefile.inc
lib/nbsd_libc/sys-minix/getsid.c [new file with mode: 0644]
servers/pm/getset.c
servers/pm/table.c
servers/vfs/table.c

index 9b58f0fbb94b4e9e2de3bcb1dcb1cbe851b03346..0236fcf04878def22b59ecf6bafaa71b2be5a430 100644 (file)
@@ -1,4 +1,4 @@
-#define NCALLS          113    /* number of system calls allowed */
+#define NCALLS          114    /* number of system calls allowed */
 
 #define EXIT              1 
 #define FORK              2 
 #define FSTAT          66
 #define LSTAT          67
 
+#define PM_GETSID      113     /* PM getsid() */
+
 #define TASK_REPLY     121     /* to VFS: reply code from drivers, not 
                                 * really a standalone call.
                                 */
index ca10ec6aeeb5429c5c08b7bf39bd8910bd0795eb..342bd0ba1deab899865812a14a7f5439307ae3e1 100644 (file)
 #define STATVFS_LEN m1_i1
 #define STATVFS_NAME m1_p1
 #define STATVFS_BUF m1_p2
+
+#define PM_GETSID_PID  m1_i1
+
 /*===========================================================================*
  *                        Messages for networking layer                     *
  *===========================================================================*/
index ee855cc467efbf55427cba078d20d21b1090ba17..3442c938598fdbc717853168f0dcfb47b72d81b8 100644 (file)
@@ -1,6 +1,6 @@
 .PATH: ${.CURDIR}/sys-minix
 
-SRCS+=         accept.c access.c bind.c brk.c sbrk.c m_closefrom.c compat.S \
+SRCS+=         accept.c access.c bind.c brk.c sbrk.c m_closefrom.c getsid.c compat.S \
        chdir.c chmod.c fchmod.c chown.c fchown.c chroot.c close.c \
        connect.c dup.c dup2.c execve.c fcntl.c flock.c fpathconf.c fork.c \
        fstatfs.c fstatvfs.c fsync.c ftruncate.c getdents.c getegid.c getgid.c \
diff --git a/lib/nbsd_libc/sys-minix/getsid.c b/lib/nbsd_libc/sys-minix/getsid.c
new file mode 100644 (file)
index 0000000..c4505fc
--- /dev/null
@@ -0,0 +1,14 @@
+#include <sys/cdefs.h>
+#include <lib.h>
+#include "namespace.h"
+
+#include <unistd.h>
+
+pid_t getsid(pid_t p)
+{
+  message m;
+
+  memset(&m, 0, sizeof(m));
+  m.PM_GETSID_PID = p;
+  return(_syscall(PM_PROC_NR, PM_GETSID, &m));
+}
index f826c080d20aec56ea33ff7d7725cedd010a4b25..daf5b797f9ca7faa790be80262f1830e54bafea0 100644 (file)
@@ -18,7 +18,7 @@
  *===========================================================================*/
 PUBLIC int do_get()
 {
-/* Handle GETUID, GETGID, GETPID, GETPGRP.
+/* Handle GETUID, GETGID, GETPID, GETPGRP, GETSID.
  */
 
   register struct mproc *rmp = mp;
@@ -68,6 +68,16 @@ PUBLIC int do_get()
                r = rmp->mp_procgrp;
                break;
 
+       case PM_GETSID:
+       {
+               struct mproc *target;
+               pid_t p = m_in.PM_GETSID_PID;
+               target = p ? find_proc(p) : &mproc[who_p];
+               r = ESRCH;
+               if(target)
+                       r = target->mp_procgrp;
+               break;
+       }
        default:
                r = EINVAL;
                break;  
index 444455dc2016d349d26895c393ea29db09dffcc1..6a69002ecbee7e029f68bfb72276e9b72353aa09 100644 (file)
@@ -125,6 +125,7 @@ _PROTOTYPE (int (*call_vec[]), (void) ) = {
        do_getdma,      /* 110 = getdma */
        do_srv_kill,    /* 111 = srv_kill */
        no_sys,         /* 112 = gcov_flush */
+       do_get,         /* 113 = getsid */
 };
 /* This should not fail with "array size is negative": */
 extern int dummy[sizeof(call_vec) == NCALLS * sizeof(call_vec[0]) ? 1 : -1];
index 5385e7b1481e16720280981090484e95fc562bf5..0f05fd528bffbb18ecb146c534f4b16e7a2da370 100644 (file)
@@ -129,6 +129,7 @@ PUBLIC _PROTOTYPE (int (*call_vec[]), (void) ) = {
        no_sys,         /* 110 = (getdma) */
        no_sys,         /* 111 = (srv_kill) */
        do_gcov_flush,  /* 112 = gcov_flush */
+       no_sys,         /* 113 = (getsid) */
 };
 /* This should not fail with "array size is negative": */
 extern int dummy[sizeof(call_vec) == NCALLS * sizeof(call_vec[0]) ? 1 : -1];