Tizen RT Libs&Environment
v1.0 D5
Main Page
Modules
Data Structures
Files
File List
Globals
select.h
Go to the documentation of this file.
1
/****************************************************************************
2
*
3
* Copyright 2016 Samsung Electronics All Rights Reserved.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing,
12
* software distributed under the License is distributed on an
13
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14
* either express or implied. See the License for the specific
15
* language governing permissions and limitations under the License.
16
*
17
****************************************************************************/
18
/****************************************************************************
19
* include/sys/select.h
20
*
21
* Copyright (C) 2008-2009, 2011 Gregory Nutt. All rights reserved.
22
* Author: Gregory Nutt <gnutt@nuttx.org>
23
*
24
* Redistribution and use in source and binary forms, with or without
25
* modification, are permitted provided that the following conditions
26
* are met:
27
*
28
* 1. Redistributions of source code must retain the above copyright
29
* notice, this list of conditions and the following disclaimer.
30
* 2. Redistributions in binary form must reproduce the above copyright
31
* notice, this list of conditions and the following disclaimer in
32
* the documentation and/or other materials provided with the
33
* distribution.
34
* 3. Neither the name NuttX nor the names of its contributors may be
35
* used to endorse or promote products derived from this software
36
* without specific prior written permission.
37
*
38
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
39
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
40
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
41
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
42
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
43
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
44
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
45
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
46
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
47
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
48
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49
* POSSIBILITY OF SUCH DAMAGE.
50
*
51
****************************************************************************/
60
63
#ifndef __INCLUDE_SYS_SELECT_H
64
#define __INCLUDE_SYS_SELECT_H
65
66
/****************************************************************************
67
* Included Files
68
****************************************************************************/
69
70
#include <tinyara/config.h>
71
72
#include <stdint.h>
73
#include <
time.h
>
74
75
#if CONFIG_NFILE_DESCRIPTORS > 0 || CONFIG_NSOCKET_DESCRIPTORS > 0
76
77
#if defined(CONFIG_DISABLE_POLL) && defined(CONFIG_CUSTOM_SOCKETS)
78
79
#include <net/lwip/sockets.h>
80
81
#else
82
83
/****************************************************************************
84
* Pre-Processor Definitions
85
****************************************************************************/
86
87
/* Get the total number of descriptors that we will have to support */
88
89
#define __SELECT_NDESCRIPTORS (CONFIG_NFILE_DESCRIPTORS + CONFIG_NSOCKET_DESCRIPTORS)
90
91
/* We will use a 32-bit bitsets to represent the set of descriptors. How
92
* many uint32_t's do we need to span all descriptors?
93
*/
94
95
#if __SELECT_NDESCRIPTORS <= 32
96
#define __SELECT_NUINT32 1
97
#elif __SELECT_NDESCRIPTORS <= 64
98
#define __SELECT_NUINT32 2
99
#elif __SELECT_NDESCRIPTORS <= 96
100
#define __SELECT_NUINT32 3
101
#elif __SELECT_NDESCRIPTORS <= 128
102
#define __SELECT_NUINT32 4
103
#elif __SELECT_NDESCRIPTORS <= 160
104
#define __SELECT_NUINT32 5
105
#elif __SELECT_NDESCRIPTORS <= 192
106
#define __SELECT_NUINT32 6
107
#elif __SELECT_NDESCRIPTORS <= 224
108
#define __SELECT_NUINT32 7
109
#elif __SELECT_NDESCRIPTORS <= 256
110
#define __SELECT_NUINT32 8
111
#else
112
#warning "Large fd_set needed"
113
#endif
114
115
/* Standard helper macros */
116
117
#define FD_CLR(fd, set) ((set)->fd_bits[(fd)/8]) &= ~(1 << ((fd) & 7))
118
#define FD_SET(fd, set) ((set)->fd_bits[(fd)/8]) |= (1 << ((fd) & 7))
119
#define FD_ISSET(fd, set) ((set)->fd_bits[(fd)/8]) & (1 << ((fd) & 7))
120
#define FD_ZERO(set) memset(set, 0, sizeof(fd_set))
121
122
/****************************************************************************
123
* Type Definitions
124
****************************************************************************/
125
126
typedef
struct
fd_set
{
127
uint8_t
fd_bits
[
__SELECT_NUINT32
* 4];
128
}
fd_set
;
129
130
#endif
/* CONFIG_DISABLE_POLL */
131
132
/****************************************************************************
133
* Public Function Prototypes
134
****************************************************************************/
135
136
#undef EXTERN
137
#if defined(__cplusplus)
138
#define EXTERN extern "C"
139
extern
"C"
{
140
#else
141
#define EXTERN extern
142
#endif
143
150
EXTERN
int
select
(
int
nfds, FAR
fd_set
*readfds, FAR
fd_set
*writefds, FAR
fd_set
*exceptfds, FAR
struct
timeval
*timeout);
151
152
#undef EXTERN
153
#if defined(__cplusplus)
154
}
155
#endif
156
157
#endif
/* CONFIG_NFILE_DESCRIPTORS || CONFIG_NSOCKET_DESCRIPTORS */
158
159
#endif
/* __INCLUDE_SYS_SELECT_H */
160
fd_set
Definition:
select.h:126
fd_set::fd_bits
uint8_t fd_bits[__SELECT_NUINT32 *4]
Definition:
select.h:127
fd_set
struct fd_set fd_set
select
EXTERN int select(int nfds, FAR fd_set *readfds, FAR fd_set *writefds, FAR fd_set *exceptfds, FAR struct timeval *timeout)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
timeval
structure represents an elapsed time
Definition:
time.h:160
__SELECT_NUINT32
#define __SELECT_NUINT32
Definition:
select.h:96
EXTERN
#define EXTERN
Definition:
select.h:141
time.h
os
include
sys
select.h
Generated by
1.8.11