tevent: Add a private function tevent_poll_event_add_fd_internal().
authorJeremy Allison <jra@samba.org>
Mon, 11 Feb 2013 19:20:28 +0000 (11:20 -0800)
committerJeremy Allison <jra@samba.org>
Thu, 14 Feb 2013 18:19:38 +0000 (10:19 -0800)
Not yet used, but will be called by the "standard"
fallback from epoll -> poll backends.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/tevent/tevent_internal.h
lib/tevent/tevent_poll.c

index fa6652cfa13656d9289acff8f6cd9b69e41b1d10..8433333558366af2c754823ce2df9cdf830ce28f 100644 (file)
@@ -316,6 +316,8 @@ void tevent_cleanup_pending_signal_handlers(struct tevent_signal *se);
 bool tevent_standard_init(void);
 bool tevent_select_init(void);
 bool tevent_poll_init(void);
+void tevent_poll_event_add_fd_internal(struct tevent_context *ev,
+                                      struct tevent_fd *fde);
 bool tevent_poll_mt_init(void);
 #ifdef HAVE_EPOLL
 bool tevent_epoll_init(void);
@@ -324,5 +326,6 @@ bool tevent_epoll_set_panic_fallback(struct tevent_context *ev,
                                               bool replay));
 #endif
 
+
 void tevent_trace_point_callback(struct tevent_context *ev,
                                 enum tevent_trace_point);
index 5479f2f7cd67a1e1fd0e2ea9b0ed2442118d0d9b..89b3bbc0b3aadb11bddff381be085f5a7aa40537 100644 (file)
@@ -255,6 +255,22 @@ static void poll_event_schedule_immediate(struct tevent_immediate *im,
        poll_event_wake_pollthread(poll_ev);
 }
 
+/*
+  Private function called by "standard" backend fallback.
+  Note this only allows fallback to "poll" backend, not "poll-mt".
+*/
+_PRIVATE_ void tevent_poll_event_add_fd_internal(struct tevent_context *ev,
+                                                struct tevent_fd *fde)
+{
+       struct poll_event_context *poll_ev = talloc_get_type_abort(
+               ev->additional_data, struct poll_event_context);
+
+       fde->additional_flags   = UINT64_MAX;
+       fde->additional_data    = NULL;
+       DLIST_ADD(poll_ev->fresh, fde);
+       talloc_set_destructor(fde, poll_fresh_fde_destructor);
+}
+
 /*
   add a fd based event
   return NULL on failure (memory allocation error)