aboutsummaryrefslogtreecommitdiff
path: root/src/scheduler.h
blob: a3148bb3b625549e6d8acf1bff1cb377bee71778 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once

#include <types.h>
#include "idt.h"

class Scheduler : public InterruptHandler {
public:
  Scheduler(uint16_t cs);

  [[nodiscard]] uint16_t add_task(uint8_t* stack, uint16_t cs, void (*entry)());
  [[nodiscard]] cpu_state_t* trigger(cpu_state_t*) override;

private:
  uint16_t current_task = 0;
  uint16_t last_task_id = 0;
  uint16_t num_tasks = 0;
};