Skip to content

Commit

Permalink
add "enable_ap" to config.
Browse files Browse the repository at this point in the history
  • Loading branch information
cupnes committed Sep 15, 2019
1 parent 54b3cbe commit 4e96ac5
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 5 deletions.
4 changes: 4 additions & 0 deletions config.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ void config_init(void)
conf.kernel_start = CONF_DEFAULT_KERNEL_START;
conf.stack_base = CONF_DEFAULT_STACK_BASE;
conf.fs_start = CONF_DEFAULT_FS_START;
conf.enable_ap = CONF_DEFAULT_ENABLE_AP;
}

static void conf_set_val(char *name, char *val_str)
Expand All @@ -22,6 +23,8 @@ static void conf_set_val(char *name, char *val_str)
conf.stack_base = hexstrtoull(val_str);
else if (!strcmp_char(name, CONF_NAME_FS_START))
conf.fs_start = hexstrtoull(val_str);
else if (!strcmp_char(name, CONF_NAME_ENABLE_AP))
conf.enable_ap = boolstrtouc(val_str);
}

static void conf_parser(char *buf, unsigned long long buf_size)
Expand Down Expand Up @@ -105,4 +108,5 @@ void load_config(
put_param(L"kernel_start", conf.kernel_start);
put_param(L"stack_base", conf.stack_base);
put_param(L"fs_start", conf.fs_start);
put_param(L"enable_ap", conf.enable_ap);
}
1 change: 1 addition & 0 deletions include/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ int strcmp_char(const char *s1, const char *s2);
void strncpy(unsigned short *dst, unsigned short *src, unsigned long long n);
unsigned long long strlen(unsigned short *str);
unsigned long long hexstrtoull(char *str);
unsigned char boolstrtouc(char *str);
unsigned char check_warn_error(unsigned long long status, unsigned short *name);
void assert(unsigned long long status, unsigned short *message);

Expand Down
6 changes: 6 additions & 0 deletions include/config.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#pragma once

#include <common.h>

#define CONF_BUF_SIZE 4096
#define CONF_FILE_NAME L"poiboot.conf"

Expand All @@ -15,10 +17,14 @@
#define CONF_NAME_FS_START "fs_start"
#define CONF_DEFAULT_FS_START 0x0000000100000000

#define CONF_NAME_ENABLE_AP "enable_ap"
#define CONF_DEFAULT_ENABLE_AP FALSE

struct config_list {
unsigned long long kernel_start;
unsigned long long stack_base;
unsigned long long fs_start;
unsigned char enable_ap;
};

extern struct config_list conf;
Expand Down
9 changes: 9 additions & 0 deletions libuefi/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,15 @@ unsigned long long hexstrtoull(char *str)
return res;
}

unsigned char boolstrtouc(char *str)
{
if (!strcmp_char(str, "true") || !strcmp_char(str, "True")
|| !strcmp_char(str, "TRUE"))
return TRUE;
else
return FALSE;
}

unsigned char check_warn_error(unsigned long long status, unsigned short *message)
{
if (status) {
Expand Down
12 changes: 7 additions & 5 deletions poiboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,13 @@ void efi_main(void *ImageHandle, struct EFI_SYSTEM_TABLE *SystemTable)
ST->ConOut->ClearScreen(ST->ConOut);

/* APを起動 */
ai.kernel_start = conf.kernel_start;
ai.stack_space_start = conf.stack_base;
ai.system_table = ST;
status = MSP->StartupAllAPs(
MSP, ap_main, 0, NULL, WAIT_FOR_AP_USECS, &ai, NULL);
if (conf.enable_ap) {
ai.kernel_start = conf.kernel_start;
ai.stack_space_start = conf.stack_base;
ai.system_table = ST;
status = MSP->StartupAllAPs(
MSP, ap_main, 0, NULL, WAIT_FOR_AP_USECS, &ai, NULL);
}

/* UEFIのブートローダー向け機能を終了させる */
exit_boot_services(ImageHandle);
Expand Down

0 comments on commit 4e96ac5

Please sign in to comment.