[HUST CSE] Fixed memory leak and type conversion issues
This commit is contained in:
@@ -122,36 +122,36 @@ void sys_sem_set_invalid(sys_sem_t *sem)
|
||||
}
|
||||
|
||||
/*
|
||||
<EFBFBD><EFBFBD><EFBFBD>timeout<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>㣬<EFBFBD><EFBFBD>ֵΪ
|
||||
<EFBFBD>ȴ<EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>źţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ
|
||||
SYS_ARCH_TIMEOUT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̲߳<EFBFBD><EFBFBD>صȴ<EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣 */
|
||||
如果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;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
//看看信号量是否有效
|
||||
if (sem == SYS_SEM_NULL) {
|
||||
return SYS_ARCH_TIMEOUT;
|
||||
}
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ȡ<EFBFBD><EFBFBD>ʼ<EFBFBD>ȴ<EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//首先获取开始等待信号量的时钟节拍
|
||||
start_tick = sys_now();
|
||||
|
||||
//timeout != 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>ʱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//timeout != 0,需要将ms换成系统的时钟节拍
|
||||
if (timeout != 0) {
|
||||
//<EFBFBD><EFBFBD>msת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//将ms转换成时钟节拍
|
||||
wait_tick = timeout / (1000 / TOS_CFG_CPU_TICK_PER_SECOND);
|
||||
if (wait_tick == 0) {
|
||||
wait_tick = 1;
|
||||
}
|
||||
} else {
|
||||
wait_tick = TOS_TIME_FOREVER; //һֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wait_tick = TOS_TIME_FOREVER; //一直阻塞
|
||||
}
|
||||
|
||||
//<EFBFBD>ȴ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>ʾ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱ
|
||||
//等待成功,计算等待的时间,否则就表示等待超时
|
||||
if (tos_sem_pend(sem, wait_tick) == K_ERR_NONE) {
|
||||
return ((sys_now() - start_tick) * (1000 / TOS_CFG_CPU_TICK_PER_SECOND));
|
||||
}
|
||||
@@ -231,7 +231,7 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn function, void *arg
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MidPriority_Task<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* 创建MidPriority_Task任务 */
|
||||
rc = tos_task_create(task, (char*)name, function, arg,
|
||||
prio, task_stack, stacksize, 20);
|
||||
if (rc != K_ERR_NONE) {
|
||||
@@ -313,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) { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD>Ϣ<EFBFBD>ĵط<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
if (!msg) { // 看看存储消息的地方是否有效
|
||||
msg = &dummyptr;
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ȡ<EFBFBD><EFBFBD>ʼ<EFBFBD>ȴ<EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 首先获取开始等待信号量的时钟节拍
|
||||
start_tick = sys_now();
|
||||
|
||||
// timeout != 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>ʱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// timeout != 0,需要将ms换成系统的时钟节拍
|
||||
if (timeout != 0) {
|
||||
//<EFBFBD><EFBFBD>msת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//将ms转换成时钟节拍
|
||||
wait_tick = timeout / (1000 / TOS_CFG_CPU_TICK_PER_SECOND);
|
||||
if (wait_tick == 0) {
|
||||
wait_tick = 1;
|
||||
}
|
||||
} else { // һֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
} else { // 一直阻塞
|
||||
wait_tick = TOS_TIME_FOREVER;
|
||||
}
|
||||
|
||||
// <EFBFBD>ȴ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>ʾ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱ
|
||||
// 等待成功,计算等待的时间,否则就表示等待超时
|
||||
if (tos_msg_q_pend(q,&(*msg), wait_tick) == K_ERR_NONE) {
|
||||
return ((sys_now() - start_tick) * (1000 / TOS_CFG_CPU_TICK_PER_SECOND));
|
||||
}
|
||||
|
Reference in New Issue
Block a user