mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 10:40:00 +00:00
menuconfig
This commit is contained in:
@@ -26,6 +26,54 @@
|
||||
#include <clks/types.h>
|
||||
#include <clks/userland.h>
|
||||
|
||||
#ifndef CLKS_CFG_AUDIO
|
||||
#define CLKS_CFG_AUDIO 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_MOUSE
|
||||
#define CLKS_CFG_MOUSE 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_DESKTOP
|
||||
#define CLKS_CFG_DESKTOP 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_DRIVER_MANAGER
|
||||
#define CLKS_CFG_DRIVER_MANAGER 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_KELF
|
||||
#define CLKS_CFG_KELF 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_HEAP_SELFTEST
|
||||
#define CLKS_CFG_HEAP_SELFTEST 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_EXTERNAL_PSF
|
||||
#define CLKS_CFG_EXTERNAL_PSF 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_KEYBOARD
|
||||
#define CLKS_CFG_KEYBOARD 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_ELFRUNNER_PROBE
|
||||
#define CLKS_CFG_ELFRUNNER_PROBE 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_KLOGD_TASK
|
||||
#define CLKS_CFG_KLOGD_TASK 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_KWORKER_TASK
|
||||
#define CLKS_CFG_KWORKER_TASK 1
|
||||
#endif
|
||||
|
||||
#ifndef CLKS_CFG_USRD_TASK
|
||||
#define CLKS_CFG_USRD_TASK 1
|
||||
#endif
|
||||
|
||||
static void clks_task_klogd(u64 tick) {
|
||||
static u64 last_emit = 0ULL;
|
||||
|
||||
@@ -61,15 +109,21 @@ static void clks_task_kworker(u64 tick) {
|
||||
}
|
||||
|
||||
static void clks_task_kelfd(u64 tick) {
|
||||
#if CLKS_CFG_KELF
|
||||
clks_service_heartbeat(CLKS_SERVICE_KELF, tick);
|
||||
clks_kelf_tick(tick);
|
||||
#else
|
||||
(void)tick;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void clks_task_usrd(u64 tick) {
|
||||
clks_service_heartbeat(CLKS_SERVICE_USER, tick);
|
||||
clks_exec_tick(tick);
|
||||
clks_userland_tick(tick);
|
||||
#if CLKS_CFG_DESKTOP
|
||||
clks_desktop_tick(tick);
|
||||
#endif
|
||||
clks_tty_tick(tick);
|
||||
clks_shell_tick(tick);
|
||||
}
|
||||
@@ -81,11 +135,8 @@ void clks_kernel_main(void) {
|
||||
struct clks_heap_stats heap_stats;
|
||||
struct clks_scheduler_stats sched_stats;
|
||||
struct clks_fs_node_info fs_system_dir = {0};
|
||||
void *heap_probe = CLKS_NULL;
|
||||
u64 syscall_ticks;
|
||||
u64 fs_root_children;
|
||||
const void *tty_psf_blob = CLKS_NULL;
|
||||
u64 tty_psf_size = 0ULL;
|
||||
|
||||
clks_serial_init();
|
||||
|
||||
@@ -139,7 +190,8 @@ void clks_kernel_main(void) {
|
||||
clks_log_hex(CLKS_LOG_INFO, "HEAP", "TOTAL_BYTES", heap_stats.total_bytes);
|
||||
clks_log_hex(CLKS_LOG_INFO, "HEAP", "FREE_BYTES", heap_stats.free_bytes);
|
||||
|
||||
heap_probe = clks_kmalloc(128);
|
||||
#if CLKS_CFG_HEAP_SELFTEST
|
||||
void *heap_probe = clks_kmalloc(128);
|
||||
|
||||
if (heap_probe == CLKS_NULL) {
|
||||
clks_log(CLKS_LOG_ERROR, "HEAP", "KMALLOC SELFTEST FAILED");
|
||||
@@ -147,6 +199,9 @@ void clks_kernel_main(void) {
|
||||
clks_log(CLKS_LOG_INFO, "HEAP", "KMALLOC SELFTEST OK");
|
||||
clks_kfree(heap_probe);
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "HEAP SELFTEST DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
clks_fs_init();
|
||||
|
||||
@@ -164,6 +219,10 @@ void clks_kernel_main(void) {
|
||||
}
|
||||
|
||||
if (boot_fb != CLKS_NULL) {
|
||||
#if CLKS_CFG_EXTERNAL_PSF
|
||||
const void *tty_psf_blob;
|
||||
u64 tty_psf_size = 0ULL;
|
||||
|
||||
tty_psf_blob = clks_fs_read_all("/system/tty.psf", &tty_psf_size);
|
||||
|
||||
if (tty_psf_blob != CLKS_NULL && clks_fb_load_psf_font(tty_psf_blob, tty_psf_size) == CLKS_TRUE) {
|
||||
@@ -173,39 +232,82 @@ void clks_kernel_main(void) {
|
||||
} else {
|
||||
clks_log(CLKS_LOG_WARN, "TTY", "EXTERNAL PSF LOAD FAILED, USING BUILTIN");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "EXTERNAL PSF LOADING DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
}
|
||||
|
||||
clks_exec_init();
|
||||
#if CLKS_CFG_AUDIO
|
||||
clks_audio_init();
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "AUDIO DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
#if CLKS_CFG_KEYBOARD
|
||||
clks_keyboard_init();
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "KEYBOARD DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
#if CLKS_CFG_MOUSE
|
||||
clks_mouse_init();
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "MOUSE DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
#if CLKS_CFG_DESKTOP
|
||||
clks_desktop_init();
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "DESKTOP DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
if (clks_userland_init() == CLKS_FALSE) {
|
||||
clks_log(CLKS_LOG_ERROR, "USER", "USERLAND INIT FAILED");
|
||||
clks_cpu_halt_forever();
|
||||
}
|
||||
|
||||
#if CLKS_CFG_DRIVER_MANAGER
|
||||
clks_driver_init();
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "DRIVER MANAGER DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
#if CLKS_CFG_KELF
|
||||
clks_kelf_init();
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "KELF DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
clks_scheduler_init();
|
||||
|
||||
#if CLKS_CFG_KLOGD_TASK
|
||||
if (clks_scheduler_add_kernel_task_ex("klogd", 4U, clks_task_klogd) == CLKS_FALSE) {
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "FAILED TO ADD KLOGD TASK");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "KLOGD TASK DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
#if CLKS_CFG_KWORKER_TASK
|
||||
if (clks_scheduler_add_kernel_task_ex("kworker", 3U, clks_task_kworker) == CLKS_FALSE) {
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "FAILED TO ADD KWORKER TASK");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "KWORKER TASK DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
#if CLKS_CFG_KELF
|
||||
if (clks_scheduler_add_kernel_task_ex("kelfd", 5U, clks_task_kelfd) == CLKS_FALSE) {
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "FAILED TO ADD KELFD TASK");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "KELFD TASK DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
#if CLKS_CFG_USRD_TASK
|
||||
if (clks_scheduler_add_kernel_task_ex("usrd", 4U, clks_task_usrd) == CLKS_FALSE) {
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "FAILED TO ADD USRD TASK");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "SCHED", "USRD TASK DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
sched_stats = clks_scheduler_get_stats();
|
||||
clks_log_hex(CLKS_LOG_INFO, "SCHED", "TASK_COUNT", sched_stats.task_count);
|
||||
@@ -214,9 +316,13 @@ void clks_kernel_main(void) {
|
||||
|
||||
clks_elfrunner_init();
|
||||
|
||||
#if CLKS_CFG_ELFRUNNER_PROBE
|
||||
if (clks_elfrunner_probe_kernel_executable() == CLKS_FALSE) {
|
||||
clks_log(CLKS_LOG_ERROR, "ELF", "KERNEL ELF PROBE FAILED");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "CFG", "ELFRUNNER PROBE DISABLED BY MENUCONFIG");
|
||||
#endif
|
||||
|
||||
clks_syscall_init();
|
||||
|
||||
@@ -228,11 +334,15 @@ void clks_kernel_main(void) {
|
||||
|
||||
clks_shell_init();
|
||||
|
||||
#if CLKS_CFG_USRD_TASK
|
||||
if (clks_userland_shell_auto_exec_enabled() == CLKS_TRUE) {
|
||||
clks_log(CLKS_LOG_INFO, "SHELL", "DEFAULT ENTER USER SHELL MODE");
|
||||
} else {
|
||||
clks_log(CLKS_LOG_INFO, "SHELL", "KERNEL SHELL ACTIVE");
|
||||
}
|
||||
#else
|
||||
clks_log(CLKS_LOG_WARN, "SHELL", "USRD TASK DISABLED; INTERACTIVE SHELL TICK OFF");
|
||||
#endif
|
||||
|
||||
clks_log_hex(CLKS_LOG_INFO, "TTY", "COUNT", (u64)clks_tty_count());
|
||||
clks_log_hex(CLKS_LOG_INFO, "TTY", "ACTIVE", (u64)clks_tty_active());
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
#define CLKS_USERLAND_RETRY_INTERVAL 500ULL
|
||||
|
||||
#ifndef CLKS_CFG_USERLAND_AUTO_EXEC
|
||||
#define CLKS_CFG_USERLAND_AUTO_EXEC 1
|
||||
#endif
|
||||
|
||||
static clks_bool clks_user_shell_ready = CLKS_FALSE;
|
||||
static clks_bool clks_user_shell_exec_requested_flag = CLKS_FALSE;
|
||||
static clks_bool clks_user_shell_exec_enabled = CLKS_FALSE;
|
||||
@@ -84,7 +88,7 @@ clks_bool clks_userland_init(void) {
|
||||
|
||||
clks_user_shell_ready = CLKS_FALSE;
|
||||
clks_user_shell_exec_requested_flag = CLKS_FALSE;
|
||||
clks_user_shell_exec_enabled = CLKS_TRUE;
|
||||
clks_user_shell_exec_enabled = (CLKS_CFG_USERLAND_AUTO_EXEC != 0) ? CLKS_TRUE : CLKS_FALSE;
|
||||
clks_user_launch_attempt_count = 0ULL;
|
||||
clks_user_launch_success_count = 0ULL;
|
||||
clks_user_launch_fail_count = 0ULL;
|
||||
@@ -107,7 +111,11 @@ clks_bool clks_userland_init(void) {
|
||||
return CLKS_FALSE;
|
||||
}
|
||||
|
||||
clks_log(CLKS_LOG_INFO, "USER", "USER SHELL AUTO EXEC ENABLED");
|
||||
if (clks_user_shell_exec_enabled == CLKS_TRUE) {
|
||||
clks_log(CLKS_LOG_INFO, "USER", "USER SHELL AUTO EXEC ENABLED");
|
||||
} else {
|
||||
clks_log(CLKS_LOG_WARN, "USER", "USER SHELL AUTO EXEC DISABLED BY MENUCONFIG");
|
||||
}
|
||||
return CLKS_TRUE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user