Divacky Roman napsal/wrote, On 02/26/07 10:47:
>> Driver ulpt nema interfejs pre select(), ktory je pouzivany v CUPS. CUPS

> select() je 
...
 > per-class operace implementovana pro ruzne filesystemy atp.

> kdo a co chape blbe?

        Rekl bych, ze se mylis v tvrzeni "poll() je operace implementovana pro 
ruzne filesystemy". Ve skutecnosti plati, ze "poll() je operace 
implementovana pro ruzna zarizeni" - a to uz je skoro totez, co tvrdit, 
ze poll() (a tedy select) je hw-specific. A to uz je odpoved na tvrzeni:

> se mi nezda ze by select() byl nejak hw specific.

        Tady nekde patrne je koren problemu.

        Konkretne hardware "tiskarna pres USB" rizena ovladacem "ulpt" nema 
poll() implementovany a pouziva genericky a prazdny nopoll().

        Popravde receni mi neni uplne jasne, jak by mohl byt poll generickou 
rutinou nezavislou na zarizeni a hardware. Jak chces na neznamem 
zarizeni obecne zjistit, jestli jsou v nejakem obecnem datovem kanale 
pripravena data na cteni, kdyz samotny pojem "datovy kanal" neni 
genericky a zavisi na konkretnim ovladaci (a tedy hardware) ?

        Jen si ale s odstupem casu prestavam myslet, ze v ulpt je select() 
implemntovan tak, ze blokuje jak to naznacoval puvodni prispevek. Spis 
to bude stejne jako v ugen - on neblokuje, naopak, okamzite ohlasi 
pripravenost deskriptoru - a zablokuje se tedy az nasledne zavolany read().

        Spravna implementace neblokujiciho cteni na FreeBSD's ULPT a UGEN - a 
asi i dalsich USB pouzivajicich genericke USB rutiny - proste nevede 
pres select, ale pres ioctl USB_SET_TIMEOUT a blokujici read() - on se 
stejne pozadavek na neblokujici operace s descriptorem tise ignoruje a 
obsluhuje se jako blokujici. Jednoduse receno - neblokujici operace 
nejsou pro tato zarizeni k dispozici. Misto nich lze pouzit "blokujici 
cteni s timeoutem". Dokonce bych mozna odvazne rekl, ze ono to snad 
obecne ani lepe nejde (cimz nepopiram, ze v konkretnich pripadech to 
muze byt jinak).


                                        Dan



-- 
Dan Lukes                                   SISAL MFF UK
AKA: [EMAIL PROTECTED], [EMAIL PROTECTED],[EMAIL PROTECTED]
-- 
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem