From 61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85 Mon Sep 17 00:00:00 2001 From: Gediminas Jakutis Date: Tue, 10 Mar 2020 10:15:53 +0200 Subject: bolt on data generation, kind of. Signed-off-by: Gediminas Jakutis --- src/main.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 0d9109f..fabc612 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,7 @@ +/* SPDX-License-Identifier: LGPL-2.1-only */ + +/* Copyright (C) 2020 Gediminas Jakutis */ + #include #include #include @@ -6,9 +10,6 @@ #include "io.h" #include "defs.h" -static const unsigned int FLAG_DATA_FORMAT = (1 << 0); -static const unsigned int FLAG_DATA_ACCESS = (1 << 1); - static char randfile[] = "/dev/urandom"; static struct settings settings = {0}; @@ -62,13 +63,13 @@ static int parseargs(int argc, char **argv, struct settings * settings) } else if (!(strcmp(argv[i], "--generate"))) { s.opmode = mode_generate; } else if (!(strcmp(argv[i], "--array"))) { - s.opmode &= ~FLAG_DATA_FORMAT; + s.format = array; } else if (!(strcmp(argv[i], "--list"))) { - s.opmode |= FLAG_DATA_FORMAT; + s.format = list; } else if (!(strcmp(argv[i], "--cache"))) { - s.opmode &= ~FLAG_DATA_ACCESS; + s.access = cached; } else if (!(strcmp(argv[i], "--no-cache"))) { - s.opmode |= FLAG_DATA_ACCESS; + s.access = direct; } else if (!(strncmp(argv[i], "--position=", 11))) { if (strlen(argv[i]) > 11) { s.ss = strtoul(argv[i] + 11, NULL, 10); @@ -104,13 +105,17 @@ static int parseargs(int argc, char **argv, struct settings * settings) if (s.opmode == mode_generate) { - /* we always generate in-memory for speed */ - s.opmode &= ~FLAG_DATA_ACCESS; + /* we always generate in-memory for PERFORMANCE */ + s.access = cached; + if (s.format == list) { + /* we need to generate the empty header, too */ + ++s.to; + } } else if (s.opmode == mode_fetch) { s.to = s.ss + s.to; } - s.stride = s.opmode & FLAG_DATA_FORMAT ? sizeof(struct entry_l) : sizeof(struct entry); + s.stride = s.format == list ? sizeof(struct entry_l) : sizeof(struct entry); *settings = s; -- cgit v1.2.3