linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
来源:互联网 发布:mac如何删除qq浏览器 编辑:程序博客网 时间:2024/06/12 01:52
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 内核同步之自旋锁与信号量的异同
- eclipse 调试方法
- 反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)
- 前端开发神器sublime+emmet
- C++第一次作业
- SQL编程实例:SQL数据库,存储过程+事务处理+回滚+数据迁移
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
- VS2010环境下OpenCV&OpenGL配置
- 【Java基础】代理 - Proxy
- Filter二(利用Filter实现简单的登录验证)
- onInterceptTouchEvent和onTouchEvent举例分析
- Android--侧滑菜单应用的实现
- OnTouchListener事件监听实现方式之GestureDetector
- erlang 语法练习
- 开放Java Servlet需要的Jar包