SylixOS在正常消亡时会回收与此进程所占用的相关资源,包括打开的文件fd、事件、事件组、posix命名信号量、定时器、RMS等。相关代码见libsylixos/SylixOS/kernel/resource/resourceLib.c:__resPidReclaim()。
此函数通过遍历对应的资源缓冲数组,搜索是否存在此进程PID占用的资源,如果存在则回收此资源。比如回收定时器资源会遍历数组_G_reshTimerBuffer[],若发现占用情况,调用API_TimerDelete()删除资源,如下图所示。
资源缓冲数组中的数据则是在资源创建时通过调用资源创建回调函数(LW_OPTION_OBJECT_CREATE_HOOK)被添加的。
例如在API_TimerCreate()中会在函数最后调用资源添加回调函数,如图: