Tiskarna HP Business InkJet 1100
Dan Lukes
dan at obluda.cz
Mon Feb 26 11:27:06 CET 2007
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: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz
More information about the Users-l
mailing list