source: rtems/cpukit/libcsupport/src/posix_devctl.c @ 1f618ab0

5
Last change on this file since 1f618ab0 was 1f618ab0, checked in by Sebastian Huber <sebastian.huber@…>, on 03/02/17 at 06:54:52

posix_devctl: Fix for pre C99

Use restrict just like in <devctl.h> to avoid compiler errors with
older GCC, e.g. 4.8 or 4.9.

  • Property mode set to 100644
File size: 2.5 KB
Line 
1/*
2 * Copyright (c) 2016 Joel Sherrill <joel@rtems.org>.  All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 * SUCH DAMAGE.
24 */
25
26#if HAVE_CONFIG_H
27#include "config.h"
28#endif
29
30#define _POSIX_26_C_SOURCE
31
32#include <devctl.h>
33#include <sys/ioctl.h>
34#include <rtems/seterr.h>
35
36int posix_devctl(
37  int              fd,
38  int              dcmd,
39  void *__restrict dev_data_ptr,
40  size_t           nbyte,
41  int *__restrict  dev_info_ptr
42)
43{
44  /*
45   * The POSIX 1003.26 standard allows for library implementations
46   * that implement posix_devctl() using ioctl(). In this case,
47   * the extra parameters are largely ignored.
48   *
49   * The FACE Technical Standard requires only that FIONBIO
50   * be supported for sockets.
51   *
52   * This method appears to be rarely implemented and there are
53   * no known required use cases for this method beyond those
54   * from the FACE Technical Standard.
55   */
56
57  /*
58   * POSIX 1003.26 mentions that nbyte must be non-negative but this
59   * doesn't make sense because size_t is guaranteed to be unsigned.
60   */
61
62  /*
63   * Since this is implemented on top of ioctl(), the device information
64   * is not going to be passed down. Fill it in with zero so the behavior
65   * is defined.
66   */
67  if (dev_info_ptr != NULL) {
68    *dev_info_ptr = 0;
69  }
70
71  return ioctl(fd, dcmd, dev_data_ptr);
72}
Note: See TracBrowser for help on using the repository browser.