OSSchedUnlock

Description

OSSchedUnlock() re-enables task scheduling whenever it is paired with OSSchedLock().

Files

os.h/os_core.c

Prototype

void  OSSchedUnlock (OS_ERR  *p_err)

Arguments

p_err

is a pointer to a variable that will contain an error code returned by this function.

OS_ERR_NONE

the call is successful and the scheduler is no longer locked.

OS_ERR_OS_NOT_RUNNING

If calling this function before calling OSStart().

OS_ERR_SCHED_LOCKED

If the scheduler is still locked. This would indicate that scheduler lock has not fully unnested.

OS_ERR_SCHED_NOT_LOCKED

If the user did not call OSSchedLock().

OS_ERR_SCHED_UNLOCK_ISR

If OS_CFG_CALLED_FROM_ISR_CHK_EN set to DEF_ENABLED in os_cfg.h: if you attempted to unlock scheduler from an ISR.

Returned Value

None

Required Configuration

None

Callers

Application.

Notes/Warnings

None

Example Usage

OSSchedUnlock() example usage
          void TaskX (void *p_arg)
          {
              OS_ERR  err;
  
  
              (void)&p_arg;
              while (DEF_ON) {
                  :
                  OSSchedLock(&err);     /* Prevent other tasks to run         */
                  /* Check "err" */
                  :
                  :                      /* Code protected from context switch */                      
                  :
                  OSSchedUnlock(&err);   /* Enable other tasks to run          */
                  /* Check "err" */
                  :
                  :
              }
          }