int generic_sporadic_task_ns(lt_t e, lt_t p, lt_t phase, int cpu, task_class_t cls, budget_policy_t budget_policy, int set_cpu_set, int dependent) { struct rt_task param; int ret; /* Zero out first --- this is helpful when we add plugin-specific * parameters during development. */ memset(¶m, 0, sizeof(param)); param.exec_cost = e; param.period = p; param.subtask_period = p; param.cpu = cpu; param.cls = cls; param.phase = phase; param.budget_policy = budget_policy; if (set_cpu_set) { ret = be_migrate_to(cpu); check("migrate to cpu"); } return set_rt_task_param(gettid(), ¶m); }
int sporadic_task_ns(lt_t e, lt_t p, lt_t phase, int cpu, unsigned int priority, task_class_t cls, budget_policy_t budget_policy, int set_cpu_set) { struct rt_task param; int ret; /* Zero out first --- this is helpful when we add plugin-specific * parameters during development. */ memset(¶m, 0, sizeof(param)); param.exec_cost = e; param.period = p; param.relative_deadline = p; /* implicit deadline */ param.cpu = cpu; param.cls = cls; param.phase = phase; param.budget_policy = budget_policy; param.priority = priority; if (set_cpu_set) { ret = be_migrate_to(cpu); check("migrate to cpu"); } return set_rt_task_param(gettid(), ¶m); }
int main(int argc, char** argv) { int i; long sum; FILE* sink; if (argc != 2 || (atoi(argv[1]) == 0 && strcmp(argv[1], "0")) || be_migrate_to(atoi(argv[1]))) { fprintf(stderr, "Usage: %s CPU-ID\n", argv[0]); exit(1); } srand(time(NULL) + getpid()); sink = fopen("/dev/null", "r"); while (1) { for (i = 0; i < NUM_VARS; i++) data[i] = rand(); sum = 0; for (i = 0; i < NUM_VARS; i++) sum += (i % 2 ? 1 : -1) * data[i]; for (i = NUM_VARS - 1; i >= 0; i--) sum += (i % 2 ? -1 : 1) * 100 / (data[i] ? data[i] : 1); fprintf(sink, "sum: %ld\n", sum); } }