[so2] [Linux][Tema1] Sincronizare interceptor

Liviu Chircu liviu.chircu at gmail.com
Tue Mar 12 21:40:00 EET 2013


On 03/12/2013 09:36 PM, Alexandru Juncu wrote:
> 2013/3/12 Mihail Costea <mihail.costea90 at gmail.com>:
>> 2013/3/12 Alexandru Juncu <alexj at rosedu.org>:
>>> 2013/3/12 Mihail Costea <mihail.costea90 at gmail.com>:
>>>> Fie urmatorul caz de utilizare:
>>>>
>>>> Un syscall este interceptat de catre modulul nostru.
>>>>
>>>> La un moment dat o functie apeleaza acest syscall, dar fix inainte de
>>>> a obtine pointer-ul la functia syscall-ului original primim
>>>> deinterceptarea
>>>> acestui syscall.
>>>> Cum tratam acest caz? Pur si simplu rulam sycall-ul original in
>>>> continuare sau returnam o eroare?
>>>>
>>> Cred că ar trebui să ai un lock pe tabelă în momentul acela.  Adică
>>> cât faci operațiuni de modificare a unui apel de sistem ar trebui să
>>> te asiguri că nu sunt folosite informatiile ce se modifică.
>>> _______________________________________________
>>> http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii
>> Am asta, ma gandeam ce ar fi sa se intample daca interceptorul e
>> preemptat inainte de a obtine lock-ul (adica intra in functie dar nu
>> ia lock-ul) si in locul lui vine apelul de deinterceptare si astfel se
>> elimina anumite date despre apelul de sistem care ar trebui pentru
>> rularea in interceptor.
> Prin interceptor te referi la funcția hander pentru un apel
> interceptat care înlocuiește handerul original și care apelează la
> rândul ei handlerul original, da? (just to be on the same page)
>
> OK, să zicem că avem cazul tău. Intră în funcție dar încă nu ia
> lock-ul pentru lista de pid-uri interceptate. Între timp vine cererea
> de deinterceptare și pid-ul/apelul este scos din listă. Revine înapoi
> rândul funcției interceptor care continuă rularea. Interceptorul ia
> lock-ul și parcurge lista (sigur altcineva nu va modifica lista pentru
> că e locked). Caută pid în listă și nu îl va găsi, prin urmare va ieși
> fără să mai facă nimic. Iese din functie după ce a cedat lock-ul și
> viața merge mai departe :P Da, am făcut o căutare inutilă, dar nu s-a
> blocat nimic.
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii
Bine, o să facă totuși o chestie minoră... va apela mai departe "the 
real" syscall.


More information about the so2 mailing list