⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blockgroup_lock.h

📁 Axis 221 camera embedded programing interface
💻 H
字号:
#ifndef _LINUX_BLOCKGROUP_LOCK_H#define _LINUX_BLOCKGROUP_LOCK_H/* * Per-blockgroup locking for ext2 and ext3. * * Simple hashed spinlocking. */#include <linux/spinlock.h>#include <linux/cache.h>#ifdef CONFIG_SMP/* * We want a power-of-two.  Is there a better way than this? */#if NR_CPUS >= 32#define NR_BG_LOCKS	128#elif NR_CPUS >= 16#define NR_BG_LOCKS	64#elif NR_CPUS >= 8#define NR_BG_LOCKS	32#elif NR_CPUS >= 4#define NR_BG_LOCKS	16#elif NR_CPUS >= 2#define NR_BG_LOCKS	8#else#define NR_BG_LOCKS	4#endif#else	/* CONFIG_SMP */#define NR_BG_LOCKS	1#endif	/* CONFIG_SMP */struct bgl_lock {	spinlock_t lock;} ____cacheline_aligned_in_smp;struct blockgroup_lock {	struct bgl_lock locks[NR_BG_LOCKS];};static inline void bgl_lock_init(struct blockgroup_lock *bgl){	int i;	for (i = 0; i < NR_BG_LOCKS; i++)		spin_lock_init(&bgl->locks[i].lock);}/* * The accessor is a macro so we can embed a blockgroup_lock into different * superblock types */#define sb_bgl_lock(sb, block_group) \	(&(sb)->s_blockgroup_lock.locks[(block_group) & (NR_BG_LOCKS-1)].lock)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -