Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 807 → Rev 808

/shark/trunk/ports/first/first-server.c
24,6 → 24,7
 
#include <pthread.h>
#include <stdlib.h>
#include "pistar.h"
 
 
//#define FSF_DEBUG
33,10 → 34,17
bandwidth_t fsf_max_bw = 0;
int fsf_server_level;
int shared_object_level;
 
PID server_task;
 
PORT channel[2];
 
int FSF_register_shared_object_module(void) {
return PISTAR_register_module();
}
 
 
int FSF_register_module(int server_level, bandwidth_t max_bw)
{
printk("FSF Module\n");
43,6 → 51,7
current_server=0;
fsf_server_level = server_level;
fsf_max_bw = max_bw;
// shared_object_level = FSF_register_shared_object_module();
return 0;
 
357,7 → 366,7
}
 
int fsf_get_server
int fsf_settask_nopreemptive
(fsf_server_id_t *server,
pthread_t thread)
{
367,6 → 376,64
scheduler_id = SERVER_get_local_scheduler_id_from_pid(fsf_server_level, thread);
 
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
 
break;
case FSF_SCHEDULER_EDF:
EDFSTAR_set_nopreemtive_current(local_scheduler_level);
return 1;
break;
case FSF_SCHEDULER_RM:
break;
case FSF_SCHEDULER_MPEG:
break;
default:
return -1;
}
return -1;
}
 
 
int fsf_settask_preemptive
(fsf_server_id_t *server,
pthread_t thread)
{
int local_scheduler_level, scheduler_id;
 
local_scheduler_level = SERVER_get_local_scheduler_level_from_pid(fsf_server_level,thread);
scheduler_id = SERVER_get_local_scheduler_id_from_pid(fsf_server_level, thread);
 
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
 
break;
case FSF_SCHEDULER_EDF:
EDFSTAR_unset_nopreemtive_current(local_scheduler_level);
return 1;
break;
case FSF_SCHEDULER_RM:
break;
case FSF_SCHEDULER_MPEG:
break;
default:
return -1;
}
 
return -1;
 
}
 
 
int fsf_get_server
(fsf_server_id_t *server,
pthread_t thread)
{
int local_scheduler_level, scheduler_id;
 
local_scheduler_level = SERVER_get_local_scheduler_level_from_pid(fsf_server_level,thread);
scheduler_id = SERVER_get_local_scheduler_id_from_pid(fsf_server_level, thread);
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
return POSIXSTAR_getbudget(local_scheduler_level,thread);
case FSF_SCHEDULER_EDF:
587,3 → 654,10
}
 
}
 
 
int fsf_get_remain_budget(fsf_server_id_t server) {
 
return SERVER_get_remain_capacity(fsf_server_level, server);
 
}