usb hotplug usb-serial und remove device
Jan 'RedBully' Seiffert
redbully at cc.fh-luh.de
Mon Jul 28 18:06:29 CEST 2008
Michael Westermann wrote:
> Hallo Andre,
>
> On Mon, Jul 28, 2008 at 02:58:27PM +0200, Andre Landwehr wrote:
>> On Mon, 28 Jul 2008 14:55:57 +0200
>> Andre Landwehr <andrel at cybernoia.de> wrote:
>>
>>> On Mon, 28 Jul 2008 14:30:17 +0200
>>> Michael Westermann <michael at dvmwest.de> wrote:
>>>
>>>> ich habe folgende Problematic. Ich habe ein Gerät welches an ttyUSB0
>>>> hängt via usb-serial hängt. Das ganze läuft auf debian oldstable ak
>>>> sarge und kernel 2.6.22.
>>>>
>>>> In einer Schleife werden via select und read date vom Gerät geliefert.
>>>> Wenn ich das USB Gerät vom Bus abziehe und wieder dran stecke.
>>>> Bekomme ich vom select angezeigt dass daten vorhanden sind.
>>>> der read kommt dann mit 0 zurück.
>>>> (...code...)
>>> Es verhält sich doch eigentlich alles so wie es soll. select() sagt
>>> dir, daß auf einem der Filedescriptoren was passiert ist, und wenn
>>> read() mit 0 zurückkommt, heißt das end-of-file. Genau den Fall würde
>>> ich abfangen.
>> ...und nebenbei bemerkt, select() zeigt dir ja nicht an, daß Daten da
>> sind, sondern nur, daß dein read() nicht blockieren wird...
>
> jou mache ich jetzt auch so zur sicherheit mache ich ein
>
> tcgetattr und wenn der negativ ist dann war ein Disconnect.
>
Brauchst du eigentlich nicht. Wenn read mit 0 wiederkommt und kein errno
gesetzt ist, dann ist das EOF.
Du solltest also eher noch errno auf EINTR und EAGAIN testen, dass
heist, das du es (spaeter) noch mal versuchen sollst und das 0 jetzt
nicht unbedingt heisst EOF. Also quasi:
len = read/recv/recvfrom()
if(len <= 0)
{
if(errno == 0)
// EOF
else if(errno != EINTR && errno != EAGAIN)
// wirkliches Problem
else
// retry
}
Wie man die if's und else sortiert, und zu was das dann fuehrt, ist dann
Geschmacksache, wie dringend man an einem Filedescriptor festhalten
moechte, welche "retry-Strategie" es gibt.
> Gruss Michael
Gruss
Jan
--
Aufstehen! Überleben! Schlafen gehen!
More information about the Linux
mailing list