detach定义如下:
void rt_object_detach ( rt_object_t object )
脱离对象
该函数将从对象管理器中脱离一个静态的对象,但是该静态对象并不会被释放。
参数
object 指定脱离的对象
/**
* This function will detach a static object from object system,
* and the memory of static object is not freed.
*
* @param object the specified object to be detached.
*/
void rt_object_detach(rt_object_t object)
{
register rt_base_t temp;
/* object check */
RT_ASSERT(object != RT_NULL);
RT_OBJECT_HOOK_CALL(rt_object_detach_hook, (object));
/* reset object type */
object->type = 0;
/* lock interrupt */
temp = rt_hw_interrupt_disable();
/* remove from old list */
rt_list_remove(&(object->list));
/* unlock interrupt */
rt_hw_interrupt_enable(temp);
}
Q1:rt_object_detach只是针对静态内核对象进行脱离,该对象占用的内存没有被释放,那么detach这个函数的意思只是“把这个内核对象从正在激活运行中的内核对象列表中删除”,即切换为禁止运行状态?
Q2:rt_object_detach完成操作后这个内存区是不是就无法利用了,也无法恢复原有的内核对象参数?我看函数体中已经把rt_object_class_type置为0了。
好的,感谢大佬