打印

ucosIII信号量的创建

[复制链接]
311|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
菊江先生|  楼主 | 2019-11-28 20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

void  OSSemCreate (OS_SEM      *p_sem,

                   CPU_CHAR    *p_name,

                   OS_SEM_CTR   cnt,  

                   OS_ERR      *p_err)   

{

    CPU_SR_ALLOC();



#ifdef OS_SAFETY_CRITICAL

    if (p_err == (OS_ERR *)0) {

        OS_SAFETY_CRITICAL_EXCEPTION();

        return;

    }

#endif



#ifdef OS_SAFETY_CRITICAL_IEC61508

    if (OSSafetyCriticalStartFlag == DEF_TRUE) {

        *p_err = OS_ERR_ILLEGAL_CREATE_RUN_TIME;

        return;

    }

#endif



#if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u

    if (OSIntNestingCtr > (OS_NESTING_CTR)0) {              /* Not allowed to be called from an ISR                   */

        *p_err = OS_ERR_CREATE_ISR;

        return;

    }

#endif



#if OS_CFG_ARG_CHK_EN > 0u

    if (p_sem == (OS_SEM *)0) {                             /* Validate 'p_sem'                                       */

        *p_err = OS_ERR_OBJ_PTR_NULL;

        return;

    }

#endif



    CPU_CRITICAL_ENTER();

    p_sem->Type    = OS_OBJ_TYPE_SEM;                       /* Mark the data structure as a semaphore                 */

    p_sem->Ctr     = cnt;                                   /* Set semaphore value                                    */

    p_sem->TS      = (CPU_TS)0;

    p_sem->NamePtr = p_name;                                /* Save the name of the semaphore                         */

    OS_PendListInit(&p_sem->PendList);                      /* Initialize the waiting list                            */



#if OS_CFG_DBG_EN > 0u

    OS_SemDbgListAdd(p_sem);

#endif

    OSSemQty++;



    CPU_CRITICAL_EXIT();

    *p_err = OS_ERR_NONE;

}

ucosIII中信号量的创建函数,它的参数该怎样填?



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

447

帖子

0

粉丝