[OE-core] [PATCH 2/5] initramfs-module-debug: add
Otavio Salvador
otavio at ossystems.com.br
Tue Dec 6 16:07:28 UTC 2011
Adds support to dynamic debugging of initramfs using bootparam in
following format:
- shell : starts a shell before and after each module
- shell=before:<module> : starts a shell before <module> is loaded and run
- shell=after:<module> : starts a shell after <module> is loaded and run
- shell-debug : run set -x as soon as possible
- shell-debug=before:<module> : run set -x before <module> is loaded and run
- shell-debug=after:<module> : run set -x after <module> is loaded and run
Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
---
.../initrdscripts/initramfs-module-debug/debug | 82 ++++++++++++++++++++
.../initrdscripts/initramfs-module-debug_1.0.bb | 15 ++++
2 files changed, 97 insertions(+), 0 deletions(-)
create mode 100644 meta/recipes-core/initrdscripts/initramfs-module-debug/debug
create mode 100644 meta/recipes-core/initrdscripts/initramfs-module-debug_1.0.bb
diff --git a/meta/recipes-core/initrdscripts/initramfs-module-debug/debug b/meta/recipes-core/initrdscripts/initramfs-module-debug/debug
new file mode 100644
index 0000000..00bfd7d
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-module-debug/debug
@@ -0,0 +1,82 @@
+#!/bin/sh
+# Copyright (C) 2011 O.S. Systems Software LTDA.
+# Licensed on MIT
+
+# Adds support to dynamic debugging of initramfs using bootparam in
+# following format:
+# shell : starts a shell before and after each module
+# shell=before:<module> : starts a shell before <module> is loaded and run
+# shell=after:<module> : starts a shell after <module> is loaded and run
+#
+# shell-debug : run set -x as soon as possible
+# shell-debug=before:<module> : run set -x before <module> is loaded and run
+# shell-debug=after:<module> : run set -x after <module> is loaded and run
+
+DEBUG_SHELL="false"
+
+debug_hook_handler() {
+ status=$1
+ module=$2
+
+ if [ -n "$bootparam_shell" ] && [ "$bootparam_shell" != "true" ]; then
+ shell_wanted_status=`expr $bootparam_shell : '\(.*\):.*'`
+ shell_wanted_module=`expr $bootparam_shell : '.*:\(.*\)'`
+
+ if [ "$shell_wanted_status" = "before" ]; then
+ shell_wanted_status=pre
+ else
+ shell_wanted_status=post
+ fi
+ fi
+
+ if [ "$bootparam_shell" = "true" ] ||
+ ( [ "$status" = "$shell_wanted_status" ] &&
+ [ "$module" = "$shell_wanted_module" ] ); then
+ if [ "$status" = "pre" ]; then
+ status_msg="before"
+ else
+ status_msg="after"
+ fi
+
+ msg "Starting shell $status_msg $module..."
+ sh
+ fi
+
+ if [ -n "$bootparam_shell_debug" ] && [ "$bootparam_shell_debug" != "true" ]; then
+ shell_debug_wanted_status=`expr $bootparam_shell_debug : '\(.*\):.*'`
+ shell_debug_wanted_module=`expr $bootparam_shell_debug : '.*:\(.*\)'`
+
+ if [ "$shell_debug_wanted_status" = "before" ]; then
+ shell_debug_wanted_status=pre
+ else
+ shell_debug_wanted_status=post
+ fi
+ fi
+
+ if [ "$bootparam_shell_debug" = "true" ] ||
+ ( [ "$status" = "$shell_debug_wanted_status" ] &&
+ [ "$module" = "$shell_debug_wanted_module" ] ); then
+ if [ "$DEBUG_SHELL" = "true" ]; then
+ return 0
+ fi
+
+ if [ "$status" = "pre" ]; then
+ status_msg="before"
+ else
+ status_msg="after"
+ fi
+
+ msg "Starting shell debugging $status_msg $module..."
+ DEBUG_SHELL="true"
+ set -x
+ fi
+}
+
+debug_enabled() {
+ return 0
+}
+
+debug_run() {
+ add_module_pre_hook "debug_hook_handler"
+ add_module_post_hook "debug_hook_handler"
+}
diff --git a/meta/recipes-core/initrdscripts/initramfs-module-debug_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-module-debug_1.0.bb
new file mode 100644
index 0000000..d0380f4
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-module-debug_1.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "initramfs debug helper"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+RDEPENDS = "initramfs-base"
+
+inherit allarch
+
+SRC_URI = "file://debug"
+
+do_install() {
+ install -d ${D}/init.d
+ install -m 0755 ${WORKDIR}/debug ${D}/init.d/00-debug
+}
+
+FILES_${PN} = "/init.d/*"
--
1.7.2.5
More information about the Openembedded-core
mailing list