summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxhdrs/mqueue/mq_timedreceive.c
blob: 7eee364ecf71c42e46abf54415348d6178e81c78 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
 *  @file
 *  @brief mq_timedreceive() API Conformance Test
 */

 /*
  *  COPYRIGHT (c) 2018.
  *  Himanshu Sekhar Nayak
  *
  *  Permission to use, copy, modify, and/or distribute this software
  *  for any purpose with or without fee is hereby granted.
  *
  *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
  *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
  *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */

  #ifdef HAVE_CONFIG_H
  #include "config.h"
  #endif

  #include <fcntl.h>
  #include <time.h>
  #include <mqueue.h>

  int test( void );

  #define MQ_MAXMSG     1
  #define MQ_MSGSIZE    sizeof(int)

  int test( void )
  {
    mqd_t mqdes;
    struct mq_attr mqstat;
    const char *q_name;
    int message[MQ_MAXMSG];
    struct timespec abs_timeout;
    unsigned int msg_prio;
    int result;

    mqstat.mq_maxmsg  = MQ_MAXMSG;
    mqstat.mq_msgsize = MQ_MSGSIZE;
    abs_timeout.tv_sec  = 0;
    abs_timeout.tv_nsec = 0;
    msg_prio = 1;
    q_name = "queue";

    mqdes = mq_open( q_name, O_CREAT | O_RDWR, 0x777, &mqstat );
    result = mq_timedreceive(
		  mqdes, (char *)message, MQ_MSGSIZE, &msg_prio, &abs_timeout );

    return result;
  }