FreeRTOS_sockets.h
BaseType_t FreeRTOS_FD_ISSET( Socket_t xSocket, SocketSet_t xSocketSet );
检查套接字集中的套接字是否有事件位集。
ipconfigSUPPORT_SELECT_FUNCTION 在
FreeRTOSIPConfig.h 中设置为 1,
FreeRTOS_FD_ISSET() 才可用。
套接字集允许应用程序 RTOS 任务同时阻塞
多个套接字。
要使用套接字集,请执行下列操作:
-
调用 FreeRTOS_CreateSocketSet() 创建套接字集。
套接字集相当于 Berkeley 套接字 fd_set 类型。
-
调用 FreeRTOS_FD_SET() 向套接字集添加一个或多个套接字。
FreeRTOS_FD_SET() 相当于 Berkeley 套接字 FD_SET() 宏。
-
调用 FreeRTOS_Select() 以测试
套接字集中的套接字,查看是否有任何套接字
存在挂起事件。
-
如果 FreeRTOS_select() 返回非零值,
则调用 FreeRTOS_FD_ISSET() 检查套接字集中的所有套接字,
以确定哪些事件处于挂起状态。
相关事件位是以下一个或多个值的
按位或组合:
eSELECT_READ
|
对于正在读取数据的套接字,
只要套接字包含未读数据,
eSELECT_READ 事件就会在套接字中处于挂起状态。
对于正在监听新连接的套接字,
每次接收到新连接时,
eSELECT_READ 事件就会挂起。
|
eSELECT_WRITE
|
只要套接字有写入空间,
eSELECT_WRITE 事件就会一直处于挂起状态。
如果 TCP 套接字主动连接到 pear,
则在建立连接后,
会立即触发 eSELECT_WRITE 事件。
当 eSELECT_WRITE 事件被挂起后,就应将其禁用,
或者调用方应对套接字写入足够数据,
以完全填充传输缓冲区——
否则,将不会清除挂起的 eSELECT_WRITE 事件。
|
eSELECT_EXCEPT
|
如果套接字断开连接,则 eSELECT_EXCEPT 事件会进入挂起状态
。
|
eSELECT_INTR
|
如果在调用过程中使用 FreeRTOS_SignalSocket() 或
FreeRTOS_SignalSocketFromISR() 向任何套接字发出信号,则返回 eSELECT_INTR。请注意,
只有在定义了 ipconfigSUPPORT_SIGNALS 的情况下才会触发。
|
FreeRTOS_FD_CLR() API 函数可清除
相关事件位并从套接字集中删除套接字。
参数:
xSocket
|
正在测试的套接字集中的套接字,
可用于确定是否设置了事件位。
|
xSocketSet
|
正在向其中添加套接字的套接字集。
|
返回:
该函数返回值为 eSELECT_READ (1)、
eSELECT_WRITE (2) 和 eSELECT_EXCEPT (4) 的位掩码。 仅返回
调用 FreeRTOS_FD_SET()
指定的相关位。
用法示例:
请参阅FreeRTOS_select()
文档页面提供的示例。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.