spin_lock behavior

Prajosh Premdas premdas.prajosh at gmail.com
Wed Nov 2 09:53:25 EDT 2011


Hi

I wrote a sample module which looked like this and i expected the module to
hang as i have used 2 spin_lock simultaneously. But i find the print after
the second spin_lock being printed and the module works perfectly fine. Can
any body please help me in understanding this? I got this problem from a
driver i wrote and had a typo "spin_lock" instead of "spin_unlock" the
driver worked fine and i caught the mistake only during a review

*#include <linux/module.h>*
*#include <linux/spinlock.h>*
*
*
*struct sp_q {*
*spinlock_t spinlock;*
*uint8_t data;*
*};*
*
*
*static int __init sp_lck_init(void)*
*{*
*
*
*   struct sp_q test;*
*   *
*   /* Spin lock Init */*
*
*
*   spin_lock_init(&test.spinlock);*
*    *
*   printk("<1>Test start\n");*
*   *
*   spin_lock(&test.spinlock);*
*   test.data = 0;   *
*   spin_lock(&test.spinlock);   *
*   *
*   printk("<1>How come???\n");*
*   return 0;*
*
*
*}*
*
*
*static void __exit sp_lck_exit(void)*
*{*
*
*
*}*
*
*
*module_init(sp_lck_init);*
*module_exit(sp_lck_exit);*
*MODULE_LICENSE("GPL");*

-- 
Regards,

Prajosh Premdas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20111102/60a34bbd/attachment.html 


More information about the Kernelnewbies mailing list