diff mbox series

[1/3] Start network threads before processes

Message ID 20200830124908.88129-1-sbabic@denx.de
State Changes Requested
Headers show
Series [1/3] Start network threads before processes | expand

Commit Message

Stefano Babic Aug. 30, 2020, 12:49 p.m. UTC
Start core network thread before any process to make IPC working when
processes are started.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 core/swupdate.c | 99 +++++++++++++++++++++++--------------------------
 1 file changed, 46 insertions(+), 53 deletions(-)
diff mbox series

Patch

diff --git a/core/swupdate.c b/core/swupdate.c
index f3d483b..0d610c4 100644
--- a/core/swupdate.c
+++ b/core/swupdate.c
@@ -924,59 +924,6 @@  int main(int argc, char **argv)
 	memset(&sa, 0, sizeof(sa));
 	sa.sa_handler = sigchld_handler;
 	sigaction(SIGCHLD, &sa, NULL);
-
-	/*
-	 * If just a check is required, do not
-	 * start background processes and threads
-	 */
-	if (!opt_c) {
-		/* Start embedded web server */
-#if defined(CONFIG_MONGOOSE)
-		if (opt_w) {
-			start_subprocess(SOURCE_WEBSERVER, "webserver",
-						cfgfname, ac, av,
-						start_mongoose);
-			freeargs(av);
-		}
-#endif
-
-#if defined(CONFIG_SURICATTA)
-		if (opt_u) {
-			start_subprocess(SOURCE_SURICATTA, "suricatta",
-					 cfgfname, argcount,
-				       	 argvalues, start_suricatta);
-
-			freeargs(argvalues);
-		}
-#endif
-
-#ifdef CONFIG_DOWNLOAD
-		if (opt_d) {
-			start_subprocess(SOURCE_DOWNLOADER, "download",
-				       	 cfgfname, dwlac,
-				       	 dwlav, start_download);
-			freeargs(dwlav);
-		}
-#endif
-
-		/*
-		 * Start all processes added in the config file
-		 */
-		struct extproc *proc;
-
-		LIST_FOREACH(proc, &swcfg.extprocs, next) {
-			dwlav = splitargs(proc->exec, &dwlac);
-
-			dwlav[dwlac] = NULL;
-
-			start_subprocess_from_file(SOURCE_UNKNOWN, proc->name,
-						   cfgfname, dwlac,
-						   dwlav, dwlav[0]);
-
-			freeargs(dwlav);
-		}
-	}
-
 #ifdef CONFIG_UBIATTACH
 	if (strlen(swcfg.globals.mtdblacklist))
 		mtd_set_ubiblacklist(swcfg.globals.mtdblacklist);
@@ -1026,6 +973,52 @@  int main(int argc, char **argv)
 		network_daemon = start_thread(network_initializer, &swcfg);
 
 		start_thread(progress_bar_thread, NULL);
+
+		/* Start embedded web server */
+#if defined(CONFIG_MONGOOSE)
+		if (opt_w) {
+			start_subprocess(SOURCE_WEBSERVER, "webserver",
+					 cfgfname, ac, av,
+					 start_mongoose);
+			freeargs(av);
+		}
+#endif
+
+#if defined(CONFIG_SURICATTA)
+		if (opt_u) {
+			start_subprocess(SOURCE_SURICATTA, "suricatta",
+					 cfgfname, argcount,
+					 argvalues, start_suricatta);
+
+			freeargs(argvalues);
+		}
+#endif
+
+#ifdef CONFIG_DOWNLOAD
+		if (opt_d) {
+			start_subprocess(SOURCE_DOWNLOADER, "download",
+					 cfgfname, dwlac,
+					 dwlav, start_download);
+			freeargs(dwlav);
+		}
+#endif
+
+		/*
+		 * Start all processes added in the config file
+		 */
+		struct extproc *proc;
+
+		LIST_FOREACH(proc, &swcfg.extprocs, next) {
+			dwlav = splitargs(proc->exec, &dwlac);
+
+			dwlav[dwlac] = NULL;
+
+			start_subprocess_from_file(SOURCE_UNKNOWN, proc->name,
+						   cfgfname, dwlac,
+						   dwlav, dwlav[0]);
+
+			freeargs(dwlav);
+		}
 	}
 
 	if (opt_i) {