projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
urcu tests: add writer duration parameter
[userspace-rcu.git]
/
tests
/
test_qsbr_gc.c
diff --git
a/tests/test_qsbr_gc.c
b/tests/test_qsbr_gc.c
index c480461b9156092ce0b9329d5fb1d8f04580aec6..dd7a5c432d45b647c035ba99a13456a2e1de0a4d 100644
(file)
--- a/
tests/test_qsbr_gc.c
+++ b/
tests/test_qsbr_gc.c
@@
-82,6
+82,9
@@
struct reclaim_queue {
static struct reclaim_queue *pending_reclaims;
static struct reclaim_queue *pending_reclaims;
+/* write-side C.S. duration, in loops */
+static unsigned long wduration;
+
static inline void loop_sleep(unsigned long l)
{
while(l-- != 0)
static inline void loop_sleep(unsigned long l)
{
while(l-- != 0)
@@
-284,6
+287,8
@@
void *thr_writer(void *data)
new->a = 8;
old = _rcu_xchg_pointer(&test_rcu_pointer, new);
#endif
new->a = 8;
old = _rcu_xchg_pointer(&test_rcu_pointer, new);
#endif
+ if (unlikely(wduration))
+ loop_sleep(wduration);
rcu_gc_reclaim(wtidx, old);
nr_writes++;
if (unlikely(!test_duration_write()))
rcu_gc_reclaim(wtidx, old);
nr_writes++;
if (unlikely(!test_duration_write()))
@@
-304,8
+309,10
@@
void show_usage(int argc, char **argv)
#ifdef DEBUG_YIELD
printf(" [-r] [-w] (yield reader and/or writer)");
#endif
#ifdef DEBUG_YIELD
printf(" [-r] [-w] (yield reader and/or writer)");
#endif
+ printf(" [-b batch] (batch reclaim)");
printf(" [-d delay] (writer period (us))");
printf(" [-c duration] (reader C.S. duration (in loops))");
printf(" [-d delay] (writer period (us))");
printf(" [-c duration] (reader C.S. duration (in loops))");
+ printf(" [-e duration] (writer C.S. duration (in loops))");
printf(" [-v] (verbose output)");
printf(" [-a cpu#] [-a cpu#]... (affinity)");
printf("\n");
printf(" [-v] (verbose output)");
printf(" [-a cpu#] [-a cpu#]... (affinity)");
printf("\n");
@@
-386,6
+393,13
@@
int main(int argc, char **argv)
}
wdelay = atol(argv[++i]);
break;
}
wdelay = atol(argv[++i]);
break;
+ case 'e':
+ if (argc < i + 2) {
+ show_usage(argc, argv);
+ return -1;
+ }
+ wduration = atol(argv[++i]);
+ break;
case 'v':
verbose_mode = 1;
break;
case 'v':
verbose_mode = 1;
break;
This page took
0.038138 seconds
and
4
git commands to generate.