The Pedigree Project 0.1
kernel/machine/mach_virt/Machine.h
1/*
2 * Copyright (c) 2026, Pedigree Developers
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted.
6 */
7
8#ifndef KERNEL_MACHINE_VIRT_MACHINE_H
9#define KERNEL_MACHINE_VIRT_MACHINE_H
10
11#include "pedigree/kernel/machine/Machine.h"
12
13#include "Keyboard.h"
14#include "Serial.h"
15
16class VirtMachine : public Machine {
17 public:
18 static VirtMachine& instance();
19
20 void initialise() override;
21 void initialiseDeviceTree() override;
22 void initialise3() override;
23 void deinitialise() override;
24 bool supportsPowerOff() const override;
25 void finalShutdown(ShutdownType type) override;
26
27 Serial* getSerial(size_t n) override;
28 size_t getNumSerial() override;
29 Vga* getVga(size_t n) override;
30 size_t getNumVga() override;
31 IrqManager* getIrqManager() override;
33 Timer* getTimer() override;
34 Keyboard* getKeyboard() override;
35 void setKeyboard(Keyboard* keyboard) override;
36
37 private:
39 ~VirtMachine() override;
40
41 VirtSerial m_Serial;
42 VirtKeyboard m_SerialKeyboard;
43 Keyboard* m_Keyboard;
44
45 static VirtMachine m_Instance;
46};
47
48#endif
void deinitialise() override
void initialiseDeviceTree() override
Vga * getVga(size_t n) override
Timer * getTimer() override
size_t getNumSerial() override
size_t getNumVga() override
void initialise3() override
Called after processor startup - for thread creation etc.
Keyboard * getKeyboard() override
Serial * getSerial(size_t n) override
void setKeyboard(Keyboard *keyboard) override
void initialise() override
void finalShutdown(ShutdownType type) override
SchedulerTimer * getSchedulerTimer() override