acrn-hypervisor/hypervisor/include/lib/hash.h
Ziheng Li eb8bcb06b3 Update copyright year range in code headers
Modified the copyright year range in code, and corrected "int32_tel"
into "Intel" in two "hypervisor/include/debug/profiling.h" and
"hypervisor/include/debug/profiling_internal.h".

Tracked-On: #7559
Signed-off-by: Ziheng Li <ziheng.li@intel.com>
2022-07-15 11:48:35 +08:00

31 lines
584 B
C

/*
* Copyright (C) 2020-2022 Intel Corporation.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef HASH_H
#define HASH_H
#include <types.h>
/*
* Hash factor is selected following below formula:
* - factor64 = 2^64 * ((sqrt(5) - 1)/2)
* here, ((sqrt(5) - 1)/2) is golden ratio.
*/
#define HASH_FACTOR64 0x9E3779B9486E555EUL
/*
* Hash function multiplies 64bit key by 64bit hash
* factor and returns high bits.
*
* @pre (bits < 64)
*/
static inline uint64_t hash64(uint64_t key, uint32_t bits)
{
return (key * HASH_FACTOR64) >> (64U - bits);
}
#endif /* HASH_H */