Subversion Repositories shark

Rev

Rev 1545 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1254 giacomo 1
#include "kernel/kern.h"
1545 trimarchi 2
#include "fsf.h"
1254 giacomo 3
#include "fsf_server.h"
1538 trimarchi 4
 
1254 giacomo 5
#include "func.h"
6
 
7
extern struct loader_contract loader_contract_list[];
8
extern int total_loader_contract;
9
 
10
void fsfinit()
11
{
12
 
13
  struct loader_contract *c;
14
  fsf_contract_parameters_t contract;
15
  fsf_server_id_t server;
1442 giacomo 16
  union sigval no_sigval = {0};
1254 giacomo 17
  int i;
18
 
1538 trimarchi 19
  FSF_start_service_task();
1467 trimarchi 20
 
1254 giacomo 21
  for (i=0;i<total_loader_contract;i++) {
22
 
23
    c = &loader_contract_list[i];
24
 
25
    fsf_initialize_contract(&contract);
26
 
1538 trimarchi 27
    fsf_set_contract_basic_parameters(&contract,&c->cmin,&c->tmax,c->workload);
28
    fsf_set_contract_reclamation_parameters(&contract,&c->cmax,&c->tmin,FSF_DEFAULT_GRANULARITY, NULL, 1,1);
1254 giacomo 29
 
1442 giacomo 30
    if (TIMESPEC2USEC(&c->deadline) != 0)
1545 trimarchi 31
      fsf_set_contract_timing_requirements(&contract,false,&c->deadline,0,no_sigval,0,no_sigval);
32
    else
33
      fsf_set_contract_timing_requirements(&contract,true,NULL,0,no_sigval,0,no_sigval);
1442 giacomo 34
 
1538 trimarchi 35
    switch (c->local_scheduler) {
36
       case PAR_EDF:
37
         fsf_set_contract_scheduling_policy(&contract,FSF_EDF);
38
         break;
39
       case PAR_RM:
1553 trimarchi 40
         fsf_set_contract_scheduling_policy(&contract,FSF_FP);
1538 trimarchi 41
         break;
42
       case PAR_POSIX:
1553 trimarchi 43
         fsf_set_contract_scheduling_policy(&contract,FSF_RR);
1538 trimarchi 44
       break;
1254 giacomo 45
 
46
    }
1538 trimarchi 47
 
1254 giacomo 48
 
49
    fsf_negotiate_contract(&contract,&server);
50
    c->server = server;
1311 giacomo 51
 
1254 giacomo 52
  }
53
 
1311 giacomo 54
  print_server_list();
55
 
1254 giacomo 56
}