diff --git a/net/lwip/port/src/sys_arch.c b/net/lwip/port/src/sys_arch.c index 31b65df7..31ce4416 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转换成时钟节拍 + //灏唌s杞崲鎴愭椂閽熻妭鎷 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转换成时钟节拍 + //灏唌s杞崲鎴愭椂閽熻妭鎷 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)); }