Improve kernel info init

This commit is contained in:
Alex Kotov 2021-12-18 07:42:03 +05:00
parent f2dc7a489b
commit 2d1a21540f
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
3 changed files with 29 additions and 20 deletions

View File

@ -30,6 +30,28 @@ void kernel_info_init_start(
kinfo->kernel_stack_top = stack_top;
}
void kernel_info_init_finish(struct Kernel_Info *const kinfo)
{
KERNAUX_NOTNULL_RETURN(kinfo);
kinfo->kernel_and_modules_total_size =
kinfo->kernel_size + kinfo->modules_total_size;
}
void kernel_info_init_cmdline(
struct Kernel_Info *const kinfo,
const char *const cmdline
) {
KERNAUX_NOTNULL_RETURN(kinfo);
KERNAUX_ASSERT_RETURN(kinfo->cmdline[0] == '\0');
if (!cmdline) return;
KERNAUX_ASSERT(strlen(cmdline) <= KERNEL_INFO_CMDLINE_SLEN_MAX);
strcpy(kinfo->cmdline, cmdline);
}
void kernel_info_print(const struct Kernel_Info *const kinfo)
{
KERNAUX_NOTNULL_RETURN(kinfo);
@ -54,7 +76,7 @@ void kernel_info_print(const struct Kernel_Info *const kinfo)
kernaux_console_printf(" stack top: %lu\n", kinfo->kernel_stack_top);
}
bool kernel_info_init_finish(const struct Kernel_Info *const kinfo)
bool kernel_info_is_valid(const struct Kernel_Info *const kinfo)
{
KERNAUX_NOTNULL_RETVAL(kinfo, false);
@ -145,21 +167,7 @@ bool kernel_info_init_finish(const struct Kernel_Info *const kinfo)
}
}
return 1;
}
void kernel_info_init_cmdline(
struct Kernel_Info *const kinfo,
const char *const cmdline
) {
KERNAUX_NOTNULL_RETURN(kinfo);
KERNAUX_ASSERT_RETURN(kinfo->cmdline[0] == '\0');
if (!cmdline) return;
KERNAUX_ASSERT(strlen(cmdline) <= KERNEL_INFO_CMDLINE_SLEN_MAX);
strcpy(kinfo->cmdline, cmdline);
return true;
}
bool cmdline_terminated(const char *const str)

View File

@ -66,10 +66,11 @@ void kernel_info_init_start(
size_t stack_top
);
void kernel_info_init_finish(struct Kernel_Info *kinfo);
void kernel_info_init_cmdline(struct Kernel_Info *kinfo, const char *cmdline);
bool kernel_info_init_finish(const struct Kernel_Info *kinfo);
bool kernel_info_is_valid(const struct Kernel_Info *kinfo);
void kernel_info_print(const struct Kernel_Info *kinfo);
#ifdef __cplusplus

View File

@ -139,7 +139,7 @@ void main(
kinfo.modules_total_size += module->size;
}
kinfo.kernel_and_modules_total_size = kinfo.kernel_size + kinfo.modules_total_size;
kernel_info_init_finish(&kinfo);
kernel_info_print(&kinfo);
@ -150,7 +150,7 @@ void main(
paging_enable();
assert(kernel_info_init_finish(&kinfo), "Invalid kernel information.");
assert(kernel_info_is_valid(&kinfo), "Invalid kernel information.");
protected_initialize(&kinfo);