usb hotplug usb-serial und remove device

Michael Westermann michael at dvmwest.de
Mon Jul 28 14:30:17 CEST 2008


Hallo,

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.


		
	while(1) {
		FD_ZERO(&rfds);
		FD_SET(st->fd, &rfds);
		FD_SET(up->sock,&rfds);
		ret = select(sel_fd, &rfds, NULL, NULL, &tv);
		if (ret < 0) {
			pos_trace_vlog("Select %d  errno %d\n", ret , errno);
			pos_trace_flush();
		}
		pthread_testcancel();

		if (ret>0) {
			if (FD_ISSET(st->fd, &rfds)) {
				len = read(st->fd, (char *) buff, sizeof(buff));
				if (len <= 0) {
					pos_trace_vlog("read %d %d  errno %d\n", len, ret , errno);
					pos_trace_flush();
				}

	....

ergibt 

read 0 1 errno 0
read 0 1 errno 0
u.s.w

der select kommt auch sofort zurück ...

Der Devive Eintrag /dev/ttyUSB0 wird erst nach dem schliessen des Filedescriptors gelöscht.

Weiss jemand wie ich im Programm sinnvollerweise erkennen kann ob ein 
usb-serial device removed ist?

Gruss Michael



More information about the Linux mailing list