[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