/*****************************************************************************
 Function   : VOS_GetCurrentTaskID
 Description: Get current task's ID
 Input      : none
 Output     : none
 Return     : Return task's ID if success or fail information if fail
 Other      : none
 *****************************************************************************/
VOS_UINT32 VOS_GetCurrentTaskID( VOS_VOID )
{
    NU_TASK         *task_ptr;
    VOS_INT         i;
    VOS_INT         intLockLevel;

    task_ptr = NU_Current_Task_Pointer();
    if( VOS_NULL_PTR == task_ptr )
    {
        return( VOS_NULL_LONG );
    }

    intLockLevel = VOS_SplIMP();

    for ( i=0; i<(VOS_INT)vos_TaskCtrlBlkNumber; i++ )
    {
        if( VOS_TASK_CTRL_BLK_BUSY == vos_TaskCtrlBlk[i].Flag )
        {
            if ( task_ptr == &(vos_TaskCtrlBlk[i].NuTid) )
            {
                VOS_Splx(intLockLevel);

                return (VOS_UINT32)i;

            }
        }
    }

    VOS_Splx(intLockLevel);

    LogPrint("# VOS_GetCurrentTaskID fatal error.\r\n");

    return( VOS_NULL_LONG );
}
Beispiel #2
0
__arm int mutex_init(Mutex *mtx)
{
  /* шо это нам подсунули? */
  if(!mtx) return -1;
  zeromem(mtx, sizeof(Mutex));
  
  NU_TASK *task = NU_Current_Task_Pointer();
  
  /* а такое может быть? */
  if( !task ) return -2;
  
  /* инициализируем структуру */
  mtx->task = task;
  mtx->is_locked = 0;
  return 0;
}