登录 注册
当前位置:主页 > 资源下载 > 50 > 创建一份针对EMC DataDomain 2500存储设备的维护手册

创建一份针对EMC DataDomain 2500存储设备的维护手册

  • 更新:2024-11-04 14:01:08
  • 大小:4.33MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:OS - 操作系统
  • 格式:PDF

资源介绍

程序清单 L6.9 建立一个信号量 OS_EVENT *OSSemCreate (INT16U cnt) { OS_EVENT *pevent; OS_ENTER_CRITICAL(); pevent = OSEventFreeList; (1) if (OSEventFreeList != (OS_EVENT *)0) { (2) OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr; } OS_EXIT_CRITICAL(); if (pevent != (OS_EVENT *)0) { (3) pevent->OSEventType = OS_EVENT_TYPE_SEM; (4) pevent->OSEventCnt = cnt; (5) OSEventWaitListInit(pevent); (6) } return (pevent); (7) } 6.5.2 等待一个信号量, OSSemPend() 程序清单 L6.10 是 OSSemPend()函数的源代码。它首先检查指针 pevent 所指的任务控制 块是否是由 OSSemCreate()建立的[L6.10(1)]。如果信号量当前是可用的(信号量的计数值大于 0)[L6.10(2)],将信号量的计数值减 1[L6.10(3)],然后函数将“无错”错误代码返回给它的 调用函数。显然,如果正在等待信号量,这时的输出正是我们所希望的,也是运行 OSSemPend() 函数最快的路径。 如果此时信号量无效(计数器的值是 0),OSSemPend()函数要进一步检查它的调用函数是 不是中断服务子程序[L6.10(4)]。在正常情况下,中断服务子程序是不会调用 OSSemPend()函数