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; |
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; |
} |
|
284,7 → 308,6 |
else { |
return FSF_ERR_CONTRACT_REJECTED; |
} |
//kern_printf("(ENCR)"); |
return 0; |
|
} |