Devemos desenvolver um projeto para o curso de sistema operacional e usaremos a versão 14.04 do Ubuntu. No projeto, nos foi dado um pedaço de código, e foi escrito que essa parte do código incrementa o valor do semáforo.
No entanto, não há explicação sobre o código, exceto para sua tarefa. Eu estou tentando entendê-lo, pesquisando alguns sites, mas não consigo entender algumas partes. O código dado a nós:
void sem_signal(int semid, int val){
struct sembuf semaphore;
semaphore.sem_num = 0;
semaphore.sem_op = val;
semaphore.sem_flg = 1;
semop(semid, &semaphore, 1);
}
Este código adiciona o valor "val" ao semáforo no conjunto de semáforos apontado por semid. O semáforo no qual a operação é executada é primeiro semáforo no conjunto. Isso é determinado por "sem_num". Na verdade, esses são meus fundamentos pesquisando os recursos. No entanto, não consigo entender;
1) por que o sem_flg está definido como 1?
2) por que o terceiro argumento do método semop()
é igual a 1?