diff --git a/Makefile.am b/Makefile.am
index ef50fa1..cc2374a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -6,6 +6,7 @@
 openpower_proc_control_SOURCES = \
 	proc_control.cpp \
 	p9_procedures.cpp \
+	filedescriptor.cpp \
 	targeting.cpp
 
 openpower_proc_control_LDFLAGS = $(PHOSPHOR_LOGGING_LIBS) -lstdc++fs
diff --git a/filedescriptor.cpp b/filedescriptor.cpp
new file mode 100644
index 0000000..3b1b096
--- /dev/null
+++ b/filedescriptor.cpp
@@ -0,0 +1,49 @@
+/**
+ * Copyright © 2017 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <stdexcept>
+#include <unistd.h>
+#include "filedescriptor.hpp"
+
+namespace openpower
+{
+namespace p9_util
+{
+
+FileDescriptor::FileDescriptor(const std::string& path)
+{
+    fd = open(path.c_str(), O_RDWR | O_SYNC);
+
+    if (fd < 0)
+    {
+        //Future: use a different exception to create an error log
+        char msg[200];
+        sprintf(msg, "Failed to open FSI device path %s.  errno = %d",
+                path.c_str(), errno);
+        throw std::runtime_error(msg);
+    }
+}
+
+
+FileDescriptor::~FileDescriptor()
+{
+    if (fd >= 0)
+    {
+        close(fd);
+    }
+}
+
+}
+}
diff --git a/filedescriptor.hpp b/filedescriptor.hpp
new file mode 100644
index 0000000..b03d314
--- /dev/null
+++ b/filedescriptor.hpp
@@ -0,0 +1,57 @@
+#pragma once
+
+#include <fcntl.h>
+#include <string>
+
+namespace openpower
+{
+namespace p9_util
+{
+
+/**
+ * Class to wrap a file descriptor.
+ *
+ * Opens the descriptor in the constructor, and
+ * then closes it when destroyed.
+ */
+class FileDescriptor
+{
+    public:
+
+        FileDescriptor() = delete;
+        FileDescriptor(const FileDescriptor&) = delete;
+        FileDescriptor(FileDescriptor&&) = default;
+        FileDescriptor& operator=(const FileDescriptor) = delete;
+        FileDescriptor& operator=(FileDescriptor&&) = default;
+
+        /**
+         * Creates a file descriptor by opening the device
+         * path passed in.
+         *
+         * @param path[in] - the device path that will be open
+         */
+        FileDescriptor(const std::string& path);
+
+        /**
+         * Closes the file.
+         */
+        ~FileDescriptor();
+
+        /**
+         * The method to access the file descriptor value
+         */
+        inline int operator()() const
+        {
+            return fd;
+        }
+
+    private:
+
+        /**
+         * The actual file descriptor
+         */
+        int fd;
+};
+
+}
+}
