1*0bba68feSAntonio Huete Jimenez #include <common.h> 2*0bba68feSAntonio Huete Jimenez 3*0bba68feSAntonio Huete Jimenez int main(void)4*0bba68feSAntonio Huete Jimenezmain(void) { 5*0bba68feSAntonio Huete Jimenez sem_t *id; 6*0bba68feSAntonio Huete Jimenez 7*0bba68feSAntonio Huete Jimenez /* 8*0bba68feSAntonio Huete Jimenez * Create named semaphore with value of 1 and then unlink it 9*0bba68feSAntonio Huete Jimenez * while still retaining the initial reference. 10*0bba68feSAntonio Huete Jimenez */ 11*0bba68feSAntonio Huete Jimenez id = sem_open(TEST_PATH, O_CREAT | O_EXCL, 0777, 1); 12*0bba68feSAntonio Huete Jimenez if (id == SEM_FAILED) { 13*0bba68feSAntonio Huete Jimenez perror("sem_open(O_CREAT | O_EXCL)"); 14*0bba68feSAntonio Huete Jimenez return 1; 15*0bba68feSAntonio Huete Jimenez } 16*0bba68feSAntonio Huete Jimenez if (sem_unlink(TEST_PATH) < 0) { 17*0bba68feSAntonio Huete Jimenez perror("sem_unlink"); 18*0bba68feSAntonio Huete Jimenez sem_close(id); 19*0bba68feSAntonio Huete Jimenez return 1; 20*0bba68feSAntonio Huete Jimenez } 21*0bba68feSAntonio Huete Jimenez if (checkvalue(id, 1) < 0) { 22*0bba68feSAntonio Huete Jimenez sem_close(id); 23*0bba68feSAntonio Huete Jimenez return 1; 24*0bba68feSAntonio Huete Jimenez } 25*0bba68feSAntonio Huete Jimenez 26*0bba68feSAntonio Huete Jimenez /* Post the semaphore to set its value to 2. */ 27*0bba68feSAntonio Huete Jimenez if (sem_post(id) < 0) { 28*0bba68feSAntonio Huete Jimenez perror("sem_post"); 29*0bba68feSAntonio Huete Jimenez sem_close(id); 30*0bba68feSAntonio Huete Jimenez return 1; 31*0bba68feSAntonio Huete Jimenez } 32*0bba68feSAntonio Huete Jimenez if (checkvalue(id, 2) < 0) { 33*0bba68feSAntonio Huete Jimenez sem_close(id); 34*0bba68feSAntonio Huete Jimenez return 1; 35*0bba68feSAntonio Huete Jimenez } 36*0bba68feSAntonio Huete Jimenez 37*0bba68feSAntonio Huete Jimenez /* Wait on the semaphore which should set its value to 1. */ 38*0bba68feSAntonio Huete Jimenez if (sem_wait(id) < 0) { 39*0bba68feSAntonio Huete Jimenez perror("sem_wait"); 40*0bba68feSAntonio Huete Jimenez sem_close(id); 41*0bba68feSAntonio Huete Jimenez return 1; 42*0bba68feSAntonio Huete Jimenez } 43*0bba68feSAntonio Huete Jimenez if (checkvalue(id, 1) < 0) { 44*0bba68feSAntonio Huete Jimenez sem_close(id); 45*0bba68feSAntonio Huete Jimenez return 1; 46*0bba68feSAntonio Huete Jimenez } 47*0bba68feSAntonio Huete Jimenez 48*0bba68feSAntonio Huete Jimenez if (sem_close(id) < 0) { 49*0bba68feSAntonio Huete Jimenez perror("sem_close"); 50*0bba68feSAntonio Huete Jimenez return 1; 51*0bba68feSAntonio Huete Jimenez } 52*0bba68feSAntonio Huete Jimenez return 0; 53*0bba68feSAntonio Huete Jimenez } 54