aboutsummaryrefslogtreecommitdiffstats
path: root/src/hrt.c
blob: 224293c5bf16cfe00970d1efbf6f0b8e1e168280 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "edf-hsb.h"


void usage(char *name) 
{
	fprintf(stderr, 
		"EDF-HSB server setup utility\n"
		"Usage: %s hrt show    <#cpu>\n"
		"       %s hrt set     <#cpu> <wcet> <period>\n"
		"       %s be  create         <wcet> <period>\n", 
		name, name, name);
	exit(1);
}


int hrt(int argc, char** argv) 
{
	int wcet, period, cpu;

	if (argc == 2 && !strcmp(argv[0], "show")) {
		cpu = atoi(argv[1]);
		if (!get_hrt(cpu, &wcet, &period))
			printf("HRT/%d = (%d, %d)\n", cpu, wcet, period);
		else
			perror("cannot read HRT settings");
	} else if (argc == 4 && !strcmp(argv[0], "set")) {
		cpu    = atoi(argv[1]);
		wcet   = atoi(argv[2]);
		period = atoi(argv[3]);
		printf("Setting HRT/%d to (%d, %d)", cpu, wcet, period);
		if (!set_hrt(cpu, wcet, period))
			printf(" OK.\n");
		else {
			printf("\n");
			perror("cannot write HRT settings");
		}	
	} else
		return 1;

	return 0;
}

int be(int argc, char** argv)
{
	int wcet, period;
	if (argc == 3 && !strcmp(argv[0], "create")) {
		wcet    = atoi(argv[1]);
		period   = atoi(argv[2]);
		printf("Creating BE with (%d, %d)", wcet, period);
		if (!create_be(wcet, period))
			printf(" OK.\n");
		else {
			printf("\n");
			perror("cannot create BE server");
		}
		return 0;
	}
	else
		return 1;
}

int main(int argc, char** argv) 
{
	int ret = 1;
	if (argc > 1) {
		if (!strcmp(argv[1], "hrt"))
			ret = hrt(argc - 2, argv + 2);
		else if (!strcmp(argv[1], "be"))
			ret = be(argc - 2, argv + 2);
	}
	if (ret)
		usage(argv[0]);
	return ret;
}