[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Calling 'select' from emacs_gnutls_pull
From: |
Eli Zaretskii |
Subject: |
Re: Calling 'select' from emacs_gnutls_pull |
Date: |
Fri, 22 Feb 2013 14:36:46 +0200 |
> From: address@hidden (Claudio Bley)
> Date: Fri, 22 Feb 2013 12:15:36 +0100
>
> However, applying the obvious patch:
>
> --- >8 ---
> --- src/w32.c Thu Feb 21 14:35:43 2013
> +++ ../build/src/w32.c Fri Feb 22 08:32:35 2013
> @@ -7837,27 +7837,9 @@
>
> err = errno;
>
> + /* Translate the WSAEWOULDBLOCK alias EWOULDBLOCK to EAGAIN. */
> if (err == EWOULDBLOCK)
> - {
> - /* Set a small timeout. */
> - timeout = make_emacs_time (1, 0);
> - FD_ZERO (&fdset);
> - FD_SET ((int)fd, &fdset);
> -
> - /* Use select with the timeout to poll the selector. */
> - sc = select (fd + 1, &fdset, (SELECT_TYPE *)0, (SELECT_TYPE *)0,
> - &timeout, NULL);
> -
> - if (sc > 0)
> - continue; /* Try again. */
> -
> - /* Translate the WSAEWOULDBLOCK alias EWOULDBLOCK to EAGAIN.
> - Also accept select return 0 as an indicator to EAGAIN. */
> - if (sc == 0 || errno == EWOULDBLOCK)
> - err = EAGAIN;
> - else
> - err = errno; /* Other errors are just passed on. */
> - }
> + err = EAGAIN;
>
> emacs_gnutls_transport_set_errno (process->gnutls_state, err);
>
>
> --- >8 ---
>
> and made a few tests using POP3 and IMAP connections over TLS and
> HTTPS connections. Works good.
That's good news.
> Average for with-select key over 3 runs
>
> Version Number: Windows NT 5.1 (Build 2600)
> Exit Time: 1:00 am, Monday, January 1 1601
> Elapsed Time: 0:00:35.208
> Process Time: 0:00:05.822
> System Calls: 659366
> Context Switches: 138074
> Page Faults: 61507
> Bytes Read: 80719977
> Bytes Written: 320584
> Bytes Other: 908395
>
>
> Average for without-select key over 3 runs
>
> Version Number: Windows NT 5.1 (Build 2600)
> Exit Time: 1:00 am, Monday, January 1 1601
> Elapsed Time: 0:00:33.796
> Process Time: 0:00:06.166
> System Calls: 857893
> Context Switches: 140154
> Page Faults: 69061
> Bytes Read: 99353998
> Bytes Written: 2017152
> Bytes Other: 1175082
The times look comparable, but I'm confused why byte counts are so
much different. Is there a good explanation to that?
Anyway, AFAIU, your tests indicate that it would be okay to install
the above changes on the development trunk, right?
Thanks for your valuable feedback.