From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id C3AF5385800F for ; Sat, 27 Mar 2021 12:57:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C3AF5385800F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id E48DDAD4A; Sat, 27 Mar 2021 12:57:09 +0000 (UTC) Date: Sat, 27 Mar 2021 13:57:08 +0100 From: Tom de Vries To: dwz@sourceware.org, jakub@redhat.com, mark@klomp.org Subject: [committed] Factor out wait_children_exit Message-ID: <20210327125707.GA18336@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: dwz@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dwz mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Mar 2021 12:57:12 -0000 Hi, Factor new function wait_children_exit out of dwz_files_1. Committed to trunk. Thanks, - Tom Factor out wait_children_exit 2021-03-27 Tom de Vries * dwz.c (wait_children_exit): New function, factored out of ... (dwz_files_1): ... here. --- dwz.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/dwz.c b/dwz.c index 3e7eb24..f20a47d 100644 --- a/dwz.c +++ b/dwz.c @@ -16457,6 +16457,27 @@ wait_child_exit (pid_t pid, pid_t *pids, int nr_pids, return decode_child_exit_status (state, res); } +/* Wait on exit of chilren in PIDS, update RESA. */ +static int +wait_children_exit (pid_t *pids, int nr_files, struct file_result *resa) +{ + int ret = 0; + + int i; + for (i = 0; i < nr_files; i++) + { + int thisret; + struct file_result *res = &resa[i]; + if (pids[i] == 0) + continue; + thisret = wait_child_exit (pids[i], &pids[i], 1, res); + if (thisret == 1) + ret = 1; + } + + return ret; +} + /* Dwarf-compress FILES. If HARDLINK, detect if some files are hardlinks and if so, dwarf-compress just one, and relink the others. */ static int @@ -16492,10 +16513,10 @@ dwz_files_1 (int nr_files, char *files[], bool hardlink, if (hardlink) hardlink = detect_hardlinks (nr_files, files, resa); - int nr_forks = 0; if (max_forks > 1 && multifile == NULL) { pid_t pids[nr_files]; + int nr_forks = 0; for (i = 0; i < nr_files; i++) pids[i] = 0; for (i = 0; i < nr_files; i++) @@ -16528,13 +16549,9 @@ dwz_files_1 (int nr_files, char *files[], bool hardlink, nr_forks++; } } - for (i = 0; i < nr_files; i++) + if (nr_forks > 0) { - int thisret; - struct file_result *res = &resa[i]; - if (pids[i] == 0) - continue; - thisret = wait_child_exit (pids[i], &pids[i], 1, res); + int thisret = wait_children_exit (pids, nr_files, resa); if (thisret == 1) ret = 1; }