Subversion Repositories shark

Rev

Rev 1245 | 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
 
1246 giacomo 12
  struct loader_contract *c;
1245 giacomo 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
 
1246 giacomo 20
    c = &loader_contract_list[i];
21
 
1245 giacomo 22
    fsf_initialize_contract(&contract);
1209 giacomo 23
 
1245 giacomo 24
    fsf_set_contract_basic_parameters(&contract,&c->cmin,&c->tmax,&c->cmax,&c->tmin,c->workload);
1209 giacomo 25
 
1245 giacomo 26
    if (c->local_scheduler != PAR_POSIX) {
1209 giacomo 27
 
1245 giacomo 28
      switch (c->local_scheduler) {
29
         case PAR_EDF:
30
           fsf_set_local_scheduler_parameter(&contract,FSF_SCHEDULER_EDF);
31
           break;
32
         case PAR_RM:
33
           fsf_set_local_scheduler_parameter(&contract,FSF_SCHEDULER_RM);
34
           break;
35
      }
1209 giacomo 36
 
1245 giacomo 37
    }
38
 
39
    fsf_negotiate_contract(&contract,&server);
40
    c->server = server;
1246 giacomo 41
    bw = (long long)(MAX_BANDWIDTH) * TIMESPEC2USEC(&c->cmin) / TIMESPEC2USEC(&c->tmax);
1245 giacomo 42
    cprintf("FSF CONTRACT %d SERVER %d MIN BW %d.%03d\n", c->number, c->server,
43
             (int)(bw * 100 / MAX_BANDWIDTH),
44
             (int)(bw * 100000 / MAX_BANDWIDTH % 1000));
1209 giacomo 45
 
1245 giacomo 46
  }
1209 giacomo 47
 
48
}