1 \ Copyright (c) 1999 Daniel C. Sobral <dcs@freebsd.org>
4 \ Redistribution and use in source and binary forms, with or without
5 \ modification, are permitted provided that the following conditions
7 \ 1. Redistributions of source code must retain the above copyright
8 \ notice, this list of conditions and the following disclaimer.
9 \ 2. Redistributions in binary form must reproduce the above copyright
10 \ notice, this list of conditions and the following disclaimer in the
11 \ documentation and/or other materials provided with the distribution.
13 \ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 \ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 \ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 \ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 \ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 \ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 \ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 \ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 \ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 \ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 s" arch-i386" environment? [if] [if]
28 s" loader_version" environment? [if]
30 .( Loader version 1.1+ required) cr
34 .( Could not get loader version!) cr
39 256 dictthreshold ! \ 256 cells minimum free space
40 2048 dictincrease ! \ 2048 additional cells each time
42 include /boot/support.4th
44 only forth also support-functions also builtins definitions
47 \ menu-unset may not be present
48 s" beastie_disable" getenv
50 s" YES" compare-insensitive 0= if
65 0= if ( interpreted ) get_arguments then
67 \ Unload only if a path was passed
73 s" kernelname" getenv? if ( a kernel has been loaded )
77 load_kernel_and_modules
83 s" kernelname" getenv? if ( a kernel has been loaded )
87 load_kernel_and_modules
92 load_kernel_and_modules
93 ?dup 0= if 0 1 boot then
98 \ Prepares to boot as specified by loaded configuration files.
101 0= if ( interpreted ) get_arguments then
103 load_kernel_and_modules
104 ?dup 0= if 0 1 autoboot then
107 also forth definitions also builtins
112 only forth definitions also support-functions
114 include /boot/check-password.4th
118 \ Initializes support.4th global variables, sets loader_conf_files,
119 \ process conf files, and, if any one such file was succesfully
120 \ read to the end, load kernel and modules.
122 : start ( -- ) ( throws: abort & user-defined )
123 s" /boot/defaults/loader.conf" initialize
125 include_nextboot_file
126 \ Will *NOT* try to load kernel and modules if no configuration file
127 \ was succesfully loaded!
136 \ Overrides support.4th initialization word with one that does
137 \ everything start one does, short of loading the kernel and
138 \ modules. Returns a flag
140 : initialize ( -- flag )
141 s" /boot/defaults/loader.conf" initialize
143 include_nextboot_file
149 \ Read a configuration file, whose name was specified on the command
150 \ line, if interpreted, or given on the stack, if compiled in.
152 : (read-conf) ( addr len -- )
154 include_conf_files \ Will recurse on new loader_conf_files definitions
157 : read-conf ( <filename> | addr len -- ) ( throws: abort & user-defined )
167 \ show, enable, disable, toggle module loading. They all take module from
170 : set-module-flag ( module_addr val -- ) \ set and print flag
172 dup module.name strtype
173 module.flag @ if ." will be loaded" else ." will not be loaded" then cr
176 : enable-module find-module ?dup if true set-module-flag then ;
178 : disable-module find-module ?dup if false set-module-flag then ;
180 : toggle-module find-module ?dup if dup module.flag @ 0= set-module-flag then ;
184 \ Show loading information about a module.
186 : show-module ( <module> -- ) find-module ?dup if show-one-module then ;
188 \ Words to be used inside configuration files
190 : retry false ; \ For use in load error commands
191 : ignore true ; \ For use in load error commands
193 \ Return to strict forth vocabulary
201 : .? 2 spaces 2swap 15 #type 2 spaces type cr ;
205 s" boot-conf" s" load kernel and modules, then autoboot" .?
206 s" read-conf" s" read a configuration file" .?
207 s" enable-module" s" enable loading of a module" .?
208 s" disable-module" s" disable loading of a module" .?
209 s" toggle-module" s" toggle loading of a module" .?
210 s" show-module" s" show module load data" .?