/***************************************************************************** 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 ); }
__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; }