/demos/trunk/first/cbsstar.c |
---|
20,11 → 20,11 |
/* |
------------ |
CVS : $Id: cbsstar.c,v 1.2 2002-10-28 08:16:09 pj Exp $ |
CVS : $Id: cbsstar.c,v 1.3 2002-11-11 08:17:59 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2002-10-28 08:16:09 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2002-11-11 08:17:59 $ |
------------ |
Read CBSSTAR.h for general details. |
130,7 → 130,7 |
PID current; /* the task currently put in execution */ |
QQUEUE tasks; /* a FIFO queue for the tasks handled |
IQUEUE tasks; /* a FIFO queue for the tasks handled |
using the budget */ |
}; |
360,9 → 360,6 |
static void CBSSTAR_task_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
static void CBSSTAR_task_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
static int CBSSTAR_guest_create(LEVEL l, PID p, TASK_MODEL *m) |
{ |
/* A task has been activated for some reason. Basically, the task is |
388,7 → 385,7 |
/* The budget is not empty, another task is already into the |
master module, so the task is inserted at the end of the budget |
queue */ |
qq_insertlast(p,&lev->b[budget->b].tasks); |
iq_insertlast(p,&lev->b[budget->b].tasks); |
#ifdef CBSSTAR_DEBUG |
cbsstar_printf(" ilast"); |
cbsstar_printq(&lev->b[budget->b].tasks); |
426,7 → 423,7 |
#endif |
/* check if the buffer has someone else to schedule */ |
if (qq_queryfirst(&lev->b[lev->tb[p]].tasks) == NIL) { |
if (iq_query_first(&lev->b[lev->tb[p]].tasks) == NIL) { |
/* the buffer has no tasks! */ |
lev->b[lev->tb[p]].current = NIL; |
} |
436,7 → 433,7 |
struct timespec t; |
ll_gettime(TIME_EXACT, &t); |
n = qq_getfirst(&lev->b[lev->tb[p]].tasks); |
n = iq_getfirst(&lev->b[lev->tb[p]].tasks); |
#ifdef CBSSTAR_DEBUG |
cbsstar_printf("{p%d n%d}",p,n); |
#endif |
444,7 → 441,7 |
} |
} |
else |
qq_extract(p, &lev->b[lev->tb[p]].tasks); |
iq_extract(p, &lev->b[lev->tb[p]].tasks); |
} |
static void CBSSTAR_guest_dispatch(LEVEL l, PID p, int nostop) |
550,12 → 547,9 |
static void CBSSTAR_guest_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
static void CBSSTAR_guest_delay(LEVEL l, PID p, DWORD tickdelay) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
/* Registration functions */ |
/*+ Registration function: |
609,7 → 603,6 |
lev->l.task_endcycle = CBSSTAR_task_endcycle; |
lev->l.task_end = CBSSTAR_task_end; |
lev->l.task_sleep = CBSSTAR_task_sleep; |
lev->l.task_delay = CBSSTAR_task_delay; |
lev->l.guest_create = CBSSTAR_guest_create; |
lev->l.guest_detach = CBSSTAR_guest_detach; |
621,7 → 614,6 |
lev->l.guest_endcycle = CBSSTAR_guest_endcycle; |
lev->l.guest_end = CBSSTAR_guest_end; |
lev->l.guest_sleep = CBSSTAR_guest_sleep; |
lev->l.guest_delay = CBSSTAR_guest_delay; |
/* fill the CBSSTAR descriptor part */ |
lev->b = (struct budget_struct *)kern_alloc(sizeof(struct budget_struct)*n); |
633,7 → 625,7 |
lev->b[i].dline_timer = 0; |
lev->b[i].avail = 0; |
lev->b[i].current = -1; |
qq_init(&lev->b[i].tasks); |
iq_init(&lev->b[i].tasks, &freedesc, 0); |
} |
lev->n = n; |
/demos/trunk/first/rmstar.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: rmstar.c,v 1.2 2002-10-28 08:16:09 pj Exp $ |
CVS : $Id: rmstar.c,v 1.3 2002-11-11 08:17:59 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2002-10-28 08:16:09 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2002-11-11 08:17:59 $ |
------------ |
**/ |
55,7 → 55,7 |
#include <kernel/trace.h> |
/* for iqueues */ |
#include "iqueue.h" |
/* #include "iqueue.h" Now iqueues are the only queue type into the kernel */ |
/* for BUDGET_TASK_MODEL */ |
#include "cbsstar.h" |
128,7 → 128,7 |
rmstar_printf("(E:chk)"); |
#endif |
if ((first = iq_queryfirst(&lev->ready)) != lev->activated) { |
if ((first = iq_query_first(&lev->ready)) != lev->activated) { |
if (lev->activated != NIL) |
level_table[ lev->scheduling_level ]-> |
guest_end(lev->scheduling_level, lev->activated); |
283,7 → 283,7 |
static void RMSTAR_level_status(LEVEL l) |
{ |
RMSTAR_level_des *lev = (RMSTAR_level_des *)(level_table[l]); |
PID p = iq_queryfirst(&lev->ready); |
PID p = iq_query_first(&lev->ready); |
struct timespec temp; |
kern_printf("Budget number : %u\n", lev->budget); |
304,7 → 304,7 |
temp.tv_sec, |
temp.tv_nsec/1000, |
RMSTAR_status_to_a(proc_table[p].status)); |
p = proc_table[p].next; |
p = iq_query_next(p, &lev->ready); |
} |
} |
554,7 → 554,7 |
/* we finally put the task in the ready queue */ |
proc_table[p].status = FREE; |
q_insertfirst(p,&freedesc); |
iq_insertfirst(p,&freedesc); |
if (lev->deadline_timer[p] != -1) { |
event_delete(lev->deadline_timer[p]); |
567,8 → 567,6 |
static void RMSTAR_task_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
static void RMSTAR_task_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
/* Guest Functions |
These functions manages a JOB_TASK_MODEL, that is used to put |
701,9 → 699,6 |
static void RMSTAR_guest_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
static void RMSTAR_guest_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
/* Registration functions */ |
/* Registration function: |
756,7 → 751,6 |
lev->l.task_endcycle = RMSTAR_task_endcycle; |
lev->l.task_end = RMSTAR_task_end; |
lev->l.task_sleep = RMSTAR_task_sleep; |
lev->l.task_delay = RMSTAR_task_delay; |
lev->l.guest_create = RMSTAR_guest_create; |
lev->l.guest_detach = RMSTAR_guest_detach; |
768,7 → 762,6 |
lev->l.guest_endcycle = RMSTAR_guest_endcycle; |
lev->l.guest_end = RMSTAR_guest_end; |
lev->l.guest_sleep = RMSTAR_guest_sleep; |
lev->l.guest_delay = RMSTAR_guest_delay; |
/* fill the RMSTAR descriptor part */ |
for(i=0; i<MAX_PROC; i++) { |
/demos/trunk/first/testiq.c |
---|
18,11 → 18,11 |
/* |
------------ |
CVS : $Id: testiq.c,v 1.1 2002-09-02 10:29:30 pj Exp $ |
CVS : $Id: testiq.c,v 1.2 2002-11-11 08:17:59 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.1 $ |
Last update: $Date: 2002-09-02 10:29:30 $ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2002-11-11 08:17:59 $ |
------------ |
The purpose of this test is to show that two budgets with different |
29,6 → 29,9 |
period and budgets schedules correctly. |
2 never ending tasks are involved |
This test cannot compile because of the fact that QUEUE and QQUEUE |
types does not exist anymore! |
*/ |
/* |
/demos/trunk/first/edfstar.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: edfstar.c,v 1.2 2002-10-28 08:16:09 pj Exp $ |
CVS : $Id: edfstar.c,v 1.3 2002-11-11 08:17:59 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2002-10-28 08:16:09 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2002-11-11 08:17:59 $ |
------------ |
**/ |
55,7 → 55,9 |
#include <kernel/trace.h> |
/* for iqueues */ |
#include "iqueue.h" |
/* #include "iqueue.h" Now iqueues are the only queue type available |
into the kernel */ |
#include <kernel/iqueue.h> |
/* for BUDGET_TASK_MODEL */ |
#include "cbsstar.h" |
128,7 → 130,7 |
edfstar_printf("(E:chk)"); |
#endif |
if ((first = iq_queryfirst(&lev->ready)) != lev->activated) { |
if ((first = iq_query_first(&lev->ready)) != lev->activated) { |
if (lev->activated != NIL) |
level_table[ lev->scheduling_level ]-> |
guest_end(lev->scheduling_level, lev->activated); |
283,7 → 285,7 |
static void EDFSTAR_level_status(LEVEL l) |
{ |
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]); |
PID p = iq_queryfirst(&lev->ready); |
PID p = iq_query_first(&lev->ready); |
struct timespec temp; |
kern_printf("Budget number : %u\n", lev->budget); |
304,7 → 306,7 |
temp.tv_sec, |
temp.tv_nsec/1000, |
EDFSTAR_status_to_a(proc_table[p].status)); |
p = proc_table[p].next; |
p = iq_query_next(p, &lev->ready); |
} |
} |
553,7 → 555,7 |
/* we finally put the task in the ready queue */ |
proc_table[p].status = FREE; |
q_insertfirst(p,&freedesc); |
iq_insertfirst(p,&freedesc); |
if (lev->deadline_timer[p] != -1) { |
event_delete(lev->deadline_timer[p]); |
566,9 → 568,6 |
static void EDFSTAR_task_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
static void EDFSTAR_task_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
/* Guest Functions |
These functions manages a JOB_TASK_MODEL, that is used to put |
a guest task in the EDFSTAR ready queue. */ |
699,9 → 698,6 |
static void EDFSTAR_guest_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
static void EDFSTAR_guest_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
/* Registration functions */ |
/* Registration function: |
754,7 → 750,6 |
lev->l.task_endcycle = EDFSTAR_task_endcycle; |
lev->l.task_end = EDFSTAR_task_end; |
lev->l.task_sleep = EDFSTAR_task_sleep; |
lev->l.task_delay = EDFSTAR_task_delay; |
lev->l.guest_create = EDFSTAR_guest_create; |
lev->l.guest_detach = EDFSTAR_guest_detach; |
766,7 → 761,6 |
lev->l.guest_endcycle = EDFSTAR_guest_endcycle; |
lev->l.guest_end = EDFSTAR_guest_end; |
lev->l.guest_sleep = EDFSTAR_guest_sleep; |
lev->l.guest_delay = EDFSTAR_guest_delay; |
/* fill the EDFSTAR descriptor part */ |
for(i=0; i<MAX_PROC; i++) { |
/demos/trunk/first/makefile |
---|
12,22 → 12,22 |
include $(BASE)/config/example.mk |
test1: |
make -f $(SUBMAKE) APP=test1 INIT= OTHEROBJS="iqueue.o edfstar.o cbsstar.o" OTHERINCL= |
make -f $(SUBMAKE) APP=test1 INIT= OTHEROBJS="edfstar.o cbsstar.o" OTHERINCL= |
test2: |
make -f $(SUBMAKE) APP=test2 INIT= OTHEROBJS="iqueue.o edfstar.o cbsstar.o" OTHERINCL= |
make -f $(SUBMAKE) APP=test2 INIT= OTHEROBJS="edfstar.o cbsstar.o" OTHERINCL= |
test3: |
make -f $(SUBMAKE) APP=test3 INIT= OTHEROBJS="iqueue.o edfstar.o cbsstar.o" OTHERINCL= |
make -f $(SUBMAKE) APP=test3 INIT= OTHEROBJS="edfstar.o cbsstar.o" OTHERINCL= |
test4: |
make -f $(SUBMAKE) APP=test4 INIT= OTHEROBJS="iqueue.o edfstar.o cbsstar.o" OTHERINCL= |
make -f $(SUBMAKE) APP=test4 INIT= OTHEROBJS="edfstar.o cbsstar.o" OTHERINCL= |
test5: |
make -f $(SUBMAKE) APP=test5 INIT= OTHEROBJS="iqueue.o edfstar.o cbsstar.o" OTHERINCL= |
make -f $(SUBMAKE) APP=test5 INIT= OTHEROBJS="edfstar.o cbsstar.o" OTHERINCL= |
test6: |
make -f $(SUBMAKE) APP=test6 INIT= OTHEROBJS="iqueue.o rmstar.o cbsstar.o" OTHERINCL= |
make -f $(SUBMAKE) APP=test6 INIT= OTHEROBJS="rmstar.o cbsstar.o" OTHERINCL= |
testiq: |
make -f $(SUBMAKE) APP=testiq INIT= OTHEROBJS="iqueue.o " OTHERINCL= |
#testiq: |
# make -f $(SUBMAKE) APP=testiq INIT= OTHEROBJS="iqueue.o " OTHERINCL= |