linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
来源:互联网 发布:三星s7edge主题软件 编辑:程序博客网 时间:2024/05/29 19:08
spinlock.h
DEFINE_SPINLOCK
在kernel里面找到一个使用他的例子
获取锁
static inline void spin_lock(spinlock_t *lock)
{
raw_spin_lock(&lock->rlock);
}
static DEFINE_SPINLOCK(threads_lock);
struct our_data{
int count1;
int count2;
};
static struct our_data my_data;
#define MAX_KTHREAD 10
static struct task_struct *threads[MAX_KTHREAD];
static int thread_do(void *data)
{
printk("run ...\n");
while(!kthread_should_stop())
{
spin_lock(&threads_lock);
my_data.count1++;
my_data.count2 += 10;
spin_unlock(&threads_lock);
msleep(10);
}
return 0;
}
===============
如果我们不是编译时候初始化spinlock,而是运行时初始化他。
static spinlock_t threads_lock;
static void threads_lock_init(void)
{
//spin_lock_init
spin_lock_init(&threads_lock);
}
static __init int minit(void)
{
// printk("testpar= %#x.\n",testpar);
printk("call %s.\n",__FUNCTION__);
// other_function();
threads_lock_init();
if(create_threads())
{
cleanup_threads();
return -1;
}
return 0;
}
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之一
- linux内核锁机制-不可睡眠锁之RCU
- Linux内核中锁机制之原子操作、自旋锁
- LINUX内核之普通自旋锁
- Linux内核之自旋锁和信号量
- 内核部件之同步机制之自旋锁
- imx6q内核之自旋锁
- 内核同步机制之自旋锁&读/写锁
- Linux内核的同步机制---自旋锁
- 大话Linux内核中锁机制之原子操作、自旋锁
- 大话Linux内核中锁机制之原子操作、自旋锁
- 大话Linux内核中锁机制之原子操作、自旋锁
- 不可睡眠锁:自旋锁spinlock编码学习
- Linux内核自旋锁
- Linux内核自旋锁
- Linux 内核同步之自旋锁与信号量的异同
- 魔幻矩阵全解(有全部代码说明)
- 效果器的使用技巧-与调音台的无缝连接
- Java反射
- struts1(12)--------MappingDispatchAction
- eclipse 下找不到或无法加载主类的解决办法汇总
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
- 多台机器上真机调试
- 【Android-Emulator】Android模拟器介绍和基本使用
- 1014 当总统分数
- 面试题
- UVa 156 反片语
- Mysql索引浅谈
- 乐队仪器名称
- 做了一天php面试题的小总结