mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 18:44:01 +00:00
Stage 9
This commit is contained in:
@@ -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
|
||||
|
||||
36
clks/include/clks/service.h
Normal file
36
clks/include/clks/service.h
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user