summaryrefslogtreecommitdiffstats
path: root/init/epoll.h
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-10-24 16:20:18 -0700
committerMark Salyzyn <salyzyn@google.com>2018-05-21 14:58:03 -0700
commit6c6ec7240c561934437b2f23065bcd9a3e9811f7 (patch)
tree7f602001eea23aefb368d6b611e597668595499f /init/epoll.h
parente0a52774b4236f8dab6e1f0f246c6021ec0df698 (diff)
downloadsystem_core-6c6ec7240c561934437b2f23065bcd9a3e9811f7.tar.gz
system_core-6c6ec7240c561934437b2f23065bcd9a3e9811f7.tar.bz2
system_core-6c6ec7240c561934437b2f23065bcd9a3e9811f7.zip
init: separate out epoll into a class
Test: init_tests Bug: 64114943 Change-Id: I5f03314773b02b9e30e8e21895b6bdcfd4909e88
Diffstat (limited to 'init/epoll.h')
-rw-r--r--init/epoll.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/init/epoll.h b/init/epoll.h
new file mode 100644
index 000000000..85a791c60
--- /dev/null
+++ b/init/epoll.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _INIT_EPOLL_H
+#define _INIT_EPOLL_H
+
+#include <chrono>
+#include <functional>
+#include <map>
+#include <optional>
+
+#include <android-base/unique_fd.h>
+
+#include "result.h"
+
+namespace android {
+namespace init {
+
+class Epoll {
+ public:
+ Epoll();
+
+ Result<Success> Open();
+ Result<Success> RegisterHandler(int fd, std::function<void()> handler);
+ Result<Success> UnregisterHandler(int fd);
+ Result<Success> Wait(std::optional<std::chrono::milliseconds> timeout);
+
+ private:
+ android::base::unique_fd epoll_fd_;
+ std::map<int, std::function<void()>> epoll_handlers_;
+};
+
+} // namespace init
+} // namespace android
+
+#endif