Subject: Re: struct emul modification
To: =?ISO-8859-1?Q?Jarom=EDr_Dolecek?= <jdolecek@netbsd.org>
From: Emmanuel Dreyfus <p99dreyf@criens.u-psud.fr>
List: tech-kern
Date: 06/07/2001 23:19:08
> This is the way I had in my mind when I proposed to do the Linux-specific
> SIGIO hacks in Linux-specific code. This diff has not been tested,
> but should give general idea :) This would need adjustment for newpipes,
> of course. I still think that emulation-wide EMUL_NO_BSD_ASYNCIO_PIPE
> flag is not right.

I'm still thinking about the fix for FreeBSD pipes (implements SIGIO to
the read size of the pipe but not the the write end) and for Linux and
SunOS sockets (same problem). I agree my fix is not good and your way is
better, but your way does not address all the emulation inconsistencies
we have. I was still hoping to propose something better.

Maybe The Right Way would be to have two SS_ASYNC flags: one for read
operations and the other for write operations. SS_ASYNC_R and
SS_ASYNC_W.

For NetBSD native pipes and sockets, requesting async I/O would set both
flags. For Linux sockets, it would set SS_ASYNC_R only, and so on...

Then we change sorwakeup, sowwakeup and sowakeup, and we use the
appropriate flag. And of course, we set SS_ASYNC_R or SS_ASYNC_W on
async requests in the emulation subsystem itself, not at the place it is
done currently

Opinion?

-- 
Emmanuel Dreyfus
p99dreyf@criens.u-psud.fr