X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/191737e1350a125739697af304730a0028ca01d5..4769a870917b98723690aa336d12d0656769528b:/lunaix-os/includes/lib/hash.h?ds=sidebyside diff --git a/lunaix-os/includes/lib/hash.h b/lunaix-os/includes/lib/hash.h new file mode 100644 index 0000000..ad5e98b --- /dev/null +++ b/lunaix-os/includes/lib/hash.h @@ -0,0 +1,26 @@ +#ifndef __LUNAIX_HASH_H +#define __LUNAIX_HASH_H + +#include + +#define HASH_SIZE_BITS 32 + +uint32_t +strhash_32(unsigned char* str, uint32_t truncate_to); + +/** + * @brief Simple generic hash function + * + * ref: + * https://elixir.bootlin.com/linux/v5.18.12/source/include/linux/hash.h#L60 + * + * @param val + * @return uint32_t + */ +inline uint32_t +hash_32(uint32_t val, uint32_t truncate_to) +{ + return (val * 0x61C88647u) >> (HASH_SIZE_BITS - truncate_to); +} + +#endif /* __LUNAIX_HASH_H */