// // Create task. Apply to upper layer MMI. // HANDLE COS_CreateTask( PTASK_ENTRY pTaskEntry, COS_MOD_ID mod, PVOID pParameter, PVOID pStackAddr, UINT16 nStackSize, UINT8 nPriority, UINT16 nCreationFlags, UINT16 nTimeSlice, PCSTR pTaskName ) { TASK_HANDLE* pHTask = NULL; // if(nPriority < COS_PRI_BASE || nPriority > COS_PRI_BK_BASE) // return HNULL; pHTask = &(g_tskTaskList[mod]); pHTask->sTaskDesc.Name = pTaskName; if(pTaskName == 0) { pHTask->sTaskDesc.Name = "noname"; } pHTask->sTaskDesc.nPriority = nPriority; pHTask->sTaskDesc.nStackSize = nStackSize; pHTask->sTaskDesc.TaskBody = pTaskEntry; pHTask->sTaskDesc.TaskExit = NULL; pHTask->nMailBoxId = sxr_NewMailBox(); pHTask->nTaskId = sxr_NewTask ((sxr_TaskDesc_t*)&pHTask->sTaskDesc); if(nCreationFlags&COS_CREATE_SUSPENDED) { return (HANDLE)NULL; } else if(nCreationFlags&COS_CREATE_PREEMPT) { return (HANDLE)NULL; } else if(nCreationFlags&COS_CREATE_NO_PREEMPT) { return (HANDLE)NULL; } else { sxr_StartTask (pHTask->nTaskId, pParameter); } // if( (UINT32)pTaskEntry == (UINT32)BAL_MmiTask ) { // g_hCosMmiTask = (HANDLE)pHTask;; } return (HANDLE)pHTask; }
// // Create task, only apply to CSW internal. // HANDLE COS_CreateTask_Prv( PTASK_ENTRY pTaskEntry, PVOID pParameter, PVOID pStackAddr, UINT16 nStackSize, UINT8 nPriority, UINT16 nCreationFlags, UINT16 nTimeSlice, PCSTR pTaskName ) { TASK_HANDLE* pHTask = NULL; //CSW_TRACE(200, TSTXT("COS_CreateTask_Prv nPriority: %d \n"), nPriority); pHTask = (TASK_HANDLE*)CSW_COS_MALLOC( SIZEOF(TASK_HANDLE) ); //&g_hTask[g_TaskCnt++]; if(pHTask == NULL) return FALSE; if(pTaskName) { pHTask->sTaskDesc.Name = pTaskName; } else { pHTask->sTaskDesc.Name = "no name"; } pHTask->sTaskDesc.nPriority = nPriority; pHTask->sTaskDesc.nStackSize = nStackSize; pHTask->sTaskDesc.TaskBody = pTaskEntry; pHTask->sTaskDesc.TaskExit = NULL; pHTask->nMailBoxId = sxr_NewMailBox(); pHTask->nTaskId = sxr_NewTask ((sxr_TaskDesc_t*)&pHTask->sTaskDesc); if(nCreationFlags&COS_CREATE_SUSPENDED) { return (HANDLE)NULL; } else if(nCreationFlags&COS_CREATE_PREEMPT) { return (HANDLE)NULL; } else if(nCreationFlags&COS_CREATE_NO_PREEMPT) { return (HANDLE)NULL; } else { sxr_StartTask (pHTask->nTaskId, pParameter); } return (HANDLE)pHTask; }