Tiskarna HP Business InkJet 1100
Divacky Roman
xdivac02 at stud.fit.vutbr.cz
Mon Feb 26 11:53:17 CET 2007
On Mon, Feb 26, 2007 at 11:27:06AM +0100, Dan Lukes wrote:
> 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:
nedival jsem se na poll() (ale predpokladam ze to bude fungovat uplne stejne)
select() vola kern_select() ktery vola selscan() ktery vola fo_poll(), coz je operace
definovana v struct fileops{} coz je fs-specific
kde delam chybu? navic si nemyslim, ze by bylo nutne aby hw nejak sdeloval pollu
ze ma pripraveny data. proc by to nemohlo fungovat tak ze hw nacte data, "nejak" (
interrupt thread, PIO, jakkoliv) je supne do bufferu ktery je genericky pro VFS
a poll() operuje nad checkovanim tech bufferu ve VFS? jsou tam mensi implementacni
detaily jakoze poll nad socketama musi delat principielne neco kapanek jineho
nez poll nad lokalnim souborem. ale podstatou je ze to operuje nad generickou vrstvou
a ne nad hw driverem.
pokud v tedle analyze mam chybu tak ocenim kdyz mi dane napises kde, dik :)
> > 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().
no... nemuze todle byt rozdil mezi poll() a select(), ze poll() je fakt per
character device a select() je jak popisuju vyse obecny? pac je fakt ze
cdevsw obsahuje pointer na poll rutinu. neni mi ale jasne proc by se to takhle
melo lisit.
> 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) ?
viz vyse
> 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().
ja si myslim ze ten select() funguje obecne na VFS vrstve zatimco ten poll()
je fakt character device specific. netusim proc to tak je ale rekl bych ze
je to fakt ;(
kazdoapdne. pokud CUPS pouziva select() tak to nevysvetluje proc by chybejici
poll() mel vadit
More information about the Users-l
mailing list