diff options
author | David Phillips <dbphillipsnz@gmail.com> | 2016-05-31 12:54:16 +1200 |
---|---|---|
committer | David Phillips <dbphillipsnz@gmail.com> | 2016-05-31 12:54:16 +1200 |
commit | f2371dcb179928b8b36587d822daeb919b7d2d84 (patch) | |
tree | 3b23b4913f3d9f4db3400bf2bd5822daff9c6157 /fractal-gen.c | |
parent | 7e946fd9d958c505c21a2206141256967616614c (diff) | |
parent | 7c3082e934b79f26afaa53c8b72cfbaaa76bdae4 (diff) | |
download | fractal-gen-f2371dcb179928b8b36587d822daeb919b7d2d84.tar.xz |
Merge branch 'pos'
Diffstat (limited to 'fractal-gen.c')
-rw-r--r-- | fractal-gen.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/fractal-gen.c b/fractal-gen.c index 0d2e1a3..e80c96a 100644 --- a/fractal-gen.c +++ b/fractal-gen.c @@ -37,10 +37,11 @@ #include <sys/mman.h> #include <string.h> +struct frame f; + static struct section_generator generators[] = { { "mandelbrot-gen" , &generate_mandelbrot_section }, - { "burning-ship-gen" , &generate_burning_ship_section }, - { "burning-ship-lattice-gen" , &generate_burning_ship_lattice_section } + { "burning-ship-gen" , &generate_burning_ship_section } }; char *ram_units[] = { @@ -48,6 +49,13 @@ char *ram_units[] = { }; +void +defaultsd(double *who, double def) +{ + if (isnan(*who)) + *who = def; +} + int main(int argc, char **argv) { @@ -129,8 +137,12 @@ main(int argc, char **argv) munmap(sections, sizeof(data_section)*cores); return 1; } + /* FIXME repetition */ sections[i].core = i; sections[i].width = width; + sections[i].parent_frame.top = f.top; + sections[i].parent_frame.left = f.left; + sections[i].parent_frame.scale = f.scale; sections[i].datasize = toalloc; fprintf(stderr, " -> Thread %lu\r", i); pthread_create(§ions[i].thread, NULL, generator, &(sections[i])); @@ -195,20 +207,31 @@ parse_args(int argc, char **argv) clust_id = 0; clust_total = 1; + f.left = nan(""); + f.top = nan(""); + f.scale = nan(""); + /* bail out early if no arguments are supplied */ if (argc <= 1) return 1; - while ( (opt = getopt(argc, argv, "s:i:e:c:t:N:T:")) != -1 ) { + while ( (opt = getopt(argc, argv, "s:i:e:c:t:N:T:x:y:z:")) != -1 ) { switch (opt) { case 's': size = atoi(optarg); break; case 'i': iterat = atoi(optarg); break; case 'e': power = atof(optarg); break; + case 'c': cores = atoi(optarg); break; case 't': thread_mult = atof(optarg); break; + case 'N': clust_id = atoi(optarg); break; case 'T': clust_total = atoi(optarg); break; + + case 'x': f.left = atof(optarg); break; + case 'y': f.top = atof(optarg); break; + case 'z': f.scale = atof(optarg); break; + /* redundant case for '?', but explicitness is best */ case '?': default: |