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 /*
31  * Nothing in this file should be visible unless _POSIX_26_C_SOURCE is
32  * defined.
33  */
34 #ifdef _POSIX_26_C_SOURCE
35 
36 #include <sys/cdefs.h>
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 #if defined(__rtems__)
43 /*
44  * The FACE Technical Standard, Edition 3.0 and later require the
45  * definition of the subcommand SOCKCLOSE in <devctl.h>.
46  *
47  * Reference: https://www.opengroup.org/face
48  *
49  * Using 'D' should avoid the letters used by other users of <sys/ioccom.h>
50  */
51 #include <sys/ioccom.h>
52 
53 #define SOCKCLOSE    _IO('D', 1)    /* socket close */
54 #endif
55 
56 /*
57  * The posix_devctl() method is defined by POSIX 1003.26-2003. Aside
58  * from the single method, it adds the following requirements:
59  *
60  *   + define _POSIX_26_VERSION to 200312L
61  *   + add _SC_POSIX_26_VERSION in <unistd.h>. Return _POSIX_26_VERSION
62  *   + application must define _POSIX_26_C_SOURCE to use posix_devctl().
63  *   + posix_devctl() is prototyped in <devctl.h>
64  */
65 int posix_devctl(
66   int              fd,
67   int              dcmd,
68   void *__restrict dev_data_ptr,
69   size_t           nbyte,
70   int *__restrict  dev_info_ptr
71 );
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 
77 #endif /* _POSIX_26_C_SOURCE */
78 #endif /*_POSIX_DEVCTL_h_ */
79