int mysem_post(mysem_t *sem){ struct sembuf myop[1]; setsembuf(myop, 0, 1, 0); if(semop(*sem, myop, 1) == -1) return -1; return 0; }
int mysem_post(mysem_t *sem){ int semid; rewind(sem); while(fread(&semid, sizeof(int), 1, sem) < sizeof(int)); struct sembuf myop[1]; setsembuf(myop, 0, 1, 0); if(semop(*sem, myop, 1) == -1) return -1; return 0; }
void sem_signal(int sem_id) { setsembuf(&buf_semsignal, 0, 1, SEM_UNDO); r_semop(sem_id, &buf_semsignal, 1); }
void sem_wait(int sem_id) { setsembuf(&buf_semwait, 0, -1, SEM_UNDO); r_semop(sem_id, &buf_semwait, 1); }