[pso] Tema 2 Linux - probleme handler intrupere

Vlad Albulescu mrkane27 at yahoo.com
Mon Apr 6 10:28:55 EEST 2009


Nu cred ca e chiar asa de simplu. The way you put it, pentru un FIFO gol si un buffer kernel gol, ar trebui sa se genereze intreruperi tot timpul, ceea ce nu cred ca se intampla, si nu pare o idee buna.
Presupunerea mea este ca se vor genera intreruperi cat timp in handler-ul ala se intampla ceva interesant, say outb()uri. Daca user-ul nu mai da write, la un moment dat se opresc si intreruperile.
So I'm guessing ca trebuie pus in write() un outb() de samanta, in cazul in care nu exista nicio transmisiune in desfasurare.


--- On Sat, 4/4/09, Daniel Baluta <daniel.baluta at gmail.com> wrote:
From: Daniel Baluta <daniel.baluta at gmail.com>
Subject: Re: [pso] Tema 2 Linux - probleme handler intrupere
To: "Proiectarea Sistemelor de Operare" <pso at cursuri.cs.pub.ro>
Date: Saturday, April 4, 2009, 3:11 PM

2009/4/4 ovidiu popa <ov.popa at gmail.com>:
> Pai cred ca exista o problema cu ce zici tu. In tema se specifica
> urmatoarele chestii :
>
> Driverul trebuie să folosească înteruperi atât pentru recepţie cât
şi pentru
> transmisie, pentru a reduce latenţa şi timpul de utilizare a
procesorului.
> De asemenea, apelurile read şi write trebuie să fie blocante. Temele
care nu
> respectă aceste cerinţe nu se iau în considerare.
>
> Din ce inteleg eu de aici, outb-urile trebuie date in handlerul de
> intrerupere. Am incercat sa dau outb-urile in write si intr-adevar merge.
> Dar nu cred ca solutia este una acceptabila deoarece in handler nu se face
> transmisia de date, doar receptia.
>
> Cum as putea din write sa generez o intrerupere pentru a intra in hadler
si
> sa trimit datele de aici?

Nu generezi din write nici o intrerupere. In write doar va trebui sa
iei date din userspace si sa le pui in bufferul
de write. Atat!
Daca ti-ai configurat bine registrii intreruperea de write se
genereaza singura cand exista loc de scris in bufferul controllerului
de seriala.

Astfel , in rutina de tratare a intreruperii citesti datele din
bufferul completat in rutina de write si le scrii in bufferul
controllerului de seriala.
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso



      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090406/a5eff147/attachment.html>


More information about the pso mailing list