[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-usb
Subject:    Re: g_serial hangs on write when the cable is disconnected
From:       Laszlo Papp <lpapp () kde ! org>
Date:       2015-08-06 5:59:42
Message-ID: CAOMwXhMLe1LQhkPeHbQKA3TA+NpU9_XBdJ1o-Z0vDiwTd9Pqbw () mail ! gmail ! com
[Download RAW message or body]

On Wed, Aug 5, 2015 at 5:29 PM, Greg KH <greg@kroah.com> wrote:
> On Wed, Aug 05, 2015 at 04:40:21PM +0100, Laszlo Papp wrote:
>> On Wed, Aug 5, 2015 at 3:56 PM, Greg KH <greg@kroah.com> wrote:
>> > On Wed, Aug 05, 2015 at 11:05:56AM +0100, Laszlo Papp wrote:
>> >> Hi,
>> >>
>> >> The code below reproduces the issue. The code is intentionally kept
>> >> small, so it deliberately does not have error checking, et al.
>> >>
>> >> Now, my concern is that it blocks for the write operation if the cable
>> >> is disconnected. This is not inline with the /dev/ttyS* operation, for
>> >> instance. They would not block if I disconnected the serial cable.
>> >>
>> >> Is this a bug or feature? :-) If it turns out to be a feature, is it
>> >> better to use O_NONBLOCK if one does not want to use pthreads, etc?
>> >>
>> >> #include <sys/types.h>
>> >> #include <sys/stat.h>
>> >> #include <fcntl.h>
>> >>
>> >> int main()
>> >> {
>> >>     const char buf[] = "Hello World!\n";
>> >>     int fd = open("/dev/ttyGS0", O_RDWR | O_NONBLOCK);
>> >
>> > This line discipline is very different from the "traditional" tty line
>> > discipline, so it might not know anything about cable removals.
>> >
>> > good luck,
>> >
>> > greg k-h
>> > --
>>
>> Thank you for your prompt reply.
>>
>> Wow, I managed to mess it up in my original email! So, this code above
>> made it working, but without O_NONBLOCK, it was not working. Using
>> O_NONBLOCK is my current nasty workaround. As you are indicating it,
>> this does not quite feel right, does it! I am not sure what the right
>> thing would be to do in order to get write non-blocking for g_serial.
>> I hope that someone with more knowledge about it than me could help
>> out!
>
> I doubt the O_NONBLOCK setting does anything, this is a character
> device, with a very specific line discipline that works in a very
> specific way and assumes you know exactly how to talk to it and
> communicate with it properly.

At least, it puts me in the illusin then that it seems to unblock the
port when disconnected. That is why I decided to go for this for now.
I will follow your advice to look for a good example if I can find
one. Thanks.

> Why not look at some examples of userspace code that uses this
> connection properly to see how they do it?
>
> good luck,
>
> greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic