/* *RobertJenkin'shashfunction. *https://burtleburtle.net/bob/hash/evahash.html *Thisisinthepublicdomain.
*/ #define mix(a, b, c) \ do { \
a = a - b; a = a - c; a = a ^ (c >> 13); \
b = b - c; b = b - a; b = b ^ (a << 8); \
c = c - a; c = c - b; c = c ^ (b >> 13); \
a = a - b; a = a - c; a = a ^ (c >> 12); \
b = b - c; b = b - a; b = b ^ (a << 16); \
c = c - a; c = c - b; c = c ^ (b >> 5); \
a = a - b; a = a - c; a = a ^ (c >> 3); \
b = b - c; b = b - a; b = b ^ (a << 10); \
c = c - a; c = c - b; c = c ^ (b >> 15); \
} while (0)
unsignedint ceph_str_hash_rjenkins(constchar *str, unsignedint length)
{ constunsignedchar *k = (constunsignedchar *)str;
__u32 a, b, c; /* the internal state */
__u32 len; /* how many key bytes still need mixing */
/* Set up the internal state */
len = length;
a = 0x9e3779b9; /* the golden ratio; an arbitrary value */
b = a;
c = 0; /* variable initialization of internal state */
/* handle most of the key */ while (len >= 12) {
a = a + (k[0] + ((__u32)k[1] << 8) + ((__u32)k[2] << 16) +
((__u32)k[3] << 24));
b = b + (k[4] + ((__u32)k[5] << 8) + ((__u32)k[6] << 16) +
((__u32)k[7] << 24));
c = c + (k[8] + ((__u32)k[9] << 8) + ((__u32)k[10] << 16) +
((__u32)k[11] << 24));
mix(a, b, c);
k = k + 12;
len = len - 12;
}
/* handle the last 11 bytes */
c = c + length; switch (len) { case11:
c = c + ((__u32)k[10] << 24);
fallthrough; case10:
c = c + ((__u32)k[9] << 16);
fallthrough; case9:
c = c + ((__u32)k[8] << 8); /* the first byte of c is reserved for the length */
fallthrough; case8:
b = b + ((__u32)k[7] << 24);
fallthrough; case7:
b = b + ((__u32)k[6] << 16);
fallthrough; case6:
b = b + ((__u32)k[5] << 8);
fallthrough; case5:
b = b + k[4];
fallthrough; case4:
a = a + ((__u32)k[3] << 24);
fallthrough; case3:
a = a + ((__u32)k[2] << 16);
fallthrough; case2:
a = a + ((__u32)k[1] << 8);
fallthrough; case1:
a = a + k[0]; /* case 0: nothing left to add */
}
mix(a, b, c);
constchar *ceph_str_hash_name(int type)
{ switch (type) { case CEPH_STR_HASH_LINUX: return"linux"; case CEPH_STR_HASH_RJENKINS: return"rjenkins"; default: return"unknown";
}
}
EXPORT_SYMBOL(ceph_str_hash_name);
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.12Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.