Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/i386/libi386/bootinfo.c
34869 views
1
/*-
2
* Copyright (c) 1998 Michael Smith <[email protected]>
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
*
14
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24
* SUCH DAMAGE.
25
*/
26
27
#include <stand.h>
28
#include <sys/param.h>
29
#include <sys/reboot.h>
30
#include <sys/boot.h>
31
#include <sys/linker.h>
32
#include <gfx_fb.h>
33
#include "bootstrap.h"
34
#include "libi386.h"
35
#include "vbe.h"
36
#include "btxv86.h"
37
38
int
39
bi_getboothowto(char *kargs)
40
{
41
char *curpos, *next, *string;
42
int howto;
43
int vidconsole;
44
45
howto = boot_parse_cmdline(kargs);
46
howto |= boot_env_to_howto();
47
48
/* Enable selected consoles */
49
string = next = strdup(getenv("console"));
50
vidconsole = 0;
51
while (next != NULL) {
52
curpos = strsep(&next, " ,");
53
if (*curpos == '\0')
54
continue;
55
if (!strcmp(curpos, "vidconsole"))
56
vidconsole = 1;
57
else if (!strcmp(curpos, "comconsole"))
58
howto |= RB_SERIAL;
59
else if (!strcmp(curpos, "nullconsole"))
60
howto |= RB_MUTE;
61
}
62
63
if (vidconsole && (howto & RB_SERIAL))
64
howto |= RB_MULTIPLE;
65
66
/*
67
* XXX: Note that until the kernel is ready to respect multiple consoles
68
* for the boot messages, the first named console is the primary console
69
*/
70
if (!strcmp(string, "vidconsole"))
71
howto &= ~RB_SERIAL;
72
73
free(string);
74
75
return(howto);
76
}
77
78
void
79
bi_setboothowto(int howto)
80
{
81
82
boot_howto_to_env(howto);
83
}
84
85