/fuchsia/zircon/kernel/kernel/ |
H A D | percpu.cpp | 7 #include <kernel/percpu.h> 12 struct percpu percpu[SMP_MAX_CPUS] __CPU_ALIGN_EXCLUSIVE;
|
H A D | dpc.cpp | 14 #include <kernel/percpu.h> 33 struct percpu* cpu = get_local_percpu(); 57 struct percpu* cpu = get_local_percpu(); 74 DEBUG_ASSERT(!percpu[cpu_id].dpc_stop); 77 percpu[cpu_id].dpc_stop = true; 80 thread_t* t = percpu[cpu_id].dpc_thread; 81 percpu[cpu_id].dpc_thread = nullptr; 86 event_signal(&percpu[cpu_id].dpc_event, false); 105 DEBUG_ASSERT(percpu[cpu_id].dpc_stop); 106 DEBUG_ASSERT(percpu[cpu_i [all...] |
H A D | debug.cpp | 22 #include <kernel/percpu.h> 128 printf("\ttotal idle time: %" PRIi64 "\n", percpu[i].stats.idle_time); 130 zx_time_sub_duration(current_time(), percpu[i].stats.idle_time)); 131 printf("\treschedules: %lu\n", percpu[i].stats.reschedules); 132 printf("\treschedule_ipis: %lu\n", percpu[i].stats.reschedule_ipis); 133 printf("\tcontext_switches: %lu\n", percpu[i].stats.context_switches); 134 printf("\tpreempts: %lu\n", percpu[i].stats.preempts); 135 printf("\tyields: %lu\n", percpu[i].stats.yields); 136 printf("\ttimer interrupts: %lu\n", percpu[i].stats.timer_ints); 137 printf("\ttimers: %lu\n", percpu[ [all...] |
H A D | timer.cpp | 28 #include <kernel/percpu.h> 63 if (new_deadline < percpu[cpu].next_timer_deadline) { 66 percpu[cpu].next_timer_deadline = new_deadline; 91 list_for_every_entry (&percpu[cpu].timer_queue, entry, timer_t, node) { 132 list_next_type(&percpu[cpu].timer_queue, &entry->node, timer_t, node); 180 list_add_tail(&percpu[cpu].timer_queue, &timer->node); 247 if (list_peek_head_type(&percpu[cpu].timer_queue, timer_t, node) == timer) { 260 percpu[cpu].preempt_timer_deadline = deadline; 270 percpu[cpu].preempt_timer_deadline = ZX_TIME_INFINITE; 306 timer_t* oldhead = list_peek_head_type(&percpu[cp [all...] |
H A D | sched.cpp | 14 #include <kernel/percpu.h> 219 list_add_head(&percpu[cpu].run_queue[t->effec_priority], &t->queue_node); 220 percpu[cpu].run_queue_bitmap |= (1u << t->effec_priority); 229 list_add_tail(&percpu[cpu].run_queue[t->effec_priority], &t->queue_node); 230 percpu[cpu].run_queue_bitmap |= (1u << t->effec_priority); 244 struct percpu* c = &percpu[t->curr_cpu]; 251 static uint highest_run_queue(const struct percpu* c) TA_REQ(thread_lock) { 260 struct percpu* c = &percpu[cp [all...] |
H A D | rules.mk | 30 $(LOCAL_DIR)/percpu.cpp \
|
H A D | thread.cpp | 29 #include <kernel/percpu.h> 975 thread_t* t = &percpu[0].idle_thread; 981 auto* state = reinterpret_cast<lockdep::ThreadLockState*>(&percpu[cpu].lock_state); 1112 DEBUG_ASSERT(percpu[cpu_num].idle_thread.magic != THREAD_MAGIC); 1118 &percpu[cpu_num].idle_thread, name,
|
/fuchsia/zircon/kernel/include/kernel/ |
H A D | percpu.h | 20 struct percpu { struct 58 extern struct percpu percpu[SMP_MAX_CPUS]; 61 static_assert(NUM_PRIORITIES <= sizeof(percpu[0].run_queue_bitmap) * CHAR_BIT, ""); 63 static inline struct percpu* get_local_percpu(void) { 64 return &percpu[arch_curr_cpu_num()];
|
H A D | stats.h | 38 // include after the cpu_stats definition above, since it is part of the percpu structure 39 #include <kernel/percpu.h>
|
/fuchsia/zircon/kernel/arch/x86/ |
H A D | mp.cpp | 98 struct x86_percpu* const percpu = local 100 DEBUG_ASSERT(percpu->cpu_num == cpu_num); 101 DEBUG_ASSERT(percpu->direct == percpu); 105 DEBUG_ASSERT(read_msr(X86_MSR_IA32_GS_BASE) == (uintptr_t)percpu); 207 struct x86_percpu* percpu = x86_get_percpu(); local 208 DEBUG_ASSERT(percpu->cpu_num == 0); 209 percpu->apic_id = apic_id; 233 struct x86_percpu* percpu = cpu_id ? &ap_percpus[cpu_id - 1] : &bp_percpu; local 241 uint8_t old_val = *percpu 265 struct x86_percpu* percpu = x86_get_percpu(); local 318 struct x86_percpu* percpu; local 404 struct x86_percpu* percpu = &ap_percpus[cpu_id - 1]; local [all...] |
H A D | descriptor.cpp | 37 static void x86_tss_assign_ists(struct x86_percpu* percpu, tss_t* tss); 45 struct x86_percpu* percpu = x86_get_percpu(); local 46 uint cpu_num = percpu->cpu_num; 47 tss_t* tss = &percpu->default_tss; 53 x86_tss_assign_ists(percpu, tss); 62 static void x86_tss_assign_ists(struct x86_percpu* percpu, tss_t* tss) { argument 63 tss->ist1 = (uintptr_t)&percpu->interrupt_stacks[0] + PAGE_SIZE; 64 tss->ist2 = (uintptr_t)&percpu->interrupt_stacks[1] + PAGE_SIZE; 65 tss->ist3 = (uintptr_t)&percpu->interrupt_stacks[2] + PAGE_SIZE;
|
H A D | arch.cpp | 114 // Ensure the CPU that resumed was assigned the correct percpu object. 186 // Set %gs.base to our percpu struct. This has to be done before 189 struct x86_percpu* const percpu = &ap_percpus[cpu_num - 1]; local 190 write_msr(X86_MSR_IA32_GS_BASE, (uintptr_t)percpu); 193 percpu->stack_guard = bp_percpu.stack_guard;
|
H A D | faults.cpp | 151 struct x86_percpu* percpu = x86_get_percpu(); local 152 if (unlikely(percpu->gpf_return_target)) { 156 frame->ip = percpu->gpf_return_target; 157 percpu->gpf_return_target = 0;
|
/fuchsia/zircon/kernel/include/lib/ |
H A D | counters.h | 11 #include <kernel/percpu.h> 50 sizeof(((struct percpu){}).counters[0]), 71 // The order of the descriptors is the order of the slots in each percpu array.
|
/fuchsia/zircon/kernel/arch/arm64/include/arch/arm64/ |
H A D | mp.h | 52 static inline void arm64_write_percpu_ptr(struct arm64_percpu* percpu) { argument 53 __arm64_percpu = percpu;
|
/fuchsia/zircon/kernel/lib/counters/ |
H A D | counters.cpp | 17 #include <kernel/percpu.h> 76 percpu[ix].counters = &kcounters_arena[ix * get_num_counters()]; 88 values[ix] = percpu[ix].counters[counter_index];
|
/fuchsia/zircon/kernel/lib/lockdep/ |
H A D | lock_dep.cpp | 10 #include <kernel/percpu.h>
|
/fuchsia/zircon/kernel/arch/x86/hypervisor/ |
H A D | vcpu.cpp | 471 x86_percpu* percpu = x86_get_percpu(); local 483 vmcs.Write(VmcsField16::HOST_TR_SELECTOR, TSS_SELECTOR(percpu->cpu_num)); 486 vmcs.Write(VmcsFieldXX::HOST_TR_BASE, reinterpret_cast<uint64_t>(&percpu->default_tss));
|
/fuchsia/zircon/kernel/syscalls/ |
H A D | object.cpp | 450 const auto cpu = &percpu[i]; 452 // copy the per cpu stats from the kernel percpu structure 468 current_time(), percpu[i].idle_thread.last_started_running);
|