Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Nov 1995 09:48:45 +0100 (MET)
From:      grog@lemis.de (Greg Lehey)
To:        bde@zeta.org.au (Bruce Evans)
Cc:        hackers@freebsd.org (FreeBSD Hackers)
Subject:   Re: linux' mknod and named pipes.
Message-ID:  <199511180848.JAA16883@allegro.lemis.de>
In-Reply-To: <199511162213.JAA05714@godzilla.zeta.org.au> from "Bruce Evans" at Nov 17, 95 09:13:33 am

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans writes:
> 
> >>  > It runs and is playable but the sound doesn't work
> >>  > ktrace shows it fails trying to make a pipe in /tmp with
> >>  > mknod().  FreeBSD's mknod is different enough to not
> >>  > let this work.  Any ideas?
> >>
> >> Sure, turn mknod(arg,arg1,0) into a bsd mkfifo call anything else for now
>                                        ^^^POSIX
> >> just pass it thru to mknod 8)
> 
> >Is there any good reason why we shouldn't modify mknod to make a fifo
> >when called with the appropriate parameters?
> 
> The same reason we shouldn't modify thousands of other system calls to be
> compatible with thousands of other systems: it takes longer and gives
> worse results.

I think that bears discussion.

1.  It takes longer:

--- vfs_syscalls.c      1995/11/14 09:19:16     1.40
+++ vfs_syscalls.c      1995/11/18 08:45:43
@@ -757,6 +757,13 @@
        int error;
        struct nameidata nd;
 
+       if (ISFIFO (uap->mode))
+         {
+         struct mkfifo_args args;
+         args.path = uap->path;
+         args.mode = uap->mode;
+         return mkfifo (p, args);
+         }
        error = suser(p->p_ucred, &p->p_acflag);
        if (error)
                return (error);

    OK, I haven't tested this, but it's got to be something like it.
    In the normal case, there's a single 'if' involved.

2.  It gives worse results.  How?  Why?

Greg




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511180848.JAA16883>