53,6 → 53,7 |
#include <kernel/iqueue.h> |
|
/* for BUDGET_TASK_MODEL */ |
#include "fsf_contract.h" |
#include "fsf_server.h" |
|
/* |
83,6 → 84,7 |
#define EDFSTAR_IDLE MODULE_STATUS_BASE+4 /* to wait the deadline */ |
|
/* flags */ |
#define EDFSTAR_FLAG_NOPREEMPT 4 |
#define EDFSTAR_FLAG_NORAISEEXC 2 |
#define EDFSTAR_FLAG_SPORADIC 1 |
|
136,6 → 138,8 |
#ifdef EDFSTAR_DEBUG |
edfstar_printf("(E:chk)"); |
#endif |
/* check if the task is preempteble or not */ |
if (lev->flag[lev->activated] & EDFSTAR_FLAG_NOPREEMPT) return; |
|
if ((first = iq_query_first(&lev->ready)) != lev->activated) { |
if (lev->activated != NIL) |
746,6 → 750,20 |
|
} |
|
void EDFSTAR_set_nopreemtive_current(LEVEL l) { |
|
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]); |
|
lev->flag[lev->activated]|=EDFSTAR_FLAG_NOPREEMPT; |
} |
|
void EDFSTAR_unset_nopreemtive_current(LEVEL l) { |
|
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]); |
|
lev->flag[lev->activated]&=~EDFSTAR_FLAG_NOPREEMPT; |
} |
|
int EDFSTAR_budget_has_thread(LEVEL l, int budget) |
{ |
|