efi: switch boot_services_gone to boot_services_active
Turn the presence or absence of boot services into a positive bool (and change its type to bool). Move declaration to efi.h in the global variables section. Sponsored by: Netflix Reviewed by: tsoome, kib Differential Revision: https://reviews.freebsd.org/D31814
This commit is contained in:
parent
cfd0698702
commit
305ef653bc
@ -751,14 +751,16 @@ gfxfb_blt(void *BltBuffer, GFXFB_BLT_OPERATION BltOperation,
|
||||
#if defined(EFI)
|
||||
EFI_STATUS status;
|
||||
EFI_GRAPHICS_OUTPUT *gop = gfx_state.tg_private;
|
||||
extern int boot_services_gone;
|
||||
EFI_TPL tpl;
|
||||
|
||||
/*
|
||||
* We assume Blt() does work, if not, we will need to build
|
||||
* exception list case by case.
|
||||
* We assume Blt() does work, if not, we will need to build exception
|
||||
* list case by case. We only have boot services during part of our
|
||||
* exectution. Once terminate boot services, these operations cannot be
|
||||
* done as they are provided by protocols that disappear when exit
|
||||
* boot services.
|
||||
*/
|
||||
if (gop != NULL && boot_services_gone == 0) {
|
||||
if (gop != NULL && boot_services_active) {
|
||||
tpl = BS->RaiseTPL(TPL_NOTIFY);
|
||||
switch (BltOperation) {
|
||||
case GfxFbBltVideoFill:
|
||||
|
@ -60,11 +60,13 @@ Revision History
|
||||
#include "efitcp.h"
|
||||
#include "efipoint.h"
|
||||
#include "efiuga.h"
|
||||
#include <sys/types.h>
|
||||
|
||||
/*
|
||||
* Global variables
|
||||
*/
|
||||
extern EFI_LOADED_IMAGE *boot_img;
|
||||
extern bool boot_services_active;
|
||||
|
||||
/*
|
||||
* FreeBSD UUID
|
||||
|
@ -37,14 +37,15 @@ __FBSDID("$FreeBSD$");
|
||||
#include <framebuffer.h>
|
||||
#include "bootstrap.h"
|
||||
|
||||
extern int boot_services_gone;
|
||||
extern EFI_GUID gop_guid;
|
||||
|
||||
bool boot_services_active = true; /* boot services active first thing in main */
|
||||
|
||||
static EFI_GUID simple_input_ex_guid = EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID;
|
||||
static SIMPLE_TEXT_OUTPUT_INTERFACE *conout;
|
||||
static SIMPLE_INPUT_INTERFACE *conin;
|
||||
static EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *coninex;
|
||||
static bool efi_started;
|
||||
|
||||
static int mode; /* Does ConOut have serial console? */
|
||||
|
||||
static uint32_t utf8_left;
|
||||
@ -177,7 +178,7 @@ efi_text_cursor(void *arg, const teken_pos_t *p)
|
||||
teken_gfx_t *state = arg;
|
||||
UINTN col, row;
|
||||
|
||||
if (boot_services_gone)
|
||||
if (!boot_services_active)
|
||||
return;
|
||||
|
||||
row = p->tp_row;
|
||||
@ -238,7 +239,7 @@ efi_text_putchar(void *s, const teken_pos_t *p, teken_char_t c,
|
||||
EFI_STATUS status;
|
||||
int idx;
|
||||
|
||||
if (boot_services_gone)
|
||||
if (!boot_services_active)
|
||||
return;
|
||||
|
||||
idx = p->tp_col + p->tp_row * state->tg_tp.tp_col;
|
||||
@ -258,7 +259,7 @@ efi_text_fill(void *arg, const teken_rect_t *r, teken_char_t c,
|
||||
teken_gfx_t *state = arg;
|
||||
teken_pos_t p;
|
||||
|
||||
if (boot_services_gone)
|
||||
if (!boot_services_active)
|
||||
return;
|
||||
|
||||
if (state->tg_cursor_visible)
|
||||
@ -313,7 +314,7 @@ efi_text_copy(void *arg, const teken_rect_t *r, const teken_pos_t *p)
|
||||
int nrow, ncol, x, y; /* Has to be signed - >= 0 comparison */
|
||||
bool scroll = false;
|
||||
|
||||
if (boot_services_gone)
|
||||
if (!boot_services_active)
|
||||
return;
|
||||
|
||||
/*
|
||||
@ -369,7 +370,7 @@ efi_text_param(void *arg, int cmd, unsigned int value)
|
||||
{
|
||||
teken_gfx_t *state = arg;
|
||||
|
||||
if (boot_services_gone)
|
||||
if (!boot_services_active)
|
||||
return;
|
||||
|
||||
switch (cmd) {
|
||||
@ -739,6 +740,8 @@ get_arg(int c)
|
||||
static void
|
||||
efi_term_emu(int c)
|
||||
{
|
||||
if (!boot_services_active)
|
||||
return;
|
||||
#ifdef TERM_EMU
|
||||
static int ansi_col[] = {
|
||||
0, 4, 2, 6, 1, 5, 3, 7
|
||||
@ -746,9 +749,6 @@ efi_term_emu(int c)
|
||||
int t, i;
|
||||
EFI_STATUS status;
|
||||
|
||||
if (boot_services_gone)
|
||||
return;
|
||||
|
||||
switch (esc) {
|
||||
case 0:
|
||||
switch (c) {
|
||||
@ -858,8 +858,7 @@ efi_term_emu(int c)
|
||||
break;
|
||||
}
|
||||
#else
|
||||
if (!boot_services_gone)
|
||||
efi_cons_rawputchar(c);
|
||||
efi_cons_rawputchar(c);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -63,8 +63,6 @@ __FBSDID("$FreeBSD$");
|
||||
int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp,
|
||||
bool exit_bs);
|
||||
|
||||
int boot_services_gone;
|
||||
|
||||
static int
|
||||
bi_getboothowto(char *kargs)
|
||||
{
|
||||
@ -397,7 +395,7 @@ bi_load_efi_data(struct preloaded_file *kfp, bool exit_bs)
|
||||
break;
|
||||
status = BS->ExitBootServices(IH, efi_mapkey);
|
||||
if (!EFI_ERROR(status)) {
|
||||
boot_services_gone = 1;
|
||||
boot_services_active = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -42,8 +42,6 @@ __FBSDID("$FreeBSD$");
|
||||
#define M(x) ((x) * 1024 * 1024)
|
||||
#define G(x) (1UL * (x) * 1024 * 1024 * 1024)
|
||||
|
||||
extern int boot_services_gone;
|
||||
|
||||
#if defined(__i386__) || defined(__amd64__)
|
||||
#include <machine/cpufunc.h>
|
||||
#include <machine/specialreg.h>
|
||||
@ -370,7 +368,7 @@ efi_check_space(vm_offset_t end)
|
||||
if (end + staging_slop <= staging_end)
|
||||
return (true);
|
||||
|
||||
if (boot_services_gone) {
|
||||
if (!boot_services_active) {
|
||||
if (end <= staging_end)
|
||||
return (true);
|
||||
panic("efi_check_space: cannot expand staging area "
|
||||
|
Loading…
Reference in New Issue
Block a user