stochastic_taskset *load_stochastic_taskset(FILE * source, char delimiter[]) { stochastic_taskset *taskset; stochastic_task_view t_view; size_t line_len = 0; ssize_t str_len = 0; double *buffer = NULL; char *line = NULL; unsigned int cells = 0; unsigned int distribution_offset = 3; taskset = new_stochastic_taskset(10); while ((str_len = getline(&line, &line_len, source)) != -1) { if (line[0] != '#') { cells = get_cells(line, delimiter) - distribution_offset; buffer = realloc(buffer, (cells) * sizeof(double)); if (!buffer) { return NULL; } memset(buffer, 0, (cells) * sizeof(double)); if (!parse_line (line, delimiter, buffer, cells, distribution_offset, &t_view)) { free(buffer); free(line); free_stochastic_taskset(taskset); return NULL; } if (!add_task(taskset, t_view)) { free(buffer); free(line); free_stochastic_taskset(taskset); return NULL; } } } free(buffer); free(line); return taskset; }
static void of_bus_default_count_cells(struct device_node *dev, int *addrc, int *sizec) { get_cells(dev, addrc, sizec); }
int sum (int r, char c, vector<string> strs) { int k = (r << 10) + c; dict[r - 1][c - offset] = get_cells(strs); mp[k] = strs; return dict[r - 1][c - offset]; }
int get (int r, char c) { int k = (r << 10) + c; if (mp.find(k) == mp.end()) return dict[r - 1][c - offset]; return get_cells(mp[k]); }