Use POSIX shell parameter expansion instead of external cut and sed while parsing kernel command-line parameters. This keeps the parser compatible with /bin/sh implementations that do not support Bash-style pattern substitution while avoiding per-parameter processes.
On QEMU, cmdline parsing decreased from 1.381871 s to 0.056985 s, a 95.9% reduction. Tested with dash and BusyBox sh syntax checks and QEMU. AI-Generated: OpenAI Codex Signed-off-by: Wenwen Fu <[email protected]> --- Changes since v1: - Replace Bash-style substitution with POSIX-compatible logic, removing the dependency on Bash-specific shell features. - Split the module-loop cleanup into a separate second patch. - Add QEMU performance measurements. .../initrdscripts/initramfs-framework/init | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/init b/meta/recipes-core/initrdscripts/initramfs-framework/init index 67590ad765..e560d25d53 100755 --- a/meta/recipes-core/initrdscripts/initramfs-framework/init +++ b/meta/recipes-core/initrdscripts/initramfs-framework/init @@ -104,13 +104,20 @@ for p in `cat /proc/cmdline`; do continue fi - opt=`echo $p | cut -d'=' -f1` - opt=`echo $opt | sed -e 'y/.-/__/'` - if [ "`echo $p | cut -d'=' -f1`" = "$p" ]; then + key=${p%%=*} + opt=$key + while :; do + case "$opt" in + *.*) opt=${opt%%.*}_${opt#*.} ;; + *-*) opt=${opt%%-*}_${opt#*-} ;; + *) break ;; + esac + done + if [ "$key" = "$p" ]; then # opt parameter eval "bootparam_${opt}=true" else - value="`echo $p | cut -d'=' -f2-`" # Option value + value=${p#*=} # Option value value_lstripped=${value#\"} value_rstripped=${value%\"} -- 2.43.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#245712): https://lists.openembedded.org/g/openembedded-core/message/245712 Mute This Topic: https://lists.openembedded.org/mt/121224836/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
