From 2c9689fe0485146fc5ff5e5023c941629eee124d Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Mon, 8 Jun 2009 14:57:27 -0400 Subject: [PATCH] Add number of reader/writers parameters to tests Signed-off-by: Mathieu Desnoyers --- test_perthreadlock_timing.c | 32 ++++++++++++++++++++++++++------ test_qsbr_timing.c | 32 ++++++++++++++++++++++++++------ test_rwlock_timing.c | 32 ++++++++++++++++++++++++++------ test_urcu_timing.c | 32 ++++++++++++++++++++++++++------ 4 files changed, 104 insertions(+), 24 deletions(-) diff --git a/test_perthreadlock_timing.c b/test_perthreadlock_timing.c index 479895e..625f999 100644 --- a/test_perthreadlock_timing.c +++ b/test_perthreadlock_timing.c @@ -70,11 +70,14 @@ static struct per_thread_lock *per_thread_lock; #define INNER_WRITE_LOOP 200U #define WRITE_LOOP ((unsigned long long)OUTER_WRITE_LOOP * INNER_WRITE_LOOP) -#define NR_READ 10 -#define NR_WRITE 9 +static int num_read; +static int num_write; -static cycles_t reader_time[NR_READ] __attribute__((aligned(128))); -static cycles_t writer_time[NR_WRITE] __attribute__((aligned(128))); +#define NR_READ num_read +#define NR_WRITE num_write + +static cycles_t __attribute__((aligned(128))) *reader_time; +static cycles_t __attribute__((aligned(128))) *writer_time; void *thr_reader(void *arg) { @@ -136,15 +139,27 @@ void *thr_writer(void *arg) return ((void*)2); } -int main() +int main(int argc, char **argv) { int err; - pthread_t tid_reader[NR_READ], tid_writer[NR_WRITE]; + pthread_t *tid_reader, *tid_writer; void *tret; int i; cycles_t tot_rtime = 0; cycles_t tot_wtime = 0; + if (argc < 2) { + printf("Usage : %s nr_readers nr_writers\n", argv[0]); + exit(-1); + } + num_read = atoi(argv[1]); + num_write = atoi(argv[2]); + + reader_time = malloc(sizeof(*reader_time) * num_read); + writer_time = malloc(sizeof(*writer_time) * num_write); + tid_reader = malloc(sizeof(*tid_reader) * num_read); + tid_writer = malloc(sizeof(*tid_writer) * num_write); + printf("thread %-6s, thread id : %lx, tid %lu\n", "main", pthread_self(), (unsigned long)gettid()); @@ -186,5 +201,10 @@ int main() (double)tot_wtime / ((double)NR_WRITE * (double)WRITE_LOOP)); free(per_thread_lock); + free(reader_time); + free(writer_time); + free(tid_reader); + free(tid_writer); + return 0; } diff --git a/test_qsbr_timing.c b/test_qsbr_timing.c index bdbb581..e296ced 100644 --- a/test_qsbr_timing.c +++ b/test_qsbr_timing.c @@ -87,11 +87,14 @@ static struct test_array *test_rcu_pointer; #define INNER_WRITE_LOOP 200U #define WRITE_LOOP ((unsigned long long)OUTER_WRITE_LOOP * INNER_WRITE_LOOP) -#define NR_READ 10 -#define NR_WRITE 9 +static int num_read; +static int num_write; -static cycles_t reader_time[NR_READ] __attribute__((aligned(128))); -static cycles_t writer_time[NR_WRITE] __attribute__((aligned(128))); +#define NR_READ num_read +#define NR_WRITE num_write + +static cycles_t __attribute__((aligned(128))) *reader_time; +static cycles_t __attribute__((aligned(128))) *writer_time; void *thr_reader(void *arg) { @@ -168,15 +171,27 @@ void *thr_writer(void *arg) return ((void*)2); } -int main() +int main(int argc, char **argv) { int err; - pthread_t tid_reader[NR_READ], tid_writer[NR_WRITE]; + pthread_t *tid_reader, *tid_writer; void *tret; int i; cycles_t tot_rtime = 0; cycles_t tot_wtime = 0; + if (argc < 2) { + printf("Usage : %s nr_readers nr_writers\n", argv[0]); + exit(-1); + } + num_read = atoi(argv[1]); + num_write = atoi(argv[2]); + + reader_time = malloc(sizeof(*reader_time) * num_read); + writer_time = malloc(sizeof(*writer_time) * num_write); + tid_reader = malloc(sizeof(*tid_reader) * num_read); + tid_writer = malloc(sizeof(*tid_writer) * num_write); + printf("thread %-6s, thread id : %lx, tid %lu\n", "main", pthread_self(), (unsigned long)gettid()); @@ -213,5 +228,10 @@ int main() printf("Time per write : %g cycles\n", (double)tot_wtime / ((double)NR_WRITE * (double)WRITE_LOOP)); + free(reader_time); + free(writer_time); + free(tid_reader); + free(tid_writer); + return 0; } diff --git a/test_rwlock_timing.c b/test_rwlock_timing.c index 3f0b0c9..cd20876 100644 --- a/test_rwlock_timing.c +++ b/test_rwlock_timing.c @@ -66,11 +66,14 @@ static struct test_array test_array = { 8 }; #define INNER_WRITE_LOOP 200U #define WRITE_LOOP ((unsigned long long)OUTER_WRITE_LOOP * INNER_WRITE_LOOP) -#define NR_READ 10 -#define NR_WRITE 9 +static int num_read; +static int num_write; -static cycles_t reader_time[NR_READ] __attribute__((aligned(128))); -static cycles_t writer_time[NR_WRITE] __attribute__((aligned(128))); +#define NR_READ num_read +#define NR_WRITE num_write + +static cycles_t __attribute__((aligned(128))) *reader_time; +static cycles_t __attribute__((aligned(128))) *writer_time; void *thr_reader(void *arg) { @@ -126,15 +129,27 @@ void *thr_writer(void *arg) return ((void*)2); } -int main() +int main(int argc, char **argv) { int err; - pthread_t tid_reader[NR_READ], tid_writer[NR_WRITE]; + pthread_t *tid_reader, *tid_writer; void *tret; int i; cycles_t tot_rtime = 0; cycles_t tot_wtime = 0; + if (argc < 2) { + printf("Usage : %s nr_readers nr_writers\n", argv[0]); + exit(-1); + } + num_read = atoi(argv[1]); + num_write = atoi(argv[2]); + + reader_time = malloc(sizeof(*reader_time) * num_read); + writer_time = malloc(sizeof(*writer_time) * num_write); + tid_reader = malloc(sizeof(*tid_reader) * num_read); + tid_writer = malloc(sizeof(*tid_writer) * num_write); + printf("thread %-6s, thread id : %lx, tid %lu\n", "main", pthread_self(), (unsigned long)gettid()); @@ -170,5 +185,10 @@ int main() printf("Time per write : %g cycles\n", (double)tot_wtime / ((double)NR_WRITE * (double)WRITE_LOOP)); + free(reader_time); + free(writer_time); + free(tid_reader); + free(tid_writer); + return 0; } diff --git a/test_urcu_timing.c b/test_urcu_timing.c index 6b4aac8..5f75bae 100644 --- a/test_urcu_timing.c +++ b/test_urcu_timing.c @@ -87,11 +87,14 @@ static struct test_array *test_rcu_pointer; #define INNER_WRITE_LOOP 200U #define WRITE_LOOP ((unsigned long long)OUTER_WRITE_LOOP * INNER_WRITE_LOOP) -#define NR_READ 10 -#define NR_WRITE 9 +static int num_read; +static int num_write; -static cycles_t reader_time[NR_READ] __attribute__((aligned(128))); -static cycles_t writer_time[NR_WRITE] __attribute__((aligned(128))); +#define NR_READ num_read +#define NR_WRITE num_write + +static cycles_t __attribute__((aligned(128))) *reader_time; +static cycles_t __attribute__((aligned(128))) *writer_time; void *thr_reader(void *arg) { @@ -167,15 +170,27 @@ void *thr_writer(void *arg) return ((void*)2); } -int main() +int main(int argc, char **argv) { int err; - pthread_t tid_reader[NR_READ], tid_writer[NR_WRITE]; + pthread_t *tid_reader, *tid_writer; void *tret; int i; cycles_t tot_rtime = 0; cycles_t tot_wtime = 0; + if (argc < 2) { + printf("Usage : %s nr_readers nr_writers\n", argv[0]); + exit(-1); + } + num_read = atoi(argv[1]); + num_write = atoi(argv[2]); + + reader_time = malloc(sizeof(*reader_time) * num_read); + writer_time = malloc(sizeof(*writer_time) * num_write); + tid_reader = malloc(sizeof(*tid_reader) * num_read); + tid_writer = malloc(sizeof(*tid_writer) * num_write); + printf("thread %-6s, thread id : %lx, tid %lu\n", "main", pthread_self(), (unsigned long)gettid()); @@ -212,5 +227,10 @@ int main() printf("Time per write : %g cycles\n", (double)tot_wtime / ((double)NR_WRITE * (double)WRITE_LOOP)); + free(reader_time); + free(writer_time); + free(tid_reader); + free(tid_writer); + return 0; } -- 2.34.1