hide缺陷维护

main^2
shenzexi 2 months ago
parent a22195afdd
commit b96d18c90c

@ -14,8 +14,9 @@
/** /**
* @brief 10 * @brief 10
*/ */
int hide_m = 0; //int hide_m = 0;
int flag_hide_m = 0;
int flag_show_m = 1;
/** /**
* @brief * @brief
*/ */
@ -48,6 +49,11 @@ void hide(void)
while (!mutex_trylock(&module_mutex)) while (!mutex_trylock(&module_mutex))
cpu_relax(); cpu_relax();
// 判断模块是否可见,并设置模块隐藏标志
if(flag_hide_m == 0 && flag_show_m == 1)
{
flag_hide_m = 1;
flag_show_m = 0;
// 保存当前模块列表的前一个条目 // 保存当前模块列表的前一个条目
mod_list = THIS_MODULE->list.prev; mod_list = THIS_MODULE->list.prev;
@ -62,9 +68,8 @@ void hide(void)
// 释放模块互斥锁 // 释放模块互斥锁
mutex_unlock(&module_mutex); mutex_unlock(&module_mutex);
}
// 设置模块隐藏标志
hide_m = 1;
} }
void show(void) void show(void)
@ -72,23 +77,27 @@ void show(void)
// 尝试获取模块互斥锁如果失败则让CPU放松 // 尝试获取模块互斥锁如果失败则让CPU放松
while (!mutex_trylock(&module_mutex)) while (!mutex_trylock(&module_mutex))
cpu_relax(); cpu_relax();
// 判断模块是否隐藏,并设置模块可见标志
if(flag_show_m == 0 && flag_hide_m == 1)
{
flag_show_m = 1;
flag_hide_m = 0;
// 将模块重新添加到模块列表中 // 将模块重新添加到模块列表中
list_add(&THIS_MODULE->list, mod_list); list_add(&THIS_MODULE->list, mod_list);
// 释放模块互斥锁 // 释放模块互斥锁
mutex_unlock(&module_mutex); mutex_unlock(&module_mutex);
}
// 设置模块可见标志
hide_m = 0;
} }
void hide_module(void) void hide_module(void)
{ {
// 如果模块当前可见,则隐藏模块 // 如果模块当前可见,则隐藏模块
if (hide_m == 0) if (flag_hide_m == 0 && flag_show_m == 1)
hide(); hide();
// 如果模块当前隐藏,则显示模块 // 如果模块当前隐藏,则显示模块
else if (hide_m == 1) else if (flag_hide_m == 1 && flag_show_m == 0)
show(); show();
} }
Loading…
Cancel
Save