Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 828 → Rev 829

/shark/trunk/ports/first/first-contract.c
303,7 → 303,7
}
//kern_printf("(SO LK)");
// we need a special implementation for mutex_lock ... additional parameter
return PISTAR_lock(FSF_get_shared_object_level(), &htable[index].mx,TIMESPEC2USEC(&op->wcet) );
return PISTAR_lock(FSF_get_shared_object_level(), &htable[index].mx,TIMESPEC2USEC(&op->wcet));
 
}
 
328,7 → 328,7
 
}
 
void fsf_init_shared_object(fsf_shared_object_t *obj,
int fsf_init_shared_object(fsf_shared_object_t *obj,
fsf_shared_obj_id_t id) {
int index;
int oldindex;
338,9 → 338,15
PISTAR_mutexattr_default(a);
//kern_printf("(SI SO)\n");
f=kern_fsave();
obj->size=0;
index=hash_fun(&id);
//kern_printf("Index %d Hash %d", index, htable[index].id);
 
if (htable[index].id == id) {
kern_frestore(f);
return -1;
}
 
if (htable[index].id>=0) {
oldindex=index;
index = (index + 1) % MAX_HASH_ENTRY;
349,13 → 355,19
// table is full
if (index==oldindex) {
kern_frestore(f);
return;
return -1;
}
}
obj->size=0;
 
mutex_init(&(htable[index]).mx, &a);
htable[index].id=id;
obj->obj_id=id;
kern_frestore(f);
 
return 0;
 
//kern_printf("(EI SO)\n");
}
 
391,13 → 403,16
kern_frestore(f);
return -1;
}
 
//kern_printf("(DO SO)");
obj->size++;
obj->shared_op[i].op_id=op->op_id;
obj->shared_op[i].wcet=op->wcet;
obj->shared_op[i].obj_id=obj->obj_id;
op->obj_id=obj->obj_id;
obj->shared_op[i].op_id = op->op_id;
TIMESPEC_ASSIGN(&obj->shared_op[i].wcet,&op->wcet);
obj->shared_op[i].obj_id = obj->obj_id;
op->obj_id = obj->obj_id;
 
kern_frestore(f);
 
return 0;
 
 
/shark/trunk/ports/first/include/fsf_contract.h
579,7 → 579,7
 
// initialization
// The shared object id is set equal to the second parameter.
void fsf_init_shared_object(fsf_shared_object_t *obj,
int fsf_init_shared_object(fsf_shared_object_t *obj,
fsf_shared_obj_id_t id);
 
// Declare an operation
/shark/trunk/ports/first/modules/pistar.c
20,11 → 20,11
 
/**
------------
CVS : $Id: pistar.c,v 1.7 2004-09-07 09:46:14 trimarchi Exp $
CVS : $Id: pistar.c,v 1.8 2004-09-08 16:51:34 giacomo Exp $
 
File: $File$
Revision: $Revision: 1.7 $
Last update: $Date: 2004-09-07 09:46:14 $
Revision: $Revision: 1.8 $
Last update: $Date: 2004-09-08 16:51:34 $
------------
 
Priority Inhertitance protocol. see pi.h for more details...
179,6 → 179,9
fsf_server_id_t server;
 
f = kern_fsave();
 
TRACER_LOGEVENT(FTrace_EVT_set_mutex_lock,(unsigned short int)proc_table[exec_shadow].context,(unsigned int)m);
 
//kern_printf("(PISTAR lock)");
p = (PISTAR_mutex_t *)m->opt;
if (!p) {
210,7 → 213,6
kern_cli();
}
fsf_get_server(&server, exec_shadow);
if (server==-1) kern_printf("error");
if (fsf_get_remain_budget(server)>wcet) cond=0;
else {
SERVER_disable_server(fsf_get_server_level(),server);
/shark/trunk/ports/first/modules/grubstar.c
773,12 → 773,11
int GRUBSTAR_get_remain_capacity(LEVEL l, int budget)
{
struct timespec actual,ty;
TIME tx;
int tx;
GRUBSTAR_level_des *lev = (GRUBSTAR_level_des *)(level_table[l]);
kern_gettime(&actual);
SUBTIMESPEC(&actual, &lev->cap_lasttime, &ty);
SUBTIMESPEC(&actual, &schedule_time, &ty);
tx = TIMESPEC2USEC(&ty);
 
// the remain capacity is from the first dispatch so is less then
// actual capacity
return (lev->b[budget].avail-tx);
833,7 → 832,7
/* force a hard reservation event */
avail_budget=lev->b[lev->tb[exec]].avail;
lev->b[lev->tb[exec]].flags = GRUBSTAR_NOACTIVE;
 
//kern_printf("(GS DS %d)", exec);
/* save the unused capacity */
spare=avail_budget+lev->b[lev->tb[exec]].avail;
if (spare<=0) spare=0;
/shark/trunk/ports/first/first-server.c
446,13 → 446,17
switch (scheduler_id) {
case FSF_SCHEDULER_POSIX:
return POSIXSTAR_getbudget(local_scheduler_level,thread);
*server = POSIXSTAR_getbudget(local_scheduler_level,thread);
return 0;
case FSF_SCHEDULER_EDF:
return EDFSTAR_getbudget(local_scheduler_level,thread);
*server = EDFSTAR_getbudget(local_scheduler_level,thread);
return 0;
case FSF_SCHEDULER_RM:
return RMSTAR_getbudget(local_scheduler_level,thread);
*server = RMSTAR_getbudget(local_scheduler_level,thread);
return 0;
case FSF_SCHEDULER_MPEG:
return MPEGSTAR_getbudget(local_scheduler_level,thread);
*server = MPEGSTAR_getbudget(local_scheduler_level,thread);
return 0;
default:
return -1;
}