def gen_taskset(periods, period_distribution, tasks_n, utilization, period_granularity=None, scale=ms2us, want_integral=True): if periods in NAMED_PERIODS: # Look up by name. (period_min, period_max) = NAMED_PERIODS[periods] else: # If unknown, then assume caller specified range manually. (period_min, period_max) = periods x = StaffordRandFixedSum(tasks_n, utilization, 1) if period_granularity is None: period_granularity = period_min periods = gen_periods(tasks_n, 1, period_min, period_max, period_granularity, period_distribution) ts = TaskSystem() periods = numpy.maximum(periods[0], max(period_min, period_granularity)) C = scale(x[0] * periods) taskset = numpy.c_[x[0], C / periods, periods, C] for t in range(numpy.size(taskset,0)): ts.append(SporadicTask(taskset[t][3], scale(taskset[t][2]))) if want_integral: quantize_params(ts) return ts
def gen_tasksets(options): x = StaffordRandFixedSum(options.n, options.util, 1) periods = gen_periods(options.n, 1, options.permin, options.permax, options.pergran, options.perdist) ts = TaskSystem() C = x[0] * periods[0] if options.round_C: C = numpy.round(C, decimals=0) elif options.floor_C: C = numpy.floor(C) taskset = numpy.c_[x[0], C / periods[0], periods[0], C] for t in range(numpy.size(taskset,0)): ts.append(SporadicTask(taskset[t][3], taskset[t][2])) # print ts return ts