PERFORCE change 98884 for review
John Birrell
jb at FreeBSD.org
Fri Jun 9 21:56:41 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=98884
Change 98884 by jb at jb_freebsd2 on 2006/06/09 21:53:53
Add a loader menu option to load the DTrace modules before booting.
This isn't implemented in Forth (like the acpi load wasn't) because
the support.4th code is all centred around processing configuration
files and all that has happened before the menu is displayed.
We need an active committer who knows Forth. Despite the commit
comment by the author of support.4th, this code is far from documented
and light years away from being readable. It's like someone just
dropped a million words in a file and called it "code". Yuk. I've
wasted enough time trying to understand it.
Affected files ...
.. //depot/projects/dtrace/src/sys/boot/forth/beastie.4th#2 edit
.. //depot/projects/dtrace/src/sys/boot/i386/libi386/i386_module.c#2 edit
Differences ...
==== //depot/projects/dtrace/src/sys/boot/forth/beastie.4th#2 (text+ko) ====
@@ -40,6 +40,7 @@
variable bootkey
variable bootacpikey
+variable bootdtracekey
variable bootsafekey
variable bootverbosekey
variable bootsinglekey
@@ -194,6 +195,7 @@
printmenuitem ." Boot FreeBSD in Safe Mode" bootsafekey !
printmenuitem ." Boot FreeBSD in single user mode" bootsinglekey !
printmenuitem ." Boot FreeBSD with verbose logging" bootverbosekey !
+ printmenuitem ." Boot FreeBSD with DTrace enabled" bootdtracekey !
printmenuitem ." Escape to loader prompt" escapekey !
printmenuitem ." Reboot" rebootkey !
menuX @ 20 at-xy
@@ -283,6 +285,10 @@
s" YES" s" boot_single" setenv
0 boot
then
+ dup bootdtracekey @ = if
+ s" YES" s" dtrace_load" setenv
+ 0 boot
+ then
dup escapekey @ = if
2drop
s" NO" s" autoboot_delay" setenv
==== //depot/projects/dtrace/src/sys/boot/i386/libi386/i386_module.c#2 (text+ko) ====
@@ -64,5 +64,31 @@
printf("ACPI autoload failed - %s\n", strerror(error));
}
+ /*
+ * XXX This stuff should be in 4th too, but who can understand
+ * how to load a module from a menu option? The support.4th
+ * code loads modules before the menu.
+ */
+ if (getenv("dtrace_load")) {
+ error = mod_load("cyclic", NULL, 0, NULL);
+ if (error != 0)
+ printf("cyclic autoload failed - %s\n", strerror(error));
+ error = mod_load("dtrace", NULL, 0, NULL);
+ if (error != 0)
+ printf("dtrace autoload failed - %s\n", strerror(error));
+ error = mod_load("profile", NULL, 0, NULL);
+ if (error != 0)
+ printf("profile autoload failed - %s\n", strerror(error));
+ error = mod_load("systrace", NULL, 0, NULL);
+ if (error != 0)
+ printf("systrace autoload failed - %s\n", strerror(error));
+ error = mod_load("fbt", NULL, 0, NULL);
+ if (error != 0)
+ printf("fbt autoload failed - %s\n", strerror(error));
+ error = mod_load("sdt", NULL, 0, NULL);
+ if (error != 0)
+ printf("sdt autoload failed - %s\n", strerror(error));
+ }
+
return(0);
}
More information about the p4-projects
mailing list