Use shell parameter expansion rather than external cut and sed commands
while parsing kernel command-line parameters in the initramfs.

On the target initramfs, 100 command-line parser runs took 13.48 s
before this change and 0.51 s afterwards. This reduces the per-run
cost from 134.8 ms to 5.1 ms.

Signed-off-by: Wenwen Fu <[email protected]>
---
 meta/recipes-core/initrdscripts/initramfs-framework/init | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/init 
b/meta/recipes-core/initrdscripts/initramfs-framework/init
index 67590ad765..62d8ccfd0c 100755
--- a/meta/recipes-core/initrdscripts/initramfs-framework/init
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/init
@@ -104,13 +104,14 @@ 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//./_}
+       opt=${opt//-/_}
+       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 (#245661): 
https://lists.openembedded.org/g/openembedded-core/message/245661
Mute This Topic: https://lists.openembedded.org/mt/121200898/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to