mirror of https://github.com/tailix/kernel.git
Improve kernel info init
This commit is contained in:
parent
f2dc7a489b
commit
2d1a21540f
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue