diff options
author | dcs <dcs@FreeBSD.org> | 1999-03-09 14:06:55 +0000 |
---|---|---|
committer | dcs <dcs@FreeBSD.org> | 1999-03-09 14:06:55 +0000 |
commit | 08f08b7ab7990e449dc9d792555df88de43ee602 (patch) | |
tree | 713d79fb477005b0f9a6c0df5c3c7ad9c2583cb0 /sys/boot/forth/loader.4th | |
parent | 07101145e89a286cc8ef960bab1d9549f4a1c977 (diff) | |
download | FreeBSD-src-08f08b7ab7990e449dc9d792555df88de43ee602.zip FreeBSD-src-08f08b7ab7990e449dc9d792555df88de43ee602.tar.gz |
New loader.rc stuff.
Reviewed by: jkh
Diffstat (limited to 'sys/boot/forth/loader.4th')
-rw-r--r-- | sys/boot/forth/loader.4th | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/sys/boot/forth/loader.4th b/sys/boot/forth/loader.4th new file mode 100644 index 0000000..ef299c6 --- /dev/null +++ b/sys/boot/forth/loader.4th @@ -0,0 +1,114 @@ +\ Copyright (c) 1999 Daniel C. Sobral <dcs@freebsd.org> +\ All rights reserved. +\ +\ Redistribution and use in source and binary forms, with or without +\ modification, are permitted provided that the following conditions +\ are met: +\ 1. Redistributions of source code must retain the above copyright +\ notice, this list of conditions and the following disclaimer. +\ 2. Redistributions in binary form must reproduce the above copyright +\ notice, this list of conditions and the following disclaimer in the +\ documentation and/or other materials provided with the distribution. +\ +\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +\ SUCH DAMAGE. +\ +\ $Id$ + +include /boot/support.4th + +only forth definitions also support-functions + +\ ***** boot-conf +\ +\ Prepares to boot as specified by loaded configuration files. + +: boot-conf + load_kernel + load_modules + 0 autoboot +; + +\ ***** start +\ +\ Initializes support.4th global variables, sets loader_conf_files, +\ process conf files, and, if any one such file was succesfully +\ read to the end, load kernel and modules. + +: start ( -- ) ( throws: abort & user-defined ) + s" /boot/defaults/loader.conf" initialize + include_conf_files + \ Will *NOT* try to load kernel and modules if no configuration file + \ was succesfully loaded! + any_conf_read? if + load_kernel + load_modules + then +; + +\ ***** read-conf +\ +\ Read a configuration file, whose name was specified on the command +\ line, if interpreted, or given on the stack, if compiled in. + +: (read-conf) ( addr len -- ) + conf_files .addr @ ?dup if free abort" Fatal error freeing memory" then + strdup conf_files .len ! conf_files .addr ! + include_conf_files \ Will recurse on new loader_conf_files definitions +; + +: read-conf ( <filename> | addr len -- ) ( throws: abort & user-defined ) + state @ if + \ Compiling + postpone (read-conf) + else + \ Interpreting + bl parse (read-conf) + then +; immediate + +\ ***** show-module +\ +\ Show loading information about a module. + +: show-module ( <module> -- ) + bl parse module_options @ >r + begin + r@ + while + 2dup + r@ module.name dup .addr @ swap .len @ + compare 0= if + 2drop + ." Name: " r@ module.name dup .addr @ swap .len @ type cr + ." Path: " r@ module.loadname dup .addr @ swap .len @ type cr + ." Type: " r@ module.type dup .addr @ swap .len @ type cr + ." Flags: " r@ module.args dup .addr @ swap .len @ type cr + ." Before load: " r@ module.beforeload dup .addr @ swap .len @ type cr + ." After load: " r@ module.afterload dup .addr @ swap .len @ type cr + ." Error: " r@ module.loaderror dup .addr @ swap .len @ type cr + ." Status: " r> module.flag @ if ." Load" else ." Don't load" then cr + exit + then + r> module.next @ >r + repeat +; + +\ Words to be used inside configuration files + +: retry false ; \ For use in load error commands +: ignore true ; \ For use in load error commands + +\ Return to strict forth vocabulary + +only forth also + |