mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	 1da177e4c3
			
		
	
	
		1da177e4c3
		
	
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* find_next_bit.c: fallback find next bit implementation
 | |
|  *
 | |
|  * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
 | |
|  * Written by David Howells (dhowells@redhat.com)
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License
 | |
|  * as published by the Free Software Foundation; either version
 | |
|  * 2 of the License, or (at your option) any later version.
 | |
|  */
 | |
| 
 | |
| #include <linux/bitops.h>
 | |
| 
 | |
| int find_next_bit(const unsigned long *addr, int size, int offset)
 | |
| {
 | |
| 	const unsigned long *base;
 | |
| 	const int NBITS = sizeof(*addr) * 8;
 | |
| 	unsigned long tmp;
 | |
| 
 | |
| 	base = addr;
 | |
| 	if (offset) {
 | |
| 		int suboffset;
 | |
| 
 | |
| 		addr += offset / NBITS;
 | |
| 
 | |
| 		suboffset = offset % NBITS;
 | |
| 		if (suboffset) {
 | |
| 			tmp = *addr;
 | |
| 			tmp >>= suboffset;
 | |
| 			if (tmp)
 | |
| 				goto finish;
 | |
| 		}
 | |
| 
 | |
| 		addr++;
 | |
| 	}
 | |
| 
 | |
| 	while ((tmp = *addr) == 0)
 | |
| 		addr++;
 | |
| 
 | |
| 	offset = (addr - base) * NBITS;
 | |
| 
 | |
|  finish:
 | |
| 	/* count the remaining bits without using __ffs() since that takes a 32-bit arg */
 | |
| 	while (!(tmp & 0xff)) {
 | |
| 		offset += 8;
 | |
| 		tmp >>= 8;
 | |
| 	}
 | |
| 
 | |
| 	while (!(tmp & 1)) {
 | |
| 		offset++;
 | |
| 		tmp >>= 1;
 | |
| 	}
 | |
| 
 | |
| 	return offset;
 | |
| }
 |