Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 223 → Rev 224

/shark/trunk/ports/first/first-sync.c
13,16 → 13,10
 
#include "fsf_contract.h"
 
#include "cbsstar.h"
#include "posixstar.h"
#include "edfstar.h"
extern int fsf_cbsstar_level;
 
#include <stdlib.h>
 
//#define FSF_DEBUG
 
extern int cbsstar_level;
 
int
fsf_create_synchobject(fsf_synch_object_handle_t *synch_handle)
{
77,8 → 71,8
TIME T,Q;
int budget, local_scheduler_level, scheduler_id;
 
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(cbsstar_level, exec_shadow);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(cbsstar_level, exec_shadow);
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(fsf_cbsstar_level, exec_shadow);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(fsf_cbsstar_level, exec_shadow);
 
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
97,7 → 91,7
 
if (next_budget != NULL && next_period != NULL) {
 
CBSSTAR_getbudgetinfo(cbsstar_level, &Q, &T, budget);
CBSSTAR_getbudgetinfo(fsf_cbsstar_level, &Q, &T, budget);
#ifdef FSF_DEBUG
kern_printf("(budget %d Q=%d T=%d)",budget,(int)Q,(int)T);
110,9 → 104,10
 
}
 
if (was_deadline_missed != NULL) *was_deadline_missed = false;
if (was_deadline_missed != NULL)
*was_deadline_missed = false;
if (was_budget_overran != NULL)
*was_budget_overran = (bool)CBSSTAR_was_budget_overran(cbsstar_level,budget);
*was_budget_overran = false;
 
if (at_absolute_time != NULL)
kern_event_post(at_absolute_time, (void (*)(void *))&task_activate, (void *)(exec_shadow));
142,8 → 137,8
TIME T,Q;
int budget, local_scheduler_level, scheduler_id;
 
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(cbsstar_level, exec_shadow);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(cbsstar_level, exec_shadow);
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(fsf_cbsstar_level, exec_shadow);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(fsf_cbsstar_level, exec_shadow);
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
162,7 → 157,7
 
if (next_budget != NULL && next_period != NULL) {
 
CBSSTAR_getbudgetinfo(cbsstar_level, &Q, &T, budget);
CBSSTAR_getbudgetinfo(fsf_cbsstar_level, &Q, &T, budget);
#ifdef FSF_DEBUG
kern_printf("(budget %d Q=%d T=%d)",budget,(int)Q,(int)T);
177,7 → 172,7
 
if (was_deadline_missed != NULL) *was_deadline_missed = false;
if (was_budget_overran != NULL)
*was_budget_overran = (bool)CBSSTAR_was_budget_overran(cbsstar_level,budget);
*was_budget_overran = (bool)CBSSTAR_was_budget_overran(fsf_cbsstar_level,budget);
 
if (synch_handle->events > 0) {
task_activate(exec_shadow);
/shark/trunk/ports/first/include/fsf_contract.h
18,9 → 18,17
#include "fsf_configuration_parameters.h"
#include "fsf_opaque_types.h"
 
#include "posix.h"
#include "cbsstar.h"
#include "edfstar.h"
#include "posixstar.h"
 
#ifndef _FSF_CONTRACT_H_
#define _FSF_CONTRACT_H_
 
/* S.Ha.R.K. Init */
int FSF_register_module(int posix_level, int cbsstar_level);
 
//////////////////////////////////////////////////////////////////
// BASIC TYPES AND CONSTANTS
//////////////////////////////////////////////////////////////////
/shark/trunk/ports/first/modules/edfstar.c
18,11 → 18,11
 
/**
------------
CVS : $Id: edfstar.c,v 1.1 2003-09-10 15:56:28 giacomo Exp $
CVS : $Id: edfstar.c,v 1.2 2003-09-11 13:51:33 giacomo Exp $
 
File: $File$
Revision: $Revision: 1.1 $
Last update: $Date: 2003-09-10 15:56:28 $
Revision: $Revision: 1.2 $
Last update: $Date: 2003-09-11 13:51:33 $
------------
**/
 
70,7 → 70,7
* DEBUG stuffs begin
*/
 
#define EDFSTAR_DEBUG
//#define EDFSTAR_DEBUG
 
#ifdef EDFSTAR_DEBUG
 
203,9 → 203,9
break;
 
default:
//#ifdef EDFSTAR_DEBUG
#ifdef EDFSTAR_DEBUG
kern_printf("(E:Dl:%d)",p);
//#endif
#endif
/* else, a deadline miss occurred!!! */
lev->dline_miss[p]++;
 
/shark/trunk/ports/first/modules/posixstar.c
448,7 → 448,7
proc_table[p].wcet = lev->slice;
}
 
proc_table[p].control = lev->new_control[p];
proc_table[p].control |= lev->new_control[p];
 
POSIXSTAR_public_activate(l,p);
 
/shark/trunk/ports/first/first-server.c
21,11 → 21,23
#include <pthread.h>
#include <stdlib.h>
 
#define FSF_DEBUG
//#define FSF_DEBUG
 
int cbsstar_level;
int posix_level;
int fsf_cbsstar_level;
int fsf_posix_level;
 
int FSF_register_module(int posix_level, int cbsstar_level)
{
 
printk("FSF Module\n");
 
fsf_posix_level = posix_level;
fsf_cbsstar_level = cbsstar_level;
 
return 0;
 
}
 
/* Convert the contract specification to
* budget parameters
*/
38,16 → 50,16
 
switch (contract->local_scheduler_id) {
case FSF_SCHEDULER_POSIX:
local_scheduler_level = POSIXSTAR_register_level(cbsstar_level,5000,32);
local_scheduler_level = POSIXSTAR_register_level(fsf_cbsstar_level,5000,32);
break;
case FSF_SCHEDULER_EDF:
local_scheduler_level = EDFSTAR_register_level(cbsstar_level);
local_scheduler_level = EDFSTAR_register_level(fsf_cbsstar_level);
break;
case FSF_SCHEDULER_RM:
break;
}
*budget = CBSSTAR_setbudget(cbsstar_level,
*budget = CBSSTAR_setbudget(fsf_cbsstar_level,
TIMESPEC2USEC(&(contract->budget_min)),
TIMESPEC2USEC(&(contract->period_max)),
local_scheduler_level,contract->local_scheduler_id);
61,7 → 73,7
int budget)
{
 
CBSSTAR_adjust_budget(cbsstar_level,
CBSSTAR_adjust_budget(fsf_cbsstar_level,
TIMESPEC2USEC(&(contract->budget_min)),
TIMESPEC2USEC(&(contract->period_max)),
budget);
142,8 → 154,8
if (server == -1 || thread == -1)
return FSF_ERR_BIND_THREAD;
 
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(cbsstar_level,server);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(cbsstar_level,server);
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(fsf_cbsstar_level,server);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(fsf_cbsstar_level,server);
 
/* Check if thread is already bind */
switch (scheduler_id) {
216,8 → 228,8
if (thread == -1)
return FSF_ERR_UNBIND_THREAD;
 
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(cbsstar_level,thread);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(cbsstar_level,thread);
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(fsf_cbsstar_level,thread);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(fsf_cbsstar_level,thread);
 
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
237,10 → 249,10
 
msg->command = STD_SET_NEW_MODEL;
msg->param = (void *)(&nrt);
level_table[posix_level]->public_message(posix_level,thread,msg);
level_table[fsf_posix_level]->public_message(fsf_posix_level,thread,msg);
 
msg->command = STD_SET_NEW_LEVEL;
msg->param = (void *)(posix_level);
msg->param = (void *)(fsf_posix_level);
task_message(msg,thread,0);
 
free(msg);
264,10 → 276,10
 
msg->command = STD_SET_NEW_MODEL;
msg->param = (void *)(&nrt);
level_table[posix_level]->public_message(posix_level,thread,msg);
level_table[fsf_posix_level]->public_message(fsf_posix_level,thread,msg);
 
msg->command = STD_SET_NEW_LEVEL;
msg->param = (void *)(posix_level);
msg->param = (void *)(fsf_posix_level);
task_message(msg,thread,0);
 
free(msg);
338,8 → 350,8
{
int local_scheduler_level, scheduler_id;
 
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(cbsstar_level,thread);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(cbsstar_level, thread);
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(fsf_cbsstar_level,thread);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(fsf_cbsstar_level, thread);
 
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
367,8 → 379,8
if (*server < 0)
return FSF_ERR_INVALID_SERVER;
 
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(cbsstar_level,*server);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(cbsstar_level,*server);
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(fsf_cbsstar_level,*server);
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(fsf_cbsstar_level,*server);
 
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
383,7 → 395,7
break;
}
 
CBSSTAR_removebudget(cbsstar_level,*server);
CBSSTAR_removebudget(fsf_cbsstar_level,*server);
 
level_free_descriptor(local_scheduler_level);