/demos/branches/pj/bca/bca_lib.c |
---|
File deleted |
/demos/branches/pj/bca/readme |
---|
File deleted |
/demos/branches/pj/bca/bca_raw/aereo1_h.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/cannon_h.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/esplo1.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/aereo2_h.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/esplo2.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/esplo3.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/bca.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/esplo4.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/missile1.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/esplo5.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/missile2.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/sfondo.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/aereo1.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/cannon.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/bca_raw/aereo2.raw |
---|
File deleted |
\ No newline at end of file |
/demos/branches/pj/bca/fab_lib.c |
---|
File deleted |
/demos/branches/pj/bca/control.c |
---|
File deleted |
/demos/branches/pj/bca/cannone.c |
---|
File deleted |
/demos/branches/pj/bca/esplo.c |
---|
File deleted |
/demos/branches/pj/bca/bca.c |
---|
File deleted |
/demos/branches/pj/bca/bca.h |
---|
File deleted |
/demos/branches/pj/bca/aereo.c |
---|
File deleted |
/demos/branches/pj/bca/dummy.c |
---|
File deleted |
/demos/branches/pj/bca/makefile |
---|
File deleted |
/demos/branches/pj/bca/fab_lib/fab_msg.h |
---|
File deleted |
/demos/branches/pj/bca/fab_lib/fab_grx.sys |
---|
File deleted |
/demos/branches/pj/bca/fab_lib/fab_tool.h |
---|
File deleted |
/demos/branches/pj/bca/fab_lib/fab_grx.h |
---|
File deleted |
/demos/branches/pj/bca/fab_lib/fab_show.h |
---|
File deleted |
/demos/branches/pj/bca/scenario.c |
---|
File deleted |
/demos/branches/pj/bca/initfile.c |
---|
File deleted |
/demos/branches/pj/bca/missile.c |
---|
File deleted |
/demos/branches/pj/tracer/dfixed/dfixed.c |
---|
File deleted |
/demos/branches/pj/tracer/dfixed/initfile.c |
---|
File deleted |
/demos/branches/pj/tracer/dfixed/readme |
---|
File deleted |
/demos/branches/pj/tracer/dfixed/makefile |
---|
File deleted |
/demos/branches/pj/tracer/udp/readme |
---|
File deleted |
/demos/branches/pj/tracer/udp/makefile |
---|
File deleted |
/demos/branches/pj/tracer/udp/initfile.c |
---|
File deleted |
/demos/branches/pj/tracer/udp/udptrace.c |
---|
File deleted |
/demos/branches/pj/tracer/small/treec1.c |
---|
File deleted |
/demos/branches/pj/tracer/small/hello.c |
---|
File deleted |
/demos/branches/pj/tracer/small/treec2.c |
---|
File deleted |
/demos/branches/pj/tracer/small/hello1.c |
---|
File deleted |
/demos/branches/pj/tracer/small/hello2.c |
---|
File deleted |
/demos/branches/pj/tracer/small/treef1.c |
---|
File deleted |
/demos/branches/pj/tracer/small/common.c |
---|
File deleted |
/demos/branches/pj/tracer/small/simple.c |
---|
File deleted |
/demos/branches/pj/tracer/small/readme |
---|
File deleted |
/demos/branches/pj/tracer/small/initfs.c |
---|
File deleted |
/demos/branches/pj/tracer/small/makefile |
---|
File deleted |
/demos/branches/pj/tracer/small/common.h |
---|
File deleted |
/demos/branches/pj/tracer/small/test0.c |
---|
File deleted |
/demos/branches/pj/tracer/readme |
---|
File deleted |
/demos/branches/pj/tracer/makefile |
---|
File deleted |
/demos/branches/pj/tracer/utils/util.h |
---|
File deleted |
/demos/branches/pj/tracer/utils/sa.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/wait.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/distr.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/road.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/types.h |
---|
File deleted |
/demos/branches/pj/tracer/utils/tdump.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/readme |
---|
File deleted |
/demos/branches/pj/tracer/utils/makefile |
---|
File deleted |
/demos/branches/pj/tracer/utils/util.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/udpdump.c |
---|
File deleted |
/demos/branches/pj/tracer/utils/jdump.c |
---|
File deleted |
/demos/branches/pj/parport/makefile |
---|
File deleted |
/demos/branches/pj/parport/initfile.c |
---|
File deleted |
/demos/branches/pj/parport/ppdemo.c |
---|
File deleted |
/demos/branches/pj/parport/readme.txt |
---|
File deleted |
/demos/branches/pj/block/idetest1.c |
---|
File deleted |
/demos/branches/pj/block/idetest2.c |
---|
File deleted |
/demos/branches/pj/block/idelin.c |
---|
File deleted |
/demos/branches/pj/block/idetest3.c |
---|
File deleted |
/demos/branches/pj/block/idernd.c |
---|
File deleted |
/demos/branches/pj/block/common.c |
---|
File deleted |
/demos/branches/pj/block/readme |
---|
File deleted |
/demos/branches/pj/block/initblk.c |
---|
File deleted |
/demos/branches/pj/block/makefile |
---|
File deleted |
/demos/branches/pj/block/common.h |
---|
File deleted |
/demos/branches/pj/block/idetest0.c |
---|
File deleted |
/demos/branches/pj/perf/perf2.c |
---|
File deleted |
/demos/branches/pj/perf/perf3.c |
---|
File deleted |
/demos/branches/pj/perf/perf4.c |
---|
File deleted |
/demos/branches/pj/perf/initfile.c |
---|
File deleted |
/demos/branches/pj/perf/readme |
---|
File deleted |
/demos/branches/pj/perf/makefile |
---|
File deleted |
/demos/branches/pj/perf/perf1.c |
---|
File deleted |
/demos/branches/pj/first/edfstar.c |
---|
File deleted |
/demos/branches/pj/first/makefile |
---|
File deleted |
/demos/branches/pj/first/iqueue.c |
---|
File deleted |
/demos/branches/pj/first/edfstar.h |
---|
File deleted |
/demos/branches/pj/first/test1.c |
---|
File deleted |
/demos/branches/pj/first/test2.c |
---|
File deleted |
/demos/branches/pj/first/cbsstar.c |
---|
File deleted |
/demos/branches/pj/first/test3.c |
---|
File deleted |
/demos/branches/pj/first/iqueue.h |
---|
File deleted |
/demos/branches/pj/first/test4.c |
---|
File deleted |
/demos/branches/pj/first/test5.c |
---|
File deleted |
/demos/branches/pj/first/test6.c |
---|
File deleted |
/demos/branches/pj/first/cbsstar.h |
---|
File deleted |
/demos/branches/pj/first/rmstar.c |
---|
File deleted |
/demos/branches/pj/first/testiq.c |
---|
File deleted |
/demos/branches/pj/first/rmstar.h |
---|
File deleted |
/demos/branches/pj/makefile |
---|
File deleted |
/demos/branches/pj/orbit/orbit.c |
---|
18,11 → 18,11 |
/* |
------------ |
CVS : $Id: orbit.c,v 1.2 2002-11-11 08:02:15 pj Exp $ |
CVS : $Id: orbit.c,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2002-11-11 08:02:15 $ |
Revision: $Revision: 1.1.1.1 $ |
Last update: $Date: 2002-09-02 09:37:45 $ |
------------ |
*/ |
185,7 → 185,7 |
/* MAIN */ |
/*--------------------------------------------------------------*/ |
int main() |
TASK main() |
{ |
HARD_TASK_MODEL m; |
char c; /* carattere letto da tastiera */ |
/demos/branches/pj/simcity/keyboard.c |
---|
46,4 → 46,4 |
k.scan = KEY_D; |
k.ascii = 'd'; |
keyb_hook(k, sensor_switch); |
} |
} |
/demos/branches/pj/simcity/include/simcity.h |
---|
2,7 → 2,7 |
// global variables and tasks bodies declaration |
#include <kernel/func.h> |
#include <semaphore.h> |
#include <semaphor.h> |
#ifndef CST |
#include "constant.h" |
#endif |
/demos/branches/pj/simcity/include/keyfunct.h |
---|
7,4 → 7,4 |
void h_car_kill(KEY_EVT *); |
void endfun(KEY_EVT *); |
void refresh(KEY_EVT *); |
void sensor_switch(KEY_EVT *); |
void sensor_switch(KEY_EVT *); |
/demos/branches/pj/simcity/initfile.c |
---|
77,7 → 77,10 |
HARTPORT_init(); |
kern_printf("TIME=%d\n",sys_gettime(NULL)); |
KEYB_init(NULL); |
kern_printf("TIME=%d\n",sys_gettime(NULL)); |
KEYB_init(NULL); |
__call_main__(mb); |
/demos/branches/pj/simcity/car.c |
---|
172,4 → 172,4 |
set_spd=MAX_SPEED; |
} |
cd->speed=set_spd; |
} |
} |
/demos/branches/pj/simcity/simcity.c |
---|
6,7 → 6,7 |
#include <drivers/keyb.h> |
#include <drivers/glib.h> |
#include <kernel/kern.h> |
#include <semaphore.h> |
#include <semaphor.h> |
#include <math.h> |
#include "include/constant.h" |
#include "include/misc.h" |
85,7 → 85,7 |
kern_cli(); |
ll_gettime(TIME_EXACT, &t), |
kern_printf("\nS.Ha.R.K. Exception raised!!!" |
"\nTime (s:ns) :%ld:%ld" |
"\nTime (s:ns) :%d:%d" |
"\nException number:%d" |
"\nPID :%d\n", |
t.tv_sec, t.tv_nsec, info->si_value.sival_int, |
/demos/branches/pj/simcity/tasks.c |
---|
5,7 → 5,7 |
#include <string.h> |
#include <kernel/func.h> |
#include <drivers/glib.h> |
#include <semaphore.h> |
#include <semaphor.h> |
#include <math.h> |
#include "include/simcity.h" |
#include "include/states.h" |
406,4 → 406,4 |
cd->xp=my_rint(cd->xpos); |
cd->yp=my_rint(cd->ypos); |
} |
} |
} |
/demos/branches/pj/simcity/keyfunct.c |
---|
82,4 → 82,4 |
void sensor_switch(KEY_EVT *k) { |
if(sens==0) sens=1; |
else sens=0; |
} |
} |
/demos/branches/pj/simcity/misc.c |
---|
212,4 → 212,4 |
break; |
} |
return min_tl; |
} |
} |
/demos/branches/pj/edfact/edfact.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: edfact.c,v 1.3 2002-11-11 07:55:55 pj Exp $ |
CVS : $Id: edfact.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2002-11-11 07:55:55 $ |
Revision: $Revision: 1.1.1.1 $ |
Last update: $Date: 2002-09-02 09:37:41 $ |
------------ |
**/ |
84,7 → 84,7 |
/*+ used to manage the JOB_TASK_MODEL and the |
periodicity +*/ |
IQUEUE ready; /*+ the ready queue +*/ |
QUEUE ready; /*+ the ready queue +*/ |
int flags; /*+ the init flags... +*/ |
97,20 → 97,16 |
static void EDFACT_internal_activate(EDFACT_level_des *lev, PID p) |
{ |
struct timespec *temp; |
temp = iq_query_timespec(p, &lev->ready); |
TIMESPEC_ASSIGN(temp, |
TIMESPEC_ASSIGN(&proc_table[p].timespec_priority, |
&proc_table[p].request_time); |
ADDUSEC2TIMESPEC(lev->period[p], temp); |
ADDUSEC2TIMESPEC(lev->period[p], &proc_table[p].timespec_priority); |
TIMESPEC_ASSIGN(&lev->deadline_timespec[p], |
temp); |
&proc_table[p].timespec_priority); |
/* Insert task in the correct position */ |
proc_table[p].status = EDFACT_READY; |
iq_timespec_insert(p,&lev->ready); |
q_timespec_insert(p,&lev->ready); |
/* needed because when there is a wcet miss I disable CONTROL_CAP */ |
proc_table[p].control |= CONTROL_CAP; |
138,9 → 134,9 |
switch (proc_table[p].status) { |
case EDFACT_IDLE: |
edfact_printf("I%d",p); |
TIMESPEC_ASSIGN(&proc_table[p].request_time, |
&proc_table[p].timespec_priority); |
*iq_query_timespec(p, &lev->ready) = proc_table[p].request_time; |
EDFACT_internal_activate(lev,p); |
event_need_reschedule(); |
205,7 → 201,7 |
static void EDFACT_level_status(LEVEL l) |
{ |
EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]); |
PID p = iq_query_first(&lev->ready); |
PID p = lev->ready; |
kern_printf("On-line guarantee : %s\n", |
onoff(lev->flags & EDFACT_ENABLE_GUARANTEE)); |
221,10 → 217,10 |
proc_table[p].name, |
"Period ", |
lev->period[p], |
iq_query_timespec(p, &lev->ready)->tv_sec, |
iq_query_timespec(p, &lev->ready)->tv_nsec/1000, |
proc_table[p].timespec_priority.tv_sec, |
proc_table[p].timespec_priority.tv_nsec/1000, |
EDFACT_status_to_a(proc_table[p].status)); |
p = iq_query_next(p, &lev->ready); |
p = proc_table[p].next; |
} |
for (p=0; p<MAX_PROC; p++) |
235,8 → 231,8 |
proc_table[p].name, |
"Period ", |
lev->period[p], |
iq_query_timespec(p, &lev->ready)->tv_sec, |
iq_query_timespec(p, &lev->ready)->tv_nsec/1000, |
proc_table[p].timespec_priority.tv_sec, |
proc_table[p].timespec_priority.tv_nsec/1000, |
EDFACT_status_to_a(proc_table[p].status)); |
} |
255,7 → 251,7 |
kern_printf(") "); |
} |
*/ |
return iq_query_first(&lev->ready); |
return (PID)lev->ready; |
} |
/* The on-line guarantee is enabled only if the appropriate flag is set... */ |
352,7 → 348,7 |
/* the task state is set EXE by the scheduler() |
we extract the task from the ready queue |
NB: we can't assume that p is the first task in the queue!!! */ |
iq_extract(p, &lev->ready); |
q_extract(p, &lev->ready); |
} |
static void EDFACT_task_epilogue(LEVEL l, PID p) |
368,7 → 364,7 |
} |
/* the task it returns into the ready queue... */ |
iq_timespec_insert(p,&lev->ready); |
q_timespec_insert(p,&lev->ready); |
proc_table[p].status = EDFACT_READY; |
} |
401,7 → 397,7 |
/* Insert task in the coEDFect position */ |
proc_table[p].status = EDFACT_READY; |
iq_timespec_insert(p,&lev->ready); |
q_timespec_insert(p,&lev->ready); |
} |
static void EDFACT_task_extract(LEVEL l, PID p) |
428,7 → 424,7 |
EDFACT_internal_activate(lev,p); |
/* check if the deadline has already expired */ |
if (TIMESPEC_A_LT_B(iq_query_timespec(p, &lev->ready), &schedule_time)) { |
if (TIMESPEC_A_LT_B(&proc_table[p].timespec_priority, &schedule_time)) { |
/* count the deadline miss */ |
lev->dline_miss[p]++; |
event_delete(lev->deadline_timer[p]); |
454,7 → 450,7 |
/* we finally put the task in the ready queue */ |
proc_table[p].status = FREE; |
iq_insertfirst(p,&freedesc); |
q_insertfirst(p,&freedesc); |
/* and free the allocated bandwidth */ |
lev->U -= (MAX_BANDWIDTH/lev->period[p]) * proc_table[p].wcet; |
465,8 → 461,10 |
} |
static void EDFACT_task_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
{ kern_raise(XUNVALID_TASK,exec_shadow); } |
static void EDFACT_task_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XUNVALID_TASK,exec_shadow); } |
/* Guest Functions |
These functions manages a JOB_TASK_MODEL, that is used to put |
480,7 → 478,7 |
/* if the EDFACT_guest_create is called, then the pclass must be a |
valid pclass. */ |
TIMESPEC_ASSIGN(iq_query_timespec(p, &lev->ready), &job->deadline); |
TIMESPEC_ASSIGN(&proc_table[p].timespec_priority, &job->deadline); |
lev->deadline_timer[p] = -1; |
lev->dline_miss[p] = 0; |
514,7 → 512,7 |
/* the task state is set to EXE by the scheduler() |
we extract the task from the ready queue |
NB: we can't assume that p is the first task in the queue!!! */ |
iq_extract(p, &lev->ready); |
q_extract(p, &lev->ready); |
} |
static void EDFACT_guest_epilogue(LEVEL l, PID p) |
522,7 → 520,7 |
EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]); |
/* the task has been preempted. it returns into the ready queue... */ |
iq_timespec_insert(p,&lev->ready); |
q_timespec_insert(p,&lev->ready); |
proc_table[p].status = EDFACT_READY; |
} |
531,12 → 529,12 |
EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]); |
/* Insert task in the correct position */ |
iq_timespec_insert(p,&lev->ready); |
q_timespec_insert(p,&lev->ready); |
proc_table[p].status = EDFACT_READY; |
/* Set the deadline timer */ |
if (!(lev->flag[p] & EDFACT_FLAG_NORAISEEXC)) |
lev->deadline_timer[p] = kern_event_post(iq_query_timespec(p, &lev->ready), |
lev->deadline_timer[p] = kern_event_post(&proc_table[p].timespec_priority, |
EDFACT_timer_guest_deadline, |
(void *)p); |
547,7 → 545,7 |
EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]); |
/* Insert task in the correct position */ |
iq_timespec_insert(p,&lev->ready); |
q_timespec_insert(p,&lev->ready); |
proc_table[p].status = EDFACT_READY; |
} |
556,7 → 554,7 |
} |
static void EDFACT_guest_endcycle(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void EDFACT_guest_end(LEVEL l, PID p) |
{ |
565,7 → 563,7 |
//kern_printf("EDFACT_guest_end: dline timer %d\n",lev->deadline_timer[p]); |
if (proc_table[p].status == EDFACT_READY) |
{ |
iq_extract(p, &lev->ready); |
q_extract(p, &lev->ready); |
//kern_printf("(g_end rdy extr)"); |
} |
579,8 → 577,11 |
} |
static void EDFACT_guest_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void EDFACT_guest_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
/* Registration functions */ |
/*+ Registration function: |
632,6 → 633,7 |
lev->l.task_endcycle = EDFACT_task_endcycle; |
lev->l.task_end = EDFACT_task_end; |
lev->l.task_sleep = EDFACT_task_sleep; |
lev->l.task_delay = EDFACT_task_delay; |
lev->l.guest_create = EDFACT_guest_create; |
lev->l.guest_detach = EDFACT_guest_detach; |
643,6 → 645,7 |
lev->l.guest_endcycle = EDFACT_guest_endcycle; |
lev->l.guest_end = EDFACT_guest_end; |
lev->l.guest_sleep = EDFACT_guest_sleep; |
lev->l.guest_delay = EDFACT_guest_delay; |
/* fill the EDFACT descriptor part */ |
for(i=0; i<MAX_PROC; i++) { |
654,7 → 657,7 |
lev->nact[i] = 0; |
} |
iq_init(&lev->ready,&freedesc, 0); |
lev->ready = NIL; |
lev->flags = flags & 0x07; |
lev->U = 0; |
} |
/demos/branches/pj/myapp/mymod.c |
---|
148,6 → 148,10 |
{ |
} |
static void MYMOD_task_delay(LEVEL l, PID p, TIME usdelay) |
{ |
} |
static int MYMOD_guest_create(LEVEL l, PID p, TASK_MODEL *m) |
{ |
return 0; // dummy number |
189,6 → 193,9 |
{ |
} |
static void MYMOD_guest_delay(LEVEL l, PID p, TIME usdelay) |
{ |
} |
234,6 → 241,7 |
lev->l.task_endcycle = MYMOD_task_endcycle; |
lev->l.task_end = MYMOD_task_end; |
lev->l.task_sleep = MYMOD_task_sleep; |
lev->l.task_delay = MYMOD_task_delay; |
lev->l.guest_create = MYMOD_guest_create; |
lev->l.guest_detach = MYMOD_guest_detach; |
245,6 → 253,7 |
lev->l.guest_endcycle = MYMOD_guest_endcycle; |
lev->l.guest_end = MYMOD_guest_end; |
lev->l.guest_sleep = MYMOD_guest_sleep; |
lev->l.guest_delay = MYMOD_guest_delay; |
/* fill the MYMOD descriptor part */ |
for (i=0; i<100; i++) |
/demos/branches/pj/myapp/makefile |
---|
3,7 → 3,7 |
# |
ifndef BASE |
BASE=../.. |
BASE=.. |
endif |
include $(BASE)/config/config.mk |
/demos/branches/pj/static/static.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: static.c,v 1.3 2002-11-11 07:55:13 pj Exp $ |
CVS : $Id: static.c,v 1.1.1.1 2002-09-02 09:37:48 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2002-11-11 07:55:13 $ |
Revision: $Revision: 1.1.1.1 $ |
Last update: $Date: 2002-09-02 09:37:48 $ |
------------ |
**/ |
68,7 → 68,7 |
typedef struct { |
level_des l; /*+ the standard level descriptor +*/ |
IQUEUE mytable; |
QUEUE mytable; |
PID currenttask; |
87,7 → 87,7 |
lev->currenttask = p; |
event_need_reschedule(); |
// STATIC_printf("(o p%d t%d)", p, (int)proc_table[p].timespec_priority.tv_sec); |
STATIC_printf("(o p%d t%d)", p, (int)proc_table[p].timespec_priority.tv_sec); |
} |
static void STATIC_activateall(STATIC_level_des *lev) |
97,15 → 97,15 |
STATIC_printf("(A "); |
for (my_table_index = iq_query_first(&lev->mytable); |
for (my_table_index = (PID)lev->mytable; |
my_table_index != NIL; |
my_table_index = iq_query_next(my_table_index, &lev->mytable)) { |
ADDTIMESPEC(&lev->ref,iq_query_timespec(my_table_index, &lev->mytable),&x); |
my_table_index = proc_table[my_table_index].next) { |
ADDTIMESPEC(&lev->ref,&proc_table[my_table_index].timespec_priority,&x); |
kern_event_post(&x, STATIC_offset_activate,(void *)my_table_index); |
STATIC_printf("|p%d t%d ", |
my_table_index, |
(int)iq_query_timespec(my_table_index, &lev->mytable)->tv_sec); |
(int)proc_table[my_table_index].timespec_priority.tv_sec); |
} |
STATIC_printf(")"); |
146,7 → 146,7 |
static void STATIC_level_status(LEVEL l) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
{ kern_raise(XUNVALID_TASK,exec_shadow); } |
/* The scheduler only gets the first task in the queue */ |
static PID STATIC_level_scheduler(LEVEL l) |
171,9 → 171,9 |
STATIC_TASK_MODEL *h = (STATIC_TASK_MODEL *)m; |
iq_query_timespec(p, &lev->mytable)->tv_sec = h->offset.tv_sec; |
iq_query_timespec(p, &lev->mytable)->tv_nsec = h->offset.tv_nsec; |
iq_timespec_insert(p,&lev->mytable); |
proc_table[p].timespec_priority.tv_sec = h->offset.tv_sec; |
proc_table[p].timespec_priority.tv_nsec = h->offset.tv_nsec; |
q_timespec_insert(p,&lev->mytable); |
return 0; /* OK, also if the task cannot be guaranteed... */ |
} |
220,50 → 220,56 |
lev->currenttask = NIL; |
iq_extract(p,&lev->mytable); |
q_extract(p,&lev->mytable); |
/* we finally put the task in the ready queue */ |
proc_table[p].status = FREE; |
iq_insertfirst(p,&freedesc); |
q_insertfirst(p,&freedesc); |
} |
static void STATIC_task_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_TASK,exec_shadow); } |
{ kern_raise(XUNVALID_TASK,exec_shadow); } |
static void STATIC_task_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XUNVALID_TASK,exec_shadow); } |
/* Guest Functions |
These functions manages a JOB_TASK_MODEL, that is used to put |
a guest task in the STATIC ready queue. */ |
static int STATIC_guest_create(LEVEL l, PID p, TASK_MODEL *m) |
{ kern_raise(XINVALID_GUEST,exec_shadow); return 0; } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); return 0; } |
static void STATIC_guest_detach(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_dispatch(LEVEL l, PID p, int nostop) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_epilogue(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_activate(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_insert(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_extract(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_endcycle(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_end(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_sleep(LEVEL l, PID p) |
{ kern_raise(XINVALID_GUEST,exec_shadow); } |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
static void STATIC_guest_delay(LEVEL l, PID p, TIME usdelay) |
{ kern_raise(XUNVALID_GUEST,exec_shadow); } |
/* Registration functions */ |
/*+ Registration function: |
311,6 → 317,7 |
lev->l.task_endcycle = STATIC_task_endcycle; |
lev->l.task_end = STATIC_task_end; |
lev->l.task_sleep = STATIC_task_sleep; |
lev->l.task_delay = STATIC_task_delay; |
lev->l.guest_create = STATIC_guest_create; |
lev->l.guest_detach = STATIC_guest_detach; |
322,10 → 329,11 |
lev->l.guest_endcycle = STATIC_guest_endcycle; |
lev->l.guest_end = STATIC_guest_end; |
lev->l.guest_sleep = STATIC_guest_sleep; |
lev->l.guest_delay = STATIC_guest_delay; |
/* fill the STATIC descriptor part */ |
iq_init(&lev->mytable, &freedesc, 0); |
lev->mytable = NIL; |
lev->currenttask = NIL; |
NULL_TIMESPEC(&lev->hp); |
/demos/branches/pj/static/test1st.c |
---|
16,11 → 16,11 |
/** |
------------ |
CVS : $Id: test1st.c,v 1.2 2002-11-11 07:55:13 pj Exp $ |
CVS : $Id: test1st.c,v 1.1.1.1 2002-09-02 09:37:48 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2002-11-11 07:55:13 $ |
Revision: $Revision: 1.1.1.1 $ |
Last update: $Date: 2002-09-02 09:37:48 $ |
------------ |
78,7 → 78,7 |
STATIC_TASK_MODEL m; |
struct timespec my_time, h, o; |
struct timespec my_time, h, o, fineprg; |
my_time.tv_nsec=0; |
/demos/branches/pj/pse51/ptest1 |
---|
0,0 → 1,426 |
+ vììh 1# èæ Äjj èWX Äìj èb= Ä= vììh@1# èoæ Äjh, jj èÀZ Äìj è*= Ä=ÿ4 vììh2# è7æ ÄÿuÔèTO Ç$/2# è æ ¸ ÄÉÃöUåìhà.# èæ Eü$è k ÄjEüPèk ÄEøPEüPèCl ÄÿuøPh /# èÊå ¸ ÄÉÃUåì4h@/# è°å Eä$è1k ÄjEäPèKk ÄEèPEäPè7l ÄÿuðÿuìÿuèPh/# èpå ¸ Ä ÉÃöUåì4hÀ/# èTå Eä$èÕj ÄjEäPèïj ÇEØ EØÇ@ £áÄPEèPEäPèák ÄÿuðÿuìÿuèPh 0# èå ¸ Ä ÉÃUåìh@0# èèä ÄÉÃv UåVSì<h0# èÎä EÔ$èOj ÄjEÔPèij ÇEÈ |
+ uÈÇF ÇEØÐ" |