00001 /* 00002 * Copyright (c) 2003-2004 Lukasz Dembinski <dembol@nasa.com.pl> 00003 * All Rights Reserved 00004 * 00005 * Date: 2004/01 00006 * Author: Lukasz Dembinski 00007 * Info: init.c file 00008 * Contact: mailto: <dembol@nasa.com.pl> 00009 * 00010 */ 00011 00012 00013 #include <agnix/agnix.h> 00014 #include <asm/core.h> 00015 #include <agnix/config.h> 00016 #include <agnix/sched.h> 00017 #include <agnix/console.h> 00018 #include <agnix/ioport.h> 00019 #include <agnix/adi/adi.h> 00020 #include <agnix/net/net.h> 00021 #include <agnix/crypt.h> 00022 #include <agnix/syscalls.h> 00023 #include <agnix/threads.h> 00024 #include <agnix/tasks.h> 00025 #include <agnix/queues.h> 00026 #include <agnix/memory.h> 00027 #include <agnix/resources.h> 00028 #include <agnix/data_structures.h> 00029 #include <asm/memtests.h> 00030 #include <agnix/counters.h> 00031 #include <agnix/timers.h> 00032 #include <agnix/terminal.h> 00033 #include <agnix/pm.h> 00034 #include <agnix/fastirq.h> 00035 #include <agnix/agnix_console.h> 00036 00037 int errno; 00038 extern char *agnix_banner; 00039 extern char *agnix_version; 00040 extern char *agnix_license; 00041 extern char _text; 00042 extern char _end; 00043 00044 void init_thread(void *data) 00045 { 00046 /* TODO */ 00047 } 00048 00049 void init_start(void) 00050 { 00051 // create_kernel_thread("init", init_thread, (void *)2); 00052 } 00053 00054 int clean_kernel(void) 00055 { 00056 printk("Cleaning kernel ...\n"); 00057 00058 bootmem_free_init(); 00059 00060 return 0; 00061 } 00062 00063 void start_kernel(void) 00064 { 00065 terminals_init(); 00066 00067 #if CONFIG_DRIVERS_CHAR 00068 adi_console_init(); 00069 #endif 00070 00071 memalloc_init(); 00072 resources_init(); 00073 counters_init(); 00074 data_structures_init(); 00075 queues_init(); 00076 adi_chips_init(); 00077 00078 i386_init(); 00079 #if CONFIG_MEMTESTS 00080 // do_memtests(); 00081 #endif 00082 network_init(); 00083 adi_drivers_init(); 00084 fork_init(); 00085 tasks_init(); 00086 scheduler_init(); 00087 00088 __sti(); 00089 cpu_calibrate_delay(); 00090 __cli(); 00091 00092 fastirq_init(); 00093 timers_init(); 00094 crypt_init(); 00095 00096 init_start(); 00097 pm_init(); 00098 clean_kernel(); 00099 00100 printk(NEW_LINE); 00101 printk(agnix_banner); 00102 printk(agnix_version); 00103 printk(agnix_license); 00104 printk(NEW_LINE); 00105 00106 agnix_console_start(); 00107 00108 __sti(); 00109 00110 for(;;); 00111 }