X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fhash.h;h=5a9e2894131f552932bd455aee39e14634fa9829;hb=cfc50ae514f805dcd9c14589f21158185424daf6;hp=0e8edf395123dca2be0ec7fb213289489f973ea7;hpb=17041b123264aad1c3824e5f2edc37b580b38c92;p=sliver-openvswitch.git diff --git a/lib/hash.h b/lib/hash.h index 0e8edf395..5a9e28941 100644 --- a/lib/hash.h +++ b/lib/hash.h @@ -37,6 +37,8 @@ uint32_t hash_bytes(const void *, size_t n_bytes, uint32_t basis); static inline uint32_t hash_int(uint32_t x, uint32_t basis); static inline uint32_t hash_2words(uint32_t, uint32_t); +static inline uint32_t hash_uint64(uint64_t); +static inline uint32_t hash_uint64_basis(uint64_t x, uint32_t basis); uint32_t hash_3words(uint32_t, uint32_t, uint32_t); static inline uint32_t hash_boolean(bool x, uint32_t basis); @@ -118,6 +120,16 @@ static inline uint32_t hash_2words(uint32_t x, uint32_t y) return mhash_finish(mhash_add(mhash_add(x, 0), y), 8); } +static inline uint32_t hash_uint64(const uint64_t x) +{ + return hash_2words((uint32_t)(x >> 32), (uint32_t)x); +} + +static inline uint32_t hash_uint64_basis(const uint64_t x, + const uint32_t basis) +{ + return hash_3words((uint32_t)(x >> 32), (uint32_t)x, basis); +} #ifdef __cplusplus } #endif