diff --git a/net/lwip/port/src/sys_arch.c b/net/lwip/port/src/sys_arch.c index 31b65df7..42f9a2c3 100644 --- a/net/lwip/port/src/sys_arch.c +++ b/net/lwip/port/src/sys_arch.c @@ -122,36 +122,36 @@ void sys_sem_set_invalid(sys_sem_t *sem) } /* - Èç¹ûtimeout²ÎÊý²»ÎªÁ㣬Ôò·µ»ØÖµÎª - µÈ´ýÐźÅÁ¿Ëù»¨·ÑµÄºÁÃëÊý¡£Èç¹û - ÐźÅÁ¿Î´ÔÚÖ¸¶¨Ê±¼äÄÚ·¢³öÐźţ¬·µ»ØÖµÎª - SYS_ARCH_TIMEOUT¡£Èç¹ûÏ̲߳»±ØµÈ´ýÐźÅÁ¿ - ¸Ãº¯Êý·µ»ØÁã¡£ */ + ���timeout������Ϊ�㣬�ò·µ»ï¿½ÖµÎª + �ȴ��ź��������ѵĺ���������� + �ź���δ��ָ��ʱ���ڷ����źţ�����ֵΪ + SYS_ARCH_TIMEOUT������̲߳��صȴ��ź��� + �ú��������㡣 */ u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout) { k_tick_t wait_tick = 0; k_tick_t start_tick = 0; - //¿´¿´ÐźÅÁ¿ÊÇ·ñÓÐЧ + //�����ź����Ƿ���Ч if (sem == SYS_SEM_NULL) { return SYS_ARCH_TIMEOUT; } - //Ê×ÏÈ»ñÈ¡¿ªÊ¼µÈ´ýÐźÅÁ¿µÄʱÖÓ½ÚÅÄ + //���Ȼ�ȡ��ʼ�ȴ��ź�����ʱ�ӽ��� start_tick = sys_now(); - //timeout != 0£¬ÐèÒª½«ms»»³ÉϵͳµÄʱÖÓ½ÚÅÄ + //timeout != 0����Ҫ��ms����ϵͳ��ʱ�ӽ��� if (timeout != 0) { - //½«msת»»³ÉʱÖÓ½ÚÅÄ + //��msת����ʱ�ӽ��� wait_tick = timeout / (1000 / TOS_CFG_CPU_TICK_PER_SECOND); if (wait_tick == 0) { wait_tick = 1; } } else { - wait_tick = TOS_TIME_FOREVER; //Ò»Ö±×èÈû + wait_tick = TOS_TIME_FOREVER; //һֱ���� } - //µÈ´ý³É¹¦£¬¼ÆËãµÈ´ýµÄʱ¼ä£¬·ñÔò¾Í±íʾµÈ´ý³¬Ê± + //�ȴ��ɹ�������ȴ���ʱ�䣬����ͱ�ʾ�ȴ���ʱ if (tos_sem_pend(sem, wait_tick) == K_ERR_NONE) { return ((sys_now() - start_tick) * (1000 / TOS_CFG_CPU_TICK_PER_SECOND)); } @@ -224,17 +224,20 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn function, void *arg return NULL; } - task_stack = tos_mmheap_alloc(stacksize); + task_stack = (k_stack_t *)tos_mmheap_alloc(stacksize); if (!task_stack) { printf("[sys_arch]:memalloc task stack fail!\n"); + tos_mmheap_free(task); return NULL; } - /* ´´½¨MidPriority_TaskÈÎÎñ */ + /* ����MidPriority_Task���� */ rc = tos_task_create(task, (char*)name, function, arg, prio, task_stack, stacksize, 20); if (rc != K_ERR_NONE) { printf("[sys_arch]:create task fail! code: %d \r\n", rc); + tos_mmheap_free(task); + tos_mmheap_free(task_stack); return NULL; } @@ -310,25 +313,25 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *q, void **msg, u32_t timeout) k_tick_t wait_tick = 0; k_tick_t start_tick = 0; - if (!msg) { // ¿´¿´´æ´¢ÏûÏ¢µÄµØ·½ÊÇ·ñÓÐЧ + if (!msg) { // �����洢��Ϣ�ĵط��Ƿ���Ч msg = &dummyptr; } - // Ê×ÏÈ»ñÈ¡¿ªÊ¼µÈ´ýÐźÅÁ¿µÄʱÖÓ½ÚÅÄ + // ���Ȼ�ȡ��ʼ�ȴ��ź�����ʱ�ӽ��� start_tick = sys_now(); - // timeout != 0£¬ÐèÒª½«ms»»³ÉϵͳµÄʱÖÓ½ÚÅÄ + // timeout != 0����Ҫ��ms����ϵͳ��ʱ�ӽ��� if (timeout != 0) { - //½«msת»»³ÉʱÖÓ½ÚÅÄ + //��msת����ʱ�ӽ��� wait_tick = timeout / (1000 / TOS_CFG_CPU_TICK_PER_SECOND); if (wait_tick == 0) { wait_tick = 1; } - } else { // Ò»Ö±×èÈû + } else { // һֱ���� wait_tick = TOS_TIME_FOREVER; } - // µÈ´ý³É¹¦£¬¼ÆËãµÈ´ýµÄʱ¼ä£¬·ñÔò¾Í±íʾµÈ´ý³¬Ê± + // �ȴ��ɹ�������ȴ���ʱ�䣬����ͱ�ʾ�ȴ���ʱ if (tos_msg_q_pend(q,&(*msg), wait_tick) == K_ERR_NONE) { return ((sys_now() - start_tick) * (1000 / TOS_CFG_CPU_TICK_PER_SECOND)); }