Guest User

Untitled

a guest
Jun 24th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.76 KB | None | 0 0
  1. int insertBlocked(int key, pcb_t *p) {
  2.     semd_t *semd;
  3.    
  4.     /* se nella ASL trovo il semaforo con key, inserisco il processo puntato da p nella sua s_procQ */
  5.     if(semd = getSemd(key)) {
  6.         p->p_semkey = key;
  7.         insertProcQ(&semd->s_procQ, p);
  8.         return FALSE;
  9.     }
  10.    
  11.     /* altrimenti, se la semdFree non รจ vuota */
  12.     if(!list_empty(semdFree)) {
  13.         semd = container_of(list_next(semdFree), semd_t, s_next);   /* prendo il primo semd disponibile dalla semdFree */
  14.         list_del(&semd->s_next);        /* lo rimuovo dalla semdFree e lo inserisco nella ASL */
  15.         list_add_tail(&semd->s_next, ASL);
  16.         semd->s_key = key;      /* imposto i campi in modo opportuno e inserisco p nella s_procQ del semd */
  17.         p->p_semkey = key;
  18.         insertProcQ(&semd->s_procQ, p);
  19.         return FALSE;
  20.     }
  21.     return TRUE;
  22. }
Add Comment
Please, Sign In to add comment