Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 876 → Rev 877

/shark/trunk/ports/first/modules/edfstar.c
45,8 → 45,6
 
#include <tracer.h>
 
#define EDFSTAR_CHANGE_LEVEL 1
 
/* for iqueues */
/* #include "iqueue.h" Now iqueues are the only queue type available
into the kernel */
87,6 → 85,7
#define EDFSTAR_IDLE MODULE_STATUS_BASE+4 /* to wait the deadline */
 
/* flags */
#define EDFSTAR_CHANGE_LEVEL 8
#define EDFSTAR_FLAG_NOPREEMPT 4
#define EDFSTAR_FLAG_NORAISEEXC 2
#define EDFSTAR_FLAG_SPORADIC 1
236,9 → 235,14
/* Change task level */
if (lev->flag[p] & EDFSTAR_CHANGE_LEVEL) {
#ifdef EDFSTAR_DEBUG
edfstar_printf("(E:clev)");
#endif
STD_command_message msg;
proc_table[p].status = SLEEP;
lev->flag[p] &= ~ EDFSTAR_CHANGE_LEVEL;
level_table[lev->scheduling_level]->private_extract(lev->scheduling_level,p);
iq_extract(p,&lev->ready);
333,7 → 337,7
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]);
 
#ifdef EDFSTAR_DEBUG
edfstar_printf2("(E:eli)");
edfstar_printf2("(E:eli:%d)",p);
#endif
 
return level_table[ lev->scheduling_level ]->
579,11 → 583,14
/* if the EDFSTAR_task_create is called, then the pclass must be a
valid pclass. */
h=(HARD_TASK_MODEL *)(msg->param);
/* now we know that m is a valid model */
lev->wcet[p] = h->wcet;
lev->period[p] = h->mit;
 
#ifdef EDFSTAR_DEBUG
kern_printf("(EDF:NM p%d w%d m%d)", p, h->wcet, h->mit);
#endif
lev->flag[p] = 0;
lev->deadline_timer[p] = -1;
lev->dline_miss[p] = 0;
600,7 → 607,9
break;
 
case STD_ACTIVATE_TASK:
#ifdef EDFSTAR_DEBUG
kern_printf("(EDF:SA)");
#endif
/* Enable wcet check */
proc_table[p].avail_time = lev->wcet[p];
proc_table[p].wcet = lev->wcet[p];
716,7 → 725,7
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]);
 
#ifdef EDFSTAR_DEBUG
//kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
#endif
 
iq_extract(p, &lev->ready);
724,7 → 733,7
/* we remove the deadline timer, because the slice is finished */
if (lev->deadline_timer[p] != NIL) {
#ifdef EDFSTAR_DEBUG
// kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
#endif
kern_event_delete(lev->deadline_timer[p]);
lev->deadline_timer[p] = NIL;
/shark/trunk/ports/first/modules/grubstar.c
231,10 → 231,7
SUBTIMESPEC(&b->dline, acttime, &t2);
if (/* 1 */ TIMESPEC_A_LT_B(&b->dline, acttime) ||
/* 2 */ TIMESPEC_A_GT_B(&t3, &t2) ) {
TIMESPEC_ASSIGN(&b->replenish, acttime);
ADDUSEC2TIMESPEC(b->T, &b->replenish);
TIMESPEC_ASSIGN(&b->dline, acttime);
ADDUSEC2TIMESPEC(b->D, &b->dline);
if (b->negotiation) {
lev->negotiation_in_progress--;
b->negotiation=0;
246,7 → 243,10
b->N_T=0;
b->N_D=0;
}
 
TIMESPEC_ASSIGN(&b->replenish, acttime);
ADDUSEC2TIMESPEC(b->T, &b->replenish);
TIMESPEC_ASSIGN(&b->dline, acttime);
ADDUSEC2TIMESPEC(b->D, &b->dline);
b->avail = b->Q;
b->last_reclaiming = 0;
}
336,9 → 336,9
JOB_TASK_MODEL job;
if ( TIMESPEC_A_LT_B(&b->dline, &schedule_time)) {
#ifdef GRUBSTAR_DEBUG
// #ifdef GRUBSTAR_DEBUG
kern_printf("(GS:Eli:%d)",p);
#endif
// #endif
if (lev->cap_lev!=NIL) {
kern_event_delete(lev->cap_lev);
lev->cap_lev=NIL;
348,12 → 348,6
level_table[ lev->scheduling_level ]->
private_extract(lev->scheduling_level, p);
/* we modify the deadline ... */
kern_gettime(&b->replenish);
TIMESPEC_ASSIGN(&b->dline, &b->replenish);
ADDUSEC2TIMESPEC(b->D, &b->dline);
ADDUSEC2TIMESPEC(b->T, &b->replenish);
 
/* and the capacity */
if (b->negotiation) {
lev->negotiation_in_progress--;
366,6 → 360,13
b->N_T=0;
b->N_D=0;
}
 
/* we modify the deadline ... */
kern_gettime(&b->replenish);
TIMESPEC_ASSIGN(&b->dline, &b->replenish);
ADDUSEC2TIMESPEC(b->D, &b->dline);
ADDUSEC2TIMESPEC(b->T, &b->replenish);
 
b->avail = b->Q;
b->last_reclaiming = 0;
/shark/trunk/ports/first/modules/nonestar.c
49,7 → 49,7
#include "tracer.h"
#include <modules/comm_message.h>
 
#define NONESTAR_DEBUG
//#define NONESTAR_DEBUG
 
#define NONESTAR_CHANGE_LEVEL 1
 
/shark/trunk/ports/first/modules/posixstar.c
282,6 → 282,7
STD_command_message msg;
proc_table[p].status = SLEEP;
lev->flag[p] &= ~POSIXSTAR_CHANGE_LEVEL;
 
level_table[lev->scheduling_level]->private_extract(lev->scheduling_level,p);
iq_extract(p,&lev->ready[lev->priority[p]]);