因為不知道 spin_lock_irqsave 的用法
所以我自己寫了一個小module測試一下
#include <linux/init.h>
#include <linux/module.h>
//#include <linux/list.h>
//#include <linux/vmalloc.h>
#include <linux/spinlock.h>
#include <asm/spinlock.h>
static int __init my_module_init(void)
{
printk("enter spinlock_test.....................\n");
spinlock_t my_lock = SPIN_LOCK_UNLOCKED;
unsigned long flags;
spin_lock_irqsave(&my_lock, flags);
printk("the flags is %lu \n",flags);
spin_unlock_irqrestore (&my_lock, flags);
// spin_lock(&my_lock);
// spin_unlock(&my_lock);
}
static void __exit my_module_exit(void)
{
printk("spinlock_test unload\n");
}
module_init(my_module_init);
module_exit(my_module_exit);
但編譯成功後 我要insmod時會出現一個
insmod: error inserting 'spinlock_test.ko': -636854376 Function not implemented
我在google 找好久也找不到答案 煩請幫忙
還有就是
spin_lock_irq
spin_lock_irqsave 之間的用法差在哪
我知道一個有save cpu 現在的flags 但是為什麼什麼情況下我必須要save flag
而又如何知道我不必要save flag 而使用 spin_lock_irq
兩個問題煩請幫忙 謝謝