[PATCH] iochannel: Avoid unnecessary wakeup after successful write

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 14, 2013 at 12:56 PM, Tanu Kaskinen
<tanu.kaskinen at linux.intel.com> wrote:
> On Thu, 2013-06-13 at 14:26 +0200, David Henningsson wrote:
>> To save some CPU (in low latency scenarios), don't re-enable the
>> "writable" event after it has succeeded. It is very likely the next
>> write will succeed right away too.
>>
>> This means that we always need to handle EAGAIN/EWOULDBLOCK as a
>> successful write of 0 bytes, so I also verified that all callers to
>> pa_iochannel_write handled this correctly.
>>
>> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
>
> Thanks, applied.
>
>> diff --git a/src/pulsecore/ioline.c b/src/pulsecore/ioline.c
>> index a18188d..e4d2604 100644
>> --- a/src/pulsecore/ioline.c
>> +++ b/src/pulsecore/ioline.c
>> @@ -351,10 +351,7 @@ static int do_write(pa_ioline *l) {
>>
>>      while (l->io && !l->dead && pa_iochannel_is_writable(l->io) && l->wbuf_valid_length > 0) {
>>
>> -        if ((r = pa_iochannel_write(l->io, l->wbuf+l->wbuf_index, l->wbuf_valid_length)) <= 0) {
>> -
>> -            if (r < 0 && errno == EAGAIN)
>> -                break;
>> +        if ((r = pa_iochannel_write(l->io, l->wbuf+l->wbuf_index, l->wbuf_valid_length)) < 0) {
>>
>>              if (r < 0 && errno != EPIPE)
>
> r is always less than zero here, so I removed the first condition.
>
> --
> Tanu

Totem does not play with this patch applied. GNOME Shell also suffers
from hangs.

Reverting it restores operation.


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux