29 lines
		
	
	
		
			563 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			563 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| #ifndef HASH_H
 | |
| #define HASH_H
 | |
| 
 | |
| static inline unsigned int hash_str(const char *s)
 | |
| {
 | |
| 	/* fnv32 hash */
 | |
| 	unsigned int hash = 2166136261U;
 | |
| 
 | |
| 	for (; *s; s++)
 | |
| 		hash = (hash ^ *s) * 0x01000193;
 | |
| 	return hash;
 | |
| }
 | |
| 
 | |
| /* simplified version of functions from include/linux/hash.h */
 | |
| #define GOLDEN_RATIO_32 0x61C88647
 | |
| 
 | |
| static inline unsigned int hash_32(unsigned int val)
 | |
| {
 | |
| 	return 0x61C88647 * val;
 | |
| }
 | |
| 
 | |
| static inline unsigned int hash_ptr(const void *ptr)
 | |
| {
 | |
| 	return hash_32((unsigned int)(unsigned long)ptr);
 | |
| }
 | |
| 
 | |
| #endif /* HASH_H */
 |