+// SPDX-FileCopyrightText: 2009-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#ifndef _TEST_URCU_HASH_H
#define _TEST_URCU_HASH_H
/*
- * test_urcu_hash.h
- *
* Userspace RCU library - test program
- *
- * Copyright 2009-2012 - Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include "config.h"
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
-#include <assert.h>
#include <errno.h>
#include <signal.h>
+#include <urcu/assert.h>
#include <urcu/tls-compat.h>
-#include "cpuset.h"
+#include <compat-rand.h>
#include "thread-id.h"
+#include "../common/debug-yield.h"
#define DEFAULT_HASH_SIZE 32
#define DEFAULT_MIN_ALLOC_SIZE 1
return to_test_node(cds_lfht_iter_get_node(iter));
}
-extern volatile int test_go, test_stop;
-
extern unsigned long wdelay;
extern unsigned long duration;
void set_affinity(void);
-/*
- * returns 0 if test should end.
- */
-static inline int test_duration_write(void)
-{
- return !test_stop;
-}
-
-static inline int test_duration_read(void)
-{
- return !test_stop;
-}
-
extern DECLARE_URCU_TLS(unsigned long long, nr_writes);
extern DECLARE_URCU_TLS(unsigned long long, nr_reads);
/*----------------------------------- handle the last 3 uint32_t's */
switch (length) { /* all the case statements fall through */
- case 3: c += k[2];
- case 2: b += k[1];
+ case 3: c += k[2]; /* fall through */
+ case 2: b += k[1]; /* fall through */
case 1: a += k[0];
final(a, b, c);
+ /* fall through */
case 0: /* case 0: nothing left to add */
break;
}
/*----------------------------------- handle the last 3 uint32_t's */
switch (length) { /* all the case statements fall through */
- case 3: c += k[2];
- case 2: b += k[1];
+ case 3: c += k[2]; /* fall through */
+ case 2: b += k[1]; /* fall through */
case 1: a += k[0];
final(a, b, c);
+ /* fall through */
case 0: /* case 0: nothing left to add */
break;
}
{
unsigned int key = (unsigned int) _key;
- assert(length == sizeof(unsigned int));
+ urcu_posix_assert(length == sizeof(unsigned int));
return hash_u32(&key, 1, seed);
}
#else
uint32_t v32[2];
} key;
- assert(length == sizeof(unsigned long));
+ urcu_posix_assert(length == sizeof(unsigned long));
v.v64 = (uint64_t) seed;
key.v64 = (uint64_t) _key;
hashword2(key.v32, 2, &v.v32[0], &v.v32[1]);
} else {
unsigned long v;
- assert(length == sizeof(unsigned long));
+ urcu_posix_assert(length == sizeof(unsigned long));
v = (unsigned long) _key;
return v % nr_hash_chains;
}
void cds_lfht_test_lookup(struct cds_lfht *ht, void *key, size_t key_len,
struct cds_lfht_iter *iter)
{
- assert(key_len == sizeof(unsigned long));
+ urcu_posix_assert(key_len == sizeof(unsigned long));
cds_lfht_lookup(ht, test_hash(key, key_len, TEST_HASH_SEED),
test_match, key, iter);