10dc076565f772bb1953209fb69ea150b494aaa40robbiew/* 20dc076565f772bb1953209fb69ea150b494aaa40robbiew Copyright (c) 2002-2003, Intel Corporation. All rights reserved. 30dc076565f772bb1953209fb69ea150b494aaa40robbiew Created by: majid.awad REMOVE-THIS AT intel DOT com 42c28215423293e443469a07ae7011135d058b671Garrett Cooper This file is licensed under the GPL license. For the full content 52c28215423293e443469a07ae7011135d058b671Garrett Cooper of this license, see the COPYING file at the top level of this 60dc076565f772bb1953209fb69ea150b494aaa40robbiew source tree. 70dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 80dc076565f772bb1953209fb69ea150b494aaa40robbiew 90dc076565f772bb1953209fb69ea150b494aaa40robbiew/* 100dc076565f772bb1953209fb69ea150b494aaa40robbiew sem_open test case that attempts to open a new semaphore, 110dc076565f772bb1953209fb69ea150b494aaa40robbiew close the semaphore and then open and existing semaphore, which 120dc076565f772bb1953209fb69ea150b494aaa40robbiew should fail when both O_CREAT and O_EXCL name exist during the opening 130dc076565f772bb1953209fb69ea150b494aaa40robbiew of a Semaphore. Fail to open is a Pass for this test. 140dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 150dc076565f772bb1953209fb69ea150b494aaa40robbiew 160dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <sys/types.h> 170dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <stdio.h> 180dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <errno.h> 190dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <unistd.h> 200dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <semaphore.h> 210dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <sys/stat.h> 220dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <fcntl.h> 230dc076565f772bb1953209fb69ea150b494aaa40robbiew#include "posixtest.h" 240dc076565f772bb1953209fb69ea150b494aaa40robbiew 250dc076565f772bb1953209fb69ea150b494aaa40robbiew#define TEST "2-1" 260dc076565f772bb1953209fb69ea150b494aaa40robbiew#define FUNCTION "sem_open" 270dc076565f772bb1953209fb69ea150b494aaa40robbiew#define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " 280dc076565f772bb1953209fb69ea150b494aaa40robbiew 294ca2bbdcd3003f3c8df4e6129e9c7b2bd1514f87Cyril Hrubisint main(void) 300dc076565f772bb1953209fb69ea150b494aaa40robbiew{ 31354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao sem_t *mysemp; 320dc076565f772bb1953209fb69ea150b494aaa40robbiew char semname[50]; 330dc076565f772bb1953209fb69ea150b494aaa40robbiew 340dc076565f772bb1953209fb69ea150b494aaa40robbiew sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); 350dc076565f772bb1953209fb69ea150b494aaa40robbiew 360dc076565f772bb1953209fb69ea150b494aaa40robbiew mysemp = sem_open(semname, O_CREAT, 0777, 0); 37354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (mysemp == SEM_FAILED) { 38354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao perror(ERROR_PREFIX "sem_open"); 390dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_UNRESOLVED; 400dc076565f772bb1953209fb69ea150b494aaa40robbiew } 412c28215423293e443469a07ae7011135d058b671Garrett Cooper 42e9410dfd93b8e415ecbe3f7e09a085462b27836eGarrett Cooper if (sem_close(mysemp) == -1) { 430dc076565f772bb1953209fb69ea150b494aaa40robbiew perror(ERROR_PREFIX "sem_close"); 440dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_UNRESOLVED; 450dc076565f772bb1953209fb69ea150b494aaa40robbiew } 460dc076565f772bb1953209fb69ea150b494aaa40robbiew 47354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao mysemp = sem_open(semname, O_CREAT | O_EXCL, 0777, 1); 48354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if ((mysemp == SEM_FAILED) && (errno == EEXIST)) { 490dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("TEST PASSED"); 500dc076565f772bb1953209fb69ea150b494aaa40robbiew sem_unlink(semname); 51354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_PASS; 52354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 530dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("TEST FAILED"); 540dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 550dc076565f772bb1953209fb69ea150b494aaa40robbiew } 56ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 57