Have the Target class manage the file descriptor
The sysfs file descriptor will now stay open from first
use until the Target class is destroyed.
Change-Id: Ib9803a527115cc75ecc9a5351d1e748ccd54a993
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/cfam_access.cpp b/cfam_access.cpp
index 2762e80..888eefc 100644
--- a/cfam_access.cpp
+++ b/cfam_access.cpp
@@ -14,7 +14,6 @@
* limitations under the License.
*/
#include <unistd.h>
-#include "filedescriptor.hpp"
#include "cfam_access.hpp"
#include "targeting.hpp"
@@ -28,7 +27,7 @@
constexpr auto cfamRegSize = 4;
using namespace openpower::targeting;
-using namespace openpower::p9_util;
+using namespace openpower::util;
/**
* Converts the CFAM register address used by the calling
@@ -45,9 +44,7 @@
cfam_address_t address,
cfam_data_t data)
{
- FileDescriptor fd(target->getPath());
-
- int rc = lseek(fd(), makeOffset(address), SEEK_SET);
+ int rc = lseek(target->getCFAMFD(), makeOffset(address), SEEK_SET);
if (rc < 0)
{
//Future: use a different exception to create an error log
@@ -58,7 +55,7 @@
throw std::runtime_error(msg);
}
- rc = write(fd(), &data, cfamRegSize);
+ rc = write(target->getCFAMFD(), &data, cfamRegSize);
if (rc < 0)
{
//Future: use a different exception to create an error log
@@ -74,10 +71,9 @@
cfam_data_t readReg(const std::unique_ptr<Target>& target,
cfam_address_t address)
{
- FileDescriptor fd(target->getPath());
cfam_data_t data = 0;
- int rc = lseek(fd(), makeOffset(address), SEEK_SET);
+ int rc = lseek(target->getCFAMFD(), makeOffset(address), SEEK_SET);
if (rc < 0)
{
//Future: use a different exception to create an error log
@@ -88,7 +84,7 @@
throw std::runtime_error(msg);
}
- rc = read(fd(), &data, cfamRegSize);
+ rc = read(target->getCFAMFD(), &data, cfamRegSize);
if (rc < 0)
{
//Future: use a different exception to create an error log