diff options
author | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-04-04 14:07:25 +0530 |
---|---|---|
committer | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-04-27 14:42:05 +0530 |
commit | 0b95603eb48a72234b8fc618dcc4db13b6f4d079 (patch) | |
tree | 627c1ce7766aa3ace52aa6782bbf96fb4cdc9028 /monitor.cpp | |
parent | 4902a10c9fabcdf5e1f2868f28cba2d571d55f03 (diff) | |
download | phosphor-gpio-monitor-0b95603eb48a72234b8fc618dcc4db13b6f4d079.tar.gz phosphor-gpio-monitor-0b95603eb48a72234b8fc618dcc4db13b6f4d079.zip |
Add sd_event loop and callback handler
Change-Id: I032d1156be2b8082fdf347a60ec883a9bc0038ae
Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
Diffstat (limited to 'monitor.cpp')
-rw-r--r-- | monitor.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/monitor.cpp b/monitor.cpp index 29d9d6d..5428c09 100644 --- a/monitor.cpp +++ b/monitor.cpp @@ -22,6 +22,8 @@ namespace phosphor namespace gpio { +using namespace phosphor::logging; + // Populate the file descriptor for passed in device int Monitor::openDevice() { @@ -37,5 +39,30 @@ int Monitor::openDevice() return fd; } +// Attaches the FD to event loop and registers the callback handler +void Monitor::registerCallback() +{ + decltype(eventSource.get()) sourcePtr = nullptr; + auto r = sd_event_add_io(event.get(), &sourcePtr, (fd)(), + EPOLLIN, callbackHandler, this); + eventSource.reset(sourcePtr); + + if (r < 0) + { + log<level::ERR>("Failed to register callback handler", + entry("ERROR=%s", strerror(-r))); + throw std::runtime_error("Failed to register callback handler"); + } +} + +// Callback handler when there is an activity on the FD +int Monitor::processEvents(sd_event_source* es, int fd, + uint32_t revents, void* userData) +{ + // TODO. This calls into starting configured target + log<level::INFO>("Callback handler called"); + return 0; +} + } // namespace gpio } // namespace phosphor |