diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-14 09:48:56 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-31 13:18:47 +0100 |
commit | 6676de488afe2d184eb277d207767fb50ba63261 (patch) | |
tree | c9378da11ff0bef546eaaec943ce1df65b04957b /freebsd/sys/kern/uipc_syscalls.c | |
parent | Use socket ioctl() from FreeBSD (diff) | |
download | rtems-libbsd-6676de488afe2d184eb277d207767fb50ba63261.tar.bz2 |
Use connect() from FreeBSD
Diffstat (limited to 'freebsd/sys/kern/uipc_syscalls.c')
-rw-r--r-- | freebsd/sys/kern/uipc_syscalls.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/freebsd/sys/kern/uipc_syscalls.c b/freebsd/sys/kern/uipc_syscalls.c index 1e96598f..e4ec4baa 100644 --- a/freebsd/sys/kern/uipc_syscalls.c +++ b/freebsd/sys/kern/uipc_syscalls.c @@ -608,10 +608,17 @@ oaccept(td, uap) return (accept1(td, uap, 1)); } #endif /* COMPAT_OLDSOCK */ +#endif /* __rtems__ */ /* ARGSUSED */ +#ifndef __rtems__ int -connect(td, uap) +#else /* __rtems__ */ +static int kern_connect(struct thread *, int, struct sockaddr *); + +static int +rtems_bsd_connect(td, uap) +#endif /* __rtems__ */ struct thread *td; struct connect_args /* { int s; @@ -630,6 +637,27 @@ connect(td, uap) free(sa, M_SONAME); return (error); } +#ifdef __rtems__ +int +connect(int socket, const struct sockaddr *address, socklen_t address_len) +{ + struct thread *td = rtems_bsd_get_curthread_or_null(); + struct connect_args ua = { + .s = socket, + .name = (caddr_t) address, + .namelen = address_len + }; + int error; + + if (td != NULL) { + error = rtems_bsd_connect(td, &ua); + } else { + error = ENOMEM; + } + + return rtems_bsd_error_to_status_and_errno(error); +} +#endif /* __rtems__ */ int @@ -693,6 +721,7 @@ done1: return (error); } +#ifndef __rtems__ int kern_socketpair(struct thread *td, int domain, int type, int protocol, int *rsv) |