serenity/Kernel/Scheduler.h
Andreas Kling 5582a0a254 Kernel: When a lock is busy, donate remaining process ticks to lock holder.
Since we know who's holding the lock, and we're gonna have to yield anyway,
we can just ask the scheduler to donate any remaining ticks to that process.
2019-02-07 11:14:58 +01:00

28 lines
668 B
C++

#pragma once
#include <AK/Assertions.h>
class Process;
struct RegisterDump;
extern Process* current;
extern Process* g_last_fpu_process;
extern Process* g_finalizer;
class Scheduler {
public:
static void initialize();
static void timer_tick(RegisterDump&);
static bool pick_next();
static void pick_next_and_switch_now();
static void switch_now();
static bool yield();
static bool donate_to(Process*, const char* reason);
static bool context_switch(Process&);
static void prepare_to_modify_tss(Process&);
static Process* colonel();
static bool is_active();
private:
static void prepare_for_iret_to_new_process();
};