18,11 → 18,11 |
|
/** |
------------ |
CVS : $Id: grpcreat.c,v 1.1.1.1 2002-03-29 14:12:51 pj Exp $ |
CVS : $Id: grpcreat.c,v 1.3 2003-01-07 17:07:49 pj Exp $ |
|
File: $File$ |
Revision: $Revision: 1.1.1.1 $ |
Last update: $Date: 2002-03-29 14:12:51 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2003-01-07 17:07:49 $ |
------------ |
|
This file contains: |
116,7 → 116,7 |
|
/* Get a free descriptor */ |
for (;;) { |
i = q_getfirst(&freedesc); |
i = iq_getfirst(&freedesc); |
|
/* If no one is available abort the system */ |
if (i == NIL) { |
145,7 → 145,7 |
proc_table[i].sigpending = 0; /* No pending signal for new tasks*/ |
proc_table[i].shadow = i; |
proc_table[i].cleanup_stack = NULL; |
proc_table[i].next = proc_table[i].prev = NIL; |
// proc_table[i].next = proc_table[i].prev = NIL; |
proc_table[i].errnumber = 0; /* meaningless value */ |
|
/* Fill jet info */ |
168,7 → 168,6 |
- master_level (initialized later, modified by l[]->task_create() ) |
- task_level (initialized later in this function) |
- context, stack (initialized at the end of this function) |
- request_time (initialized when a request (activation) is issued) |
- additional stuff like priority & co. have to be init. only if used...) |
- delay_timer (initialized in __kernel_init__ and mantained coherent |
by the scheduling modules...) |
176,13 → 175,14 |
*/ |
|
/* search for a level that can manage the task model */ |
for (l=0; l<sched_levels; l++) |
if (level_table[l]->level_accept_task_model(l,m) >= 0) |
for (l=level_first; l != -1; l=level_next[l]) |
if (level_table[l]->public_create(l,i,m) >= 0) |
break; |
if (l == sched_levels) { |
|
if (l == -1) { |
/* no level can accept the task_model, exit!!! */ |
proc_table[i].status = FREE; |
q_insertfirst(i,&freedesc); |
iq_insertfirst(i,&freedesc); |
errno = ENO_AVAIL_SCHEDLEVEL; |
return -1; |
} |
190,15 → 190,6 |
/* initialize task level */ |
proc_table[i].task_level = l; |
|
/* calls the task-oriented function task_create */ |
if (level_table[l]->task_create(l,i,m) < 0) { |
/* an error occurred in the task_create */ |
proc_table[i].status = FREE; |
q_insertfirst(i,&freedesc); |
errno = ETASK_CREATE; |
return -1; |
} |
|
/* register all the resource models passed */ |
for (;;) { |
r = va_arg(rlist,RES_MODEL *); |
207,10 → 198,8 |
|
/* search for a level that can manage the resource model */ |
for (l_res=0; l_res<res_levels; l_res++) |
if (resource_table[l_res]->level_accept_resource_model(l_res,r) >= 0) { |
resource_table[l_res]->res_register(l_res, i, r); |
if (resource_table[l_res]->res_register(l_res, i, r) >= 0) |
break; |
} |
if (l_res == res_levels) { |
/* no level can accept the resource_model, exit!!! */ |
/* detach the resources and the task */ |
340,11 → 329,11 |
resource_table[lr]->res_detach(lr,i); |
|
l = proc_table[i].task_level; |
level_table[l]->task_detach(l,i); |
level_table[l]->public_detach(l,i); |
|
proc_table[i].status = FREE; |
|
q_insertfirst(i,&freedesc); |
iq_insertfirst(i,&freedesc); |
} |
|
|
379,7 → 368,7 |
va_end(rlist); |
|
if (p != NIL) { |
if (level_table[proc_table[p].task_level]->level_guarantee) |
if (level_table[proc_table[p].task_level]->public_guarantee) |
if (guarantee() < 0) { |
group_create_reject(p); |
errno = ENO_GUARANTEE; |