/* ** fork ** Cree un nouveau processeur en tout point identique a celui qui execute ** le fork a l'exception du registre Z qui vaudra 0 dans l'un et 1 ** dans l'autre. Le fonctionnement est independant de P. */ int my_fork(t_func_arg *arg) { t_proc *proc; int i; if (!arg || !arg->proc || !arg->vm) return 2; if (arg->vm->proc_per_player[arg->proc->num - 1] > arg->vm->max_proc) return 1; proc = my_malloc(sizeof (t_proc)); proc->wbuf = my_malloc(sizeof (t_wbuf)); proc->rw = my_malloc(sizeof (t_rw)); proc->pc[0] = arg->proc->pc[0]; proc->pc[1] = arg->proc->pc[1]; proc->num = arg->proc->num; for (i = 0; i < 16; i++) proc->reg[i][0] = arg->proc->reg[i][0]; for (i = 0; i < 16; i++) proc->reg[i][1] = arg->proc->reg[i][1]; proc->p = arg->proc->p; proc->live = 0; proc->z = arg->proc->z ? 0 : 1; fill_struct(proc, arg); add_proc_tmp_in_vm(arg->vm, proc); arg->proc->rw->delay = 0; arg->proc->cur_work = WAIT_AFTER; return 0; }
int main(int argc, char **argv, char **env) { (void)argc; (void)argv; t_env e; fill_struct(&e, env); display_prompt(&e); return (0); }
int requeueEParse (struct requeueEStruct **rquest, char *reqstr, int *error) { int numStruct, exitV; char mode, *word; numAlloc =16; *error =0; mode = RQE_NORMAL; if (!(*rquest=(struct requeueEStruct *) malloc(numAlloc*sizeof (struct requeueEStruct)))) return 0; (*rquest)[0].type = RQE_END; for (numStruct = 0;;) { if (!(word = a_getNextWord_(&reqstr))) break; if (isint_(word)) { if ((exitV=my_atoi(word,256,-1))!=INFINIT_INT) { if (!fill_struct (rquest, numStruct, exitV, mode)) numStruct ++; else *error =1; } else *error =1; } else if (strncasecmp(word,"EXCLUDE(",8)==0) mode = RQE_EXCLUDE; else if (*word==')') mode = RQE_NORMAL; } if (numStruct) *rquest=(struct requeueEStruct *) realloc(*rquest, (numStruct+1)*sizeof (struct requeueEStruct)); return numStruct; }