20#ifndef KERNEL_MACHINE_X86_COMMON_PC_H
21#define KERNEL_MACHINE_X86_COMMON_PC_H
22#include "pedigree/kernel/compiler.h"
23#include "pedigree/kernel/machine/Bus.h"
24#include "pedigree/kernel/machine/Controller.h"
25#include "pedigree/kernel/machine/Device.h"
26#include "pedigree/kernel/machine/Machine.h"
27#include "pedigree/kernel/processor/types.h"
33#include "PcSchedulerTimerSelection.h"
34#include "Ps2Controller.h"
50 inline static Pc& instance() {
57 bool supportsPowerOff()
const override;
79 return m_SchedulerTimerSelection.usesLocalApic();
85 inline LocalApic& getLocalApic() {
102 Pc& operator=(const
Pc&);
113 LocalApic* m_LocalApic;
118 static Pc m_Instance;
virtual MUST_USE_RESULT bool quiesceAllOtherProcessors()
virtual MUST_USE_RESULT bool resumeAllOtherProcessors()
virtual MUST_USE_RESULT bool stopAllOtherProcessors()
virtual void initialise3()
Called after processor startup - for thread creation etc.
virtual void initialise() INITIALISATION_ONLY
virtual Serial * getSerial(size_t n)
void finalShutdown(ShutdownType type) override
virtual Timer * getTimer()
virtual Vga * getVga(size_t n)
virtual SchedulerTimer * getSchedulerTimer()
virtual void initialiseDeviceTree()
bool prepareShutdown(ShutdownType type) override
virtual void deinitialise()
virtual size_t getNumSerial()
virtual void setKeyboard(Keyboard *kb)
virtual Keyboard * getKeyboard()
bool localApicAvailable() const
virtual size_t getNumVga()
#define INITIALISATION_ONLY