From 34edfc3a1a584caa158af83b8b261ce4e2f5a436 Mon Sep 17 00:00:00 2001 From: isiora Date: Wed, 21 Mar 2018 14:32:08 +0000 Subject: Added listen. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11831 110e8d01-0319-4d1e-a829-52ad28d1bb01 --- .../RT-SAMA5D2-XPLAINED-NSEC/daemons/tscommon.h | 1 + .../RT-SAMA5D2-XPLAINED-NSEC/daemons/tssockskel.c | 19 +++++++++++++++++++ .../RT-SAMA5D2-XPLAINED-SEC/proxies/tscommon.h | 1 + .../RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.c | 11 ++++++++++- .../RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.h | 1 + 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tscommon.h b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tscommon.h index 079c6396e..3a2698451 100644 --- a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tscommon.h +++ b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tscommon.h @@ -45,6 +45,7 @@ #define STUB_OP_SEND 4 #define STUB_OP_SELECT 5 #define STUB_OP_BIND 6 +#define STUB_OP_LISTEN 7 #define EVT_F_SOCK_NEW_OP 1 diff --git a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tssockskel.c b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tssockskel.c index e3b2246a2..84f0326b9 100644 --- a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tssockskel.c +++ b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-NSEC/daemons/tssockskel.c @@ -257,6 +257,22 @@ static void l_bind(skel_req_t *skreqp) { returnToRemote(skreqp, result); } +/** + * @brief listen(int s, int backlog); + */ +static void l_listen(skel_req_t *skreqp) { + int s, result, backlog; + + s = (int)skreqp->stub_op_p[0]; + backlog = (int)skreqp->stub_op_p[1]; + + /* Call the api exposed by the TCP/IP stack.*/ + result = listen(s, backlog); + + /* Report the result.*/ + returnToRemote(skreqp, result); +} + /** @} */ /*===========================================================================*/ @@ -296,6 +312,9 @@ static THD_FUNCTION(TsSockSkelDaemon, arg) { case STUB_OP_BIND: l_bind(skreqp); break; + case STUB_OP_LISTEN: + l_bind(skreqp); + break; default: break; } diff --git a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tscommon.h b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tscommon.h index 079c6396e..3a2698451 100644 --- a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tscommon.h +++ b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tscommon.h @@ -45,6 +45,7 @@ #define STUB_OP_SEND 4 #define STUB_OP_SELECT 5 #define STUB_OP_BIND 6 +#define STUB_OP_LISTEN 7 #define EVT_F_SOCK_NEW_OP 1 diff --git a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.c b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.c index 1862e65c6..00dcd2626 100644 --- a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.c +++ b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.c @@ -364,6 +364,16 @@ int bind(int s, const struct sockaddr *name, socklen_t namelen) { return (int)callRemote(op); } +int listen(int s, int backlog) { + stub_op_t *op = getNewOp(); + op->op_code = STUB_OP_LISTEN; + op->op_p[0].dir = OP_PRMDIR_NONE; + op->op_p[0].val = (uint32_t)s; + op->op_p[1].dir = OP_PRMDIR_NONE; + op->op_p[1].val = (uint32_t)backlog; + return (int)callRemote(op); +} + #if 0 int accept(int s, struct sockaddr *addr, socklen_t *addrlen); int shutdown(int s, int how); @@ -371,7 +381,6 @@ int getpeername (int s, struct sockaddr *name, socklen_t *namelen); int getsockname (int s, struct sockaddr *name, socklen_t *namelen); 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 listen(int s, int backlog); int read(int s, void *mem, size_t len); int recvfrom(int s, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); diff --git a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.h b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.h index 0bb423a19..937caa29a 100644 --- a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.h +++ b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED-SEC/proxies/tssockstub.h @@ -373,6 +373,7 @@ extern "C" { int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, struct timeval *timeout); int bind(int s, const struct sockaddr *name, socklen_t namelen); + int listen(int s, int backlog); in_addr_t inet_addr(const char *cp); int inet_aton(const char *cp, struct in_addr *addr); void tsWaitStubSkelReady(void); -- cgit v1.2.3