Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int insertBlocked(int key, pcb_t *p) {
- semd_t *semd;
- /* se nella ASL trovo il semaforo con key, inserisco il processo puntato da p nella sua s_procQ */
- if(semd = getSemd(key)) {
- p->p_semkey = key;
- insertProcQ(&semd->s_procQ, p);
- return FALSE;
- }
- /* altrimenti, se la semdFree non รจ vuota */
- if(!list_empty(semdFree)) {
- semd = container_of(list_next(semdFree), semd_t, s_next); /* prendo il primo semd disponibile dalla semdFree */
- list_del(&semd->s_next); /* lo rimuovo dalla semdFree e lo inserisco nella ASL */
- list_add_tail(&semd->s_next, ASL);
- semd->s_key = key; /* imposto i campi in modo opportuno e inserisco p nella s_procQ del semd */
- p->p_semkey = key;
- insertProcQ(&semd->s_procQ, p);
- return FALSE;
- }
- return TRUE;
- }
Add Comment
Please, Sign In to add comment