新博客:http://sparkandshine.net/
分类: 嵌入式
2011-12-14 16:39:43
摘要:
本文深入源码讲述了Coffee文件系统关闭文件cfs_close函数。
当文件不使用时,需要关闭,这样可以释放文件占有的内部资源(如fd),腾出缓存可他用(possibly commit any cached data to permanent storage)[1],源代码如下:
首先进行fd参数验证,确保fd有效。如果fd不在[0, COFFEE_FD_SET_SIZE)范围内,说明传递的fd参数无效,如果该fd对应的file_desc的flags是COFFEE_FD_FREE,则说明该fd本来就是空闲的,无需再释放。如果fd有效,则将其对应的file_desc的flags设为COFFEE_FD_FREE,以便下次cfs_open函数可以找到可用的fd,而后将与该file_desc关联文件file的引用次数减1,最后将file_desc指向的file设为空。
用宏FILE_UNREFERENCED可以判断文件引用次数是否为0,这个宏在load_file函数被调用,FILE_UNREFERENCED宏定义如下:
另,我觉得这个函数设计不够合理。cfs_close应该要有返回值(fd失效返回-1,执行成功返回0),增强程序的健壮性。
更多Contiki学习笔记可通过博文《Contiki学习笔记:目录》索引访问。
参考资料:
[1]