Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 963 → Rev 964

/shark/trunk/ports/first/first-sync.c
136,7 → 136,7
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
}
 
htable[index].id=-1;
//if (!synch_handle) return FSF_ERR_INVALID_SYNCH_OBJECT_HANDLE;
 
while (iq_getfirst(&(htable[index].threads)) != NIL);
/shark/trunk/ports/first/first-contract.c
49,6 → 49,7
 
FSF_start_service_task();
FSF_init_synch_obj_layer();
return 0;
}
 
 
250,8 → 251,8
if (!contract) return FSF_ERR_BAD_ARGUMENT;
*granularity = contract->granularity;
memcpy(utilization_set,&contract->utilization_set,sizeof(fsf_utilization_set_t));
if (utilization_set)
memcpy(utilization_set,&contract->utilization_set,sizeof(fsf_utilization_set_t));
 
TIMESPEC_ASSIGN(budget_max,&contract->budget_max);
TIMESPEC_ASSIGN(period_min,&contract->period_min);
283,9 → 284,9
{
if (!contract) return FSF_ERR_BAD_ARGUMENT;
if (critical_sections)
memcpy(critical_sections,&contract->critical_sections,sizeof(fsf_critical_sections_t));
memcpy(critical_sections,&contract->critical_sections,sizeof(fsf_critical_sections_t));
return 0;
 
}
/shark/trunk/ports/first/server-task.c
34,7 → 34,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
* CVS : $Id: server-task.c,v 1.15 2005-01-18 15:04:52 trimarchi Exp $
* CVS : $Id: server-task.c,v 1.16 2005-02-25 10:56:55 trimarchi Exp $
*/
 
#include "ll/i386/64bit.h"
65,7 → 65,7
tra = port_connect("CHANR",sizeof(struct mess),STREAM,WRITE);
while(1) {
 
//kern_printf("(Status %d)", stask_status);
switch(stask_status) {
// wait for operation
case WAIT_RENEGOTIATION:
78,6 → 78,7
stask_status=ACTIVE;
//kern_printf("(REN %d)", msg.server);
port_send(tra,&msg,BLOCK);
//kern_printf("(--END-- 1)");
 
continue;
} else
91,8 → 92,11
case WAIT_SIGNAL:
if (!fsf_get_renegotiation_status(msg.server,&status)) {
if (status==FSF_ADMITTED) {
sigqueue(msg.process, msg.sig_notify, msg.sig_value);
//sigqueue(msg.process, msg.sig_notify, msg.sig_value);
stask_status=ACTIVE;
port_send(tra,&msg,BLOCK);
//kern_printf("(--END-- 2)");
continue;
}
}
break;
105,7 → 109,7
#endif
switch (msg.type) {
case NEGOTIATE_CONTRACT:
case NEGOTIATE_CONTRACT:
if (negotiate_contract(&msg.contract, &msg.server)==FSF_ERR_CONTRACT_REJECTED)
msg.server=-1;
else {
118,7 → 122,11
case REQUEST_RENEGOTIATE_CONTRACT:
if (renegotiate_contract(&msg.contract, msg.server)==FSF_ERR_CONTRACT_REJECTED)
msg.server=-1;
else stask_status=WAIT_SIGNAL;
else {
stask_status=WAIT_SIGNAL;
//task_endcycle();
continue;
}
break;
180,7 → 188,9
break;
}
}
port_send(tra,&msg,BLOCK);
//kern_printf("(--END--)");
}
}
192,10 → 202,18
TIME T,Q;
for (i=0; i<current_server; i++) {
mul32div32to32(MAX_BANDWIDTH,server_list[i].Cmin,server_list[i].U,T);
if (T > server_list[i].Tmin ) {
server_list[i].actual_budget = server_list[i].Cmin;
 
if (T > server_list[i].Tmax)
T=server_list[i].Tmax;
 
server_list[i].actual_period = T;
server_list[i].actual_budget = server_list[i].Cmin;
 
#ifdef FSF_DEBUG
kern_printf("(1 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period);
#endif
202,20 → 220,26
if (server_list[i].d_equals_t == true)
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, T, T);
else
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, T, server_list[i].deadline);
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, T, T); // server_list[i].deadline);
 
} else {
mul32div32to32(server_list[i].Tmin,server_list[i].U,MAX_BANDWIDTH,Q);
server_list[i].actual_budget = Q;
server_list[i].actual_period = server_list[i].Tmin;
 
if (Q>server_list[i].Cmax)
Q=server_list[i].Cmax;
#ifdef FSF_DEBUG
kern_printf("(2 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period);
#endif
if (server_list[i].d_equals_t == true)
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, server_list[i].Tmin, server_list[i].Tmin);
adjust_SERVER_budget(server_list[i].server,Q, server_list[i].Tmin, server_list[i].Tmin);
else
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, server_list[i].Tmin, server_list[i].deadline);
adjust_SERVER_budget(server_list[i].server,Q, server_list[i].Tmin, server_list[i].Tmin); //server_list[i].deadline);
}
server_list[i].U=server_list[i].Umin;
246,7 → 270,7
}
set_contract_parameter();
 
//kern_printf("(ERNC %d)", server);
return 0;
}
 
283,8 → 307,7
}
else {
return FSF_ERR_CONTRACT_REJECTED;
}
//kern_printf("(ENCR)");
}
return 0;
 
}