From: Mike Frysinger Date: Thu, 26 Feb 2015 23:06:16 +0000 (-0500) Subject: xlat: avoid fork bombing the build system X-Git-Tag: v4.10~57 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=48ceaee38436357f4cd31e67a63cc961e8441516;p=strace xlat: avoid fork bombing the build system When there were fewer xlat headers, this didn't matter as much. But now with >200, trying to run them all in parallel can easily fork bomb smaller systems. * xlat/gen.sh (main): Do not more jobs than # of cpus. --- diff --git a/xlat/gen.sh b/xlat/gen.sh index 1484fb59..8754a032 100755 --- a/xlat/gen.sh +++ b/xlat/gen.sh @@ -147,6 +147,10 @@ main() local input="$1" local output="$2" local name + local jobs=0 + local ncpus="$(getconf _NPROCESSORS_ONLN)" + [ "${ncpus}" -ge 1 ] || + ncpus=1 if [ -d "${input}" ]; then local f names= @@ -156,6 +160,11 @@ main() name=${name%.in} gen_header "${f}" "${output}/${name}.h" "${name}" & names="${names} ${name}" + : $(( jobs += 1 )) + if [ ${jobs} -ge ${ncpus} ]; then + jobs=0 + wait + fi done gen_git "${output}/.gitignore" ${names} gen_make "${output}/Makemodule.am" ${names}