遵循约定总会使得多人协作的成本降低,对于软件开发来说也是这样。
6.1 编程风格
MTFS的编程风格基本与内核的风格基本保持一致。可以用indent命令查看是否有较大出入。一段代码如下所示:
int mtfs_setxattr(struct dentry *dentry, const char *name,const void *value, size_t size, int flags)
{
int ret = 0;
int undo_ret = 0;
mtfs_bindex_t bindex = 0;
HENTRY();
HASSERT(mtfs_d2bnum(dentry));
for (bindex = 0; bindex < mtfs_d2bnum(dentry); bindex++) {
ret = mtfs_setxattr_branch(dentry, name, value, size, flags, bindex);
if (ret) {
bindex --;
goto undo;
}
}
goto out;
undo:
for (; bindex >= 0; bindex--) {
undo_ret = mtfs_undo_setxattr_branch(dentry, name, bindex);
if (undo_ret) {
report_undo_error();
}
}
out:
HRETURN(ret);
}
以上述代码为例,需要注意:
1. 在重要函数的起始处加上HENTRY,结尾处用HRETURN或_HRETURN返回。这样可以通过内核日志机制跟踪函数调用过程。
2. 整个函数按流程顺序往下,

本文详细介绍了MTFS的编程风格,包括遵循内核一致性、使用HENTRY/HRETURN进行函数调用跟踪、利用goto语句进行异常处理以及广泛使用HASSERT进行断言以增强代码的健壮性。同时,文章讨论了函数返回值的处理,如alloc函数返回NULL或指针,new函数返回PTR_ERR或成功指针,并强调了错误值的定义与约定。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



