diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -1,3 +1,7 @@ +/* SPDX-License-Identifier: LGPL-2.1-only */ + +/* Copyright (C) 2020 Gediminas Jakutis */ + #include <errno.h> #include <stddef.h> #include <stdlib.h> @@ -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; |