summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/sys_socket.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-11 17:32:49 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-31 13:18:47 +0100
commite5393a32677c5cc35b111a9c8b46e9dd251211b1 (patch)
tree9f52dce49ce5ddd87902f2e86ffb0968cc5883be /freebsd/sys/kern/sys_socket.c
parentUse bind() from FreeBSD (diff)
downloadrtems-libbsd-e5393a32677c5cc35b111a9c8b46e9dd251211b1.tar.bz2
Use socket ioctl() from FreeBSD
Diffstat (limited to 'freebsd/sys/kern/sys_socket.c')
-rw-r--r--freebsd/sys/kern/sys_socket.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/freebsd/sys/kern/sys_socket.c b/freebsd/sys/kern/sys_socket.c
index 50b48552..5318c69a 100644
--- a/freebsd/sys/kern/sys_socket.c
+++ b/freebsd/sys/kern/sys_socket.c
@@ -120,7 +120,11 @@ soo_truncate(struct file *fp, off_t length, struct ucred *active_cred,
return (EINVAL);
}
+#endif /* __rtems__ */
+#ifdef __rtems__
+static
+#endif /* __rtems__ */
int
soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred,
struct thread *td)
@@ -128,6 +132,10 @@ soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred,
struct socket *so = fp->f_data;
int error = 0;
+#ifdef __rtems__
+ if (td == NULL)
+ return (ENOMEM);
+#endif /* __rtems__ */
CURVNET_SET(so->so_vnet);
switch (cmd) {
case FIONBIO:
@@ -225,7 +233,19 @@ soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred,
CURVNET_RESTORE();
return (error);
}
+#ifdef __rtems__
+static int
+rtems_bsd_soo_ioctl(rtems_libio_t *iop, ioctl_command_t request, void *buffer)
+{
+ struct thread *td = rtems_bsd_get_curthread_or_null();
+ struct file *fp = rtems_bsd_iop_to_fp(iop);
+ int error = soo_ioctl(fp, request, buffer, NULL, td);
+ return rtems_bsd_error_to_status_and_errno(error);
+}
+#endif /* __rtems__ */
+
+#ifndef __rtems__
int
soo_poll(struct file *fp, int events, struct ucred *active_cred,
struct thread *td)
@@ -345,7 +365,7 @@ const rtems_filesystem_file_handlers_r socketops = {
.close_h = rtems_bsd_soo_close,
.read_h = rtems_filesystem_default_read,
.write_h = rtems_filesystem_default_write,
- .ioctl_h = rtems_filesystem_default_ioctl,
+ .ioctl_h = rtems_bsd_soo_ioctl,
.lseek_h = rtems_filesystem_default_lseek,
.fstat_h = rtems_bsd_soo_stat,
.ftruncate_h = rtems_filesystem_default_ftruncate,