Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 814 → Rev 815

/shark/trunk/ports/first/modules/posixstar.c
53,6 → 53,9
 
#define POSIXSTAR_CHANGE_LEVEL 1
 
/* flags */
#define POSIXSTAR_FLAG_NOPREEMPT 4
 
/*+ the level redefinition for the Round Robin level +*/
typedef struct {
level_des l; /*+ the standard level descriptor +*/
72,6 → 75,8
 
int budget[MAX_PROC];
 
int flag[MAX_PROC];
 
PID activated;
int scheduling_level;
int cap_lev;
98,6 → 103,10
 
int prio;
 
 
/* check if the task is preempteble or not */
if (lev->flag[lev->activated] & POSIXSTAR_FLAG_NOPREEMPT) return;
prio = lev->maxpriority;
for (;;) {
209,7 → 218,8
proc_table[p].avail_time = lev->slice;
proc_table[p].wcet = lev->slice;
}
 
lev->flag[p] = 0;
#if defined POSIXSTAR_DEBUG
kern_printf("(slice %d)", proc_table[p].wcet);
#endif
599,3 → 609,17
return 0;
}
 
 
void POSIXSTAR_set_nopreemtive_current(LEVEL l) {
POSIXSTAR_level_des *lev = (POSIXSTAR_level_des *)(level_table[l]);
lev->flag[lev->activated]|=POSIXSTAR_FLAG_NOPREEMPT;
}
 
void POSIXSTAR_unset_nopreemtive_current(LEVEL l) {
 
POSIXSTAR_level_des *lev = (POSIXSTAR_level_des *)(level_table[l]);
 
lev->flag[lev->activated]&=~POSIXSTAR_FLAG_NOPREEMPT;
}