[pso] spinlock

Andrei Stanescu reydan_ro at yahoo.com
Mon Mar 20 10:49:15 EET 2006


Mersi pentru raspuns. Problema rezolvata :)

Se pare ca intelesesem eu problema gresit cu spin_lock ...si ma asteptam ca al doilea proces sa stea in asteptare, nu sa fie dezactivata preemptivitatea kernel-ului.


Thanks again,
Andrei STANESCU

Adrian - Razvan Deaconescu <razvand at gmail.com> wrote: On 3/20/06, Andrei Stanescu <reydan_ro at yahoo.com> wrote: Este vreun trick pe care l-am ratat cu vederea? 
Eu fac spin_lock_init() in init_ module  si spin_lock si spin_unlock pe unde am resurse comune.

Problema e ca un al doilea proces care vine si incearca sa obtina lock-ul, imi genereaza la consola un mesaj "....already locked by...." si trece mai departe. 

Singurul impact pe care il au spinlock-urile pe un sistem uniprocesor este sa dezactiveze preeptivitatea kernel-ului. Astfel codul tau din modulul kernel plasat intre spin_lock si spin_unlock nu ar trebui sa fie intrerupt niciodata (si sa se faca replanificare in kernelspace). Singurele situatii de care imi dau seama in care ai putea gasi un spinlock deja acaparat este atunci cand 
 - ai uitat sa dai spin_unlock si procesul tau a fost replanificat pentru userspace, si vine un alt proces sau
 - faci un lock recursiv si incerci sa acaparezi cu un proces acelasi spinlock de doua ori

Sunt supozitii totusi pentru ca nu am o vedere clara a situatie tale (poate o mica bucata de cod ar fi fost utila). 

In capitolul 8 din Linux Kernel Development se prezinta amanuntit modul de functionare a spinlock-urilor si exemple de utilizare. Poate daca te uiti mai atent o sa descoperi problema.


 Am cautat mesajul si am gasit prin spinlock.h ca este un mesaj de debug (tine de CONFIG_DEBUG_SPINLOCK. 
Am #undef-uit define-ul si mesajul tot apare.

Degeaba faci undef la chestia aia. Cand a fost compilat kernel-ul toate acele macro-uri au fost incluse. Ce faci tu acolo cand faci undef este doar sa impiedici utilizarea macro-urilor in codul modulului tau. 



Razvan _______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso


		
---------------------------------
 Yahoo! Mail
 Use Photomail to share photos without annoying attachments.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20060320/fdcae497/attachment.html


More information about the pso mailing list