summaryrefslogtreecommitdiffstats
path: root/sys/miscfs/fifofs
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1997-12-13 12:58:09 +0000
committerbde <bde@FreeBSD.org>1997-12-13 12:58:09 +0000
commit54238221e6a541bf1e962de6aba141894a7f5aa2 (patch)
treeaa022a634976ca05a3df2dcc83e94bd84f4b9b2c /sys/miscfs/fifofs
parent6593562cbef9558494791dfc474556ed4f658041 (diff)
downloadFreeBSD-src-54238221e6a541bf1e962de6aba141894a7f5aa2.zip
FreeBSD-src-54238221e6a541bf1e962de6aba141894a7f5aa2.tar.gz
Restored fifo_pathconf() from rev.1.32. vop_stdpathconf() is too
general to be of much use. Using it here weakened the _PC_MAX_CANON, _PC_MAX_INPUT and _PC_VDISABLE cases. fifo_pathconf() is not quite correct either. _PC_CHOWN_RESTRICTED and _PC_LINK_MAX should be handled by the host file system. For directories, the host file system should let us handle _PC_PIPE_BUF.
Diffstat (limited to 'sys/miscfs/fifofs')
-rw-r--r--sys/miscfs/fifofs/fifo_vnops.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/sys/miscfs/fifofs/fifo_vnops.c b/sys/miscfs/fifofs/fifo_vnops.c
index 64b38af..ba63031 100644
--- a/sys/miscfs/fifofs/fifo_vnops.c
+++ b/sys/miscfs/fifofs/fifo_vnops.c
@@ -31,11 +31,12 @@
* SUCH DAMAGE.
*
* @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95
- * $Id: fifo_vnops.c,v 1.37 1997/10/27 15:33:04 bde Exp $
+ * $Id: fifo_vnops.c,v 1.38 1997/12/05 19:55:46 bde Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/unistd.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/malloc.h>
@@ -71,6 +72,7 @@ static int fifo_ioctl __P((struct vop_ioctl_args *));
static int fifo_poll __P((struct vop_poll_args *));
static int fifo_inactive __P((struct vop_inactive_args *));
static int fifo_bmap __P((struct vop_bmap_args *));
+static int fifo_pathconf __P((struct vop_pathconf_args *));
static int fifo_advlock __P((struct vop_advlock_args *));
@@ -92,7 +94,7 @@ static struct vnodeopv_entry_desc fifo_vnodeop_entries[] = {
{ &vop_mkdir_desc, (vop_t *) fifo_badop },
{ &vop_mknod_desc, (vop_t *) fifo_badop },
{ &vop_open_desc, (vop_t *) fifo_open },
- { &vop_pathconf_desc, (vop_t *) vop_stdpathconf },
+ { &vop_pathconf_desc, (vop_t *) fifo_pathconf },
{ &vop_poll_desc, (vop_t *) fifo_poll },
{ &vop_print_desc, (vop_t *) fifo_print },
{ &vop_read_desc, (vop_t *) fifo_read },
@@ -483,6 +485,34 @@ fifo_print(ap)
}
/*
+ * Return POSIX pathconf information applicable to fifo's.
+ */
+int
+fifo_pathconf(ap)
+ struct vop_pathconf_args /* {
+ struct vnode *a_vp;
+ int a_name;
+ int *a_retval;
+ } */ *ap;
+{
+
+ switch (ap->a_name) {
+ case _PC_LINK_MAX:
+ *ap->a_retval = LINK_MAX;
+ return (0);
+ case _PC_PIPE_BUF:
+ *ap->a_retval = PIPE_BUF;
+ return (0);
+ case _PC_CHOWN_RESTRICTED:
+ *ap->a_retval = 1;
+ return (0);
+ default:
+ return (EINVAL);
+ }
+ /* NOTREACHED */
+}
+
+/*
* Fifo advisory byte-level locks.
*/
/* ARGSUSED */
OpenPOWER on IntegriCloud