LK 源码研究
星空探索
linux
展开
-
thread_init_early
lk/kernel/thread.c:thread_init_early:/** * @brief Initialize threading system * * This function is called once, from kmain() */void thread_init_early(void){ int i; DEBUG_ASSER原创 2017-03-20 08:55:38 · 620 阅读 · 0 评论 -
LK platform_init处理
void platform_early_init(void){ /* initialize the interrupt controller */ platform_init_interrupts(); /* initialize the timer block */ platform_init_timer(); /* initialize the d原创 2017-03-17 08:15:33 · 689 阅读 · 0 评论 -
LK thread_become_idle处理
lk/kernel/thread.c/** * @brief Become an idle thread * * This function marks the current thread as the idle thread -- the one which * executes when there is nothing else to do. This functi原创 2017-03-17 08:17:07 · 600 阅读 · 0 评论 -
LK ARM64 arch_init处理
arch/arm64/arch.carch_init void arch_early_init(void){ arm64_cpu_early_init(); platform_init_mmu_mappings();}void arch_init(void){#if WITH_SMP arch_mp_init_percpu(); LT原创 2017-03-17 08:16:05 · 531 阅读 · 0 评论 -
lk thread_resume
lk/kernel/thread.cthread_resume:/** * @brief Make a suspended thread executable. * * This function is typically called to start a thread which has just been * created with thread_create()原创 2017-03-17 08:17:26 · 367 阅读 · 0 评论 -
LK thread_detach处理
lk/kernel/thread.cstatus_t thread_detach(thread_t *t){ DEBUG_ASSERT(t->magic == THREAD_MAGIC); THREAD_LOCK(state); /* if another thread is blocked inside thread_join() on this thread,原创 2017-03-17 08:21:24 · 356 阅读 · 0 评论 -
LK thread_set_pinned_cpu处理
lk/include/kernel/thread.h:thread_set_pinned_cpu#if WITH_SMP#define thread_curr_cpu(t) ((t)->curr_cpu)#define thread_pinned_cpu(t) ((t)->pinned_cpu)#define thread_set_curr_cpu(t,c) ((t)->cur原创 2017-03-17 08:21:36 · 420 阅读 · 0 评论 -
LK call_constructors
lk/top/main.ccall_constructors:static void call_constructors(void){ void **ctor; ctor = &__ctor_list; while (ctor != &__ctor_end) { void (*func)(void); func = (void原创 2017-03-17 08:22:50 · 650 阅读 · 0 评论 -
heap_init
lk/lib/heap/heap_wrapper.cheap_init:void heap_init(void){ HEAP_INIT();}WITH_LIB_HEAP_MINIHEAPWITH_LIB_HEAP_CMPCTMALLOCWITH_LIB_HEAP_DLMALLOC原创 2017-03-17 08:23:09 · 1089 阅读 · 2 评论 -
平台相关初始化target_early_init
lk/target/init.c::__WEAK void target_early_init(void)lk/include/target.h::void target_early_init(void);MT6797:void target_early_init(void){}void target_init(void){}原创 2017-03-17 08:23:25 · 396 阅读 · 0 评论 -
平台相关初始化platform_early_init
lk/platform/init.c:: __WEAK void platform_early_init(void)lk/platform/mediatek/mt6797/platform.cplatform_early_init: void platform_early_init(void){ uart_init_early(); platform_ini原创 2017-03-17 08:23:41 · 530 阅读 · 0 评论 -
arch_early_init
arch_early_init:arm64:void arch_early_init(void){ arm64_cpu_early_init(); platform_init_mmu_mappings();}arm:void arch_early_init(void){ /* turn off the cache */ arc原创 2017-03-17 08:23:56 · 394 阅读 · 0 评论 -
LK target_early_init
void target_early_init(void){}void target_init(void){}原创 2017-03-17 08:14:49 · 279 阅读 · 0 评论 -
apps_init
apps_init /* one time setup */void apps_init(void){ const struct app_descriptor *app; /* call all the init routines */ for (app = &__apps_start; app != &__apps_end; app++) {原创 2017-03-17 08:14:13 · 402 阅读 · 0 评论 -
kernel_init
lk/kernel/init.ckernel_init:void kernel_init(void){ // if enabled, configure the kernel's event log kernel_evlog_init(); // initialize the threading system dprintf(SPEW, "initi原创 2017-03-21 08:18:34 · 305 阅读 · 0 评论 -
LK top lk_main处理
lk/top/main.c/* called from arch code */void lk_main(ulong arg0, ulong arg1, ulong arg2, ulong arg3){ // save the boot args lk_boot_args[0] = arg0; lk_boot_args[1] = arg1;原创 2017-03-21 08:22:08 · 658 阅读 · 0 评论 -
LK ARM64 asm.S处理
#include #include /* void arm64_context_switch(vaddr_t *old_sp, vaddr_t new_sp); */FUNCTION(arm64_context_switch) /* save old frame */ push x28, x29 push x26, x27 push x24, x25原创 2017-03-21 08:22:55 · 693 阅读 · 0 评论 -
LK ARM64 start.S处理
arch/arm64/start.S #include #include #include #include /* * Register use: * x0-x3 Arguments * x9-x15 Scratch * x19-x28 Globals */定义一些别名tmp .req x9tmp2原创 2017-03-21 08:23:18 · 1300 阅读 · 0 评论 -
LK top bootstrap2
bootstrap2:static int bootstrap2(void *arg){ dprintf(SPEW, "top of bootstrap2()\n"); lk_primary_cpu_init_level(LK_INIT_LEVEL_THREADING, LK_INIT_LEVEL_ARCH - 1); arch_init(); // ini原创 2017-03-21 08:21:40 · 359 阅读 · 0 评论 -
LK thread_create处理
lk/kernel/thread.cthread_create:thread_t *thread_create(const char *name, thread_start_routine entry, void *arg, int priority, size_t stack_size){ return thread_create_etc(NULL, name, entry原创 2017-03-17 08:10:27 · 405 阅读 · 0 评论 -
LK lk_inc.mk.example
lk_inc.mk.example # copy this and makefile to your external root directory and customize# according to how you want to use a split repository# the top level directory that all paths are relative原创 2017-03-17 08:10:40 · 308 阅读 · 0 评论 -
LK engine.mk
LOCAL_MAKEFILE:=$(MAKEFILE_LIST)BUILDROOT ?= .ifeq ($(MAKECMDGOALS),spotless)spotless: rm -rf -- "$(BUILDROOT)"/build-*elseifndef LKROOT$(error please define LKROOT to the root of the lk build原创 2017-03-17 08:10:58 · 775 阅读 · 0 评论 -
Lk Makefile
Makefile# the above include may override LKROOT and LKINC to allow external# directories to be included in the build-include lk_inc_lc.mkLKMAKEROOT ?= .LKROOT ?= .LKINC ?=BUILDROOT ?= .原创 2017-03-17 08:11:58 · 317 阅读 · 0 评论 -
LK 文件列表
.:lklk.tar.bz2./lk:apparchdevengine.mkexternalincludekernellibLICENSElk_inc.mk.examplemakemakefileplatformprojectREADME.mdscriptstargettoolstop./lk/app:acce原创 2017-03-17 08:13:24 · 3814 阅读 · 1 评论 -
app_descriptor
/* each app needs to define one of these to define its startup conditions */struct app_descriptor { const char *name; app_init init; app_entry entry; unsigned int flags; si原创 2017-03-17 08:13:45 · 575 阅读 · 0 评论 -
lk_init_struct结构
lk/include/lk/init.htypedef void (*lk_init_hook)(uint level);struct lk_init_struct { uint level; uint flags; lk_init_hook hook; const char *name;};#define LK_INIT_HOOK_FL原创 2017-03-17 08:24:13 · 1119 阅读 · 0 评论