edge-triggered IRQ
Jan Kasprzak
kas na informatics.muni.cz
Úterý Červen 16 13:48:21 CEST 1998
Dobry den,
nejprve bych chtel podekovat vsem, kdo se mi snazili pomoci.
Problem nakonec byl jinde - kvuli chybe v mem driveru posilala ta karta
preruseni jeste driv, nez jsem je mohl zachytit (pred skoncenim DMA).
Ted uz to zda se funguje.
Martin Mares:
: > linux/arch/i386/io_apic.c obsahuje sice neco o edge/level-triggered
: > prerusenich, ale pokud tomu rozumim, APIC je pouze na SMP systemech.
:
: Ano. A mimochodem, ve kterem kernelu tyto problemy pozorujes?
2.1.10[35], asi i nejake starsi - uz se v tom vrtam asi mesic.
: Pouziva se nekde v onom driveru disable_irq()?
Ne. K cemu vubec je disable_irq() - da se to pouzit k zamykani
kritickych sekci driveru lepe, nez spin_lock_irqsave(muj_zamek, flags)
/spin_unlock_irqrestore(muj_zamek, flags)?
: > Pokud je opravdu problem v casovani, muzu znacnou cast
: > tx_interrupt() prepsat jako bottom half. Vi nekdo, jak se definuje
: > a pouziva bottom half rutina?
:
: Nedelal bych to primo jako bottom half, protoze tech je v celem kernelu
: k dispozici neprijemne malo. Podstatne rozumejsi je vyuzit IMMEDIATE_BH
: -- staci vyrobit strukturu tq_struct, do ni si dat pointer na svoji
: funkci, zavolat queue_task(&dotycna_struktura, tq_immediate) a pak
: mark_bh(IMMEDIATE_BH).
No a je mi vubec bottom half k necemu? Moje prerusovaci rutina
v podstate jen zamkne strukturu, ktera popisuje dane zarizeni, zmeni
interni status, provede asi dve i/o operace, odemkne, a pak podle toho,
jestli jde o zacatek nebo konec prenosu budto nastartuje DMA
nebo probudi nejakou frontu procesu (wake_up_interruptible). Kod na
3x30 radku (start tx, start rx, konec prenosu). Asi nejvic tam budou
zabirat ty I/O operace - zvlaste kdyz je to na sbernici ISA. Ale i tak
je to tak 10-15 I/O operaci (vcetne konfigurovani DMA kontroleru).
Vlada Michl:
: Po prijeti preruseni je treba rict radici preruseni, aby povolil dalsi
: (myslim ze se ma poslat 20h na I/O 20H).
: Jen nevim, zda se to musi v jadre delat explicitne, nebo to dela samo.
Ja si myslim, ze tohle dela jadro samo nekde v arch/i386/irq.c.
-Yenya
--
\ Jan "Yenya" Kasprzak <kas at fi.muni.cz> http://www.fi.muni.cz/~kas/
\\ PGP: finger kas at aisa.fi.muni.cz 0D99A7FB206605D7 8B35FCDE05B18A5E //
\\\ Czech Linux Homepage: http://www.linux.cz/ ///
If there are race conditions in programs fix them. The "my programs suck fix
something else" mentality leads you to things like Java. -- Alan Cox
Další informace o konferenci Linux