diff options
author | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-04-04 14:05:09 +0530 |
---|---|---|
committer | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-04-26 12:02:26 +0530 |
commit | 4902a10c9fabcdf5e1f2868f28cba2d571d55f03 (patch) | |
tree | 9f0662ade186a796fec8bb9d69338c5e55f19b79 /file.hpp | |
parent | affea8bfc77162d8631b48f1eb5e79c06b96302f (diff) | |
download | phosphor-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.hpp | 48 |
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 |