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;
|
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)
|
void kernel_info_print(const struct Kernel_Info *const kinfo)
|
||||||
{
|
{
|
||||||
KERNAUX_NOTNULL_RETURN(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);
|
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);
|
KERNAUX_NOTNULL_RETVAL(kinfo, false);
|
||||||
|
|
||||||
|
@ -145,21 +167,7 @@ bool kernel_info_init_finish(const struct Kernel_Info *const kinfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmdline_terminated(const char *const str)
|
bool cmdline_terminated(const char *const str)
|
||||||
|
|
|
@ -66,10 +66,11 @@ void kernel_info_init_start(
|
||||||
size_t stack_top
|
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);
|
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);
|
void kernel_info_print(const struct Kernel_Info *kinfo);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -139,7 +139,7 @@ void main(
|
||||||
kinfo.modules_total_size += module->size;
|
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);
|
kernel_info_print(&kinfo);
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ void main(
|
||||||
|
|
||||||
paging_enable();
|
paging_enable();
|
||||||
|
|
||||||
assert(kernel_info_init_finish(&kinfo), "Invalid kernel information.");
|
assert(kernel_info_is_valid(&kinfo), "Invalid kernel information.");
|
||||||
|
|
||||||
protected_initialize(&kinfo);
|
protected_initialize(&kinfo);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue