[components][dfs] AND [components][net][sal] 适配 LWIP210

Signed-off-by: MurphyZhao <d2014zjt@163.com>
This commit is contained in:
MurphyZhao 2018-11-01 18:20:03 +08:00
parent f08039ff6f
commit 58a6b51236
3 changed files with 33 additions and 4 deletions

View File

@ -15,6 +15,7 @@
#ifdef RT_USING_POSIX #ifdef RT_USING_POSIX
#include <sys/time.h> /* for struct timeval */ #include <sys/time.h> /* for struct timeval */
#if !defined(POLLIN) && !defined(POLLOUT)
#define POLLIN (0x01) #define POLLIN (0x01)
#define POLLRDNORM (0x01) #define POLLRDNORM (0x01)
#define POLLRDBAND (0x01) #define POLLRDBAND (0x01)
@ -40,6 +41,10 @@ struct pollfd
}; };
int poll(struct pollfd *fds, nfds_t nfds, int timeout); int poll(struct pollfd *fds, nfds_t nfds, int timeout);
#endif #else /* !defined(POLLIN) && !defined(POLLOUT) */
#define POLLMASK_DEFAULT (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
#endif /* !defined(POLLIN) && !defined(POLLOUT) */
#endif /* RT_USING_POSIX */
#endif #endif /* DFS_POLL_H__ */

View File

@ -33,6 +33,15 @@
#ifdef SAL_USING_LWIP #ifdef SAL_USING_LWIP
#ifdef SAL_USING_POSIX #ifdef SAL_USING_POSIX
#if LWIP_VERSION >= 0x20100ff
#include <lwip/priv/sockets_priv.h>
#if LWIP_NETCONN_FULLDUPLEX
#error "Not support"
#endif
#else /* LWIP_VERSION < 0x20100ff */
/* /*
* Re-define lwip socket * Re-define lwip socket
* *
@ -64,6 +73,7 @@ struct lwip_sock {
rt_wqueue_t wait_head; rt_wqueue_t wait_head;
}; };
#endif /* LWIP_VERSION >= 0x20100ff */
extern struct lwip_sock *lwip_tryget_socket(int s); extern struct lwip_sock *lwip_tryget_socket(int s);
@ -136,7 +146,11 @@ static void event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len
break; break;
} }
if (sock->lastdata || sock->rcvevent > 0) #if LWIP_VERSION >= 0x20100ff
if ((void*)(sock->lastdata.pbuf) || (sock->rcvevent > 0))
#else
if ((void*)(sock->lastdata) || (sock->rcvevent > 0))
#endif
event |= POLLIN; event |= POLLIN;
if (sock->sendevent) if (sock->sendevent)
event |= POLLOUT; event |= POLLOUT;
@ -226,7 +240,12 @@ static int inet_poll(struct dfs_fd *file, struct rt_pollreq *req)
rt_poll_add(&sock->wait_head, req); rt_poll_add(&sock->wait_head, req);
level = rt_hw_interrupt_disable(); level = rt_hw_interrupt_disable();
if (sock->lastdata || sock->rcvevent)
#if LWIP_VERSION >= 0x20100ff
if ((void*)(sock->lastdata.pbuf) || sock->rcvevent)
#else
if ((void*)(sock->lastdata) || sock->rcvevent)
#endif
{ {
mask |= POLLIN; mask |= POLLIN;
} }

View File

@ -51,8 +51,13 @@ struct proto_ops
int (*listen) (int s, int backlog); int (*listen) (int s, int backlog);
int (*connect) (int s, const struct sockaddr *name, socklen_t namelen); int (*connect) (int s, const struct sockaddr *name, socklen_t namelen);
int (*accept) (int s, struct sockaddr *addr, socklen_t *addrlen); int (*accept) (int s, struct sockaddr *addr, socklen_t *addrlen);
#if LWIP_VERSION >= 0x20100ff
ssize_t (*sendto) (int s, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen);
ssize_t (*recvfrom) (int s, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
#else
int (*sendto) (int s, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen); int (*sendto) (int s, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen);
int (*recvfrom) (int s, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); int (*recvfrom) (int s, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
#endif
int (*getsockopt) (int s, int level, int optname, void *optval, socklen_t *optlen); int (*getsockopt) (int s, int level, int optname, void *optval, socklen_t *optlen);
int (*setsockopt) (int s, int level, int optname, const void *optval, socklen_t optlen); int (*setsockopt) (int s, int level, int optname, const void *optval, socklen_t optlen);
int (*shutdown) (int s, int how); int (*shutdown) (int s, int how);