Home | History | Annotate | Download | only in sem_timedwait
      1 /*
      2  * Copyright (c) 2003, Intel Corporation. All rights reserved.
      3  * Created by:  majid.awad REMOVE-THIS AT intel DOT com
      4  * This file is licensed under the GPL license.  For the full content
      5  * of this license, see the COPYING file at the top level of this
      6  * source tree.
      7  */
      8 
      9 /*
     10  * The process would be blocked, and the timeout parameter is
     11  * secified in nanoseconds field value greater than or equal to
     12  * 1000 million.  Should return ERROR (EINVAL).
     13 */
     14 
     15 #define _XOPEN_SOURCE 600
     16 
     17 #include <stdio.h>
     18 #include <errno.h>
     19 #include <unistd.h>
     20 #include <semaphore.h>
     21 #include <sys/stat.h>
     22 #include <fcntl.h>
     23 #include <time.h>
     24 #include "posixtest.h"
     25 
     26 #define TEST "5-1"
     27 #define FUNCTION "sem_timedwait"
     28 #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": "
     29 
     30 #define NANOSEC 1000000000
     31 
     32 int main(void)
     33 {
     34 	sem_t mysemp;
     35 	struct timespec ts;
     36 	int sts;
     37 
     38 	if (sem_init(&mysemp, 0, 0) == -1) {
     39 		perror(ERROR_PREFIX "sem_init");
     40 		return PTS_UNRESOLVED;
     41 	}
     42 	ts.tv_sec = time(NULL);
     43 	ts.tv_nsec = NANOSEC;
     44 
     45 	sts = sem_timedwait(&mysemp, &ts);
     46 
     47 	if (errno == EINVAL && sts == -1) {
     48 		puts("TEST PASSED");
     49 		sem_destroy(&mysemp);
     50 		return PTS_PASS;
     51 	} else {
     52 		puts("TEST FAILED");
     53 		return PTS_FAIL;
     54 	}
     55 }
     56