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

📄 bitops_ext2_find_next_le_bit-2.6.patch

📁 lustre 1.6.5 source code
💻 PATCH
字号:
Index: linux-2.6.9/include/asm-i386/bitops.h===================================================================--- linux-2.6.9.orig/include/asm-i386/bitops.h	2004-10-19 05:54:37.000000000 +0800+++ linux-2.6.9/include/asm-i386/bitops.h	2006-09-01 14:04:19.000000000 +0800@@ -448,6 +448,8 @@ 	find_first_zero_bit((unsigned long*)addr, size) #define ext2_find_next_zero_bit(addr, size, off) \ 	find_next_zero_bit((unsigned long*)addr, size, off)+#define ext2_find_next_le_bit(addr, size, off) \+	find_next_bit((unsigned long*)(addr), (size), (off))  /* Bitmap functions for the minix filesystem.  */ #define minix_test_and_set_bit(nr,addr) __test_and_set_bit(nr,(void*)addr)Index: linux-2.6.9/include/asm-x86_64/bitops.h===================================================================--- linux-2.6.9.orig/include/asm-x86_64/bitops.h	2004-10-19 05:53:51.000000000 +0800+++ linux-2.6.9/include/asm-x86_64/bitops.h	2006-09-01 14:04:19.000000000 +0800@@ -399,6 +399,8 @@ 	find_first_zero_bit((unsigned long*)addr, size) #define ext2_find_next_zero_bit(addr, size, off) \ 	find_next_zero_bit((unsigned long*)addr, size, off)+#define ext2_find_next_le_bit(addr, size, off) \+	find_next_bit((unsigned long*)(addr), (size), (off))  /* Bitmap functions for the minix filesystem.  */ #define minix_test_and_set_bit(nr,addr) __test_and_set_bit(nr,(void*)addr)Index: linux-2.6.9/include/asm-ia64/bitops.h===================================================================--- linux-2.6.9.orig/include/asm-ia64/bitops.h	2004-10-19 05:55:07.000000000 +0800+++ linux-2.6.9/include/asm-ia64/bitops.h	2006-09-01 14:04:19.000000000 +0800@@ -387,6 +387,8 @@ #define ext2_test_bit			test_bit #define ext2_find_first_zero_bit	find_first_zero_bit #define ext2_find_next_zero_bit		find_next_zero_bit+#define ext2_find_next_le_bit(addr, size, off) \+	__find_next_bit((addr), (size), (off))  /* Bitmap functions for the minix filesystem.  */ #define minix_test_and_set_bit(nr,addr)		test_and_set_bit(nr,addr)Index: linux-2.6.9/include/asm-ppc/bitops.h===================================================================--- linux-2.6.9.orig/include/asm-ppc/bitops.h	2004-10-19 05:54:08.000000000 +0800+++ linux-2.6.9/include/asm-ppc/bitops.h	2006-09-01 14:04:35.000000000 +0800@@ -449,6 +449,47 @@ 	return result + ffz(tmp); } +#define ext2_find_next_le_bit(addr, size, off) \+        generic_find_next_le_bit((addr), (size), (off))++static __inline__ unsigned long generic_find_next_le_bit(const void *addr,+		unsigned long size, unsigned long offset)+{+	unsigned int *p = ((unsigned int*) addr) + (offset >> 5);+	unsigned int result = offset & ~31UL;+	unsigned int tmp;++	if (offset >= size)+		return size;+	size -= result;+	offset &= 31UL;+	if (offset) {+		tmp = cpu_to_le32p(p++);+		tmp &= ~0UL << offset;+		if (size < 32)+			goto found_first;+		if (tmp)+			goto found_middle;+		size -= 32;+		result += 32;+	}+	while (size >= 32) {+		if ((tmp = cpu_to_le32p(p++)))+			goto found_middle;+		result += 32;+		size -= 32;+	}+	if (!size)+		return result;+	tmp = cpu_to_le32p(p);+found_first:+	tmp &= ~0U >> (32 - size);+	if (tmp == 0UL)         /* Are any bits set? */+		return result + size;   /* Nope. */+found_middle:+	return result + __ffs(tmp);+}+ /* Bitmap functions for the minix filesystem.  */ #define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr) #define minix_set_bit(nr,addr) ((void)ext2_set_bit(nr,addr))Index: linux-2.6.9/include/asm-ppc64/bitops.h===================================================================--- linux-2.6.9.orig/include/asm-ppc64/bitops.h	2004-10-19 05:55:43.000000000 +0800+++ linux-2.6.9/include/asm-ppc64/bitops.h	2006-09-01 14:05:00.000000000 +0800@@ -349,6 +349,9 @@ 	find_first_zero_le_bit((unsigned long*)addr, size) #define ext2_find_next_zero_bit(addr, size, off) \ 	find_next_zero_le_bit((unsigned long*)addr, size, off)+#define ext2_find_next_le_bit(addr, size, off) \+        generic_find_next_le_bit((unsigned long*)(addr), (size), (off))+extern unsigned long generic_find_next_le_bit(const unsigned long *addr, unsigned long size, unsigned long offset);  #define minix_test_and_set_bit(nr,addr)		test_and_set_bit(nr,addr) #define minix_set_bit(nr,addr)			set_bit(nr,addr)Index: linux-2.6.9/arch/ppc64/kernel/bitops.c===================================================================--- linux-2.6.9.orig/arch/ppc64/kernel/bitops.c	2004-10-19 05:54:37.000000000 +0800+++ linux-2.6.9/arch/ppc64/kernel/bitops.c	2006-09-01 14:05:25.000000000 +0800@@ -145,3 +145,43 @@ }  EXPORT_SYMBOL(find_next_zero_le_bit);++unsigned long generic_find_next_le_bit(const unsigned long *addr, unsigned long size,+		unsigned long offset)+{+	const unsigned long *p = addr + offset / BITS_PER_LONG;+	unsigned long result = offset & ~(BITS_PER_LONG - 1);+	unsigned long tmp;++	if (offset >= size)+		return size;+	size -= result;+	offset %= BITS_PER_LONG;+	if (offset) {+		tmp = __swab64p(p++);+		tmp &= (~0UL << offset);+		if (size < BITS_PER_LONG)+			goto found_first;+		if (tmp)+			goto found_middle;+		size -= BITS_PER_LONG;+		result += BITS_PER_LONG;+	}+	while (size & ~(BITS_PER_LONG - 1)) {+		if ((tmp = __swab64p(p++)))+			goto found_middle;+		result += BITS_PER_LONG;+		size -= BITS_PER_LONG;+	}+	if (!size)+		return result;+	tmp = __swab64p(p);+found_first:+	tmp &= ~0UL >> (BITS_PER_LONG - size);+	if (tmp == 0UL)+		return result + size;+found_middle:+	return result + __ffs(tmp);+}++EXPORT_SYMBOL(generic_find_next_le_bit);

⌨️ 快捷键说明

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