Rev 2131 | Rev 2265 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2131 | Rev 2260 | ||
|---|---|---|---|
| Line 79... | Line 79... | ||
| 79 | #include <macros.h> |
79 | #include <macros.h> |
| 80 | #include <adt/btree.h> |
80 | #include <adt/btree.h> |
| 81 | #include <console/klog.h> |
81 | #include <console/klog.h> |
| 82 | #include <smp/smp.h> |
82 | #include <smp/smp.h> |
| 83 | #include <ddi/ddi.h> |
83 | #include <ddi/ddi.h> |
| - | 84 | #include <ddi/tasklet.h> |
|
| 84 | 85 | ||
| 85 | /** Global configuration structure. */ |
86 | /** Global configuration structure. */ |
| 86 | config_t config; |
87 | config_t config; |
| 87 | 88 | ||
| 88 | /** Initial user-space tasks */ |
89 | /** Initial user-space tasks */ |
| Line 216... | Line 217... | ||
| 216 | btree_init(); |
217 | btree_init(); |
| 217 | as_init(); |
218 | as_init(); |
| 218 | page_init(); |
219 | page_init(); |
| 219 | tlb_init(); |
220 | tlb_init(); |
| 220 | ddi_init(); |
221 | ddi_init(); |
| - | 222 | tasklet_init(); |
|
| - | 223 | // tasklet_do(); |
|
| 221 | arch_post_mm_init(); |
224 | arch_post_mm_init(); |
| 222 | 225 | ||
| 223 | version_print(); |
226 | version_print(); |
| 224 | printf("kernel: %.*p hardcoded_ktext_size=%zdK, " |
227 | printf("kernel: %.*p hardcoded_ktext_size=%zdK, " |
| 225 | "hardcoded_kdata_size=%zdK\n", sizeof(uintptr_t) * 2, |
228 | "hardcoded_kdata_size=%zdK\n", sizeof(uintptr_t) * 2, |
| Line 234... | Line 237... | ||
| 234 | slab_enable_cpucache(); |
237 | slab_enable_cpucache(); |
| 235 | 238 | ||
| 236 | printf("config.memory_size=%zdM\n", config.memory_size >> 20); |
239 | printf("config.memory_size=%zdM\n", config.memory_size >> 20); |
| 237 | printf("config.cpu_count=%zd\n", config.cpu_count); |
240 | printf("config.cpu_count=%zd\n", config.cpu_count); |
| 238 | cpu_init(); |
241 | cpu_init(); |
| 239 | 242 | ||
| 240 | calibrate_delay_loop(); |
243 | calibrate_delay_loop(); |
| 241 | clock_counter_init(); |
244 | clock_counter_init(); |
| - | 245 | // tasklet_do(); |
|
| 242 | timeout_init(); |
246 | timeout_init(); |
| 243 | scheduler_init(); |
247 | scheduler_init(); |
| 244 | task_init(); |
248 | task_init(); |
| 245 | thread_init(); |
249 | thread_init(); |
| 246 | futex_init(); |
250 | futex_init(); |
| - | 251 | ||
| - | 252 | ||
| 247 | klog_init(); |
253 | klog_init(); |
| 248 | 254 | ||
| 249 | if (init.cnt > 0) { |
255 | if (init.cnt > 0) { |
| 250 | for (i = 0; i < init.cnt; i++) |
256 | for (i = 0; i < init.cnt; i++) |
| 251 | printf("init[%zd].addr=%.*p, init[%zd].size=%zd\n", i, |
257 | printf("init[%zd].addr=%.*p, init[%zd].size=%zd\n", i, |
| Line 253... | Line 259... | ||
| 253 | init.tasks[i].size); |
259 | init.tasks[i].size); |
| 254 | } else |
260 | } else |
| 255 | printf("No init binaries found\n"); |
261 | printf("No init binaries found\n"); |
| 256 | 262 | ||
| 257 | ipc_init(); |
263 | ipc_init(); |
| - | 264 | //tasklet_do(); |
|
| 258 | 265 | ||
| 259 | /* |
266 | /* |
| 260 | * Create kernel task. |
267 | * Create kernel task. |
| 261 | */ |
268 | */ |
| 262 | k = task_create(AS_KERNEL, "kernel"); |
269 | k = task_create(AS_KERNEL, "kernel"); |
| Line 268... | Line 275... | ||
| 268 | */ |
275 | */ |
| 269 | t = thread_create(kinit, NULL, k, 0, "kinit", true); |
276 | t = thread_create(kinit, NULL, k, 0, "kinit", true); |
| 270 | if (!t) |
277 | if (!t) |
| 271 | panic("can't create kinit thread\n"); |
278 | panic("can't create kinit thread\n"); |
| 272 | thread_ready(t); |
279 | thread_ready(t); |
| - | 280 | ||
| - | 281 | tasklet_run_tasklet_thread(k); |
|
| 273 | 282 | ||
| 274 | /* |
283 | /* |
| 275 | * This call to scheduler() will return to kinit, |
284 | * This call to scheduler() will return to kinit, |
| 276 | * starting the thread of kernel threads. |
285 | * starting the thread of kernel threads. |
| 277 | */ |
286 | */ |