[pso] sincronizarea cu kernel thread-ul

Octavian Purdila pso@cursuri.cs.pub.ro
Wed, 28 Apr 2004 09:59:18 +0300


On Tuesday 27 April 2004 23:24, iana ionel cristian wrote:
> Pe undeva in enunt, apare :
>
> pentru o implementare corecta, va trebui sa pasati
> cereri kernel thread-ului asociat device-ului, si de
> asemenea sa va sincronizati cu acesta (sa asteptati
> terminarea anumitor cereri);
>
> Este ok daca astept terminarea TUTUROR cererilor ?
> Daca nu, care sunt cererile pe care nu este nevoie sa
> le astept.
>

Nu. Nu poti sa astepti terminarea unei cereri de IO de exemplu din rutina  
request (chiar daca tii io_request_lock sau nu; rutina request este apelata 
dintr-o functie defferable, deci intr-un context arbitrar, si nu ai voie sa 
faci sleep).

Practic, nu trebuie sa asteptati decat la conectarea si deconectarea unui 
disc. Aceste operatii trebuie sa se faca tot in kernel thread, pentru ca 
trebuie sa deschideti si sa inchideti fd/handle-ul fisierului. Deci va trebui 
sa pasati cumva kernel thread-ului aceste cereri, si va trebui sa asteptati 
un raspuns de la kernel thread (codul de eroare) ca sa stiti ce sa comunicati 
utilizatorului.

tavi