diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | posix/Makefile | 4 | ||||
-rw-r--r-- | posix/unistd.h | 9 | ||||
-rw-r--r-- | sysdeps/mach/hurd/getsid.c | 35 | ||||
-rw-r--r-- | sysdeps/stub/getsid.c | 29 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/getsid.S | 23 |
6 files changed, 104 insertions, 4 deletions
@@ -1,3 +1,11 @@ +Mon Nov 27 19:24:18 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> + + * posix/Makefile (routines): Add getsid. + * sysdeps/unix/sysv/linux/getsid.S: New file. + * sysdeps/mach/hurd/getsid.c: New file. + * sysdeps/stub/getsid.c: New file. + * posix/unistd.h [__USE_GNU]: Declare getsid. + Sun Nov 26 12:44:38 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * libc-symbols.h (N_): New macro. diff --git a/posix/Makefile b/posix/Makefile index 937dc04880..4760512af6 100644 --- a/posix/Makefile +++ b/posix/Makefile @@ -37,7 +37,7 @@ routines := \ execve fexecve execv execle execl execvp execlp \ getpid getppid \ getuid geteuid getgid getegid getgroups setuid setgid group_member \ - getpgid setpgid getpgrp setsid \ + getpgid setpgid getpgrp getsid setsid \ getlogin setlogin \ pathconf sysconf fpathconf \ glob fnmatch regex \ @@ -59,7 +59,7 @@ lib: $(objpfx)libposix.a glob.tar: glob/ChangeLog glob/COPYING.LIB \ glob/Makefile.in glob/configure glob/configure.in glob/configure.bat\ - glob/fnmatch.h glob/glob.h glob/fnmatch.c glob/glob.c + glob/fnmatch.h glob/glob.h glob/fnmatch.c glob/glob.c tar cho$(verbose)f $@ $^ glob/%.c: %.c rm -f $@ diff --git a/posix/unistd.h b/posix/unistd.h index 62c25fc09b..02dcf750e0 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -344,6 +344,11 @@ extern int setpgrp __P ((__pid_t __pid, __pid_t __pgrp)); extern __pid_t __setsid __P ((void)); extern __pid_t setsid __P ((void)); +#ifdef __USE_GNU +/* Return the session ID of the given process. */ +extern __pid_t getsid __P ((__pid_t)); +#endif + /* Get the real user ID of the calling process. */ extern __uid_t __getuid __P ((void)); extern __uid_t getuid __P ((void)); @@ -660,7 +665,7 @@ extern int syscall __P ((int __sysno, ...)); The CMD argument is one of the following. */ #define F_ULOCK 0 /* Unlock a previously locked region. */ -#define F_LOCK 1 /* Lock a region for exclusive use. */ +#define F_LOCK 1 /* Lock a region for exclusive use. */ #define F_TLOCK 2 /* Test and lock a region for exclusive use. */ #define F_TEST 3 /* Test a region for other processes locks. */ @@ -678,7 +683,7 @@ extern int lockf __P ((int __fd, int __cmd, __off_t __len)); do __result = (long int) (expression); \ while (__result == -1L && errno == EINTR); \ __result; }) - + #endif __END_DECLS diff --git a/sysdeps/mach/hurd/getsid.c b/sysdeps/mach/hurd/getsid.c new file mode 100644 index 0000000000..36b8504992 --- /dev/null +++ b/sysdeps/mach/hurd/getsid.c @@ -0,0 +1,35 @@ +/* getsid -- Return session ID of a process. Hurd version. +Copyright (C) 1995 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sys/types.h> +#include <unistd.h> +#include <errno.h> +#include <hurd.h> + +pid_t +getsid (pid_t pid) +{ + error_t err; + pid_t sid; + + err = __USEPORT (PROC, __proc_getsid (port, pid, &sid)); + if (err) + return (pid_t) __hurd_fail (err); + return sid; +} diff --git a/sysdeps/stub/getsid.c b/sysdeps/stub/getsid.c new file mode 100644 index 0000000000..af474c5e4d --- /dev/null +++ b/sysdeps/stub/getsid.c @@ -0,0 +1,29 @@ +/* getsid -- Return session ID of a process. Stub version. +Copyright (C) 1995 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sys/types.h> +#include <unistd.h> +#include <errno.h> + +pid_t +getsid (pid_t pid) +{ + errno = ENOSYS; + return (pid_t) -1; +} diff --git a/sysdeps/unix/sysv/linux/getsid.S b/sysdeps/unix/sysv/linux/getsid.S new file mode 100644 index 0000000000..b5c49fb582 --- /dev/null +++ b/sysdeps/unix/sysv/linux/getsid.S @@ -0,0 +1,23 @@ +/* getsid -- Return session ID of a process. System call version. +Copyright (C) 1995 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sysdep.h> + +SYSCALL (getsid, 1) + ret |