Changes in kernel/generic/src/cpu/cpu.c [f651e80:7e752b2] in mainline
- File:
-
- 1 edited
-
kernel/generic/src/cpu/cpu.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/cpu/cpu.c
rf651e80 r7e752b2 33 33 /** 34 34 * @file 35 * @brief CPU subsystem initialization and listing.35 * @brief CPU subsystem initialization and listing. 36 36 */ 37 37 38 38 #include <cpu.h> 39 39 #include <arch.h> … … 42 42 #include <mm/page.h> 43 43 #include <mm/frame.h> 44 #include < arch/types.h>44 #include <typedefs.h> 45 45 #include <config.h> 46 46 #include <panic.h> … … 48 48 #include <adt/list.h> 49 49 #include <print.h> 50 #include <sysinfo/sysinfo.h> 51 #include <arch/cycle.h> 50 52 51 53 cpu_t *cpus; … … 57 59 */ 58 60 void cpu_init(void) { 59 unsigned int i, j;60 61 61 #ifdef CONFIG_SMP 62 62 if (config.cpu_active == 1) { 63 63 #endif /* CONFIG_SMP */ 64 64 65 cpus = (cpu_t *) malloc(sizeof(cpu_t) * config.cpu_count, 65 FRAME_ATOMIC);66 FRAME_ATOMIC); 66 67 if (!cpus) 67 68 panic("Cannot allocate CPU structures."); 68 69 /* initialize everything */69 70 /* Initialize everything */ 70 71 memsetb(cpus, sizeof(cpu_t) * config.cpu_count, 0); 71 72 73 size_t i; 72 74 for (i = 0; i < config.cpu_count; i++) { 73 cpus[i].stack = (uint8_t *) frame_alloc(STACK_FRAMES, FRAME_KA | FRAME_ATOMIC);74 75 cpus[i].stack = (uint8_t *) frame_alloc(STACK_FRAMES, 76 FRAME_KA | FRAME_ATOMIC); 75 77 cpus[i].id = i; 76 78 77 spinlock_initialize(&cpus[i].lock, "cpu_t.lock"); 78 79 irq_spinlock_initialize(&cpus[i].lock, "cpus[].lock"); 80 81 unsigned int j; 79 82 for (j = 0; j < RQ_COUNT; j++) { 80 spinlock_initialize(&cpus[i].rq[j].lock, "rq_t.lock");83 irq_spinlock_initialize(&cpus[i].rq[j].lock, "cpus[].rq[].lock"); 81 84 list_initialize(&cpus[i].rq[j].rq_head); 82 85 } … … 86 89 } 87 90 #endif /* CONFIG_SMP */ 88 91 89 92 CPU = &cpus[config.cpu_active - 1]; 90 93 91 CPU->active = 1; 92 CPU->tlb_active = 1; 94 CPU->active = true; 95 CPU->tlb_active = true; 96 97 CPU->idle = false; 98 CPU->last_cycle = get_cycle(); 99 CPU->idle_cycles = 0; 100 CPU->busy_cycles = 0; 93 101 94 102 cpu_identify(); … … 100 108 { 101 109 unsigned int i; 102 110 103 111 for (i = 0; i < config.cpu_count; i++) { 104 112 if (cpus[i].active) … … 111 119 /** @} 112 120 */ 113
Note:
See TracChangeset
for help on using the changeset viewer.
