Hi Takashi,

There's a minor style thingy and one question...

On Jan 21 12:15, Takashi Yano wrote:
> +++ b/winsup/cygwin/sigproc.cc
> @@ -742,6 +742,12 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
>        memcpy (p, si._si_commune._si_str, n); p += n;
>      }
>  
> +  unsigned cw_mask;
> +  if (pack.si.si_signo == __SIGFLUSHFAST)
> +    cw_mask = 0;
> +  else
> +    cw_mask = cw_sig_restart;
> +

This could be a one-liner, unsigned cw_mask = ... ? ... : ...;

>    DWORD nb;
>    BOOL res;
>    /* Try multiple times to send if packsize != nb since that probably
> @@ -751,8 +757,7 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
>        res = WriteFile (sendsig, leader, packsize, &nb, NULL);
>        if (!res || packsize == nb)
>       break;
> -      if (cygwait (NULL, 10, cw_sig_eintr) == WAIT_SIGNALED)
> -     _my_tls.call_signal_handler ();
> +      cygwait (NULL, 10, cw_mask);

This bugs me a bit.  While your solution nicely wraps the entire
timer problem into cygwait(), the downside is that each invocation
of cygwait() creates its own timer. Theoretically, given this is in a
loop with up to 100 iterations, you have up to 100 additional timer
create/destroy sequences.

So the question is, do you think this matters at all in this scenario,
given we're in a 10 ms wait state anyway?

If you think that's not an issue, feel free to apply the patch with
just the one-liner above.


Thanks,
Corinna

Reply via email to