diff --git a/temporary_file.cpp b/temporary_file.cpp
new file mode 100644
index 0000000..34a18ca
--- /dev/null
+++ b/temporary_file.cpp
@@ -0,0 +1,64 @@
+#include "temporary_file.hpp"
+
+#include <fmt/format.h>
+#include <unistd.h>
+
+#include <phosphor-logging/elog-errors.hpp>
+
+#include <cerrno>
+#include <cstdlib>
+#include <stdexcept>
+#include <string>
+
+namespace openpower::util
+{
+using namespace phosphor::logging;
+
+TemporaryFile::TemporaryFile()
+{
+    // Build template path required by mkstemp()
+    std::string templatePath =
+        fs::temp_directory_path() / "openpower-proc-control-XXXXXX";
+
+    // Generate unique file name, create file, and open it.  The XXXXXX
+    // characters are replaced by mkstemp() to make the file name unique.
+    int fd = mkstemp(templatePath.data());
+    if (fd == -1)
+    {
+        throw std::runtime_error{
+            std::string{"Unable to create temporary file: "} + strerror(errno)};
+    }
+
+    // Store path to temporary file
+    path = templatePath;
+
+    // Close file descriptor
+    if (close(fd) == -1)
+    {
+        // Save errno value; will likely change when we delete temporary file
+        int savedErrno = errno;
+
+        // Delete temporary file.  The destructor won't be called because
+        // the exception below causes this constructor to exit without
+        // completing.
+        remove();
+
+        throw std::runtime_error{
+            std::string{"Unable to close temporary file: "} +
+            strerror(savedErrno)};
+    }
+}
+
+void TemporaryFile::remove()
+{
+    if (!path.empty())
+    {
+        // Delete temporary file from file system
+        fs::remove(path);
+
+        // Clear path to indicate file has been deleted
+        path.clear();
+    }
+}
+
+} // namespace openpower::util
