ossempend各个参数的作用是什么
时间: 2024-05-31 19:15:15 浏览: 104
UCOS-II学习随笔:详细描述了各个函数的作用和之间的关系
5星 · 资源好评率100%
OSSemPend是一个等待信号量的函数,其参数如下:
- sem:需要等待的信号量;
- timeout:等待的超时时间,单位是OS_TICKS。若设置为0,则表示无限等待;
- opt:等待信号量的选项,可选参数有OS_OPT_PEND_BLOCKING、OS_OPT_PEND_NON_BLOCKING、OS_OPT_PEND_BLOCKING_TIMEOUT、OS_OPT_PEND_BLOCKING_PEND_LIST。其中,OS_OPT_PEND_BLOCKING表示阻塞等待,直到信号量可用;OS_OPT_PEND_NON_BLOCKING表示非阻塞等待,若信号量不可用则立即返回;OS_OPT_PEND_BLOCKING_TIMEOUT表示阻塞等待,但有等待超时时间;OS_OPT_PEND_BLOCKING_PEND_LIST表示将当前任务添加到信号量的等待列表中,等待信号量可用。
调用OSSemPend函数时,会根据opt参数的不同,决定任务的等待方式和返回值。若opt参数为OS_OPT_PEND_BLOCKING,则任务会阻塞等待信号量,直到信号量可用;若opt参数为OS_OPT_PEND_NON_BLOCKING,则任务会立即返回,若信号量不可用则返回一个错误码;若opt参数为OS_OPT_PEND_BLOCKING_TIMEOUT,则任务会阻塞等待信号量,但等待的时间不会超过timeout指定的时间;若opt参数为OS_OPT_PEND_BLOCKING_PEND_LIST,则任务会将自己添加到信号量的等待列表中,等待信号量可用。
阅读全文