Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. int alloc(void)
  2. {
  3. int chyba = 0;
  4.  
  5. if(((s_state = mmap(NULL, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0)) == MAP_FAILED) ||
  6. ((s_check = mmap(NULL, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0)) == MAP_FAILED))
  7. chyba = 1;
  8.  
  9. if (chyba == 0)
  10. {
  11. if((sem_init(s_state, 0, 1) == -1) || //inicializacia semaforov
  12. (sem_init(s_check, 0, 1) == -1))
  13. chyba = 1;
  14. }
  15.  
  16. if (chyba == 0)
  17. {
  18. if(((shm_state = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT | IPC_EXCL | 0666)) == -1) || //zdielana pamat
  19. ((p_state = (int *) shmat(shm_state, NULL, 0)) == NULL)
  20. || ((shm_first_user = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT | IPC_EXCL | 0666)) == -1) ||
  21. ((first_user = (bool *) shmat(shm_first_user, NULL, 0)) == NULL))
  22. chyba = 1;
  23. }
  24.  
  25. return chyba;
  26. }
  27.  
  28. /*
  29. * uvolnenie zdrojov - semafory a zdielana pamat
  30. */
  31. void free_all(void)
  32. {
  33. int chyba = 0;
  34. if((sem_destroy(s_state) == -1) || //znicenie semaforov
  35. (sem_destroy(s_check) == -1))
  36. chyba = 1;
  37.  
  38. if((shmctl(shm_state, IPC_RMID, NULL) == -1) || //znicenie zdielanej pamate
  39. (shmctl(shm_first_user, IPC_RMID, NULL) == -1))
  40. chyba = 1;
  41.  
  42. if (chyba == 1)
  43. {
  44. err(E_SYS, "semafory a zdielana pamat");
  45. }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement