Erkki Arus
2004-08-10 08:42:47 UTC
Tervist!
Jaman siin katkestuste töötlusega ühes draiveris, ja mitte ei saa aru;
kui teha
local_irq_disable();
...
teen midagi muud
...
local_irq_enable();
siis kas kõik riistvaralised katkestused, mis tekivad
local_irq_disable() ja local_irq_enable() vahel, visatakse lihtsalt
minema, unustatakse ära, või siiski järjestatakse nad kuidagi ning peale
local_irq_enable() -t käivitatakse vastav katkestuse töötlusfunktsioon?
Analoogne küsimus tasklet -de kohta: kas tasklet, mis on
tasklet_schedule() abil pandud järjekorda peale seda, kui kusagil mujal
on eelnevalt väljakutsutud funktsioon spin_lock_bh(), käivitatakse peale
spin_unlock_bh() väljakutset?
Andke nüüd andeks, kui on väga rumalad küsimused, aga uurin siin kerneli
koodi ja loen dokumentatsiooni ning mitte ei saa aru.
Linux'i kerneli versiooniks on 2.4.20, arhidektuur on i386 põhine ning
süsteemis on üks ainus protsessor.
Jaman siin katkestuste töötlusega ühes draiveris, ja mitte ei saa aru;
kui teha
local_irq_disable();
...
teen midagi muud
...
local_irq_enable();
siis kas kõik riistvaralised katkestused, mis tekivad
local_irq_disable() ja local_irq_enable() vahel, visatakse lihtsalt
minema, unustatakse ära, või siiski järjestatakse nad kuidagi ning peale
local_irq_enable() -t käivitatakse vastav katkestuse töötlusfunktsioon?
Analoogne küsimus tasklet -de kohta: kas tasklet, mis on
tasklet_schedule() abil pandud järjekorda peale seda, kui kusagil mujal
on eelnevalt väljakutsutud funktsioon spin_lock_bh(), käivitatakse peale
spin_unlock_bh() väljakutset?
Andke nüüd andeks, kui on väga rumalad küsimused, aga uurin siin kerneli
koodi ja loen dokumentatsiooni ning mitte ei saa aru.
Linux'i kerneli versiooniks on 2.4.20, arhidektuur on i386 põhine ning
süsteemis on üks ainus protsessor.
--
Lugupidamisega Erkki Arus
Lugupidamisega Erkki Arus