From f398efa1ac52e967d9673a0efebd9a27f17d60bf Mon Sep 17 00:00:00 2001 From: aqua Date: Sun, 11 Dec 2022 21:42:29 +0200 Subject: Generate docs using doxygen instead of sphinx --- i686/sys/io.hpp | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'i686') diff --git a/i686/sys/io.hpp b/i686/sys/io.hpp index bea9323..9759a3a 100644 --- a/i686/sys/io.hpp +++ b/i686/sys/io.hpp @@ -1,15 +1,33 @@ #pragma once +/** + * Ports provide communication with devices on the x86 IO bus. + */ template struct Port { - static void - out(T val, unsigned short offset = 0) + /** + * Read value from port + */ + static T + in(unsigned short offset = 0) { - outb(val, port + offset); + if constexpr (sizeof(T) == sizeof(unsigned char)) return inb(port + offset); + else if constexpr (sizeof(T) == sizeof(unsigned short)) + return inw(port + offset); + else if constexpr (sizeof(T) == sizeof(unsigned int)) + return inl(port + offset); } - static auto - in(unsigned short offset = 0) + /** + * Write value to port + */ + static void + out(T val, unsigned short offset = 0) { - return inb(port + offset); + if constexpr (sizeof(T) == sizeof(unsigned char)) outb(val, port + offset); + else if constexpr (sizeof(T) == sizeof(unsigned short)) + outw(val, port + offset); + else if constexpr (sizeof(T) == sizeof(unsigned int)) + outl(val, port + offset); } + }; -- cgit v1.2.1