itop-4412开发板学习-内核信号量
2024-09-04 15:07:26
1. 翻翻书看下,linux提供两种信号量,内核信号量,由内核控制路径使用,System V IPC信号量,由用户态进程使用。下面的就是内核部分的信号量。内核信号量类似于自旋锁,当锁关闭着时,不允许内核控制路径继续进行,当某个进程试图获取已经被占用的资源时,这个进程被挂起,进入睡眠,因此只有可以睡眠的函数才能在函数内部获取信号量。
2. 看下内核信号量的结构体
struct semaphore {
spinlock_t lock;
unsigned int count;
struct list_head wait_list;
};
3. 函数的实现
void up(struct semaphore *sem)
{
unsigned long flags;
spin_lock_irqsave(&sem->lock, flags);
if (likely(list_empty(&sem->wait_list)))
sem->count++;
else
__up(sem);
spin_unlock_irqrestore(&sem->lock, flags);
}
最新文章
- 高性能网络编程(一)----accept建立连接
- Simultaneous Tag Editing in IntelliJ IDEA 14.1
- Codeforces 424C(异或)
- Cocoa Touch的3种类的交流方式delegate/target/notification
- iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)
- Light OJ 1136
- 工厂方法模式(Method Factory),理解多态应用的好例子.
- 自动化测试框架【linux版】:JMeter + Ant + Jenkins
- Redis数据结构之HperLogLog
- JQuery 数组获取和删除元素
- 远程过程调用概述-RMI简介
- 版本控制系统-SVN(1)
- python中用修饰器进行异常日志记录
- 小程序之根据参数更改title
- python---django中orm的使用(1)
- 我们为何放弃Eclipse,投奔IntelliJ IDEA
- codeforces水题100道 第十题 Codeforces Round #277 (Div. 2) A. Calculating Function (math)
- OpenCV-bwLabel-实现图像连通组件标记与分析
- 什么是websoket
- C柔性数组