From 25222e4abc1ac998242fe220113cea0c7bf1ed84 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sat, 17 Sep 2011 15:25:42 +0200 Subject: [PATCH] if LWIP_TCPIP_CORE_LOCKING is 0, we send a copy of the message to TCPIP thread --- drivers/char/socket.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/char/socket.c b/drivers/char/socket.c index 10a745d5..60554822 100755 --- a/drivers/char/socket.c +++ b/drivers/char/socket.c @@ -58,7 +58,20 @@ static ssize_t socket_write(fildes_t* file, uint8_t* buffer, size_t size) { int ret = 0; #if defined(CONFIG_LWIP) && LWIP_SOCKET + if (BUILTIN_EXPECT(!size, 0)) + return 0; + +#if LWIP_TCPIP_CORE_LOCKING ret = lwip_write(file->offset, buffer, size); +#else + // create a copy and forward this copy to the TCP/IP stack + uint8_t* tmp = kmalloc(size); + if (BUILTIN_EXPECT(!tmp, 0)) + return -ENOMEM; + memcpy(tmp, buffer, size); + ret = lwip_write(file->offset, tmp, size); + kfree(tmp, size); +#endif if (ret < 0) ret = -errno; #endif