summaryrefslogtreecommitdiffstats
path: root/file.hpp
diff options
context:
space:
mode:
authorVishwanatha Subbanna <vishwa@linux.vnet.ibm.com>2017-04-04 14:05:09 +0530
committerVishwanatha Subbanna <vishwa@linux.vnet.ibm.com>2017-04-26 12:02:26 +0530
commit4902a10c9fabcdf5e1f2868f28cba2d571d55f03 (patch)
tree9f0662ade186a796fec8bb9d69338c5e55f19b79 /file.hpp
parentaffea8bfc77162d8631b48f1eb5e79c06b96302f (diff)
downloadphosphor-gpio-monitor-4902a10c9fabcdf5e1f2868f28cba2d571d55f03.tar.gz
phosphor-gpio-monitor-4902a10c9fabcdf5e1f2868f28cba2d571d55f03.zip
Populate the file descriptor for the device
On a GPIO chip, there could be many gpio lines and for each line, there would be a corresponding input device event file. To know the assertion state of a GPIO line, a descriptor is needed. This descriptor will later be plugged into sd_event so that the GPIO state changes can be caught and handled. Change-Id: Idc8c2b429688fea2a5124b96677085b1be48128b Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
Diffstat (limited to 'file.hpp')
-rw-r--r--file.hpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/file.hpp b/file.hpp
new file mode 100644
index 0000000..9ba4cbb
--- /dev/null
+++ b/file.hpp
@@ -0,0 +1,48 @@
+#pragma once
+
+#include <unistd.h>
+namespace phosphor
+{
+namespace gpio
+{
+/** @class FileDescriptor
+ * @brief Responsible for handling file descriptor
+ */
+class FileDescriptor
+{
+ private:
+ /** @brief File descriptor for the gpio input device */
+ int fd = -1;
+
+ public:
+ FileDescriptor() = delete;
+ FileDescriptor(const FileDescriptor&) = delete;
+ FileDescriptor& operator=(const FileDescriptor&) = delete;
+ FileDescriptor(FileDescriptor&&) = delete;
+ FileDescriptor& operator=(FileDescriptor&&) = delete;
+
+ /** @brief Saves File descriptor and uses it to do file operation
+ *
+ * @param[in] fd - File descriptor
+ */
+ FileDescriptor(int fd) : fd(fd)
+ {
+ // Nothing
+ }
+
+ ~FileDescriptor()
+ {
+ if (fd >=0)
+ {
+ close(fd);
+ }
+ }
+
+ int operator()()
+ {
+ return fd;
+ }
+};
+
+} // namespace gpio
+} // namespace phosphor
OpenPOWER on IntegriCloud