UINT32 Example_MsgQueue(void) { UINT32 uwRet = 0; UINT32 uwTask1, uwTask2; TSK_INIT_PARAM_S stInitParam1; /*创建任务1*/ stInitParam1.pfnTaskEntry = send_Entry; stInitParam1.usTaskPrio = 9; stInitParam1.uwStackSize = 0x200; stInitParam1.pcName = "sendQueue"; stInitParam1.uwResved = LOS_TASK_STATUS_DETACHED; LOS_TaskLock();//锁住任务,防止新创建的任务比本任务高而发生调度 uwRet = LOS_TaskCreate(&uwTask1, &stInitParam1); if(uwRet != LOS_OK) { dprintf("create task1 failed!,error:%x\n",uwRet); return uwRet; } /*创建任务2*/ stInitParam1.pfnTaskEntry = recv_Entry; uwRet = LOS_TaskCreate(&uwTask2, &stInitParam1); if(uwRet != LOS_OK) { dprintf("create task2 failed!,error:%x\n",uwRet); return uwRet; } /*创建队列*/ uwRet = LOS_QueueCreate("queue", 5, &g_uwQueue, 0, 24); if(uwRet != LOS_OK) { dprintf("create queue failure!,error:%x\n",uwRet); } dprintf("create the queue success!\n"); LOS_TaskUnlock();//解锁任务,只有队列创建后才开始任务调度 return LOS_OK; }
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr) { UINT32 uwQueueID; UINT32 uwRet; UNUSED(attr); osMessageQueueId_t handle; if(0 == msg_count || 0 == msg_size || OS_INT_ACTIVE) { return (osMessageQueueId_t)NULL; } uwRet = LOS_QueueCreate((char *)NULL, (UINT16)msg_count, &uwQueueID, 0,(UINT16)msg_size); if (uwRet == LOS_OK) { handle = (osMessageQueueId_t)(GET_QUEUE_HANDLE(uwQueueID)); } else { handle = (osMessageQueueId_t)NULL; } return handle; }