yelni...@tutamail.com, le mar. 26 août 2025 12:33:44 +0200, a ecrit:
> Hello Samuel,
> 
> Something like this fixes the D_WOULD_BLOCK errno for me.
> --8<---------------cut here---------------start------------->8---
> diff --git a/trans/streamio.c b/trans/streamio.c
> index e42ff908..93057146 100644
> --- a/trans/streamio.c
> +++ b/trans/streamio.c
> @@ -1049,6 +1049,8 @@ device_read_reply_inband (mach_port_t reply, 
> kern_return_t errorcode,
>  
>    input_pending = 0;
>    err = errorcode;
> +  if (err == D_WOULD_BLOCK)
> +    err = EWOULDBLOCK;

Don't we rather want to set it to 0?

If we leave err non-0, the rest of the function will call dev_close. I
don't think we want to close the file just on a D_WOULD_BLOCK
notification?

>    if (!err)
>      {
>        if (datalen == 0)
> --8<---------------cut here---------------end--------------->8---
> 
> 
> This error is then returned by the initial check for the global error in 
> dev_read.

But it's not an error, it just tells that there is currently nothing to
read. If nowait is 0, we still want to enter the wait loop.

> One other thing that I found is that the "last" line in the kernel log is 
> missing a terminating newline. Is there a way to add it?

That might be related.

Samuel

Reply via email to