Пример #1
0
//Met à mort l'état du processus actif, puis appelle ordonnance()
void fin_processus()
{
    cli();//Pour ne pas qu'une interruption empêche le changement d'état
    actif->state = MORT;
    sti();
    ordonnance();
}
Пример #2
0
void proc1(void)
{
    for (;;) {
        printf("[%s] pid = %i\n", mon_nom(), mon_pid());
        for (int32_t i = 0; i < 100000000; i++);
        ordonnance();
    }
}
Пример #3
0
void dors(uint32_t nbr_secs)
{
    cli();//Pour ne pas qu'une interruption empêche le changement d'état
    actif->state = ENDORMI;
    actif->ttw = time + (nbr_secs * clock_freq);
    sti();
    ordonnance();
}
Пример #4
0
void tic_PIT()
{
    horloge ++;

    while ((!queue_empty(&sleeping)) && horloge >= (queue_top(&sleeping, sleeping_t, chain))->clock) {
        sleeping_t *sleep = queue_out(&sleeping, sleeping_t, chain);
        process_tab[sleep->pid].state = WAITING;
        queue_add(&process_tab[sleep->pid], &process_queue, process_t, chain, prio);
        mem_free(sleep, sizeof(sleeping_t));

        // ordonnance si prioritaire ? y penser.
    }

if(cmpt==p){
	cmpt=0;	
	ordonnance();
}
else
	cmpt++;


	// TODO table des processus en attente d'un t à parcourir

}