summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2020-03-10 10:15:53 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2020-03-10 10:15:53 +0200
commit61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85 (patch)
tree6732e0e6847cc860c98bb9bfa7e5a5619d3504e2 /src/main.c
parent9eb76eda865dc4f82fd53223e5c557f707b569b9 (diff)
downloadalgos-ld1-61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85.tar.gz
algos-ld1-61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85.tar.bz2
algos-ld1-61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85.zip
bolt on data generation, kind of.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c25
1 files changed, 15 insertions, 10 deletions
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 <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;