• Jeff Dike's avatar
    uml: fix console writing bugs · c59dbcad
    Jeff Dike authored
    The previous console cleanup patch switched generic_read and generic_write
    from calling os_{read,write}_file to calling read and write directly.  Because
    the calling convention is different, they now need to get any error from errno
    rather than the return value.  I did this for generic_read, but forgot about
    generic_write.
    
    While chasing some output corruption, I noticed that line_write was
    unnecessarily calling flush_buffer, and deleted it.  I don't understand why,
    but the corruption disappeared.  This is unneeded because there already is a
    perfectly good mechanism for finding out when the host output device has some
    room to write data - there is an interrupt that comes in when writes can
    happen again.  line_write calling flush_buffer seemed to just be an attempt to
    opportunistically get some data out to the host.
    
    I also made write_chan short-circuit calling into the host-level code for
    zero-length writes.  Calling libc write with a length of zero conflated write
    not being able to write anything with asking it not to write anything.  Better
    to just cut it off as soon as possible.
    Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c59dbcad
line.c 19.6 KB