遵循约定总会使得多人协作的成本降低,对于软件开发来说也是这样。
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. 整个函数按流程顺序往下,如果出现意外,使用goto语句跳出&#x