内核线程能够调度

This commit is contained in:
zhangzheng
2024-04-01 16:10:59 +00:00
parent c57d9cbb82
commit c73c35c5b2
51 changed files with 900 additions and 349 deletions

View File

@@ -20,9 +20,13 @@
#include "map.h"
#include "app.h"
#include "mm_wrap.h"
#include "thread_armv7m.h"
#include "thread_task_arch.h"
#include "knl_misc.h"
#if IS_ENABLED(CONFIG_KNL_TEST)
#include <knl_test.h>
#endif
static uint8_t knl_msg_buf[THREAD_MSG_BUG_LEN];
static thread_t *knl_thread;
static task_t knl_task;
@@ -36,7 +40,7 @@ static void knl_main(void)
{
umword_t status;
umword_t status2;
// printk("knl main run..\n");
printk("knl main run..\n");
while (1)
{
task_t *pos;
@@ -87,7 +91,7 @@ static void knl_init_1(void)
thread_init(knl_thread, &root_factory_get()->limit);
task_init(&knl_task, &root_factory_get()->limit, TRUE);
task_knl_init(&knl_task);
thread_knl_pf_set(knl_thread, knl_main);
thread_bind(knl_thread, &knl_task.kobj);
thread_set_msg_bug(knl_thread, knl_msg_buf);
@@ -97,6 +101,7 @@ static void knl_init_1(void)
}
INIT_STAGE1(knl_init_1);
/**
* 初始化init线程
* 初始化用户态任务
@@ -107,12 +112,13 @@ static void knl_init_2(void)
{
mm_trace();
#if IS_ENABLED(CONFIG_KNL_TEST)
knl_test();
#else
init_thread = thread_create(&root_factory_get()->limit);
assert(init_thread);
init_task = task_create(&root_factory_get()->limit, FALSE);
assert(init_task);
#if 0
app_info_t *app = app_info_get((void *)(CONFIG_KNL_TEXT_ADDR + CONFIG_INIT_TASK_OFFSET));
// 申请init的ram内存
assert(task_alloc_base_ram(init_task, &root_factory_get()->limit, app->i.ram_size + THREAD_MSG_BUG_LEN) >= 0);
@@ -195,5 +201,4 @@ void start_kernel(void)
while (1)
;
// printk(".");
}