Skip to content

Commit 773afef

Browse files
supercomputer7awesomekling
authored andcommitted
Kernel: Change HandlerPurpose to HandlerType
Also, GenericInterruptHandler class requires to implement two new methods.
1 parent 52954cc commit 773afef

16 files changed

+39
-13
lines changed

Kernel/ACPI/ACPIDynamicParser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ namespace ACPI {
4747
virtual void disable_aml_interpretation() override;
4848
virtual void try_acpi_shutdown() override;
4949
virtual bool can_shutdown() override { return true; }
50+
virtual const char* purpose() const override { return "ACPI Parser"; }
5051

5152
protected:
5253
DynamicParser();

Kernel/Arch/i386/CPU.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -410,17 +410,17 @@ static void revert_to_unused_handler(u8 interrupt_number)
410410
void register_generic_interrupt_handler(u8 interrupt_number, GenericInterruptHandler& handler)
411411
{
412412
if (s_interrupt_handler[interrupt_number] != nullptr) {
413-
if (s_interrupt_handler[interrupt_number]->purpose() == HandlerPurpose::UnhandledInterruptHandler) {
413+
if (s_interrupt_handler[interrupt_number]->type() == HandlerType::UnhandledInterruptHandler) {
414414
s_interrupt_handler[interrupt_number] = &handler;
415415
return;
416416
}
417417
if (s_interrupt_handler[interrupt_number]->is_shared_handler() && !s_interrupt_handler[interrupt_number]->is_sharing_with_others()) {
418-
ASSERT(s_interrupt_handler[interrupt_number]->purpose() == HandlerPurpose::SharedIRQHandler);
418+
ASSERT(s_interrupt_handler[interrupt_number]->type() == HandlerType::SharedIRQHandler);
419419
static_cast<SharedIRQHandler*>(s_interrupt_handler[interrupt_number])->register_handler(handler);
420420
return;
421421
}
422422
if (!s_interrupt_handler[interrupt_number]->is_shared_handler()) {
423-
ASSERT(s_interrupt_handler[interrupt_number]->purpose() == HandlerPurpose::IRQHandler);
423+
ASSERT(s_interrupt_handler[interrupt_number]->type() == HandlerType::IRQHandler);
424424
auto& previous_handler = *s_interrupt_handler[interrupt_number];
425425
s_interrupt_handler[interrupt_number] = nullptr;
426426
SharedIRQHandler::initialize(interrupt_number);
@@ -437,20 +437,20 @@ void register_generic_interrupt_handler(u8 interrupt_number, GenericInterruptHan
437437
void unregister_generic_interrupt_handler(u8 interrupt_number, GenericInterruptHandler& handler)
438438
{
439439
ASSERT(s_interrupt_handler[interrupt_number] != nullptr);
440-
if (s_interrupt_handler[interrupt_number]->purpose() == HandlerPurpose::UnhandledInterruptHandler) {
440+
if (s_interrupt_handler[interrupt_number]->type() == HandlerType::UnhandledInterruptHandler) {
441441
dbg() << "Trying to unregister unused handler (?)";
442442
return;
443443
}
444444
if (s_interrupt_handler[interrupt_number]->is_shared_handler() && !s_interrupt_handler[interrupt_number]->is_sharing_with_others()) {
445-
ASSERT(s_interrupt_handler[interrupt_number]->purpose() == HandlerPurpose::SharedIRQHandler);
445+
ASSERT(s_interrupt_handler[interrupt_number]->type() == HandlerType::SharedIRQHandler);
446446
static_cast<SharedIRQHandler*>(s_interrupt_handler[interrupt_number])->unregister_handler(handler);
447447
if (!static_cast<SharedIRQHandler*>(s_interrupt_handler[interrupt_number])->sharing_devices_count()) {
448448
revert_to_unused_handler(interrupt_number);
449449
}
450450
return;
451451
}
452452
if (!s_interrupt_handler[interrupt_number]->is_shared_handler()) {
453-
ASSERT(s_interrupt_handler[interrupt_number]->purpose() == HandlerPurpose::IRQHandler);
453+
ASSERT(s_interrupt_handler[interrupt_number]->type() == HandlerType::IRQHandler);
454454
revert_to_unused_handler(interrupt_number);
455455
return;
456456
}

Kernel/Devices/FloppyDiskDevice.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ class FloppyDiskDevice final
172172
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override { return 0; }
173173
virtual bool can_write(const FileDescription&) const override { return true; }
174174

175+
virtual const char* purpose() const override { return "Floppy Disk Controller"; }
176+
175177
protected:
176178
explicit FloppyDiskDevice(DriveType);
177179

Kernel/Devices/HardwareTimer.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ namespace Kernel {
3232
class HardwareTimer : public IRQHandler {
3333
public:
3434
u32 seconds_since_boot();
35-
3635
protected:
3736
HardwareTimer(u8 irq_number);
3837
u32 m_seconds_since_boot { 0 };

Kernel/Devices/KeyboardDevice.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ class KeyboardDevice final : public IRQHandler
5757
virtual ssize_t write(FileDescription&, const u8* buffer, ssize_t) override;
5858
virtual bool can_write(const FileDescription&) const override { return true; }
5959

60+
virtual const char* purpose() const override { return class_name(); }
61+
6062
private:
6163
// ^IRQHandler
6264
virtual void handle_irq(RegisterState&) override;

Kernel/Devices/PATAChannel.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ class PATAChannel final : public PCI::Device {
7272
RefPtr<PATADiskDevice> master_device() { return m_master; };
7373
RefPtr<PATADiskDevice> slave_device() { return m_slave; };
7474

75+
virtual const char* purpose() const override { return "PATA Channel"; }
76+
7577
private:
7678
//^ IRQHandler
7779
virtual void handle_irq(RegisterState&) override;

Kernel/Devices/PIT.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ class PIT : public HardwareTimer {
5858
static PIT& the();
5959
u32 ticks_this_second() const;
6060

61+
virtual const char* purpose() const override { return "System Timer"; }
62+
6163
private:
6264
PIT();
6365
// ^IRQHandler

Kernel/Devices/PS2MouseDevice.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class PS2MouseDevice final : public IRQHandler
4747
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override;
4848
virtual bool can_write(const FileDescription&) const override { return true; }
4949

50+
virtual const char* purpose() const override { return class_name(); }
51+
5052
private:
5153
// ^IRQHandler
5254
void handle_vmmouse_absolute_pointer();

Kernel/Devices/SB16.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class SB16 final : public IRQHandler
5050
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override;
5151
virtual bool can_write(const FileDescription&) const override { return true; }
5252

53+
virtual const char* purpose() const override { return class_name(); }
54+
5355
private:
5456
// ^IRQHandler
5557
virtual void handle_irq(RegisterState&) override;

Kernel/Interrupts/GenericInterruptHandler.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
namespace Kernel {
3535

36-
enum class HandlerPurpose : u8 {
36+
enum class HandlerType : u8 {
3737
IRQHandler = 1,
3838
SharedIRQHandler = 2,
3939
UnhandledInterruptHandler = 3,
@@ -56,7 +56,9 @@ class GenericInterruptHandler {
5656
virtual bool is_shared_handler() const = 0;
5757
virtual bool is_sharing_with_others() const = 0;
5858

59-
virtual HandlerPurpose purpose() const = 0;
59+
virtual HandlerType type() const = 0;
60+
virtual const char* purpose() const = 0;
61+
virtual const char* controller() const = 0;
6062

6163
virtual bool eoi() = 0;
6264
void increment_invoking_counter();

0 commit comments

Comments
 (0)