[so2] [Linux][Tema1] Eliminare modul - sincronizare / kfree
Vlad Dogaru
ddvlad at herebedragons.ro
Wed Mar 13 09:43:51 EET 2013
On Tue, Mar 12, 2013 at 09:12:47PM +0200, Mihail Costea wrote:
> 2013/3/12 Alexandru Juncu <alexj at rosedu.org>:
> > 2013/3/12 Mihail Costea <mihail.costea90 at gmail.com>:
> >> Salut,
> >>
> >> La eliminare modul mai este nevoie de sincronizare pentru zona de date
> >> globala, gen liste / vector?
> >
> > La ce sincronizare te referi?
> >
>
> Fie urmatorul caz de utilizare:
> Se apeleaza propriul syscall (cu MY_SYSCALL_NO) de catre un program
> aleatoriu (test de exemplu), dar inainte de incheiere apel se ruleaza
> rmmod sci. In acest caz mai e nevoie de sincronizare? Sau mai exact ce
> se intampla cu tot ce tine de modul.
Indiferent de cine altcineva mai rulează, la rmmod trebuie să faci
următoarele lucruri (cel puțin):
* restaurezi toate syscall-urile la valoarea lor originală;
* ștergi (și eliberezi) toate elementele listei de procese monitorizate;
Cele două operații trebuie făcute respectând regulile de locking pe care
le impui pentru restul modulului. Dacă altcineva apelează syscall-ul
'nostru' cu puțin timp înainte, acest syscall probabil va lua unul sau
mai multe lock-uri. Procesul rmmod nu are de ales decât să aștepte până
când sunt eliberate (via spin_lock or friends).
Hope this helps,
Vlad
More information about the so2
mailing list