kernel: implement cpu IDs and per-cpu variables

This commit is contained in:
2023-03-18 19:35:00 +00:00
parent 56bc47f570
commit 57eaf4e01c
14 changed files with 232 additions and 18 deletions

41
kernel/cpu.c Normal file
View File

@@ -0,0 +1,41 @@
#include <socks/cpu.h>
#include <socks/percpu.h>
#include <socks/bitmap.h>
DECLARE_BITMAP(cpu_available, CPU_MAX);
DECLARE_BITMAP(cpu_online, CPU_MAX);
DEFINE_PERCPU_VAR(cpu_data_t, cpu_data);
cpu_data_t *get_this_cpu(void)
{
return percpu_get(&cpu_data);
}
void put_cpu(cpu_data_t *cpu)
{
percpu_put(cpu);
}
void cpu_set_available(unsigned int cpu_id)
{
if (cpu_id >= CPU_MAX) {
return;
}
bitmap_set(cpu_available, cpu_id);
}
void cpu_set_online(unsigned int cpu_id)
{
if (cpu_id >= CPU_MAX) {
return;
}
bitmap_set(cpu_online, cpu_id);
}
unsigned int cpu_get_highest_available(void)
{
return bitmap_highest_set(cpu_available, CPU_MAX);
}