This commit is contained in:
2026-04-10 20:32:03 +08:00
parent 2435452262
commit 30b2a126c5
11 changed files with 321 additions and 21 deletions

View File

@@ -13,8 +13,10 @@ struct clks_scheduler_stats {
void clks_scheduler_init(void);
clks_bool clks_scheduler_add_kernel_task(const char *name, u32 time_slice_ticks);
clks_bool clks_scheduler_add_kernel_task_ex(const char *name, u32 time_slice_ticks, clks_task_entry_fn entry);
void clks_scheduler_on_timer_tick(u64 tick);
void clks_scheduler_dispatch_current(u64 tick);
struct clks_scheduler_stats clks_scheduler_get_stats(void);
const struct clks_task_descriptor *clks_scheduler_get_task(u32 task_id);
#endif
#endif

View File

@@ -0,0 +1,36 @@
#ifndef CLKS_SERVICE_H
#define CLKS_SERVICE_H
#include <clks/types.h>
#define CLKS_SERVICE_NAME_MAX 24U
enum clks_service_id {
CLKS_SERVICE_LOG = 1,
CLKS_SERVICE_MEM = 2,
CLKS_SERVICE_FS = 3,
CLKS_SERVICE_DRIVER = 4,
CLKS_SERVICE_SCHED = 5,
};
enum clks_service_state {
CLKS_SERVICE_STATE_OFFLINE = 0,
CLKS_SERVICE_STATE_READY = 1,
CLKS_SERVICE_STATE_DEGRADED = 2,
};
struct clks_service_info {
u32 id;
char name[CLKS_SERVICE_NAME_MAX];
enum clks_service_state state;
u64 heartbeat_count;
u64 last_heartbeat_tick;
};
void clks_service_init(void);
clks_bool clks_service_heartbeat(u32 service_id, u64 tick);
u64 clks_service_count(void);
u64 clks_service_ready_count(void);
clks_bool clks_service_get(u32 service_id, struct clks_service_info *out_info);
#endif

View File

@@ -3,13 +3,16 @@
#include <clks/types.h>
#define CLKS_SYSCALL_LOG_WRITE 0ULL
#define CLKS_SYSCALL_TIMER_TICKS 1ULL
#define CLKS_SYSCALL_TASK_COUNT 2ULL
#define CLKS_SYSCALL_CURRENT_TASK_ID 3ULL
#define CLKS_SYSCALL_LOG_WRITE 0ULL
#define CLKS_SYSCALL_TIMER_TICKS 1ULL
#define CLKS_SYSCALL_TASK_COUNT 2ULL
#define CLKS_SYSCALL_CURRENT_TASK_ID 3ULL
#define CLKS_SYSCALL_SERVICE_COUNT 4ULL
#define CLKS_SYSCALL_SERVICE_READY_COUNT 5ULL
#define CLKS_SYSCALL_CONTEXT_SWITCHES 6ULL
void clks_syscall_init(void);
u64 clks_syscall_dispatch(void *frame_ptr);
u64 clks_syscall_invoke_kernel(u64 id, u64 arg0, u64 arg1, u64 arg2);
#endif
#endif

View File

@@ -5,6 +5,8 @@
#define CLKS_TASK_NAME_MAX 32U
typedef void (*clks_task_entry_fn)(u64 tick);
enum clks_task_state {
CLKS_TASK_UNUSED = 0,
CLKS_TASK_READY = 1,
@@ -20,6 +22,9 @@ struct clks_task_descriptor {
u32 remaining_ticks;
u64 total_ticks;
u64 switch_count;
u64 run_count;
u64 last_run_tick;
clks_task_entry_fn entry;
};
#endif
#endif