From 1d2229497418a1c5647bc13e9e186f335638d60a Mon Sep 17 00:00:00 2001 From: jifl Date: Mon, 26 Feb 2007 20:01:04 +0000 Subject: [PATCH] * sockets.h, sockets.c: Move socket initialization to new lwip_socket_init() function. --- CHANGELOG | 6 ++++++ src/api/sockets.c | 17 +++++++---------- src/include/lwip/sockets.h | 1 + 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3a607f4b..4f703410 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -27,6 +27,12 @@ HISTORY ++ New features: + 2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt) + * sockets.h, sockets.c: Move socket initialization to new + lwip_socket_init() function. + NOTE: this changes the API with ports. Ports will have to be + updated to call lwip_socket_init() now. + 2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt) * api_lib.c: Use memcpy in netbuf_copy_partial. diff --git a/src/api/sockets.c b/src/api/sockets.c index 290a7b73..b476c5f6 100644 --- a/src/api/sockets.c +++ b/src/api/sockets.c @@ -106,6 +106,13 @@ static int err_to_errno_table[11] = { } while (0) +void +lwip_socket_init(void) +{ + socksem = sys_sem_new(1); + selectsem = sys_sem_new(1); +} + static struct lwip_socket * get_socket(int s) { @@ -133,9 +140,6 @@ alloc_socket(struct netconn *newconn) { int i; - if (!socksem) - socksem = sys_sem_new(1); - /* Protect socket array */ sys_sem_wait(socksem); @@ -252,8 +256,6 @@ lwip_close(int s) struct lwip_socket *sock; LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_close(%d)\n", s)); - if (!socksem) - socksem = sys_sem_new(1); /* We cannot allow multiple closes of the same socket. */ sys_sem_wait(socksem); @@ -675,8 +677,6 @@ lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, select_cb.sem_signalled = 0; /* Protect ourselves searching through the list */ - if (!selectsem) - selectsem = sys_sem_new(1); sys_sem_wait(selectsem); if (readset) @@ -831,9 +831,6 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len) else return; - if (!selectsem) - selectsem = sys_sem_new(1); - sys_sem_wait(selectsem); /* Set event as required */ switch (evt) diff --git a/src/include/lwip/sockets.h b/src/include/lwip/sockets.h index d5f8ccf7..3e7debde 100644 --- a/src/include/lwip/sockets.h +++ b/src/include/lwip/sockets.h @@ -222,6 +222,7 @@ struct linger { #endif +void lwip_socket_init(void); int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen); int lwip_bind(int s, struct sockaddr *name, socklen_t namelen); int lwip_shutdown(int s, int how);