diff --git a/adb/fdevent/fdevent.cpp b/adb/fdevent/fdevent.cpp
index 26ebc49..28b8f37 100644
--- a/adb/fdevent/fdevent.cpp
+++ b/adb/fdevent/fdevent.cpp
@@ -83,6 +83,21 @@
     return result;
 }
 
+void fdevent_context::Add(fdevent* fde, unsigned events) {
+    Set(fde, (fde->state & FDE_EVENTMASK) | events);
+}
+
+void fdevent_context::Del(fdevent* fde, unsigned events) {
+    CHECK(!(events & FDE_TIMEOUT));
+    Set(fde, (fde->state & FDE_EVENTMASK) & ~events);
+}
+
+void fdevent_context::SetTimeout(fdevent* fde, std::optional<std::chrono::milliseconds> timeout) {
+    CheckMainThread();
+    fde->timeout = timeout;
+    fde->last_active = std::chrono::steady_clock::now();
+}
+
 void fdevent_context::CheckMainThread() {
     if (main_thread_id_) {
         CHECK_EQ(*main_thread_id_, android::base::GetThreadId());
diff --git a/adb/fdevent/fdevent.h b/adb/fdevent/fdevent.h
index 3a3682f..ccb0c92 100644
--- a/adb/fdevent/fdevent.h
+++ b/adb/fdevent/fdevent.h
@@ -70,14 +70,14 @@
   public:
     // Change which events should cause notifications.
     virtual void Set(fdevent* fde, unsigned events) = 0;
-    virtual void Add(fdevent* fde, unsigned events) = 0;
-    virtual void Del(fdevent* fde, unsigned events) = 0;
+    void Add(fdevent* fde, unsigned events);
+    void Del(fdevent* fde, unsigned events);
 
     // Set a timeout on an fdevent.
     // If no events are triggered by the timeout, an FDE_TIMEOUT will be generated.
     // Note timeouts are not defused automatically; if a timeout is set on an fdevent, it will
     // trigger repeatedly every |timeout| ms.
-    virtual void SetTimeout(fdevent* fde, std::optional<std::chrono::milliseconds> timeout) = 0;
+    void SetTimeout(fdevent* fde, std::optional<std::chrono::milliseconds> timeout);
 
     // Loop until TerminateLoop is called, handling events.
     // Implementations should call FlushRunQueue on every iteration, and check the value of
diff --git a/adb/fdevent/fdevent_poll.cpp b/adb/fdevent/fdevent_poll.cpp
index 59b6b93..75ea081 100644
--- a/adb/fdevent/fdevent_poll.cpp
+++ b/adb/fdevent/fdevent_poll.cpp
@@ -131,22 +131,6 @@
     }
 }
 
-void fdevent_context_poll::Add(fdevent* fde, unsigned events) {
-    Set(fde, (fde->state & FDE_EVENTMASK) | events);
-}
-
-void fdevent_context_poll::Del(fdevent* fde, unsigned events) {
-    CHECK(!(events & FDE_TIMEOUT));
-    Set(fde, (fde->state & FDE_EVENTMASK) & ~events);
-}
-
-void fdevent_context_poll::SetTimeout(fdevent* fde,
-                                      std::optional<std::chrono::milliseconds> timeout) {
-    CheckMainThread();
-    fde->timeout = timeout;
-    fde->last_active = std::chrono::steady_clock::now();
-}
-
 static std::string dump_pollfds(const std::vector<adb_pollfd>& pollfds) {
     std::string result;
     for (const auto& pollfd : pollfds) {
diff --git a/adb/fdevent/fdevent_poll.h b/adb/fdevent/fdevent_poll.h
index bffc873..db08301 100644
--- a/adb/fdevent/fdevent_poll.h
+++ b/adb/fdevent/fdevent_poll.h
@@ -52,9 +52,6 @@
     virtual void Unregister(fdevent* fde) final;
 
     virtual void Set(fdevent* fde, unsigned events) final;
-    virtual void Add(fdevent* fde, unsigned events) final;
-    virtual void Del(fdevent* fde, unsigned events) final;
-    virtual void SetTimeout(fdevent* fde, std::optional<std::chrono::milliseconds> timeout) final;
 
     virtual void Loop() final;
 
