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
participants (1)
-
Prajosh Premdas