1/*- 2 * Copyright (c) 2018 VMware, Inc. 3 * 4 * SPDX-License-Identifier: (BSD-2-Clause OR GPL-2.0) 5 */ 6 7/* Some common utilities used by the VMCI kernel module. */ 8 9#ifndef _VMCI_UTILS_H_ 10#define _VMCI_UTILS_H_ 11 12/* 13 *------------------------------------------------------------------------------ 14 * 15 * vmci_hash_id -- 16 * 17 * Hash function used by the Simple Datagram API. Hashes only a VMCI ID (not 18 * the full VMCI handle). Based on the djb2 hash function by Dan Bernstein. 19 * 20 * Result: 21 * Returns guest call size. 22 * 23 * Side effects: 24 * None. 25 * 26 *------------------------------------------------------------------------------ 27 */ 28 29static inline int 30vmci_hash_id(vmci_id id, unsigned size) 31{ 32 unsigned i; 33 int hash = 5381; 34 35 for (i = 0; i < sizeof(id); i++) 36 hash = ((hash << 5) + hash) + (uint8_t)(id >> (i * 8)); 37 38 return (hash & (size - 1)); 39} 40 41#endif /* !_VMCI_UTILS_H_ */ 42