Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | * Copyright (c) 2022-2023, The Puppy RTOS Authors | ||
3 | * | ||
4 | * SPDX-License-Identifier: Apache-2.0 | ||
5 | */ | ||
6 | |||
7 | #include <puppy.h> | ||
8 | |||
9 | #define KLOG_TAG "cpu" | ||
10 | #define KLOG_LVL KLOG_WARNING | ||
11 | #include <puppy/klog.h> | ||
12 | |||
13 | static struct p_cpu _g_cpu[P_CPU_NR]; | ||
14 | |||
15 | ✗ | p_weak uint8_t p_cpu_self_id(void) | |
16 | { | ||
17 | ✗ | return 0; | |
18 | } | ||
19 | |||
20 | 20830 | inline struct p_cpu *p_cpu_self(void) | |
21 | { | ||
22 | 20830 | return &_g_cpu[p_cpu_self_id()]; | |
23 | } | ||
24 | |||
25 | 2683 | inline struct p_cpu *p_cpu_index(uint8_t cpuid) | |
26 | { | ||
27 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2683 times.
|
2683 | if (cpuid >= P_CPU_NR) |
28 | ✗ | return NULL; | |
29 | 2683 | return &_g_cpu[cpuid]; | |
30 | } | ||
31 | |||
32 | arch_spinlock_t cpu; | ||
33 | 1 | void p_cpu_init(void) | |
34 | { | ||
35 | 1 | arch_spin_lock_init(&cpu); | |
36 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (int i = 0; i < P_CPU_NR; i++) |
37 | { | ||
38 | 4 | p_list_init(&_g_cpu[i].ready_queue); | |
39 | 4 | p_list_init(&_g_cpu[i].dead_queue); | |
40 | 4 | _g_cpu[i].sched_lock = 1; | |
41 | } | ||
42 | 1 | } | |
43 |