linux内核编程-可睡眠锁之SRCU
来源:互联网 发布:易语言登录器源码 编辑:程序博客网 时间:2024/05/20 23:30
linux内核编程-可睡眠锁之SRCU
DEFINE_SRCU
DEFINE_SRCU_STATIC
static修饰的定义只能在该c文件中使用,用于保护命名空间。
如果一个函数里面使用了static,这是相当与一个全局变量,但是他的有效范围只能在该函数内,其他地方不能使用。
/*
* define and init a srcu struct at build time.
* dont't call init_srcu_struct() nor cleanup_srcu_struct() on it.
*/
#define DEFINE_SRCU(name) \
static DEFINE_PER_CPU(struct srcu_struct_array, name##_srcu_array);\
struct srcu_struct name = __SRCU_STRUCT_INIT(name);
#define DEFINE_STATIC_SRCU(name) \
static DEFINE_PER_CPU(struct srcu_struct_array, name##_srcu_array);\
static struct srcu_struct name = __SRCU_STRUCT_INIT(name);
sudo echo >/var/log/messages
/////////////////////
SRCU中实验一下是否可以睡眠
老师证明是可行的
但是我的机器上面会出问题,rmmod的时候
记得在rcu的时候,也是会在rmmod的时候出问题。
难道是死锁?
检查:
a.打开CONFIG_LOCKDEP
死锁等一些锁非法情况的检查,debug功能
http://bbs.chinaunix.net/thread-3629019-1-1.htm
b.临界区的局部变量
表现在访问用户空间内存的时候
)
- linux内核编程-可睡眠锁之SRCU
- linux内核锁机制-不可睡眠锁之RCU
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之二
- Windows内核编程基础篇之在线程中睡眠
- linux内核锁机制实例代码-不可睡眠锁之自旋锁之一
- Linux内核:spinlock和睡眠
- Linux内核:spinlock和睡眠
- linux内核睡眠与唤醒
- Linux 内核开发之可移植性
- 每日阅读5之linux内核设计与实现——linux内核调度之睡眠与唤醒
- linux内核中的内存分配睡眠问题
- Linux 内核睡眠的几种方式
- linux内核线程睡眠与唤醒
- 基于wakeup_source的linux内核睡眠机制
- linux内核编程之内核定时器
- Linux内核编程之难
- linux内核编程之list_head
- Centos下安装freesurfer、fsl、matlab
- 字典排序,运行怎么会崩溃的?
- cinder分布式搭建
- Minimum Path Sum
- poj2635 The Embarrassed Cryptographer
- linux内核编程-可睡眠锁之SRCU
- 开启linux的路由转发功能
- 改变世界的17个等式
- 利用栈将另一个已排序栈中元素反排序
- linux驱动例1--计时器
- 两个字符串地址的复制和内容的复制
- 软件经济学五:创建高效率的团队
- 如何快速正确的安装 Ruby, Rails 运行环境
- 第四周项目3-多文件三角形类