1 /*
2  * Copyright (c) 2016,2019 Joel Sherrill <joel@rtems.org>.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  */
26 
27 #ifndef _POSIX_DEVCTL_h_
28 #define _POSIX_DEVCTL_h_
29 
30 #include <sys/cdefs.h>
31 
32 /*
33  * Nothing in this file should be visible unless _POSIX_26_C_SOURCE is
34  * defined.
35  */
36 #ifdef _POSIX_26_C_SOURCE
37 
38 _BEGIN_STD_C
39 
40 #if defined(__rtems__)
41 /*
42  * The FACE Technical Standard, Edition 3.0 and later require the
43  * definition of the subcommand SOCKCLOSE in <devctl.h>.
44  *
45  * Reference: https://www.opengroup.org/face
46  *
47  * Using 'D' should avoid the letters used by other users of <sys/ioccom.h>
48  */
49 #include <sys/ioccom.h>
50 
51 #define SOCKCLOSE    _IO('D', 1)    /* socket close */
52 #endif
53 
54 /*
55  * The posix_devctl() method is defined by POSIX 1003.26-2003. Aside
56  * from the single method, it adds the following requirements:
57  *
58  *   + define _POSIX_26_VERSION to 200312L
59  *   + add _SC_POSIX_26_VERSION in <unistd.h>. Return _POSIX_26_VERSION
60  *   + application must define _POSIX_26_C_SOURCE to use posix_devctl().
61  *   + posix_devctl() is prototyped in <devctl.h>
62  */
63 int posix_devctl(
64   int              fd,
65   int              dcmd,
66   void *__restrict dev_data_ptr,
67   size_t           nbyte,
68   int *__restrict  dev_info_ptr
69 );
70 
71 _END_STD_C
72 
73 #endif /* _POSIX_26_C_SOURCE */
74 #endif /*_POSIX_DEVCTL_h_ */
75