- 博客(64)
- 收藏
- 关注
原创 嵌入式学习之Linux驱动 互斥锁
互斥锁的API函数互斥锁注意事项int major;int minor;//1. 定义和初始化//2. 加锁:在 open 中使用 mutex_trylock// 使用 trylock 实现排他性 open// mutex_trylock(&mutexlock):尝试获取互斥锁 非阻塞。// 成功返回 true(1),进入设备。// 失败返回 false(0),说明已有其他进程持有该锁,此时返回 -EBUSY,表示“设备忙”。//为何用 trylock 而不是 lock。
2025-05-16 21:49:21
156
原创 嵌入式学习之Linux驱动 自旋锁
int major;int minor;int flag;//初始化自旋锁//因为 flag 是一个全局共享变量,如果多个进程/CPU 并发打开设备,可能造成竞态条件(race condition),出现多个进程都认为设备是空闲的,导致重复打开。// 使用自旋锁可以在 SMP(多核系统)中保证该段代码原子性和互斥性,防止并发访问冲突。if(flag!=1){ //利用 flag=1 表示“空闲”,flag=0 表示“正在使用”。flag=0;return 0;
2025-05-16 15:14:01
159
原创 嵌入式学习之Linux驱动 原子操作理论讲解
11打错了,是2int major;int minor;int flag;//初始化为1//此函数做了两件事:// 将 v 的值减 1;// 判断结果是否为 0,如果是返回 true(非 0 表示失败)。if(!atomic64_dec_and_test(&v)){ //尝试减少为0,检查是否为最后一个return 0;int ret;
2025-05-16 14:05:51
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人