【原创】ucos信号量的操作及原理
信号量的操作及原理
OS_EVENT *OSSemCreate(INT16U cnt)
{
#if OS_CRITICAL_METHOD == 3 /* 原理请查看http://blog.csdn.net/liuhui_8989/article/details/8783323 */
OS_CPU_SR cpu_sr;
#endif
OS_EVENT *pevent;
if(OSIntNesting>0){/* 不能在中断内创建信号量 */
return((OS_EVENT *)0);/* 直接返回0 */
}
OS_ENTER_CRITICAL();
pevent =OSEventFreeList;/* 获取空闲的事件控制块 */
if(OSEventFreeList!=(OS_EVENT *)0){/* 将OSEventFreeList指向下一个事件控制块 */
OSEventFreeList=(OS_EVENT *)OSEventFreeList->OSEventPtr;
}
OS_EXIT_CRITICAL();
if(pevent !=(OS_EVENT *)0){/* Get an event control block */
pevent->OSEventType= OS_EVENT_TYPE_SEM;
pevent->OSEventCnt= cnt;/* 设置计数器的初值 */
pevent->OSEventPtr=(void*)0;/* Unlink from ECB free list */
OS_EventWaitListInit(pevent);/* 初始化事件控制块中任务等待表为0 */
}
return(pevent);
}
申请:voidOSSemPend(OS_EVENT *pevent, INT16U timeout, INT8U *err)
释放:INT8U OSSemPost(OS_EVENT *pevent)
转载于:https://www.cnblogs.com/cposture/p/4299055.html
【原创】ucos信号量的操作及原理相关推荐
- 嵌入式操作系统内核原理和开发(信号量)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 之前因为工作的原因,操作系统这块一直没有继续写下去.一方面是自己没有这方面的经历,另外一方面就 ...
- 嵌入式操作系统内核原理和开发
嵌入式操作系统内核原理和开发(开篇) 操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的windows系统已经开始运行了.如果问大家操作系统是什么?可能有的人会 ...
- linux优先级继承和优先级天花板,关于Linux操作系统内核原理.ppt
<铁机>Linux操作系统内核原理 Linux内核基础 第一事业部 王 风 内容 进程管理 内存管理 虚拟文件系统 了解Linux内核核心功能的基本原理结构,引导源码阅读 Linux系统结 ...
- 嵌入式操作系统内核原理和开发(总结篇)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多朋友都喜欢嵌入式操作系统的内容,但是如何实现和仿真这样一个系统一直是困扰我们的难题.现在郑 ...
- 【原创】反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......
标 题: [原创]反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)...... 作 者: shellwolf 时 间: 2008-08-10,22:40:53 链 接: http://b ...
- 8 操作系统第二章 进程管理 信号量 PV操作 用信号量机制实现 进程互斥、同 步、前驱关系
文章目录 1 信号量机制 1.1 整形信号量 1.2 记录形信号量 1.3 信号量机制小结 2 用信号量机制实现进程互斥.同 步.前驱关系 2.1 信号量机制实现进程互斥 2.2 信号量机制实现进程同 ...
- 封装一个信号量集操作函数的工具
信号量的概念参见这里. 与消息队列和共享内存一样,信号量集也有自己的数据结构: struct semid_ds { struct ipc_perm sem_perm; /* Ownership an ...
- linux pv 信号量,pv操作与信号量(示例代码)
在python同步编程部分,需要分析和思考多个线程之间同步互斥问题,因此pv操作和信号量作为基础和重中之重,特此回顾pv操作和信号量. PV操作由P操作原语和V操作原语组成(原语即不可在分割的操作), ...
- 关于Linux中的apt-get的相关操作及原理
关于Linux中的apt-get的相关操作及原理 Linux下的apt-get指令与相关文件夹 apt-get是linux下的一种简便的安装和更新软件的方法,在装软件的时候常用的命令就是 sudo a ...
最新文章
- dlib的编译和安装
- AngularJs前端环境搭建
- 分享GitHub上一位老外的嵌入式C编码规范(收藏细读)
- iOS中GCD的魔力
- hibernate 复合主键 根据主键删除_6道常见的 Hibernate 面试题
- Bound Found POJ - 2566 (尺取+前缀和)
- BurpSuit配置抓包http和https请求
- IdentityServer4专题之二:OpenID介绍
- Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
- Luogu1502 窗口的星星
- 抖音快手无水印视频下载教程解析
- 快递行业面单打印解决方案-快宝云打印
- java多种货币的相互转换_使用java将不同的国家货币转换为双倍
- 声学模型GMM-HMM训练
- Websocket(二)-客户端与服务器通信
- 计算机上用户名怎么设置,电脑用户名,详细教您电脑用户名怎么修改
- Chrome 插件(Shockwave Flash)未响应 错误解决办法
- N1盒子Armbian折腾记
- 给input date设置默认值
- ReactiveX/RxJava V3.0.0版本
热门文章
- nmon工具的安装记录
- C#获取当前系统磁盘符、系统目录、桌面等
- jQuery 学习笔记(jQuery: The Return Flight)
- 台式机共享笔记本的无线网络(只需要一根网线)
- asp.net mvc使用TagBuilder的应用程序集
- fluorinefx C# 版的开源rtmp服务器
- php bloginfo stylesheeturl,WordPress主题制作–bloginfo函数使用教程
- linux3.4.2移植总结(s3c2440)
- linux查看数据积压,查看kafka消息队列的积压情况
- 2清空所有表_拉链表(二)