Fix some bugs & typing problems.

This commit is contained in:
fvdl 1995-09-07 21:48:59 +00:00
parent 1a86f1c724
commit a396a097b7
23 changed files with 939 additions and 67 deletions

View File

@ -1,4 +1,4 @@
$NetBSD: syscalls.master,v 1.11 1995/08/27 20:51:53 fvdl Exp $ $NetBSD: syscalls.master,v 1.12 1995/09/07 21:49:02 fvdl Exp $
; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93
@ -87,7 +87,7 @@
43 STD { int linux_times(struct times *tms); } 43 STD { int linux_times(struct times *tms); }
44 UNIMPL linux_prof 44 UNIMPL linux_prof
45 STD { int linux_brk(char *nsize); } 45 STD { int linux_brk(char *nsize); }
46 NOARGS { int setgid(uid_t gid); } 46 NOARGS { int setgid(gid_t gid); }
47 NOARGS { gid_t getgid(void); } 47 NOARGS { gid_t getgid(void); }
48 STD { int linux_signal(int sig, linux_handler_t handler); } 48 STD { int linux_signal(int sig, linux_handler_t handler); }
49 NOARGS { uid_t geteuid(void); } 49 NOARGS { uid_t geteuid(void); }
@ -113,8 +113,8 @@
struct linux_sigaction *osa); } struct linux_sigaction *osa); }
68 STD { int linux_siggetmask(void); } 68 STD { int linux_siggetmask(void); }
69 STD { int linux_sigsetmask(linux_sigset_t mask); } 69 STD { int linux_sigsetmask(linux_sigset_t mask); }
70 NOARGS { int compat_43_setreuid(int ruid, int euid); } 70 STD { int linux_setreuid(int ruid, int euid); }
71 NOARGS { int compat_43_setregid(int rgid, int egid); } 71 STD { int linux_setregid(int rgid, int egid); }
72 STD { int linux_sigsuspend(caddr_t restart, int oldmask, \ 72 STD { int linux_sigsuspend(caddr_t restart, int oldmask, \
int mask); } int mask); }
73 STD { int linux_sigpending(linux_sigset_t *mask); } 73 STD { int linux_sigpending(linux_sigset_t *mask); }
@ -144,7 +144,7 @@
92 STD { int linux_truncate(char *path, long length); } 92 STD { int linux_truncate(char *path, long length); }
93 NOARGS { int compat_43_ftruncate(int fd, long length); } 93 NOARGS { int compat_43_ftruncate(int fd, long length); }
94 NOARGS { int fchmod(int fd, int mode); } 94 NOARGS { int fchmod(int fd, int mode); }
95 NOARGS { int fchown(int fd, int uid, int gid); } 95 STD { int linux_fchown(int fd, int uid, int gid); }
96 NOARGS { int getpriority(int which, int who); } 96 NOARGS { int getpriority(int which, int who); }
97 NOARGS { int setpriority(int which, int who, int prio); } 97 NOARGS { int setpriority(int which, int who, int prio); }
98 NOARGS { int profil(caddr_t samples, u_int size, \ 98 NOARGS { int profil(caddr_t samples, u_int size, \

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_break.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_break.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_file.c,v 1.9 1995/08/27 20:51:48 fvdl Exp $ */ /* $NetBSD: linux_file.c,v 1.10 1995/09/07 21:48:59 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -487,7 +487,7 @@ linux_lstat(p, uap, retval)
} }
/* /*
* The following syscalls are only here because of the alternate path check. * The following syscalls are mostly here because of the alternate path check.
*/ */
int int
linux_access(p, uap, retval) linux_access(p, uap, retval)
@ -521,7 +521,8 @@ linux_unlink(p, uap, retval)
return unlink(p, uap, retval); return unlink(p, uap, retval);
} }
int linux_chdir(p, uap, retval) int
linux_chdir(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_chdir_args /* { struct linux_chdir_args /* {
syscallarg(char *) path; syscallarg(char *) path;
@ -546,10 +547,19 @@ linux_mknod(p, uap, retval)
register_t *retval; register_t *retval;
{ {
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
struct mkfifo_args bma;
LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path));
return mknod(p, uap, retval); /*
* BSD handles FIFOs seperately
*/
if (SCARG(uap, mode) & S_IFIFO) {
SCARG(&bma, path) = SCARG(uap, path);
SCARG(&bma, mode) = SCARG(uap, mode);
return mkfifo(p, uap, retval);
} else
return mknod(p, uap, retval);
} }
int int
@ -578,11 +588,39 @@ linux_chown(p, uap, retval)
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
{ {
struct chown_args bca;
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
return chmod(p, uap, retval); SCARG(&bca, path) = SCARG(uap, path);
SCARG(&bca, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bca, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return chown(p, &bca, retval);
}
int
linux_fchown(p, uap, retval)
struct proc *p;
struct linux_fchown_args /* {
syscallarg(int) fd;
syscallarg(int) uid;
syscallarg(int) gid;
} */ *uap;
register_t *retval;
{
struct fchown_args bfa;
SCARG(&bfa, fd) = SCARG(uap, fd);
SCARG(&bfa, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bfa, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return fchown(p, &bfa, retval);
} }
int int

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_llseek.c,v 1.9 1995/08/27 20:51:48 fvdl Exp $ */ /* $NetBSD: linux_llseek.c,v 1.10 1995/09/07 21:48:59 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -487,7 +487,7 @@ linux_lstat(p, uap, retval)
} }
/* /*
* The following syscalls are only here because of the alternate path check. * The following syscalls are mostly here because of the alternate path check.
*/ */
int int
linux_access(p, uap, retval) linux_access(p, uap, retval)
@ -521,7 +521,8 @@ linux_unlink(p, uap, retval)
return unlink(p, uap, retval); return unlink(p, uap, retval);
} }
int linux_chdir(p, uap, retval) int
linux_chdir(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_chdir_args /* { struct linux_chdir_args /* {
syscallarg(char *) path; syscallarg(char *) path;
@ -546,10 +547,19 @@ linux_mknod(p, uap, retval)
register_t *retval; register_t *retval;
{ {
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
struct mkfifo_args bma;
LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path));
return mknod(p, uap, retval); /*
* BSD handles FIFOs seperately
*/
if (SCARG(uap, mode) & S_IFIFO) {
SCARG(&bma, path) = SCARG(uap, path);
SCARG(&bma, mode) = SCARG(uap, mode);
return mkfifo(p, uap, retval);
} else
return mknod(p, uap, retval);
} }
int int
@ -578,11 +588,39 @@ linux_chown(p, uap, retval)
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
{ {
struct chown_args bca;
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
return chmod(p, uap, retval); SCARG(&bca, path) = SCARG(uap, path);
SCARG(&bca, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bca, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return chown(p, &bca, retval);
}
int
linux_fchown(p, uap, retval)
struct proc *p;
struct linux_fchown_args /* {
syscallarg(int) fd;
syscallarg(int) uid;
syscallarg(int) gid;
} */ *uap;
register_t *retval;
{
struct fchown_args bfa;
SCARG(&bfa, fd) = SCARG(uap, fd);
SCARG(&bfa, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bfa, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return fchown(p, &bfa, retval);
} }
int int

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_misc.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_misc.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_misc_notalpha.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_misc_notalpha.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_oldmmap.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_oldmmap.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_oldolduname.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_oldolduname.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_oldselect.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_oldselect.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_olduname.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_olduname.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_pipe.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_pipe.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
$NetBSD: syscalls.master,v 1.11 1995/08/27 20:51:53 fvdl Exp $ $NetBSD: syscalls.master,v 1.12 1995/09/07 21:49:02 fvdl Exp $
; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93
@ -87,7 +87,7 @@
43 STD { int linux_times(struct times *tms); } 43 STD { int linux_times(struct times *tms); }
44 UNIMPL linux_prof 44 UNIMPL linux_prof
45 STD { int linux_brk(char *nsize); } 45 STD { int linux_brk(char *nsize); }
46 NOARGS { int setgid(uid_t gid); } 46 NOARGS { int setgid(gid_t gid); }
47 NOARGS { gid_t getgid(void); } 47 NOARGS { gid_t getgid(void); }
48 STD { int linux_signal(int sig, linux_handler_t handler); } 48 STD { int linux_signal(int sig, linux_handler_t handler); }
49 NOARGS { uid_t geteuid(void); } 49 NOARGS { uid_t geteuid(void); }
@ -113,8 +113,8 @@
struct linux_sigaction *osa); } struct linux_sigaction *osa); }
68 STD { int linux_siggetmask(void); } 68 STD { int linux_siggetmask(void); }
69 STD { int linux_sigsetmask(linux_sigset_t mask); } 69 STD { int linux_sigsetmask(linux_sigset_t mask); }
70 NOARGS { int compat_43_setreuid(int ruid, int euid); } 70 STD { int linux_setreuid(int ruid, int euid); }
71 NOARGS { int compat_43_setregid(int rgid, int egid); } 71 STD { int linux_setregid(int rgid, int egid); }
72 STD { int linux_sigsuspend(caddr_t restart, int oldmask, \ 72 STD { int linux_sigsuspend(caddr_t restart, int oldmask, \
int mask); } int mask); }
73 STD { int linux_sigpending(linux_sigset_t *mask); } 73 STD { int linux_sigpending(linux_sigset_t *mask); }
@ -144,7 +144,7 @@
92 STD { int linux_truncate(char *path, long length); } 92 STD { int linux_truncate(char *path, long length); }
93 NOARGS { int compat_43_ftruncate(int fd, long length); } 93 NOARGS { int compat_43_ftruncate(int fd, long length); }
94 NOARGS { int fchmod(int fd, int mode); } 94 NOARGS { int fchmod(int fd, int mode); }
95 NOARGS { int fchown(int fd, int uid, int gid); } 95 STD { int linux_fchown(int fd, int uid, int gid); }
96 NOARGS { int getpriority(int which, int who); } 96 NOARGS { int getpriority(int which, int who); }
97 NOARGS { int setpriority(int which, int who, int prio); } 97 NOARGS { int setpriority(int which, int who, int prio); }
98 NOARGS { int profil(caddr_t samples, u_int size, \ 98 NOARGS { int profil(caddr_t samples, u_int size, \

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_file.c,v 1.9 1995/08/27 20:51:48 fvdl Exp $ */ /* $NetBSD: linux_file.c,v 1.10 1995/09/07 21:48:59 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -487,7 +487,7 @@ linux_lstat(p, uap, retval)
} }
/* /*
* The following syscalls are only here because of the alternate path check. * The following syscalls are mostly here because of the alternate path check.
*/ */
int int
linux_access(p, uap, retval) linux_access(p, uap, retval)
@ -521,7 +521,8 @@ linux_unlink(p, uap, retval)
return unlink(p, uap, retval); return unlink(p, uap, retval);
} }
int linux_chdir(p, uap, retval) int
linux_chdir(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_chdir_args /* { struct linux_chdir_args /* {
syscallarg(char *) path; syscallarg(char *) path;
@ -546,10 +547,19 @@ linux_mknod(p, uap, retval)
register_t *retval; register_t *retval;
{ {
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
struct mkfifo_args bma;
LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path));
return mknod(p, uap, retval); /*
* BSD handles FIFOs seperately
*/
if (SCARG(uap, mode) & S_IFIFO) {
SCARG(&bma, path) = SCARG(uap, path);
SCARG(&bma, mode) = SCARG(uap, mode);
return mkfifo(p, uap, retval);
} else
return mknod(p, uap, retval);
} }
int int
@ -578,11 +588,39 @@ linux_chown(p, uap, retval)
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
{ {
struct chown_args bca;
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
return chmod(p, uap, retval); SCARG(&bca, path) = SCARG(uap, path);
SCARG(&bca, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bca, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return chown(p, &bca, retval);
}
int
linux_fchown(p, uap, retval)
struct proc *p;
struct linux_fchown_args /* {
syscallarg(int) fd;
syscallarg(int) uid;
syscallarg(int) gid;
} */ *uap;
register_t *retval;
{
struct fchown_args bfa;
SCARG(&bfa, fd) = SCARG(uap, fd);
SCARG(&bfa, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bfa, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return fchown(p, &bfa, retval);
} }
int int

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_misc.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_misc.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_break.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_break.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_llseek.c,v 1.9 1995/08/27 20:51:48 fvdl Exp $ */ /* $NetBSD: linux_llseek.c,v 1.10 1995/09/07 21:48:59 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -487,7 +487,7 @@ linux_lstat(p, uap, retval)
} }
/* /*
* The following syscalls are only here because of the alternate path check. * The following syscalls are mostly here because of the alternate path check.
*/ */
int int
linux_access(p, uap, retval) linux_access(p, uap, retval)
@ -521,7 +521,8 @@ linux_unlink(p, uap, retval)
return unlink(p, uap, retval); return unlink(p, uap, retval);
} }
int linux_chdir(p, uap, retval) int
linux_chdir(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_chdir_args /* { struct linux_chdir_args /* {
syscallarg(char *) path; syscallarg(char *) path;
@ -546,10 +547,19 @@ linux_mknod(p, uap, retval)
register_t *retval; register_t *retval;
{ {
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
struct mkfifo_args bma;
LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_CREAT(p, &sg, SCARG(uap, path));
return mknod(p, uap, retval); /*
* BSD handles FIFOs seperately
*/
if (SCARG(uap, mode) & S_IFIFO) {
SCARG(&bma, path) = SCARG(uap, path);
SCARG(&bma, mode) = SCARG(uap, mode);
return mkfifo(p, uap, retval);
} else
return mknod(p, uap, retval);
} }
int int
@ -578,11 +588,39 @@ linux_chown(p, uap, retval)
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
{ {
struct chown_args bca;
caddr_t sg = stackgap_init(p->p_emul); caddr_t sg = stackgap_init(p->p_emul);
LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path)); LINUX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
return chmod(p, uap, retval); SCARG(&bca, path) = SCARG(uap, path);
SCARG(&bca, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bca, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return chown(p, &bca, retval);
}
int
linux_fchown(p, uap, retval)
struct proc *p;
struct linux_fchown_args /* {
syscallarg(int) fd;
syscallarg(int) uid;
syscallarg(int) gid;
} */ *uap;
register_t *retval;
{
struct fchown_args bfa;
SCARG(&bfa, fd) = SCARG(uap, fd);
SCARG(&bfa, uid) = ((linux_uid_t)SCARG(uap, uid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, uid);
SCARG(&bfa, gid) = ((linux_gid_t)SCARG(uap, gid) == (linux_gid_t)-1) ?
(gid_t)-1 : SCARG(uap, gid);
return fchown(p, &bfa, retval);
} }
int int

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_misc_notalpha.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_misc_notalpha.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_oldmmap.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_oldmmap.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_oldolduname.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_oldolduname.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_oldselect.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_oldselect.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_olduname.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_olduname.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: linux_pipe.c,v 1.17 1995/08/23 20:17:28 fvdl Exp $ */ /* $NetBSD: linux_pipe.c,v 1.18 1995/09/07 21:49:01 fvdl Exp $ */
/* /*
* Copyright (c) 1995 Frank van der Linden * Copyright (c) 1995 Frank van der Linden
@ -126,6 +126,8 @@ linux_waitpid(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -170,6 +172,8 @@ linux_wait4(p, uap, retval)
if ((error = wait4(p, &w4a, retval))) if ((error = wait4(p, &w4a, retval)))
return error; return error;
p->p_siglist &= ~sigmask(SIGCHLD);
if (status != NULL) { if (status != NULL) {
if ((error = copyin(status, &tstat, sizeof tstat))) if ((error = copyin(status, &tstat, sizeof tstat)))
return error; return error;
@ -1009,7 +1013,7 @@ linux_getpgid(p, uap, retval)
int int
linux_personality(p, uap, retval) linux_personality(p, uap, retval)
struct proc *p; struct proc *p;
struct linux_personality_args /* P struct linux_personality_args /* {
syscallarg(int) per; syscallarg(int) per;
} */ *uap; } */ *uap;
register_t *retval; register_t *retval;
@ -1019,3 +1023,44 @@ linux_personality(p, uap, retval)
retval[0] = 0; retval[0] = 0;
return 0; return 0;
} }
/*
* The calls are here because of type conversions.
*/
int
linux_setreuid(p, uap, retval)
struct proc *p;
struct linux_setreuid_args /* {
syscallarg(int) ruid;
syscallarg(int) euid;
} */ *uap;
register_t *retval;
{
struct compat_43_setreuid_args bsa;
SCARG(&bsa, ruid) = ((linux_uid_t)SCARG(uap, ruid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, ruid);
SCARG(&bsa, euid) = ((linux_uid_t)SCARG(uap, euid) == (linux_uid_t)-1) ?
(uid_t)-1 : SCARG(uap, euid);
return compat_43_setreuid(p, &bsa, retval);
}
int
linux_setregid(p, uap, retval)
struct proc *p;
struct linux_setregid_args /* {
syscallarg(int) rgid;
syscallarg(int) egid;
} */ *uap;
register_t *retval;
{
struct compat_43_setregid_args bsa;
SCARG(&bsa, rgid) = ((linux_gid_t)SCARG(uap, rgid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, rgid);
SCARG(&bsa, egid) = ((linux_gid_t)SCARG(uap, egid) == (linux_gid_t)-1) ?
(uid_t)-1 : SCARG(uap, egid);
return compat_43_setregid(p, &bsa, retval);
}

View File

@ -1,4 +1,4 @@
$NetBSD: syscalls.master,v 1.11 1995/08/27 20:51:53 fvdl Exp $ $NetBSD: syscalls.master,v 1.12 1995/09/07 21:49:02 fvdl Exp $
; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93
@ -87,7 +87,7 @@
43 STD { int linux_times(struct times *tms); } 43 STD { int linux_times(struct times *tms); }
44 UNIMPL linux_prof 44 UNIMPL linux_prof
45 STD { int linux_brk(char *nsize); } 45 STD { int linux_brk(char *nsize); }
46 NOARGS { int setgid(uid_t gid); } 46 NOARGS { int setgid(gid_t gid); }
47 NOARGS { gid_t getgid(void); } 47 NOARGS { gid_t getgid(void); }
48 STD { int linux_signal(int sig, linux_handler_t handler); } 48 STD { int linux_signal(int sig, linux_handler_t handler); }
49 NOARGS { uid_t geteuid(void); } 49 NOARGS { uid_t geteuid(void); }
@ -113,8 +113,8 @@
struct linux_sigaction *osa); } struct linux_sigaction *osa); }
68 STD { int linux_siggetmask(void); } 68 STD { int linux_siggetmask(void); }
69 STD { int linux_sigsetmask(linux_sigset_t mask); } 69 STD { int linux_sigsetmask(linux_sigset_t mask); }
70 NOARGS { int compat_43_setreuid(int ruid, int euid); } 70 STD { int linux_setreuid(int ruid, int euid); }
71 NOARGS { int compat_43_setregid(int rgid, int egid); } 71 STD { int linux_setregid(int rgid, int egid); }
72 STD { int linux_sigsuspend(caddr_t restart, int oldmask, \ 72 STD { int linux_sigsuspend(caddr_t restart, int oldmask, \
int mask); } int mask); }
73 STD { int linux_sigpending(linux_sigset_t *mask); } 73 STD { int linux_sigpending(linux_sigset_t *mask); }
@ -144,7 +144,7 @@
92 STD { int linux_truncate(char *path, long length); } 92 STD { int linux_truncate(char *path, long length); }
93 NOARGS { int compat_43_ftruncate(int fd, long length); } 93 NOARGS { int compat_43_ftruncate(int fd, long length); }
94 NOARGS { int fchmod(int fd, int mode); } 94 NOARGS { int fchmod(int fd, int mode); }
95 NOARGS { int fchown(int fd, int uid, int gid); } 95 STD { int linux_fchown(int fd, int uid, int gid); }
96 NOARGS { int getpriority(int which, int who); } 96 NOARGS { int getpriority(int which, int who); }
97 NOARGS { int setpriority(int which, int who, int prio); } 97 NOARGS { int setpriority(int which, int who, int prio); }
98 NOARGS { int profil(caddr_t samples, u_int size, \ 98 NOARGS { int profil(caddr_t samples, u_int size, \