/*Richiama la funzione fun per ogni elemento della coda di processi del semaforo della ASL con chiave key*/ void forallBlocked(int *key, void fun(struct pcb_t *pcb, void *), void *arg){ semd_t *semd_target = getSemd(key); if (!semd_target->s_procQ) return; else forallProcQ(semd_target->s_procQ, fun, arg); }
/* [8] * richiama la funzione fun per ogni elemento della lista puntata da head. */ void forallProcQ(struct pcb_t *head, void fun(struct pcb_t *pcb, void *), void *arg){ if(head!=NULL){ fun(head, arg); forallProcQ(head->p_next, fun, arg); } return; }
/*[8] Descrizione:richiama la funzione fun per ogni provesso bloccato sul semaforo identificato da key */ void forallBlocked(int *key, void fun(struct pcb_t *pcb, void *), void *arg){ semd_t *tmp; tmp = getSemd(key); if ((tmp->s_procQ)==NULL){ return; } else { forallProcQ(tmp->s_procQ, fun, arg); } }