summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorKevin Kirspel <kevin-kirspel@idexx.com>2017-05-12 08:16:27 -0400
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-05-12 14:20:33 +0200
commit817cbf7201ebd2c27d8e1b8e47a9090762bb010e (patch)
treee2d315cfbe7498d2c3f49473cafb02bcd61e6d6e /freebsd
parentUpdating scripts for USB Serial Drivers (diff)
downloadrtems-libbsd-817cbf7201ebd2c27d8e1b8e47a9090762bb010e.tar.bz2
devfs: Fix some issues
Fix issue with cdev private data usage with RTEMS iop structure. Add support for cdev alias device names. Add support for cdev fstat.
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/sys/fs/devfs/devfs_vnops.c4
-rw-r--r--freebsd/sys/kern/kern_conf.c4
-rw-r--r--freebsd/sys/sys/file.h7
3 files changed, 7 insertions, 8 deletions
diff --git a/freebsd/sys/fs/devfs/devfs_vnops.c b/freebsd/sys/fs/devfs/devfs_vnops.c
index b585178f..31231fdd 100644
--- a/freebsd/sys/fs/devfs/devfs_vnops.c
+++ b/freebsd/sys/fs/devfs/devfs_vnops.c
@@ -204,7 +204,11 @@ devfs_destroy_cdevpriv(struct cdev_privdata *p)
free(p, M_CDEVPDATA);
}
+#ifndef __rtems__
static void
+#else /* __rtems__ */
+void
+#endif /* __rtems__ */
devfs_fpdrop(struct file *fp)
{
struct cdev_privdata *p;
diff --git a/freebsd/sys/kern/kern_conf.c b/freebsd/sys/kern/kern_conf.c
index 20f2e2c3..f008fc0c 100644
--- a/freebsd/sys/kern/kern_conf.c
+++ b/freebsd/sys/kern/kern_conf.c
@@ -854,9 +854,7 @@ make_dev_sv(struct make_dev_args *args1, struct cdev **dres,
#endif /* __rtems__ */
devfs_create(dev);
-#ifndef __rtems__
clean_unrhdrl(devfs_inos);
-#endif /* __rtems__ */
dev_unlock_and_free();
notify_create(dev, args.mda_flags);
@@ -1020,9 +1018,7 @@ make_dev_alias_v(int flags, struct cdev **cdev, struct cdev *pdev,
dev->si_flags |= SI_NAMED;
devfs_create(dev);
dev_dependsl(pdev, dev);
-#ifndef __rtems__
clean_unrhdrl(devfs_inos);
-#endif /* __rtems__ */
dev_unlock();
notify_create(dev, flags);
diff --git a/freebsd/sys/sys/file.h b/freebsd/sys/sys/file.h
index 8f91f52c..c52dc7a9 100644
--- a/freebsd/sys/sys/file.h
+++ b/freebsd/sys/sys/file.h
@@ -199,14 +199,11 @@ struct file {
void *f_label; /* Place-holder for MAC label. */
#else /* __rtems__ */
rtems_libio_t f_io;
- union {
- struct cdev_privdata *fvn_cdevpriv;
- /* (d) Private data for the cdev. */
- } f_vnun;
#endif /* __rtems__ */
};
#ifdef __rtems__
#define f_data f_io.pathinfo.node_access_2
+#define f_cdevpriv f_io.data1
static inline struct file *
rtems_bsd_iop_to_fp(rtems_libio_t *iop)
@@ -283,8 +280,10 @@ rtems_bsd_error_to_status_and_errno(int error)
}
#endif /* __rtems__ */
+#ifndef __rtems__
#define f_cdevpriv f_vnun.fvn_cdevpriv
#define f_advice f_vnun.fvn_advice
+#endif /* __rtems__ */
#define FOFFSET_LOCKED 0x1
#define FOFFSET_LOCK_WAITING 0x2