Kernel initialization
[Miscellanea]


Files

file  kinit.h
file  uinit.h
file  version.h
file  kinit.c
 Kernel initialization thread.
file  main.c
 Main initialization kernel function for all processors.
file  uinit.c
 Userspace bootstrap thread.
file  version.c

Defines

#define CONFIG_STACK_SIZE   ((1<<STACK_FRAMES)*STACK_SIZE)

Functions

void kinit (void *arg)
void uinit (void *arg)
void version_print (void)
void main_bsp (void)
void main_ap (void)
static void main_bsp_separated_stack (void)
static void main_ap_separated_stack (void)

Variables

config_t config
init_t init
context_t ctx
__address hardcoded_load_address = 0
size_t hardcoded_ktext_size = 0
size_t hardcoded_kdata_size = 0
char * project = "SPARTAN kernel"
char * copyright = "Copyright (C) 2001-2006 HelenOS project"
char * release = RELEASE
char * name = NAME
char * arch = ARCH
char * revision = ""
char * timestamp = ""

Define Documentation

#define CONFIG_STACK_SIZE   ((1<<STACK_FRAMES)*STACK_SIZE)
 

Definition at line 124 of file main.c.

Referenced by main_bsp().


Function Documentation

void kinit void *  arg  ) 
 

Kernel initialization thread.

kinit takes care of higher level kernel initialization (i.e. thread creation, userspace initialization etc.).

Parameters:
arg Not used.

Definition at line 84 of file kinit.c.

References config, thread::cpu, config_t::cpu_count, cpu_list(), cpus, thread::flags, interrupts_disable(), kcpulb(), NULL, panic, spinlock_lock, spinlock_unlock(), TASK, THREAD, thread_create(), thread_detach(), thread_join, thread_ready(), and X_WIRED.

Referenced by main_bsp_separated_stack().

Here is the call graph for this function:

void main_ap void   ) 
 

Main kernel routine for application CPUs.

Executed by application processors, temporary stack is at ctx.sp which was set during BP boot. This function passes control directly to main_ap_separated_stack().

Assuming interrupts_disable()'d.

Definition at line 268 of file main.c.

References arch_post_mm_init(), arch_pre_mm_init(), calibrate_delay_loop(), config, context_restore(), context_set, CPU, config_t::cpu_active, cpu_init(), CPU_STACK_SIZE, FADDR, frame_init(), main_ap_separated_stack(), page_init(), THE, the_copy(), the_initialize(), and tlb_init().

Here is the call graph for this function:

void main_ap_separated_stack void   )  [static]
 

Main kernel routine for application CPUs using new stack.

Second part of main_ap().

Definition at line 314 of file main.c.

References scheduler(), timeout_init(), waitq_wakeup(), and WAKEUP_FIRST.

Referenced by main_ap().

Here is the call graph for this function:

void main_bsp void   ) 
 

Main kernel routine for bootstrap CPU.

Initializes the kernel by bootstrap CPU. This function passes control directly to main_bsp_separated_stack().

Assuming interrupts_disable().

Definition at line 135 of file main.c.

References init_task_t::addr, ALIGN_UP, config_t::base, init_t::cnt, config, CONFIG_STACK_SIZE, config_t::cpu_active, config_t::cpu_count, get_memory_size(), hardcoded_kdata_size, hardcoded_ktext_size, hardcoded_load_address, init, config_t::kernel_size, config_t::memory_size, PA_overlaps, PAGE_SIZE, init_task_t::size, and init_t::tasks.

Here is the call graph for this function:

void main_bsp_separated_stack void   )  [static]
 

Main kernel routine for bootstrap CPU using new stack.

Second part of main_bsp().

Definition at line 173 of file main.c.

References init_task_t::addr, arch_post_mm_init(), arch_pre_mm_init(), arch_pre_smp_init(), as_init(), AS_KERNEL, config_t::base, btree_init(), calibrate_delay_loop(), clock_counter_init(), init_t::cnt, config, config_t::cpu_count, cpu_init(), exc_init(), frame_init(), futex_init(), hardcoded_kdata_size, hardcoded_ktext_size, init, ipc_init(), kconsole_init(), kinit(), klog_init(), config_t::memory_size, config_t::mm_initialized, NULL, page_init(), panic, printf(), scheduler(), scheduler_init(), init_task_t::size, slab_cache_init(), slab_enable_cpucache(), smp_init(), task_create(), task_init(), init_t::tasks, THE, the_initialize(), thread_create(), thread_init(), thread_ready(), timeout_init(), tlb_init(), and version_print().

Here is the call graph for this function:

void uinit void *  arg  ) 
 

Thread used to bring up userspace thread.

Parameters:
arg Pointer to structure containing userspace entry and stack addresses.

Definition at line 53 of file uinit.c.

References free(), NULL, userspace(), uspace_arg::uspace_entry, uspace_arg::uspace_stack, uspace_arg::uspace_thread_arg, uspace_arg::uspace_thread_function, and uspace_arg::uspace_uarg.

Referenced by sys_thread_create(), and task_run_program().

Here is the call graph for this function:

void version_print void   ) 
 

Print version information.

Definition at line 57 of file version.c.

References arch, copyright, name, printf(), project, release, revision, and timestamp.

Referenced by cmd_version(), and main_bsp_separated_stack().

Here is the call graph for this function:


Variable Documentation

char* arch = ARCH
 

Definition at line 42 of file version.c.

Referenced by version_print().

config_t config
 

Initial value:

 {
        .mm_initialized = false
}
Global configuration structure.

Definition at line 90 of file main.c.

Referenced by _slab_reclaim(), arch_post_mm_init(), cpu_init(), cpu_list(), frame_init(), ipi_broadcast(), kcpulb(), kinit(), main_ap(), main_bsp(), main_bsp_separated_stack(), make_magcache(), page_arch_init(), sched_print_list(), thread_ready(), tlb_shootdown_start(), and zone_create().

char* copyright = "Copyright (C) 2001-2006 HelenOS project"
 

Definition at line 39 of file version.c.

Referenced by version_print().

context_t ctx
 

Definition at line 99 of file main.c.

size_t hardcoded_kdata_size = 0
 

Definition at line 108 of file main.c.

Referenced by main_bsp(), and main_bsp_separated_stack().

size_t hardcoded_ktext_size = 0
 

Definition at line 107 of file main.c.

Referenced by main_bsp(), and main_bsp_separated_stack().

__address hardcoded_load_address = 0
 

These 'hardcoded' variables will be intialized by the linker or the low level assembler code with appropriate sizes and addresses.

Definition at line 106 of file main.c.

Referenced by main_bsp().

init_t init
 

Initial value:

 {
        0
}
Initial user-space tasks

Definition at line 95 of file main.c.

Referenced by arch_pre_main(), frame_init(), main_bsp(), main_bsp_separated_stack(), and zone_create().

char* name = NAME
 

Definition at line 41 of file version.c.

char* project = "SPARTAN kernel"
 

Definition at line 38 of file version.c.

Referenced by version_print().

char* release = RELEASE
 

Definition at line 40 of file version.c.

Referenced by version_print().

char* revision = ""
 

Definition at line 47 of file version.c.

Referenced by version_print().

char* timestamp = ""
 

Definition at line 53 of file version.c.

Referenced by version_print().


Generated on Sun Jun 18 17:31:03 2006 for HelenOS Kernel (ppc64) by  doxygen 1.4.6