splits sys interface into its own file

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: Ifa657dd6e5d73b6098597cd917e7da512af26641
diff --git a/src/Makefile.am b/src/Makefile.am
index 3de0204..4d32762 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -17,6 +17,7 @@
 libipmiblob_la_SOURCES += ipmiblob/ipmi_handler.cpp
 
 nobase_include_HEADERS += ipmiblob/internal/sys.hpp
+nobase_include_HEADERS += ipmiblob/internal/sys_interface.hpp
 libipmiblob_la_SOURCES += ipmiblob/internal/sys.cpp
 
 nobase_include_HEADERS += ipmiblob/test/blob_interface_mock.hpp
diff --git a/src/ipmiblob/internal/sys.hpp b/src/ipmiblob/internal/sys.hpp
index e80e0d8..5f21bf2 100644
--- a/src/ipmiblob/internal/sys.hpp
+++ b/src/ipmiblob/internal/sys.hpp
@@ -7,6 +7,8 @@
  * other pieces.
  */
 
+#include "sys_interface.hpp"
+
 #include <poll.h>
 #include <sys/mman.h>
 
@@ -19,26 +21,6 @@
 {
 
 /**
- * @class Sys
- * @brief Overridable direct syscall interface
- */
-class Sys
-{
-  public:
-    virtual ~Sys() = default;
-
-    virtual int open(const char* pathname, int flags) const = 0;
-    virtual int read(int fd, void* buf, std::size_t count) const = 0;
-    virtual int close(int fd) const = 0;
-    virtual void* mmap(void* addr, std::size_t length, int prot, int flags,
-                       int fd, off_t offset) const = 0;
-    virtual int munmap(void* addr, std::size_t length) const = 0;
-    virtual int getpagesize() const = 0;
-    virtual int ioctl(int fd, unsigned long request, void* param) const = 0;
-    virtual int poll(struct pollfd* fds, nfds_t nfds, int timeout) const = 0;
-};
-
-/**
  * @class SysImpl
  * @brief syscall concrete implementation
  * @details Passes through all calls to the normal linux syscalls
diff --git a/src/ipmiblob/internal/sys_interface.hpp b/src/ipmiblob/internal/sys_interface.hpp
new file mode 100644
index 0000000..ffd32b7
--- /dev/null
+++ b/src/ipmiblob/internal/sys_interface.hpp
@@ -0,0 +1,42 @@
+#pragma once
+
+/* NOTE: IIRC, wak@ is working on exposing some of this in stdplus, so we can
+ * transition when that's ready.
+ *
+ * Copied some from gpioplus to enable unit-testing of lpc nuvoton and later
+ * other pieces.
+ */
+
+#include <poll.h>
+#include <sys/mman.h>
+
+#include <cinttypes>
+#include <cstddef>
+
+namespace ipmiblob
+{
+namespace internal
+{
+
+/**
+ * @class Sys
+ * @brief Overridable direct syscall interface
+ */
+class Sys
+{
+  public:
+    virtual ~Sys() = default;
+
+    virtual int open(const char* pathname, int flags) const = 0;
+    virtual int read(int fd, void* buf, std::size_t count) const = 0;
+    virtual int close(int fd) const = 0;
+    virtual void* mmap(void* addr, std::size_t length, int prot, int flags,
+                       int fd, off_t offset) const = 0;
+    virtual int munmap(void* addr, std::size_t length) const = 0;
+    virtual int getpagesize() const = 0;
+    virtual int ioctl(int fd, unsigned long request, void* param) const = 0;
+    virtual int poll(struct pollfd* fds, nfds_t nfds, int timeout) const = 0;
+};
+
+} // namespace internal
+} // namespace ipmiblob