While at it, maybe we need a /dev/bullshit linked to /dev/random??

This extra node looks like bullshit to me.

It is encouraging a large application to do a round-trip through the
kernel, for a rare occurance.

It should simply skip doing the round-trip through kernel.

What next? /dev/multiply -- you write two 32-bit values and then you can
read a new 32 bit value?

I see absolutely no point in wasting bytes on the root partition, or bytes
in the kernel, for this stupid idea.


Dave Voutila <d...@sisu.io> wrote:

> 
> 
> Crystal Kolipe <kolip...@exoticsilicon.com> writes:
> 
> > We currently don't implement the /dev/full device, which is present in
> > NetBSD, FreeBSD, and Linux.
> >
> > For those who haven't heard of it, it's basically the same as /dev/zero, but
> > writes to it always return ENOSPC.
> >
> > The lack of /dev/full on OpenBSD has previously caused minor issues with
> > third party software, for example:
> >
> > https://bugs.python.org/issue21934
> >
> 
> Is this really a problem with ports? That Python issue was related to a
> Python 2.7 unit test and from 2014.
> 
> > Adding support for /dev/full is trivial.  I've attached a patch for amd64,
> > if there is interest I can easily produce a set of patches for other archs.
> >
> > To create the device file, you'll need to do:
> >
> > # mknod -m 666 /dev/full c 2 5
> >
> > For those who are interested, I've written a more in-depth discussion about
> > memory special devices, including a proposal for another such new device,
> > /dev/fill:
> >
> > https://research.exoticsilicon.com/articles/memory_special_devices
> >
> > --- arch/amd64/amd64/mem.c.dist     Wed Mar 24 11:26:39 2021
> > +++ arch/amd64/amd64/mem.c  Thu Mar  2 11:10:30 2023
> > @@ -88,6 +88,7 @@
> >                     break;
> >             return (EPERM);
> >     case 2:
> > +   case 5:
> >     case 12:
> >             break;
> >  #ifdef APERTURE
> > @@ -165,9 +166,13 @@
> >                             uio->uio_resid = 0;
> >                     return (0);
> >
> > +           /* minor device 5 is /dev/full */
> >             /* minor device 12 is /dev/zero */
> > +           case 5:
> >             case 12:
> >                     if (uio->uio_rw == UIO_WRITE) {
> > +                           if (minor(dev)==5)
> > +                                   return (ENOSPC);
> >                             c = iov->iov_len;
> >                             break;
> >                     }
> 

Reply via email to