This shows you the differences between two versions of the page.
so2:teme:tema2:faq [2017/03/23 21:21] adrian.stanciu [2 - Aflarea adresei de bază] |
so2:teme:tema2:faq [2017/03/23 21:48] (current) adrian.stanciu [3 - Legătura între read/write și întreruperi] |
||
---|---|---|---|
Line 86: | Line 86: | ||
:?: Din câte am înțeles, în write copiez din userspace într-un write buffer local. Write Bufferul este scris pe serial cu outb în handlerul de intrerupere. În read copiez în userspace dintr-un read buffer local. Read bufferul este umplut cu date primite pe serială(inb) în handlerul de întrerupere. Cum se leagă exact funcțiile de read și write de întrerupere? Mie îmi intră o singură dată în întrerupere la inițializarea modulului. | :?: Din câte am înțeles, în write copiez din userspace într-un write buffer local. Write Bufferul este scris pe serial cu outb în handlerul de intrerupere. În read copiez în userspace dintr-un read buffer local. Read bufferul este umplut cu date primite pe serială(inb) în handlerul de întrerupere. Cum se leagă exact funcțiile de read și write de întrerupere? Mie îmi intră o singură dată în întrerupere la inițializarea modulului. | ||
- | :!: La sfârșitul fiecărei funcții write va trebui fie să reactivați întreruperile <code c>outb(0x00, IER); outb (0x03, IER);</code> fie activați întreruperea de empty buffer doar când există ceva în buffer-ul device-ului de scris. | + | :!: RDAI trebuie să fie activă cât timp buffer-ul de citire nu este plin. Funcția de read ar trebui să activeze RDAI după ce a luat date din buffer-ul de citire iar handler-ul de întrerupere să dezactiveze RDAI dacă buffer-ul de citire devine plin. |
+ | THREI trebuie să fie activă cât timp buffer-ul de scriere nu este gol. Funcția de write ar trebui să activeze THREI după ce a pus date în buffer-ul de scriere iar handler-ul de întrerupere să dezactiveze THREI dacă buffer-ul de scriere devine gol. | ||
==== 4 - Buffer circular ==== | ==== 4 - Buffer circular ==== |