已更新 2025年7月
FreeRTOS_CreateSocketSet()
FreeRTOS_sockets.h
1SocketSet_t FreeRTOS_CreateSocketSet()( unsigned BaseType_t uxEventQueueLength );
创建用于 FreeRTOS_select() 函数的套接字集。ipconfigSUPPORT_SELECT_FUNCTION 必须在 FreeRTOSIPConfig.h 中设置为 1, 才能使用 FreeRTOS_CreateSocketSet()。
套接字集允许应用程序 RTOS 任务在多个套接字上同时进入阻塞状态。
要使用套接字集,请执行下列操作:
-
调用 FreeRTOS_CreateSocketSet() 创建套接字集。
套接字集相当于 Berkeley 套接字 fd_set 类型。
-
调用 FreeRTOS_FD_SET() 向套接字集添加一个或多个套接字。
FreeRTOS_FD_SET() 相当于 Berkeley 套接字 FD_SET() 宏。
-
调用 FreeRTOS_Select() 以测试套接字集中的套接字,检查其中是否包含任何 挂起的事件。
-
如果 FreeRTOS_select() 返回非零值,则调用
FreeRTOS_FD_ISSET() 检查套接字集中的所有套接字,以确定哪些事件处于挂起状态。
FreeRTOS_FD_CLR() API 函数用于从套接字集中移除套接字。
参数:
-
uxEventQueueLength
每次套接字集中的套接字接收数据时,都会生成一个接收事件。uxEventQueueLength 设置套接字每次可存储的最大接收事件数。 如果 如果作为套接字组一员的套接字接收到一个数据包,而套接字组的事件队列已满, 则该数据包将被丢弃。
返回:
如果创建了套接字集,则返回创建的套接字集的句柄。如果未创建套接字组 (因为 FreeRTOS 堆内存不足), 则返回 NULL。
用法示例:
请参阅 FreeRTOS_select() 文档页面上的示例。