mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2025-03-12 13:13:21 +00:00
Added LWIP_SOCKERR_T to adapt the size of sock->err to what is needed.
This commit is contained in:
parent
d1049511cc
commit
5d6c9ce77b
@ -217,7 +217,7 @@ struct lwip_sock {
|
|||||||
/** error happened for this socket, set by event_callback(), tested by select */
|
/** error happened for this socket, set by event_callback(), tested by select */
|
||||||
u16_t errevent;
|
u16_t errevent;
|
||||||
/** last error that occurred on this socket */
|
/** last error that occurred on this socket */
|
||||||
int err;
|
lwip_sockerr_t err;
|
||||||
/** counter of how many threads are waiting for this socket using select */
|
/** counter of how many threads are waiting for this socket using select */
|
||||||
SELWAIT_T select_waiting;
|
SELWAIT_T select_waiting;
|
||||||
};
|
};
|
||||||
@ -295,7 +295,7 @@ static volatile int select_cb_ctr;
|
|||||||
|
|
||||||
#define sock_set_errno(sk, e) do { \
|
#define sock_set_errno(sk, e) do { \
|
||||||
const int sockerr = (e); \
|
const int sockerr = (e); \
|
||||||
sk->err = sockerr; \
|
sk->err = (lwip_sockerr_t)sockerr; \
|
||||||
set_errno(sockerr); \
|
set_errno(sockerr); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@ -305,8 +305,8 @@ static void event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len
|
|||||||
static void lwip_getsockopt_callback(void *arg);
|
static void lwip_getsockopt_callback(void *arg);
|
||||||
static void lwip_setsockopt_callback(void *arg);
|
static void lwip_setsockopt_callback(void *arg);
|
||||||
#endif
|
#endif
|
||||||
static int lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *optlen);
|
static lwip_sockerr_t lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *optlen);
|
||||||
static int lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_t optlen);
|
static lwip_sockerr_t lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_t optlen);
|
||||||
|
|
||||||
#if LWIP_IPV4 && LWIP_IPV6
|
#if LWIP_IPV4 && LWIP_IPV6
|
||||||
static void
|
static void
|
||||||
@ -1780,7 +1780,7 @@ lwip_getsockname(int s, struct sockaddr *name, socklen_t *namelen)
|
|||||||
int
|
int
|
||||||
lwip_getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
|
lwip_getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
|
||||||
{
|
{
|
||||||
int err;
|
lwip_sockerr_t err;
|
||||||
struct lwip_sock *sock = get_socket(s);
|
struct lwip_sock *sock = get_socket(s);
|
||||||
#if !LWIP_TCPIP_CORE_LOCKING
|
#if !LWIP_TCPIP_CORE_LOCKING
|
||||||
err_t cberr;
|
err_t cberr;
|
||||||
@ -1876,10 +1876,10 @@ lwip_getsockopt_callback(void *arg)
|
|||||||
/** lwip_getsockopt_impl: the actual implementation of getsockopt:
|
/** lwip_getsockopt_impl: the actual implementation of getsockopt:
|
||||||
* same argument as lwip_getsockopt, either called directly or through callback
|
* same argument as lwip_getsockopt, either called directly or through callback
|
||||||
*/
|
*/
|
||||||
static int
|
static lwip_sockerr_t
|
||||||
lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *optlen)
|
lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *optlen)
|
||||||
{
|
{
|
||||||
int err = 0;
|
lwip_sockerr_t err = 0;
|
||||||
struct lwip_sock *sock = tryget_socket(s);
|
struct lwip_sock *sock = tryget_socket(s);
|
||||||
if (!sock) {
|
if (!sock) {
|
||||||
return EBADF;
|
return EBADF;
|
||||||
@ -2187,7 +2187,7 @@ lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *opt
|
|||||||
int
|
int
|
||||||
lwip_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
|
lwip_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
|
||||||
{
|
{
|
||||||
int err = 0;
|
lwip_sockerr_t err = 0;
|
||||||
struct lwip_sock *sock = get_socket(s);
|
struct lwip_sock *sock = get_socket(s);
|
||||||
#if !LWIP_TCPIP_CORE_LOCKING
|
#if !LWIP_TCPIP_CORE_LOCKING
|
||||||
err_t cberr;
|
err_t cberr;
|
||||||
@ -2278,10 +2278,10 @@ lwip_setsockopt_callback(void *arg)
|
|||||||
/** lwip_setsockopt_impl: the actual implementation of setsockopt:
|
/** lwip_setsockopt_impl: the actual implementation of setsockopt:
|
||||||
* same argument as lwip_setsockopt, either called directly or through callback
|
* same argument as lwip_setsockopt, either called directly or through callback
|
||||||
*/
|
*/
|
||||||
static int
|
static lwip_sockerr_t
|
||||||
lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_t optlen)
|
lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_t optlen)
|
||||||
{
|
{
|
||||||
int err = 0;
|
lwip_sockerr_t err = 0;
|
||||||
struct lwip_sock *sock = tryget_socket(s);
|
struct lwip_sock *sock = tryget_socket(s);
|
||||||
if (!sock) {
|
if (!sock) {
|
||||||
return EBADF;
|
return EBADF;
|
||||||
|
@ -48,6 +48,19 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Define LWIP_SOCKERR_T in cc.h if you want to use a different type for your
|
||||||
|
* platform (must be signed and big enough to hold all error constants). */
|
||||||
|
#ifdef LWIP_SOCKERR_T
|
||||||
|
typedef LWIP_SOCKERR_T lwip_sockerr_t;
|
||||||
|
#else /* LWIP_SOCKERR_T */
|
||||||
|
#ifdef LWIP_PROVIDE_ERRNO
|
||||||
|
/* we only use our own error constants, 8 bits are enough */
|
||||||
|
typedef s8_t lwip_sockerr_t;
|
||||||
|
#else
|
||||||
|
typedef int lwip_sockerr_t;
|
||||||
|
#endif
|
||||||
|
#endif /* LWIP_SOCKERR_T*/
|
||||||
|
|
||||||
#if LWIP_SOCKET_SET_ERRNO
|
#if LWIP_SOCKET_SET_ERRNO
|
||||||
#ifndef set_errno
|
#ifndef set_errno
|
||||||
#define set_errno(err) do { if (err) { errno = (err); } } while(0)
|
#define set_errno(err) do { if (err) { errno = (err); } } while(0)
|
||||||
@ -82,7 +95,7 @@ struct lwip_setgetsockopt_data {
|
|||||||
/** size of *optval */
|
/** size of *optval */
|
||||||
socklen_t optlen;
|
socklen_t optlen;
|
||||||
/** if an error occurs, it is temporarily stored here */
|
/** if an error occurs, it is temporarily stored here */
|
||||||
int err;
|
lwip_sockerr_t err;
|
||||||
/** semaphore to wake up the calling task */
|
/** semaphore to wake up the calling task */
|
||||||
void* completed_sem;
|
void* completed_sem;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user