Beispiel #1
0
/*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);
}
Beispiel #2
0
Datei: pcb.c Projekt: emulk/SOS
/* [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;
}
Beispiel #3
0
Datei: asl.c Projekt: emulk/SOS
/*[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);
		}
}