The Samba-Bugzilla – Attachment 13996 Details for
Bug 13291
Backport tevent 0.9.36 with tevent_queue_entry_untrigger()
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for 4.8 cherry-picked from master
bug13291-v48.patch (text/plain), 12.42 KB, created by
Ralph Böhme
on 2018-02-27 10:37:55 UTC
(
hide
)
Description:
Patch for 4.8 cherry-picked from master
Filename:
MIME Type:
Creator:
Ralph Böhme
Created:
2018-02-27 10:37:55 UTC
Size:
12.42 KB
patch
obsolete
>From f2dfd51bab0f6653151308f7fa5a63f231e7ce34 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Fri, 16 Feb 2018 16:47:57 +0100 >Subject: [PATCH 1/3] tevent: improve documentation of > tevent_queue_add_optimize_empty() > >Bug: https://bugzilla.samba.org/show_bug.cgi?id=13291 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 88d6703b89f9a7f847b6ec47d97569432927dcff) >--- > lib/tevent/tevent.h | 3 +++ > 1 file changed, 3 insertions(+) > >diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h >index 7284a8559d2..c17d4e11b0d 100644 >--- a/lib/tevent/tevent.h >+++ b/lib/tevent/tevent.h >@@ -1611,6 +1611,9 @@ struct tevent_queue_entry *tevent_queue_add_entry( > * already called tevent_req_notify_callback(), tevent_req_error(), > * tevent_req_done() or a similar function. > * >+ * The trigger function has no chance to see the returned >+ * queue_entry in the optimized case. >+ * > * The request can be removed from the queue by calling talloc_free() > * (or a similar function) on the returned queue entry. > * >-- >2.13.6 > > >From 32ef0e1df3f6b3b85059c5ffa2a2c9a8565e4c06 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Thu, 15 Feb 2018 14:47:25 +0100 >Subject: [PATCH 2/3] tevent: add tevent_queue_entry_untrigger() > >Bug: https://bugzilla.samba.org/show_bug.cgi?id=13291 > >Pair-Programmed-With: Volker Lendecke <vl@samba.org> > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Signed-off-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 5c6f31697a8edb03d36eece5c79581b952743b5b) >--- > lib/tevent/tevent.h | 22 ++++++++++++++++++++++ > lib/tevent/tevent_queue.c | 13 +++++++++++++ > 2 files changed, 35 insertions(+) > >diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h >index c17d4e11b0d..7bb9c618b2b 100644 >--- a/lib/tevent/tevent.h >+++ b/lib/tevent/tevent.h >@@ -1644,6 +1644,28 @@ struct tevent_queue_entry *tevent_queue_add_optimize_empty( > void *private_data); > > /** >+ * @brief Untrigger an already triggered queue entry. >+ * >+ * If a trigger function detects that it needs to remain >+ * in the queue, it needs to call tevent_queue_stop() >+ * followed by tevent_queue_entry_untrigger(). >+ * >+ * @note In order to call tevent_queue_entry_untrigger() >+ * the queue must be already stopped and the given queue_entry >+ * must be the first one in the queue! Otherwise it calls abort(). >+ * >+ * @note You can't use this together with tevent_queue_add_optimize_empty() >+ * because the trigger function don't have access to the quene entry >+ * in the case of an empty queue. >+ * >+ * @param[in] queue_entry The queue entry to rearm. >+ * >+ * @see tevent_queue_add_entry() >+ * @see tevent_queue_stop() >+ */ >+void tevent_queue_entry_untrigger(struct tevent_queue_entry *entry); >+ >+/** > * @brief Start a tevent queue. > * > * The queue is started by default. >diff --git a/lib/tevent/tevent_queue.c b/lib/tevent/tevent_queue.c >index 5516c6cb1e5..9c3973b731e 100644 >--- a/lib/tevent/tevent_queue.c >+++ b/lib/tevent/tevent_queue.c >@@ -266,6 +266,19 @@ struct tevent_queue_entry *tevent_queue_add_optimize_empty( > trigger, private_data, true); > } > >+void tevent_queue_entry_untrigger(struct tevent_queue_entry *entry) >+{ >+ if (entry->queue->running) { >+ abort(); >+ } >+ >+ if (entry->queue->list != entry) { >+ abort(); >+ } >+ >+ entry->triggered = false; >+} >+ > void tevent_queue_start(struct tevent_queue *queue) > { > if (queue->running) { >-- >2.13.6 > > >From 35e9d543e6947728e4d5659ce052400a003de5a3 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Tue, 20 Feb 2018 13:54:49 +0100 >Subject: [PATCH 3/3] tevent: version 0.9.36 > >* improve documentation of tevent_queue_add_optimize_empty() >* add tevent_queue_entry_untrigger() > >Bug: https://bugzilla.samba.org/show_bug.cgi?id=13291 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit f00c7cf9f5f325de0b754b127fcc0f07bea2d825) >--- > lib/tevent/ABI/tevent-0.9.36.sigs | 100 ++++++++++++++++++++++++++++++++++++++ > lib/tevent/wscript | 2 +- > 2 files changed, 101 insertions(+), 1 deletion(-) > create mode 100644 lib/tevent/ABI/tevent-0.9.36.sigs > >diff --git a/lib/tevent/ABI/tevent-0.9.36.sigs b/lib/tevent/ABI/tevent-0.9.36.sigs >new file mode 100644 >index 00000000000..8a579c8ee7d >--- /dev/null >+++ b/lib/tevent/ABI/tevent-0.9.36.sigs >@@ -0,0 +1,100 @@ >+_tevent_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *) >+_tevent_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *) >+_tevent_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) >+_tevent_create_immediate: struct tevent_immediate *(TALLOC_CTX *, const char *) >+_tevent_loop_once: int (struct tevent_context *, const char *) >+_tevent_loop_until: int (struct tevent_context *, bool (*)(void *), void *, const char *) >+_tevent_loop_wait: int (struct tevent_context *, const char *) >+_tevent_queue_create: struct tevent_queue *(TALLOC_CTX *, const char *, const char *) >+_tevent_req_callback_data: void *(struct tevent_req *) >+_tevent_req_cancel: bool (struct tevent_req *, const char *) >+_tevent_req_create: struct tevent_req *(TALLOC_CTX *, void *, size_t, const char *, const char *) >+_tevent_req_data: void *(struct tevent_req *) >+_tevent_req_done: void (struct tevent_req *, const char *) >+_tevent_req_error: bool (struct tevent_req *, uint64_t, const char *) >+_tevent_req_nomem: bool (const void *, struct tevent_req *, const char *) >+_tevent_req_notify_callback: void (struct tevent_req *, const char *) >+_tevent_req_oom: void (struct tevent_req *, const char *) >+_tevent_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *) >+_tevent_threaded_schedule_immediate: void (struct tevent_threaded_context *, struct tevent_immediate *, tevent_immediate_handler_t, void *, const char *, const char *) >+tevent_backend_list: const char **(TALLOC_CTX *) >+tevent_cleanup_pending_signal_handlers: void (struct tevent_signal *) >+tevent_common_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *) >+tevent_common_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *) >+tevent_common_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) >+tevent_common_add_timer_v2: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) >+tevent_common_check_signal: int (struct tevent_context *) >+tevent_common_context_destructor: int (struct tevent_context *) >+tevent_common_fd_destructor: int (struct tevent_fd *) >+tevent_common_fd_get_flags: uint16_t (struct tevent_fd *) >+tevent_common_fd_set_close_fn: void (struct tevent_fd *, tevent_fd_close_fn_t) >+tevent_common_fd_set_flags: void (struct tevent_fd *, uint16_t) >+tevent_common_have_events: bool (struct tevent_context *) >+tevent_common_loop_immediate: bool (struct tevent_context *) >+tevent_common_loop_timer_delay: struct timeval (struct tevent_context *) >+tevent_common_loop_wait: int (struct tevent_context *, const char *) >+tevent_common_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *) >+tevent_common_threaded_activate_immediate: void (struct tevent_context *) >+tevent_common_wakeup: int (struct tevent_context *) >+tevent_common_wakeup_fd: int (int) >+tevent_common_wakeup_init: int (struct tevent_context *) >+tevent_context_init: struct tevent_context *(TALLOC_CTX *) >+tevent_context_init_byname: struct tevent_context *(TALLOC_CTX *, const char *) >+tevent_context_init_ops: struct tevent_context *(TALLOC_CTX *, const struct tevent_ops *, void *) >+tevent_debug: void (struct tevent_context *, enum tevent_debug_level, const char *, ...) >+tevent_fd_get_flags: uint16_t (struct tevent_fd *) >+tevent_fd_set_auto_close: void (struct tevent_fd *) >+tevent_fd_set_close_fn: void (struct tevent_fd *, tevent_fd_close_fn_t) >+tevent_fd_set_flags: void (struct tevent_fd *, uint16_t) >+tevent_get_trace_callback: void (struct tevent_context *, tevent_trace_callback_t *, void *) >+tevent_loop_allow_nesting: void (struct tevent_context *) >+tevent_loop_set_nesting_hook: void (struct tevent_context *, tevent_nesting_hook, void *) >+tevent_num_signals: size_t (void) >+tevent_queue_add: bool (struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) >+tevent_queue_add_entry: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) >+tevent_queue_add_optimize_empty: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) >+tevent_queue_entry_untrigger: void (struct tevent_queue_entry *) >+tevent_queue_length: size_t (struct tevent_queue *) >+tevent_queue_running: bool (struct tevent_queue *) >+tevent_queue_start: void (struct tevent_queue *) >+tevent_queue_stop: void (struct tevent_queue *) >+tevent_queue_wait_recv: bool (struct tevent_req *) >+tevent_queue_wait_send: struct tevent_req *(TALLOC_CTX *, struct tevent_context *, struct tevent_queue *) >+tevent_re_initialise: int (struct tevent_context *) >+tevent_register_backend: bool (const char *, const struct tevent_ops *) >+tevent_req_default_print: char *(struct tevent_req *, TALLOC_CTX *) >+tevent_req_defer_callback: void (struct tevent_req *, struct tevent_context *) >+tevent_req_is_error: bool (struct tevent_req *, enum tevent_req_state *, uint64_t *) >+tevent_req_is_in_progress: bool (struct tevent_req *) >+tevent_req_poll: bool (struct tevent_req *, struct tevent_context *) >+tevent_req_post: struct tevent_req *(struct tevent_req *, struct tevent_context *) >+tevent_req_print: char *(TALLOC_CTX *, struct tevent_req *) >+tevent_req_received: void (struct tevent_req *) >+tevent_req_reset_endtime: void (struct tevent_req *) >+tevent_req_set_callback: void (struct tevent_req *, tevent_req_fn, void *) >+tevent_req_set_cancel_fn: void (struct tevent_req *, tevent_req_cancel_fn) >+tevent_req_set_cleanup_fn: void (struct tevent_req *, tevent_req_cleanup_fn) >+tevent_req_set_endtime: bool (struct tevent_req *, struct tevent_context *, struct timeval) >+tevent_req_set_print_fn: void (struct tevent_req *, tevent_req_print_fn) >+tevent_sa_info_queue_count: size_t (void) >+tevent_set_abort_fn: void (void (*)(const char *)) >+tevent_set_debug: int (struct tevent_context *, void (*)(void *, enum tevent_debug_level, const char *, va_list), void *) >+tevent_set_debug_stderr: int (struct tevent_context *) >+tevent_set_default_backend: void (const char *) >+tevent_set_trace_callback: void (struct tevent_context *, tevent_trace_callback_t, void *) >+tevent_signal_support: bool (struct tevent_context *) >+tevent_thread_proxy_create: struct tevent_thread_proxy *(struct tevent_context *) >+tevent_thread_proxy_schedule: void (struct tevent_thread_proxy *, struct tevent_immediate **, tevent_immediate_handler_t, void *) >+tevent_threaded_context_create: struct tevent_threaded_context *(TALLOC_CTX *, struct tevent_context *) >+tevent_timeval_add: struct timeval (const struct timeval *, uint32_t, uint32_t) >+tevent_timeval_compare: int (const struct timeval *, const struct timeval *) >+tevent_timeval_current: struct timeval (void) >+tevent_timeval_current_ofs: struct timeval (uint32_t, uint32_t) >+tevent_timeval_is_zero: bool (const struct timeval *) >+tevent_timeval_set: struct timeval (uint32_t, uint32_t) >+tevent_timeval_until: struct timeval (const struct timeval *, const struct timeval *) >+tevent_timeval_zero: struct timeval (void) >+tevent_trace_point_callback: void (struct tevent_context *, enum tevent_trace_point) >+tevent_update_timer: void (struct tevent_timer *, struct timeval) >+tevent_wakeup_recv: bool (struct tevent_req *) >+tevent_wakeup_send: struct tevent_req *(TALLOC_CTX *, struct tevent_context *, struct timeval) >diff --git a/lib/tevent/wscript b/lib/tevent/wscript >index 2c67f1f57ee..94d190f3b60 100644 >--- a/lib/tevent/wscript >+++ b/lib/tevent/wscript >@@ -1,7 +1,7 @@ > #!/usr/bin/env python > > APPNAME = 'tevent' >-VERSION = '0.9.35' >+VERSION = '0.9.36' > > blddir = 'bin' > >-- >2.13.6 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
metze
:
review+
Actions:
View
Attachments on
bug 13291
: 13996 |
14150