inode_double_lock.h
来自「ocfs1.4.1 oracle分布式文件系统」· C头文件 代码 · 共 35 行
H
35 行
#ifndef KAPI_INODE_DOUBLE_LOCK_H#define KAPI_INODE_DOUBLE_LOCK_H#ifdef NO_INODE_DOUBLE_LOCKstatic inline void inode_double_lock(struct inode *inode1, struct inode *inode2){ if (inode1 == NULL || inode2 == NULL || inode1 == inode2) { if (inode1) mutex_lock(&inode1->i_mutex); else if (inode2) mutex_lock(&inode2->i_mutex); return; } if (inode1 < inode2) { mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT); mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); } else { mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT); mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD); }}static inline void inode_double_unlock(struct inode *inode1, struct inode *inode2){ if (inode1) mutex_unlock(&inode1->i_mutex); if (inode2 && inode2 != inode1) mutex_unlock(&inode2->i_mutex);}#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?