- 博客(4)
- 资源 (8)
- 收藏
- 关注
原创 linux 驱动编程___竞态/并发问题___除了锁之外的其他方法
<br /> <br />~ 除了锁之外的办法 循环缓冲区 只要保持写入指针何读取指针不重叠, 就不会有问题 典型实现: 网络适配器 内核实现: <linux/kfifo.h> 原子变量 对于简单的共享资源使用 代码实现 <asm/atomic.h> 类型: atomic_t, 实质上是一个 int, 但不能大于24位 初始化 void atomic_set(atomic_t *v, int i);// 设置v为整数值 i stomic_t v=ATOMIC_INIT(0);//
2011-01-26 22:47:00 504 1
原创 linux 驱动编程___竞态/并发问题___自旋锁
~ 自旋锁自旋锁的几点说明 与信号量不同, 自旋锁可在不能休眠的代阿中使用, 比如中断处理例程 一个自旋锁就是一个互斥设备, 只有两个状态: 锁定 和 解锁 自旋锁是某个整数值的单个位, 希望获得锁的进程需测试相关位 锁可用, 则"锁定"位被设置, 进程进入临界区 锁不可用, 则进程进入忙循环, 重复检查该锁, 直到可用为止 测试和设置 的操作必须以原子方式进行 自旋锁 API 介绍 结构实现 锁的类型: spinlock_t 初始化 静态初始化 spinlock_t my_
2011-01-26 22:28:00 457 1
原创 linux 驱动编程___竞态/并发问题___信号量和互斥体
信号量和互斥体 几个相关概念 休眠:当一个linux进程到达某个时间点,此时它不能进行任何处理时,它将进入休眠(或阻塞),这将把处理器让给其它进程,知道将来它能够继续完成自己的处理为止。 为了让临界区正确工作,我们选择使用的锁定原语必须在其它拥有这个锁并休眠的情况下工作。 信号量: 实质上是一个整数, 与 P 和 V 函数联合使用 进入临界区, 调用 P 函数 信号量 > 0: 进程可以继续, 信号量减一 信号量 struct semaphore 声明和初始化 直接创建信号量: voi
2011-01-24 22:01:00 751 1
原创 关于 Linux 系统下分区方法
<br />使用 linux 已经好多年了,一直处于使用状态,最近想用它来学习一下写驱动程序,于是就发生了一些问题。<br />首先就是如何建立内核树,其方法在网上有很多介绍,大家可以参考下面的文章:<br />http://blog.csdn.net/ypoflyer/archive/2010/12/20/6087668.aspx<br /> <br />下面说说我的问题吧,主要的就是内核编译时耗尽了系统的硬盘空间。<br />我的系统 ubuntu10.04<br />我的硬盘结构如下:<br />/b
2011-01-08 16:39:00 419
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人