From a1fa5f3147516f8fa8066807a6819a4847ed332e Mon Sep 17 00:00:00 2001 From: phk Date: Thu, 18 Nov 2004 17:18:11 +0000 Subject: Add dropped implementation of ioctl for fifos. --- sys/fs/fifofs/fifo_vnops.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'sys/fs/fifofs') diff --git a/sys/fs/fifofs/fifo_vnops.c b/sys/fs/fifofs/fifo_vnops.c index 6ec44ca..387a9e6 100644 --- a/sys/fs/fifofs/fifo_vnops.c +++ b/sys/fs/fifofs/fifo_vnops.c @@ -566,8 +566,27 @@ fifo_close_f(struct file *fp, struct thread *td) static int fifo_ioctl_f(struct file *fp, u_long com, void *data, struct ucred *cred, struct thread *td) { + struct fifoinfo *fi; + struct file filetmp; /* Local, so need not be locked. */ + int error; - return (vnops.fo_ioctl(fp, com, data, cred, td)); + error = ENOTTY; + fi = fp->f_data; + if (com == FIONBIO) + return (0); + if (fp->f_flag & FREAD) { + filetmp.f_data = fi->fi_readsock; + filetmp.f_cred = cred; + error = soo_ioctl(&filetmp, com, data, cred, td); + if (error) + return (error); + } + if (fp->f_flag & FWRITE) { + filetmp.f_data = fi->fi_writesock; + filetmp.f_cred = cred; + error = soo_ioctl(&filetmp, com, data, cred, td); + } + return (error); } static int -- cgit v1.1