Exemplo n.º 1
0
//
// 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; 
}
Exemplo n.º 2
0
//
// 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;
}