Files
mkrtos-real/mkrtos_knl/knl/thread_knl.c

63 lines
1.3 KiB
C
Raw Normal View History

2023-08-20 20:52:23 +08:00
/*
* @Author: zhangzheng 1358745329@qq.com
* @Date: 2023-08-14 09:47:54
* @LastEditors: zhangzheng 1358745329@qq.com
* @LastEditTime: 2023-08-18 16:21:58
* @FilePath: /mkrtos-real/mkrtos_knl/knl/thread_knl.c
* @Description: 线
*/
#include "types.h"
#include "init.h"
#include "printk.h"
#include "task.h"
#include "thread.h"
#include "factory.h"
#include "globals.h"
#include "arch.h"
static thread_t *knl_thread;
static task_t knl_task;
/**
* 线
*
*/
INIT_STAGE1 static void knl_init_1(void)
{
thread_t *cur_th = thread_get_current();
thread_init(cur_th);
task_init(&knl_task, &root_factory_get()->limit);
thread_bind(cur_th, &knl_task.kobj);
}
/**
* init线程
*
*
* init进程
*/
INIT_STAGE2 static void knl_init_2(void)
{
thread_t *init_thread = thread_create(&root_factory_get()->limit);
assert(init_thread);
}
void start_kernel(void)
{
// 初始化系统时钟
// 初始化串口
// 初始化定时器
sys_call_init();
printk("mkrtos init done..\n");
printk("mkrtos running..\n");
thread_ready(thread_get_current(), FALSE);
sti();
sys_startup();
thread_sched();
cli();
while (1)
;
}