sched: add current_task(), current_thread(), and preempt_disable/enable()

This commit is contained in:
2023-03-28 21:39:59 +01:00
parent e0e6f4a9ae
commit 7d003da960
6 changed files with 65 additions and 3 deletions

View File

@@ -35,6 +35,36 @@ void cpu_set_online(unsigned int cpu_id)
bitmap_set(cpu_online, cpu_id);
}
void preempt_disable(void)
{
ml_cpu_block *ml_cpu = ml_this_cpu();
cpu_data_t *cpu_data = ml_cpu_block_get_data(ml_cpu);
if (!cpu_data) {
return;
}
unsigned int preempt = READ_ONCE(cpu_data->c_preempt_count);
preempt++;
WRITE_ONCE(cpu_data->c_preempt_count, preempt);
}
void preempt_enable(void)
{
ml_cpu_block *ml_cpu = ml_this_cpu();
cpu_data_t *cpu_data = ml_cpu_block_get_data(ml_cpu);
if (!cpu_data) {
return;
}
unsigned int preempt = READ_ONCE(cpu_data->c_preempt_count);
if (preempt > 0) {
preempt--;
}
WRITE_ONCE(cpu_data->c_preempt_count, preempt);
}
unsigned int cpu_get_highest_available(void)
{
return bitmap_highest_set(cpu_available, CPU_MAX);