From: Greg KH <greg@kroah.com>
To: Philip Oberstaller <Philip.Oberstaller@septentrio.com>
Cc: linux-serial@vger.kernel.org
Subject: Re: Printf hangs when internal buffer of driver is temporarily full
Date: Mon, 14 Jan 2013 08:19:42 -0800 [thread overview]
Message-ID: <20130114161942.GD14721@kroah.com> (raw)
In-Reply-To: <50F40403.9040000@septentrio.com>
On Mon, Jan 14, 2013 at 02:11:31PM +0100, Philip Oberstaller wrote:
> Hi,
>
> I'm writing a driver for the Exar's XR20M1280 SPI-based serial port
> using kernel version 3.4.17.
We can't take drivers for older kernel versions, why not write it for
3.8 and then backport it when finished?
> If a string, which is considerably longer than the driver's internal buffer
> (512 bytes), is written with printf/fprintf to the dedicated port, then the
> function call hangs after the driver's write_room function returns zero,
> which happens when the driver's internal buffer is temporarily full.
> I would have expected that the TTY layer or the libc implementation of
> printf would requery write_room automatically and thus would notice
> after a while that there is space again, but this doesn't seem to happen.
That's right, the printf call should return a "short" write, but really,
you should use write() and friends for tty ports, not fprintf, if at all
possible to handle this type of error better.
> Eventually the printf function returns after a very long timeout but without
> that the remaining characters have been printed.
>
> I based my code mainly on the ifx6x60-driver and I looked at other similar
> drivers as well, but I can't see that they are using a different strategy.
>
> In a dated driver book it was suggested that write_room and write should
> always return at least one. I could use busy waiting in the write function
> until there is space for at least one character, but I hope that there is
> a better solution around?!
I don't think so, sorry.
> This e-mail communication contains information that is confidential
> and may also be privileged.
<snip>
This type of footer really isn't good to have for public mailing list
posts, it directly goes against the fact that you sent this to thousands
of people in a public manner :)
thanks,
greg k-h
next prev parent reply other threads:[~2013-01-14 16:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-14 13:11 Printf hangs when internal buffer of driver is temporarily full Philip Oberstaller
2013-01-14 16:19 ` Greg KH [this message]
2013-01-14 19:36 ` Alan Cox
2013-01-15 14:23 ` Philip Oberstaller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130114161942.GD14721@kroah.com \
--to=greg@kroah.com \
--cc=Philip.Oberstaller@septentrio.com \
--cc=linux-serial@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.