Rev 1209 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1209 | giacomo | 1 | #include "kernel/kern.h" |
2 | #include "fsf_server.h" |
||
3 | #include "fsf_contract.h" |
||
1245 | giacomo | 4 | #include "func.h" |
1209 | giacomo | 5 | |
1245 | giacomo | 6 | extern struct loader_contract loader_contract_list[]; |
7 | extern int total_loader_contract; |
||
8 | |||
1209 | giacomo | 9 | void fsfinit() |
10 | { |
||
11 | |||
1245 | giacomo | 12 | struct loader_contract *c = loader_contract_list; |
13 | fsf_contract_parameters_t contract; |
||
14 | fsf_server_id_t server; |
||
15 | int i; |
||
16 | long long bw; |
||
1209 | giacomo | 17 | |
1245 | giacomo | 18 | for (i=0;i<total_loader_contract;i++) { |
1209 | giacomo | 19 | |
1245 | giacomo | 20 | fsf_initialize_contract(&contract); |
1209 | giacomo | 21 | |
1245 | giacomo | 22 | fsf_set_contract_basic_parameters(&contract,&c->cmin,&c->tmax,&c->cmax,&c->tmin,c->workload); |
1209 | giacomo | 23 | |
1245 | giacomo | 24 | if (c->local_scheduler != PAR_POSIX) { |
1209 | giacomo | 25 | |
1245 | giacomo | 26 | switch (c->local_scheduler) { |
27 | case PAR_EDF: |
||
28 | fsf_set_local_scheduler_parameter(&contract,FSF_SCHEDULER_EDF); |
||
29 | break; |
||
30 | case PAR_RM: |
||
31 | fsf_set_local_scheduler_parameter(&contract,FSF_SCHEDULER_RM); |
||
32 | break; |
||
33 | } |
||
1209 | giacomo | 34 | |
1245 | giacomo | 35 | } |
36 | |||
37 | fsf_negotiate_contract(&contract,&server); |
||
38 | c->server = server; |
||
39 | bw = MAX_BANDWIDTH * TIMESPEC2USEC(&c->tmax) / TIMESPEC2USEC(&c->cmin); |
||
40 | cprintf("FSF CONTRACT %d SERVER %d MIN BW %d.%03d\n", c->number, c->server, |
||
41 | (int)(bw * 100 / MAX_BANDWIDTH), |
||
42 | (int)(bw * 100000 / MAX_BANDWIDTH % 1000)); |
||
1209 | giacomo | 43 | |
1245 | giacomo | 44 | } |
1209 | giacomo | 45 | |
46 | } |