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.
12 \
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
23 \ SUCH DAMAGE.
24 \
25 \ Copyright 2015 Toomas Soome <tsoome@me.com>
26 \ Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
27
28 marker task-menu-commands.4th
29
30 include /boot/forth/menusets.4th
31
32 only forth definitions
33
34 variable osconsole_state
35 variable acpi_state
36 variable kernel_state
37 variable root_state
38 variable kmdb_state
39 variable debug_state
40 0 kmdb_state !
41 0 debug_state !
42 0 osconsole_state !
43 0 acpi_state !
44 0 kernel_state !
45 0 root_state !
46
47 also menu-namespace also menu-command-helpers
48
49 \
50 \ Boot
51 \
52
53 : init_boot ( N -- N )
54 dup
55 s" smartos" getenv? if
56 s" set menu_keycode[N]=98" \ base command to execute
57 else
58 s" boot_single" getenv -1 <> if
59 drop ( n n c-addr -- n n ) \ unused
60 toggle_menuitem ( n n -- n n )
61 s" set menu_keycode[N]=115" \ base command to execute
183
184 TRUE \ loop menu again
185 ;
186
187 \
188 \ kmdb
189 \
190
191 : kmdb_enabled? ( -- flag )
192 s" boot_kmdb" getenv -1 <> dup if
193 swap drop ( c-addr flag -- flag )
194 then
195 ;
196
197 : kmdb_enable ( -- )
198 s" set boot_kmdb=YES" evaluate
199 ;
200
201 : kmdb_disable ( -- )
202 s" boot_kmdb" unsetenv
203 s" boot_debug" unsetenv
204 ;
205
206 : init_kmdb ( N -- N )
207 dup kmdb_state ! \ store entry number for kmdb+debug
208 kmdb_enabled? if
209 toggle_menuitem ( n -- n )
210 then
211 ;
212
213 : toggle_kmdb ( N -- N TRUE )
214 toggle_menuitem
215 dup toggle_stateN @ 0= if ( kmdb is not set )
216 debug_state @ if ( debug is set? )
217 debug_state @ toggle_stateN @ if ( debug is enabled? )
218 debug_state @ toggle_menuitem drop
219 then
220 then
221 then
222 menu-redraw
223
224 \ Now we're going to make the change effective
225
226 dup toggle_stateN @ 0= if
227 kmdb_disable
228 else
229 kmdb_enable
230 then
231
232 TRUE \ loop menu again
233 ;
234
235 \
236 \ kmdb + debug
237 \
238
239 : debug_disable ( -- )
240 s" boot_debug" unsetenv
241 ;
242
243 : debug_enabled? ( -- flag )
244 \ -d is only allowed with -k
245 s" boot_debug" getenv -1 <> kmdb_enabled? and dup if
246 swap drop ( c-addr flag -- flag )
247 else
248 debug_disable \ make sure env is not set
249 then
250 ;
251
252 : debug_enable ( -- )
253 kmdb_enable
254 s" set boot_debug=YES" evaluate
255 ;
256
257 : init_debug ( N -- N )
258 dup debug_state ! \ store entry number for kmdb
259 kmdb_enabled? debug_enabled? and if
260 toggle_menuitem ( n -- n )
261 then
262 ;
263
264 : toggle_debug ( N -- N TRUE )
265 toggle_menuitem
266 kmdb_enabled? 0= if
267 kmdb_state @ toggle_menuitem drop
268 then
269 menu-redraw
270
271 \ Now we're going to make the change effective
272
273 dup toggle_stateN @ 0= if
274 debug_disable
275 else
276 debug_enable
277 then
278
279 TRUE \ loop menu again
280 ;
281
282 \
283 \ Reconfiguration boot
284 \
285
286 : reconfigure_enabled? ( -- flag )
287 s" boot_reconfigure" getenv -1 <> dup if
288 swap drop ( c-addr flag -- flag )
289 then
290 ;
291
292 : reconfigure_enable ( -- )
293 s" set boot_reconfigure=YES" evaluate
294 ;
295
296 : reconfigure_disable ( -- )
506 \
507
508 : goto_menu ( N M -- N TRUE )
509 menu-unset
510 menuset-loadsetnum ( n m -- n )
511 menu-redraw
512 TRUE \ Loop menu again
513 ;
514
515 \
516 \ Defaults
517 \
518
519 : unset_boot_options
520 0 acpi_state !
521 s" acpi-user-options" unsetenv
522 s" boot-args" unsetenv
523 s" boot_ask" unsetenv
524 singleuser_disable
525 verbose_disable
526 kmdb_disable \ disables debug as well
527 reconfigure_disable
528 ;
529
530 : set_default_boot_options ( N -- N TRUE )
531 unset_boot_options
532 2 goto_menu
533 ;
534
535 \
536 \ Set boot environment defaults
537 \
538
539
540 : init_bootenv ( -- )
541 s" set menu_caption[1]=${bemenu_current}${zfs_be_active}" evaluate
542 s" set ansi_caption[1]=${beansi_current}${zfs_be_active}" evaluate
543 s" set menu_caption[2]=${bemenu_bootfs}${currdev}" evaluate
544 s" set ansi_caption[2]=${beansi_bootfs}${currdev}" evaluate
545 s" set menu_caption[3]=${bemenu_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
546 s" set ansi_caption[3]=${beansi_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
|
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.
12 \
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
23 \ SUCH DAMAGE.
24 \
25 \ Copyright 2015 Toomas Soome <tsoome@me.com>
26 \ Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
27 \ Copyright 2019 Joyent, Inc.
28
29 marker task-menu-commands.4th
30
31 include /boot/forth/menusets.4th
32
33 only forth definitions
34
35 variable osconsole_state
36 variable acpi_state
37 variable kernel_state
38 variable root_state
39 variable kmdb_state
40 variable drop_into_kmdb_state
41 0 kmdb_state !
42 0 drop_into_kmdb_state !
43 0 osconsole_state !
44 0 acpi_state !
45 0 kernel_state !
46 0 root_state !
47
48 also menu-namespace also menu-command-helpers
49
50 \
51 \ Boot
52 \
53
54 : init_boot ( N -- N )
55 dup
56 s" smartos" getenv? if
57 s" set menu_keycode[N]=98" \ base command to execute
58 else
59 s" boot_single" getenv -1 <> if
60 drop ( n n c-addr -- n n ) \ unused
61 toggle_menuitem ( n n -- n n )
62 s" set menu_keycode[N]=115" \ base command to execute
184
185 TRUE \ loop menu again
186 ;
187
188 \
189 \ kmdb
190 \
191
192 : kmdb_enabled? ( -- flag )
193 s" boot_kmdb" getenv -1 <> dup if
194 swap drop ( c-addr flag -- flag )
195 then
196 ;
197
198 : kmdb_enable ( -- )
199 s" set boot_kmdb=YES" evaluate
200 ;
201
202 : kmdb_disable ( -- )
203 s" boot_kmdb" unsetenv
204 s" boot_drop_into_kmdb" unsetenv
205 ;
206
207 : init_kmdb ( N -- N )
208 dup kmdb_state ! \ store entry number for kmdb+drop_into_kmdb
209 kmdb_enabled? if
210 toggle_menuitem ( n -- n )
211 then
212 ;
213
214 : toggle_kmdb ( N -- N TRUE )
215 toggle_menuitem
216 dup toggle_stateN @ 0= if ( kmdb is not set )
217 drop_into_kmdb_state @ if ( drop_into_kmdb is set? )
218 drop_into_kmdb_state @ toggle_stateN @ if ( drop_into_kmdb is enabled? )
219 drop_into_kmdb_state @ toggle_menuitem drop
220 then
221 then
222 then
223 menu-redraw
224
225 \ Now we're going to make the change effective
226
227 dup toggle_stateN @ 0= if
228 kmdb_disable
229 else
230 kmdb_enable
231 then
232
233 TRUE \ loop menu again
234 ;
235
236 \
237 \ drop into kmdb
238 \
239
240 : drop_into_kmdb_disable ( -- )
241 s" boot_drop_into_kmdb" unsetenv
242 ;
243
244 : drop_into_kmdb_enabled? ( -- flag )
245 \ -d is only allowed with -k
246 s" boot_drop_into_kmdb" getenv -1 <> kmdb_enabled? and dup if
247 swap drop ( c-addr flag -- flag )
248 else
249 drop_into_kmdb_disable \ make sure env is not set
250 then
251 ;
252
253 : drop_into_kmdb_enable ( -- )
254 kmdb_enable
255 s" set boot_drop_into_kmdb=YES" evaluate
256 ;
257
258 : init_drop_into_kmdb ( N -- N )
259 dup drop_into_kmdb_state ! \ store entry number for kmdb
260 kmdb_enabled? drop_into_kmdb_enabled? and if
261 toggle_menuitem ( n -- n )
262 then
263 ;
264
265 : toggle_drop_into_kmdb ( N -- N TRUE )
266 toggle_menuitem
267 kmdb_enabled? 0= if
268 kmdb_state @ toggle_menuitem drop
269 then
270 menu-redraw
271
272 \ Now we're going to make the change effective
273
274 dup toggle_stateN @ 0= if
275 drop_into_kmdb_disable
276 else
277 drop_into_kmdb_enable
278 then
279
280 TRUE \ loop menu again
281 ;
282
283 \
284 \ Reconfiguration boot
285 \
286
287 : reconfigure_enabled? ( -- flag )
288 s" boot_reconfigure" getenv -1 <> dup if
289 swap drop ( c-addr flag -- flag )
290 then
291 ;
292
293 : reconfigure_enable ( -- )
294 s" set boot_reconfigure=YES" evaluate
295 ;
296
297 : reconfigure_disable ( -- )
507 \
508
509 : goto_menu ( N M -- N TRUE )
510 menu-unset
511 menuset-loadsetnum ( n m -- n )
512 menu-redraw
513 TRUE \ Loop menu again
514 ;
515
516 \
517 \ Defaults
518 \
519
520 : unset_boot_options
521 0 acpi_state !
522 s" acpi-user-options" unsetenv
523 s" boot-args" unsetenv
524 s" boot_ask" unsetenv
525 singleuser_disable
526 verbose_disable
527 kmdb_disable \ disables drop_into_kmdb as well
528 reconfigure_disable
529 ;
530
531 : set_default_boot_options ( N -- N TRUE )
532 unset_boot_options
533 2 goto_menu
534 ;
535
536 \
537 \ Set boot environment defaults
538 \
539
540
541 : init_bootenv ( -- )
542 s" set menu_caption[1]=${bemenu_current}${zfs_be_active}" evaluate
543 s" set ansi_caption[1]=${beansi_current}${zfs_be_active}" evaluate
544 s" set menu_caption[2]=${bemenu_bootfs}${currdev}" evaluate
545 s" set ansi_caption[2]=${beansi_bootfs}${currdev}" evaluate
546 s" set menu_caption[3]=${bemenu_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
547 s" set ansi_caption[3]=${beansi_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
|