32 lines · 624 B · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0 */#ifndef _LINUX_BSEARCH_H#define _LINUX_BSEARCH_H #include <linux/types.h> static __always_inlinevoid *__inline_bsearch(const void *key, const void *base, size_t num, size_t size, cmp_func_t cmp){	const char *pivot;	int result; 	while (num > 0) {		pivot = base + (num >> 1) * size;		result = cmp(key, pivot); 		if (result == 0)			return (void *)pivot; 		if (result > 0) {			base = pivot + size;			num--;		}		num >>= 1;	} 	return NULL;} extern void *bsearch(const void *key, const void *base, size_t num, size_t size, cmp_func_t cmp); #endif /* _LINUX_BSEARCH_H */