Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int alloc(void)
- {
- int chyba = 0;
- if(((s_state = mmap(NULL, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0)) == MAP_FAILED) ||
- ((s_check = mmap(NULL, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0)) == MAP_FAILED))
- chyba = 1;
- if (chyba == 0)
- {
- if((sem_init(s_state, 0, 1) == -1) || //inicializacia semaforov
- (sem_init(s_check, 0, 1) == -1))
- chyba = 1;
- }
- if (chyba == 0)
- {
- if(((shm_state = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT | IPC_EXCL | 0666)) == -1) || //zdielana pamat
- ((p_state = (int *) shmat(shm_state, NULL, 0)) == NULL)
- || ((shm_first_user = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT | IPC_EXCL | 0666)) == -1) ||
- ((first_user = (bool *) shmat(shm_first_user, NULL, 0)) == NULL))
- chyba = 1;
- }
- return chyba;
- }
- /*
- * uvolnenie zdrojov - semafory a zdielana pamat
- */
- void free_all(void)
- {
- int chyba = 0;
- if((sem_destroy(s_state) == -1) || //znicenie semaforov
- (sem_destroy(s_check) == -1))
- chyba = 1;
- if((shmctl(shm_state, IPC_RMID, NULL) == -1) || //znicenie zdielanej pamate
- (shmctl(shm_first_user, IPC_RMID, NULL) == -1))
- chyba = 1;
- if (chyba == 1)
- {
- err(E_SYS, "semafory a zdielana pamat");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement