From 9cd8ea32d1094cd95f7f59e14857c5739f51e107 Mon Sep 17 00:00:00 2001 From: Ville Juven Date: Thu, 24 Aug 2023 15:50:27 +0300 Subject: [PATCH] net/xx/wrbuffer: Do not use SEM_INITIALIZER for buffers Using the macro places the buffers into .data section which means they will consume the full buffer size of flash / read only memory as well. Place the buffers into .bss to avoid this case. --- net/tcp/tcp_wrbuffer.c | 9 +++++---- net/udp/udp_wrbuffer.c | 7 +++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/net/tcp/tcp_wrbuffer.c b/net/tcp/tcp_wrbuffer.c index 686f025503..1ff8cf519b 100644 --- a/net/tcp/tcp_wrbuffer.c +++ b/net/tcp/tcp_wrbuffer.c @@ -73,10 +73,7 @@ struct wrbuffer_s /* This is the state of the global write buffer resource */ -static struct wrbuffer_s g_wrbuffer = -{ - SEM_INITIALIZER(CONFIG_NET_TCP_NWRBCHAINS), -}; +static struct wrbuffer_s g_wrbuffer; /**************************************************************************** * Public Functions @@ -97,6 +94,10 @@ void tcp_wrbuffer_initialize(void) { int i; + sq_init(&g_wrbuffer.freebuffers); + + nxsem_init(&g_wrbuffer.sem, 0, CONFIG_NET_TCP_NWRBCHAINS); + for (i = 0; i < CONFIG_NET_TCP_NWRBCHAINS; i++) { sq_addfirst(&g_wrbuffer.buffers[i].wb_node, &g_wrbuffer.freebuffers); diff --git a/net/udp/udp_wrbuffer.c b/net/udp/udp_wrbuffer.c index f6a0fd9324..3ae627a774 100644 --- a/net/udp/udp_wrbuffer.c +++ b/net/udp/udp_wrbuffer.c @@ -72,10 +72,7 @@ struct wrbuffer_s /* This is the state of the global write buffer resource */ -static struct wrbuffer_s g_wrbuffer = -{ - SEM_INITIALIZER(CONFIG_NET_UDP_NWRBCHAINS) -}; +static struct wrbuffer_s g_wrbuffer; /**************************************************************************** * Public Functions @@ -98,6 +95,8 @@ void udp_wrbuffer_initialize(void) sq_init(&g_wrbuffer.freebuffers); + nxsem_init(&g_wrbuffer.sem, 0, CONFIG_NET_UDP_NWRBCHAINS); + for (i = 0; i < CONFIG_NET_UDP_NWRBCHAINS; i++) { sq_addfirst(&g_wrbuffer.buffers[i].wb_node, &g_wrbuffer.freebuffers);