diff options
author | mini <mini@FreeBSD.org> | 2002-09-23 06:17:54 +0000 |
---|---|---|
committer | mini <mini@FreeBSD.org> | 2002-09-23 06:17:54 +0000 |
commit | e206834961edb2d9141a787805ae32d92c3c9877 (patch) | |
tree | 5f424fb16ca806384a61af312db97a34a1315a17 /sys | |
parent | bcb38a31ff0d92c47ebc284b3704fa8f94de02ba (diff) | |
download | FreeBSD-src-e206834961edb2d9141a787805ae32d92c3c9877.zip FreeBSD-src-e206834961edb2d9141a787805ae32d92c3c9877.tar.gz |
Don't use compatability syscall wrappers in emulation code.
This is needed for the COMPAT_FREEBSD3 option split.
Reviewed by: alfred, jake
Diffstat (limited to 'sys')
-rw-r--r-- | sys/compat/linux/linux_socket.c | 30 | ||||
-rw-r--r-- | sys/compat/linux/linux_sysctl.c | 21 | ||||
-rw-r--r-- | sys/compat/svr4/svr4_stream.c | 14 | ||||
-rw-r--r-- | sys/i386/linux/linux_proto.h | 5 | ||||
-rw-r--r-- | sys/i386/linux/linux_syscall.h | 6 | ||||
-rw-r--r-- | sys/i386/linux/linux_sysent.c | 6 | ||||
-rw-r--r-- | sys/i386/linux/syscalls.master | 7 |
7 files changed, 64 insertions, 25 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index a3af70f..23b14c9 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -503,7 +503,7 @@ linux_accept(struct thread *td, struct linux_accept_args *args) bsd_args.s = linux_args.s; bsd_args.name = (caddr_t)linux_args.addr; bsd_args.anamelen = linux_args.namelen; - error = oaccept(td, &bsd_args); + error = accept(td, &bsd_args); if (error) return (error); @@ -543,7 +543,7 @@ linux_getsockname(struct thread *td, struct linux_getsockname_args *args) bsd_args.fdes = linux_args.s; bsd_args.asa = (caddr_t) linux_args.addr; bsd_args.alen = linux_args.namelen; - return (ogetsockname(td, &bsd_args)); + return (getsockname(td, &bsd_args)); } struct linux_getpeername_args { @@ -556,7 +556,7 @@ static int linux_getpeername(struct thread *td, struct linux_getpeername_args *args) { struct linux_getpeername_args linux_args; - struct ogetpeername_args /* { + struct getpeername_args /* { int fdes; caddr_t asa; int *alen; @@ -569,7 +569,7 @@ linux_getpeername(struct thread *td, struct linux_getpeername_args *args) bsd_args.fdes = linux_args.s; bsd_args.asa = (caddr_t) linux_args.addr; bsd_args.alen = linux_args.namelen; - return (ogetpeername(td, &bsd_args)); + return (getpeername(td, &bsd_args)); } struct linux_socketpair_args { @@ -615,11 +615,13 @@ static int linux_send(struct thread *td, struct linux_send_args *args) { struct linux_send_args linux_args; - struct osend_args /* { - int s; + struct sendto_args /* { + int s; caddr_t buf; - int len; + size_t len; int flags; + caddr_t to; + int tolen; } */ bsd_args; int error; @@ -630,7 +632,9 @@ linux_send(struct thread *td, struct linux_send_args *args) bsd_args.buf = linux_args.msg; bsd_args.len = linux_args.len; bsd_args.flags = linux_args.flags; - return (osend(td, &bsd_args)); + bsd_args.to = NULL; + bsd_args.tolen = 0; + return (sendto(td, &bsd_args)); } struct linux_recv_args { @@ -644,11 +648,13 @@ static int linux_recv(struct thread *td, struct linux_recv_args *args) { struct linux_recv_args linux_args; - struct orecv_args /* { + struct recvfrom_args /* { int s; caddr_t buf; int len; int flags; + caddr_t from; + int fromlen; } */ bsd_args; int error; @@ -659,7 +665,9 @@ linux_recv(struct thread *td, struct linux_recv_args *args) bsd_args.buf = linux_args.msg; bsd_args.len = linux_args.len; bsd_args.flags = linux_args.flags; - return (orecv(td, &bsd_args)); + bsd_args.from = NULL; + bsd_args.fromlenaddr = NULL; + return (recvfrom(td, &bsd_args)); } struct linux_sendto_args { @@ -734,7 +742,7 @@ linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args) bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags); bsd_args.from = linux_args.from; bsd_args.fromlenaddr = linux_args.fromlen; - return (orecvfrom(td, &bsd_args)); + return (recvfrom(td, &bsd_args)); } struct linux_recvmsg_args { diff --git a/sys/compat/linux/linux_sysctl.c b/sys/compat/linux/linux_sysctl.c index 294da08..153e0ac 100644 --- a/sys/compat/linux/linux_sysctl.c +++ b/sys/compat/linux/linux_sysctl.c @@ -29,7 +29,11 @@ */ #include <sys/param.h> +#include <sys/lock.h> #include <sys/malloc.h> +#include <sys/mutex.h> +#include <sys/proc.h> +#include <sys/sysctl.h> #include <sys/systm.h> #include <machine/../linux/linux.h> @@ -117,3 +121,20 @@ linux_sysctl(struct thread *td, struct linux_sysctl_args *args) free(mib, M_TEMP); return (ENOTDIR); } + +int +linux_sethostname(struct thread *td, struct linux_sethostname_args *uap) +{ + int name[2]; + int error; + + name[0] = CTL_KERN; + name[1] = KERN_HOSTNAME; + mtx_lock(&Giant); + if ((error = suser_cred(td->td_ucred, PRISON_ROOT)) == 0) { + error = userland_sysctl(td, name, 2, 0, 0, 0, + uap->hostname, uap->len, 0); + } + mtx_unlock(&Giant); + return (error); +} diff --git a/sys/compat/svr4/svr4_stream.c b/sys/compat/svr4/svr4_stream.c index 1618ac1..21ec309 100644 --- a/sys/compat/svr4/svr4_stream.c +++ b/sys/compat/svr4/svr4_stream.c @@ -2252,24 +2252,30 @@ int svr4_sys_send(td, uap) struct thread *td; struct svr4_sys_send_args *uap; { - struct osend_args osa; + struct sendto_args osa; + SCARG(&osa, s) = SCARG(uap, s); SCARG(&osa, buf) = SCARG(uap, buf); SCARG(&osa, len) = SCARG(uap, len); SCARG(&osa, flags) = SCARG(uap, flags); - return osend(td, &osa); + SCARG(&osa, to) = NULL; + SCARG(&osa, tolen) = 0; + return sendto(td, &osa); } int svr4_sys_recv(td, uap) struct thread *td; struct svr4_sys_recv_args *uap; { - struct orecv_args ora; + struct recvfrom_args ora; + SCARG(&ora, s) = SCARG(uap, s); SCARG(&ora, buf) = SCARG(uap, buf); SCARG(&ora, len) = SCARG(uap, len); SCARG(&ora, flags) = SCARG(uap, flags); - return orecv(td, &ora); + SCARG(&osa, from) = NULL; + SCARG(&osa, fromlen) = 0; + return recvfrom(td, &ora); } /* diff --git a/sys/i386/linux/linux_proto.h b/sys/i386/linux/linux_proto.h index d98c9dd..79c0636 100644 --- a/sys/i386/linux/linux_proto.h +++ b/sys/i386/linux/linux_proto.h @@ -223,6 +223,10 @@ struct linux_sigsuspend_args { struct linux_sigpending_args { char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; }; +struct linux_sethostname_args { + char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)]; + char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)]; +}; struct linux_setrlimit_args { char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; char rlim_l_[PADL_(struct l_rlimit *)]; struct l_rlimit * rlim; char rlim_r_[PADR_(struct l_rlimit *)]; @@ -691,6 +695,7 @@ int linux_setreuid16(struct thread *, struct linux_setreuid16_args *); int linux_setregid16(struct thread *, struct linux_setregid16_args *); int linux_sigsuspend(struct thread *, struct linux_sigsuspend_args *); int linux_sigpending(struct thread *, struct linux_sigpending_args *); +int linux_sethostname(struct thread *, struct linux_sethostname_args *); int linux_setrlimit(struct thread *, struct linux_setrlimit_args *); int linux_old_getrlimit(struct thread *, struct linux_old_getrlimit_args *); int linux_getgroups16(struct thread *, struct linux_getgroups16_args *); diff --git a/sys/i386/linux/linux_syscall.h b/sys/i386/linux/linux_syscall.h index 3020d54..ca80aee 100644 --- a/sys/i386/linux/linux_syscall.h +++ b/sys/i386/linux/linux_syscall.h @@ -71,7 +71,7 @@ #define LINUX_SYS_linux_setregid16 71 #define LINUX_SYS_linux_sigsuspend 72 #define LINUX_SYS_linux_sigpending 73 -#define LINUX_SYS_osethostname 74 +#define LINUX_SYS_linux_sethostname 74 #define LINUX_SYS_linux_setrlimit 75 #define LINUX_SYS_linux_old_getrlimit 76 #define LINUX_SYS_getrusage 77 @@ -81,7 +81,7 @@ #define LINUX_SYS_linux_setgroups16 81 #define LINUX_SYS_linux_old_select 82 #define LINUX_SYS_linux_symlink 83 -#define LINUX_SYS_ostat 84 +#define LINUX_SYS_stat 84 #define LINUX_SYS_linux_readlink 85 #define LINUX_SYS_linux_uselib 86 #define LINUX_SYS_swapon 87 @@ -90,7 +90,7 @@ #define LINUX_SYS_linux_mmap 90 #define LINUX_SYS_munmap 91 #define LINUX_SYS_linux_truncate 92 -#define LINUX_SYS_oftruncate 93 +#define LINUX_SYS_ftruncate 93 #define LINUX_SYS_fchmod 94 #define LINUX_SYS_fchown 95 #define LINUX_SYS_getpriority 96 diff --git a/sys/i386/linux/linux_sysent.c b/sys/i386/linux/linux_sysent.c index 608a9e3..f35c7b2 100644 --- a/sys/i386/linux/linux_sysent.c +++ b/sys/i386/linux/linux_sysent.c @@ -91,7 +91,7 @@ struct sysent linux_sysent[] = { { AS(linux_setregid16_args), (sy_call_t *)linux_setregid16 }, /* 71 = linux_setregid16 */ { AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend }, /* 72 = linux_sigsuspend */ { AS(linux_sigpending_args), (sy_call_t *)linux_sigpending }, /* 73 = linux_sigpending */ - { SYF_MPSAFE | AS(sethostname_args), (sy_call_t *)osethostname }, /* 74 = osethostname */ + { AS(linux_sethostname_args), (sy_call_t *)linux_sethostname }, /* 74 = linux_sethostname */ { AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit }, /* 75 = linux_setrlimit */ { AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit }, /* 76 = linux_old_getrlimit */ { AS(getrusage_args), (sy_call_t *)getrusage }, /* 77 = getrusage */ @@ -101,7 +101,7 @@ struct sysent linux_sysent[] = { { AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16 }, /* 81 = linux_setgroups16 */ { AS(linux_old_select_args), (sy_call_t *)linux_old_select }, /* 82 = linux_old_select */ { AS(linux_symlink_args), (sy_call_t *)linux_symlink }, /* 83 = linux_symlink */ - { AS(ostat_args), (sy_call_t *)ostat }, /* 84 = ostat */ + { AS(stat_args), (sy_call_t *)stat }, /* 84 = stat */ { AS(linux_readlink_args), (sy_call_t *)linux_readlink }, /* 85 = linux_readlink */ { AS(linux_uselib_args), (sy_call_t *)linux_uselib }, /* 86 = linux_uselib */ { AS(swapon_args), (sy_call_t *)swapon }, /* 87 = swapon */ @@ -110,7 +110,7 @@ struct sysent linux_sysent[] = { { AS(linux_mmap_args), (sy_call_t *)linux_mmap }, /* 90 = linux_mmap */ { AS(munmap_args), (sy_call_t *)munmap }, /* 91 = munmap */ { AS(linux_truncate_args), (sy_call_t *)linux_truncate }, /* 92 = linux_truncate */ - { AS(oftruncate_args), (sy_call_t *)oftruncate }, /* 93 = oftruncate */ + { AS(ftruncate_args), (sy_call_t *)ftruncate }, /* 93 = ftruncate */ { AS(fchmod_args), (sy_call_t *)fchmod }, /* 94 = fchmod */ { AS(fchown_args), (sy_call_t *)fchown }, /* 95 = fchown */ { AS(getpriority_args), (sy_call_t *)getpriority }, /* 96 = getpriority */ diff --git a/sys/i386/linux/syscalls.master b/sys/i386/linux/syscalls.master index ea790c7..150d2a8 100644 --- a/sys/i386/linux/syscalls.master +++ b/sys/i386/linux/syscalls.master @@ -121,8 +121,7 @@ 72 STD LINUX { int linux_sigsuspend(l_int hist0, l_int hist1, \ l_osigset_t mask); } 73 STD LINUX { int linux_sigpending(l_osigset_t *mask); } -74 MNOPROTO LINUX { int osethostname(char *hostname, u_int len); } \ - osethostname sethostname_args int +74 STD LINUX { int linux_sethostname(char *hostname, u_int len); } 75 STD LINUX { int linux_setrlimit(l_uint resource, \ struct l_rlimit *rlim); } 76 STD LINUX { int linux_old_getrlimit(l_uint resource, \ @@ -139,7 +138,7 @@ 82 STD LINUX { int linux_old_select(struct l_old_select_argv \ *ptr); } 83 STD LINUX { int linux_symlink(char *path, char *to); } -84 NOPROTO LINUX { int ostat(char *path, struct ostat *up); } +84 NOPROTO LINUX { int stat(char *path, struct ostat *up); } 85 STD LINUX { int linux_readlink(char *name, char *buf, \ l_int count); } 86 STD LINUX { int linux_uselib(char *library); } @@ -151,7 +150,7 @@ 90 STD LINUX { int linux_mmap(struct l_mmap_argv *ptr); } 91 NOPROTO LINUX { int munmap(caddr_t addr, int len); } 92 STD LINUX { int linux_truncate(char *path, l_ulong length); } -93 NOPROTO LINUX { int oftruncate(int fd, long length); } +93 NOPROTO LINUX { int ftruncate(int fd, long length); } 94 NOPROTO LINUX { int fchmod(int fd, int mode); } 95 NOPROTO LINUX { int fchown(int fd, int uid, int gid); } 96 NOPROTO LINUX { int getpriority(int which, int who); } |