1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_BSEARCH_H 3 #define _LINUX_BSEARCH_H 4 5 #include <linux/types.h> 6 7 static __always_inline 8 void *__inline_bsearch(const void *key, const void *base, size_t num, size_t size, cmp_func_t cmp) 9 { 10 const char *pivot; 11 int result; 12 13 while (num > 0) { 14 pivot = base + (num >> 1) * size; 15 result = cmp(key, pivot); 16 17 if (result == 0) 18 return (void *)pivot; 19 20 if (result > 0) { 21 base = pivot + size; 22 num--; 23 } 24 num >>= 1; 25 } 26 27 return NULL; 28 } 29 30 extern void *bsearch(const void *key, const void *base, size_t num, size_t size, cmp_func_t cmp); 31 32 #endif /* _LINUX_BSEARCH_H */ 33
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.