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 = ""
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
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies