cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bsearch.h (624B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _LINUX_BSEARCH_H
      3#define _LINUX_BSEARCH_H
      4
      5#include <linux/types.h>
      6
      7static __always_inline
      8void *__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
     30extern void *bsearch(const void *key, const void *base, size_t num, size_t size, cmp_func_t cmp);
     31
     32#endif /* _LINUX_BSEARCH_H */