mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2026-05-12 19:26:52 +08:00
sockets: adapt poll to LWIP_MPU_COMPATIBLE; make LWIP_SOCKET_POLL and LWIP_SOCKET_SELECT independent options
This commit is contained in:
@@ -78,9 +78,9 @@ LWIP_MEMPOOL(DNS_API_MSG, MEMP_NUM_DNS_API_MSG, sizeof(struct dns_api_msg
|
||||
#if LWIP_SOCKET && !LWIP_TCPIP_CORE_LOCKING
|
||||
LWIP_MEMPOOL(SOCKET_SETGETSOCKOPT_DATA, MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA, sizeof(struct lwip_setgetsockopt_data), "SOCKET_SETGETSOCKOPT_DATA")
|
||||
#endif
|
||||
#if LWIP_SOCKET && LWIP_SOCKET_SELECT
|
||||
#if LWIP_SOCKET && (LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL)
|
||||
LWIP_MEMPOOL(SELECT_CB, MEMP_NUM_SELECT_CB, sizeof(struct lwip_select_cb), "SELECT_CB")
|
||||
#endif /* LWIP_SOCKET && LWIP_SOCKET_SELECT */
|
||||
#endif /* LWIP_SOCKET && (LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL) */
|
||||
#if LWIP_NETIF_API
|
||||
LWIP_MEMPOOL(NETIFAPI_MSG, MEMP_NUM_NETIFAPI_MSG, sizeof(struct netifapi_msg), "NETIFAPI_MSG")
|
||||
#endif
|
||||
|
||||
@@ -69,7 +69,7 @@ struct lwip_sock {
|
||||
struct netconn *conn;
|
||||
/** data that was left from the previous read */
|
||||
union lwip_sock_lastdata lastdata;
|
||||
#if LWIP_SOCKET_SELECT
|
||||
#if LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL
|
||||
/** number of times data was received, set by event_callback(),
|
||||
tested by the receive and select functions */
|
||||
s16_t rcvevent;
|
||||
@@ -80,7 +80,7 @@ struct lwip_sock {
|
||||
u16_t errevent;
|
||||
/** counter of how many threads are waiting for this socket using select */
|
||||
SELWAIT_T select_waiting;
|
||||
#endif /* LWIP_SOCKET_SELECT */
|
||||
#endif /* LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL */
|
||||
#if LWIP_NETCONN_FULLDUPLEX
|
||||
/* counter of how many threads are using a struct lwip_sock (not the 'int') */
|
||||
u8_t fd_used;
|
||||
@@ -133,7 +133,7 @@ struct lwip_setgetsockopt_data {
|
||||
|
||||
struct lwip_sock* lwip_socket_dbg_get_socket(int fd);
|
||||
|
||||
#if LWIP_SOCKET_SELECT
|
||||
#if LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL
|
||||
|
||||
#if LWIP_NETCONN_SEM_PER_THREAD
|
||||
#define SELECT_SEM_T sys_sem_t*
|
||||
@@ -149,24 +149,26 @@ struct lwip_select_cb {
|
||||
struct lwip_select_cb *next;
|
||||
/** Pointer to the previous waiting task */
|
||||
struct lwip_select_cb *prev;
|
||||
#if LWIP_SOCKET_SELECT
|
||||
/** readset passed to select */
|
||||
fd_set *readset;
|
||||
/** writeset passed to select */
|
||||
fd_set *writeset;
|
||||
/** unimplemented: exceptset passed to select */
|
||||
fd_set *exceptset;
|
||||
#endif /* LWIP_SOCKET_SELECT */
|
||||
#if LWIP_SOCKET_POLL
|
||||
/** fds passed to poll; NULL if select */
|
||||
struct pollfd *poll_fds;
|
||||
/** nfds passed to poll; 0 if select */
|
||||
nfds_t poll_nfds;
|
||||
#endif
|
||||
#endif /* LWIP_SOCKET_POLL */
|
||||
/** don't signal the same semaphore twice: set to 1 when signalled */
|
||||
int sem_signalled;
|
||||
/** semaphore to wake up a task waiting for select */
|
||||
SELECT_SEM_T sem;
|
||||
};
|
||||
#endif /* LWIP_SOCKET_SELECT */
|
||||
#endif /* LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL */
|
||||
|
||||
#endif /* LWIP_SOCKET */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user