projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: don't start the relayd with a wrong --output dir
[lttng-tools.git]
/
src
/
common
/
hashtable
/
utils.c
diff --git
a/src/common/hashtable/utils.c
b/src/common/hashtable/utils.c
index 3a0e2b76c8e644d0b4930214e2ac04ab8bd88e93..8d0e515aecafbb94a347c418f23bf341f719f71c 100644
(file)
--- a/
src/common/hashtable/utils.c
+++ b/
src/common/hashtable/utils.c
@@
-48,7
+48,7
@@
* with 12*3 instructions on 3 integers than you can with 3 instructions on 1
* byte), but shoehorning those bytes into integers efficiently is messy.
*/
* with 12*3 instructions on 3 integers than you can with 3 instructions on 1
* byte), but shoehorning those bytes into integers efficiently is messy.
*/
-
+#define _GNU_SOURCE
#include <assert.h>
#include <stdint.h> /* defines uint32_t etc */
#include <stdio.h> /* defines printf for tests */
#include <assert.h>
#include <stdint.h> /* defines uint32_t etc */
#include <stdio.h> /* defines printf for tests */
@@
-59,6
+59,7
@@
#include "utils.h"
#include <common/compat/endian.h> /* attempt to define endianness */
#include "utils.h"
#include <common/compat/endian.h> /* attempt to define endianness */
+#include <common/common.h>
/*
* My best guess at if you are big-endian or little-endian. This may
/*
* My best guess at if you are big-endian or little-endian. This may
@@
-445,11
+446,8
@@
static uint32_t __attribute__((unused)) hashlittle(const void *key,
return c;
}
return c;
}
-#if (CAA_BITS_PER_LONG == 64)
-/*
- * Hash function for number value.
- */
-unsigned long hash_key_ulong(void *_key, unsigned long seed)
+LTTNG_HIDDEN
+unsigned long hash_key_u64(void *_key, unsigned long seed)
{
union {
uint64_t v64;
{
union {
uint64_t v64;
@@
-461,14
+459,26
@@
unsigned long hash_key_ulong(void *_key, unsigned long seed)
} key;
v.v64 = (uint64_t) seed;
} key;
v.v64 = (uint64_t) seed;
- key.v64 =
(uint64_t
) _key;
+ key.v64 =
*(uint64_t *
) _key;
hashword2(key.v32, 2, &v.v32[0], &v.v32[1]);
return v.v64;
}
hashword2(key.v32, 2, &v.v32[0], &v.v32[1]);
return v.v64;
}
+
+#if (CAA_BITS_PER_LONG == 64)
+/*
+ * Hash function for number value.
+ */
+LTTNG_HIDDEN
+unsigned long hash_key_ulong(void *_key, unsigned long seed)
+{
+ uint64_t __key = (uint64_t) _key;
+ return (unsigned long) hash_key_u64(&__key, seed);
+}
#else
/*
* Hash function for number value.
*/
#else
/*
* Hash function for number value.
*/
+LTTNG_HIDDEN
unsigned long hash_key_ulong(void *_key, unsigned long seed)
{
uint32_t key = (uint32_t) _key;
unsigned long hash_key_ulong(void *_key, unsigned long seed)
{
uint32_t key = (uint32_t) _key;
@@
-480,6
+490,7
@@
unsigned long hash_key_ulong(void *_key, unsigned long seed)
/*
* Hash function for string.
*/
/*
* Hash function for string.
*/
+LTTNG_HIDDEN
unsigned long hash_key_str(void *key, unsigned long seed)
{
return hashlittle(key, strlen((char *) key), seed);
unsigned long hash_key_str(void *key, unsigned long seed)
{
return hashlittle(key, strlen((char *) key), seed);
@@
-488,6
+499,7
@@
unsigned long hash_key_str(void *key, unsigned long seed)
/*
* Hash function compare for number value.
*/
/*
* Hash function compare for number value.
*/
+LTTNG_HIDDEN
int hash_match_key_ulong(void *key1, void *key2)
{
if (key1 == key2) {
int hash_match_key_ulong(void *key1, void *key2)
{
if (key1 == key2) {
@@
-497,9
+509,23
@@
int hash_match_key_ulong(void *key1, void *key2)
return 0;
}
return 0;
}
+/*
+ * Hash function compare for number value.
+ */
+LTTNG_HIDDEN
+int hash_match_key_u64(void *key1, void *key2)
+{
+ if (*(uint64_t *) key1 == *(uint64_t *) key2) {
+ return 1;
+ }
+
+ return 0;
+}
+
/*
* Hash compare function for string.
*/
/*
* Hash compare function for string.
*/
+LTTNG_HIDDEN
int hash_match_key_str(void *key1, void *key2)
{
if (strcmp(key1, key2) == 0) {
int hash_match_key_str(void *key1, void *key2)
{
if (strcmp(key1, key2) == 0) {
This page took
0.025673 seconds
and
4
git commands to generate.