OS_SEM信号量源码注释2*************************************************************************************3*uC/OS-II实时控制内核4*主要的包含文件5*信号量程序函数6*7*文件:*作者:*中文注解:钟常慰zhongcw@译注版本:*************************************************************************************11*/1213#ifndefOS_MASTER_FILE//是否已定义OS_MASTER_FILE主文件14#include""//包含""文件,部分C语言头文件的汇总打包文件15#endif//定义结束1617#ifOS_SEM_EN>0//条件编译:当OS_SEM_EN允许产生信号量程序代码18/*19*************************************************************************************20*无条件地等待请求一个信号量21*22*描述:该函数是查看资源是否使用或事件是否发生。中断调用该函数查询信号量。23*不同于OSSemPend()函数,如果资源不可使用,ept()函数并不挂起任务。2425*参数:pevent指向需要保护地共享资源地信号量。当建立信号量时,用户得到该指针26*27*返回:ept()函数时;28共享资源信号量的值>0,则说明共享资源可以使用,这个值被返回调用者,信号量的值减1;29共享资源信号量的值=0,则说明资源不能使用,返回0。30*************************************************************************************31*/3233#EPT_EN>0//ept()ept(OS_EVENT*pevent)//无条件地等待请求一个信号量函数35{36#ifOS_CRITICAL_METHOD==3//中断函数被设定为模式337OS_CPU_SRcpu_sr;38#t;//信号量的内容暂时存储变量404142#ifOS_ARG_CHK_EN>0//所有参数必须在指定的参数内43if(pevent==(OS_EVENT*)0){//当信号量指针为NULL时,返回0,空指针44return(0);45}46if(pevent->OSEventType!=OS_EVENT_TYPE_SEM){//当事件类型≠信号量类型47return(0);//返回048}49#endif50OS_ENTER_CRITICAL();//t=pevent->t;//t>0){//当信号值>0时,该值有效53pevent->t--;//信号量减154}55OS_EXIT_CRITICAL();//t);//返回信号值57}58#endif5960/*$PAGE*/61/*62*******************************************************************************************建立一个信号量63*64*描述:建立并初始化一个信号量。信号量的作用为:65*1、允许一个任务与其它任务或中断同步;66*2、取得共享资源的使用权;67*3、标志事件的发生68*69*t建立信号量的初始值,可以为0~65535的任何值70*71*注意:必须先建立信号量,然后才能使用72*73*返回:!=(void*)0返回指向分配给所建立的消息邮箱的事件控制块指针;74*==(void*)0如果没有可用的事件控制块,返回空指针75********************************************************************************************76*/7778OS_EVENT*OSSemCreate(t)//建立并初始化一个信号量(输入一个信号量值)79{80#ifOS_CRITICAL_METHOD==3//中断函数被设定为模式381OS_CPU_SRcpu_sr;82#endif83OS_EVENT*pevent;//建立信号量的初始值,可以在0至65535之间848586if(OSIntNesting>0){//中断嵌套数>0时,表示还有中断任务在运行87return((OS_EVENT*)0);//返回0;88}89OS_ENTER_CRITICA
OS SEM信号量源码注释 来自淘豆网m.daumloan.com转载请标明出处.