_tevent_req_oom: void (struct tevent_req *, const char *)
_tevent_req_set_callback: void (struct tevent_req *, tevent_req_fn, const char *, void *)
_tevent_req_set_cancel_fn: void (struct tevent_req *, tevent_req_cancel_fn, const char *)
+_tevent_req_set_cleanup_fn: void (struct tevent_req *, tevent_req_cleanup_fn, 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_abort: void (struct tevent_context *, const char *)
* @param[in] fn A pointer to the cancel function.
*/
void tevent_req_set_cleanup_fn(struct tevent_req *req, tevent_req_cleanup_fn fn);
+void _tevent_req_set_cleanup_fn(struct tevent_req *req,
+ tevent_req_cleanup_fn fn,
+ const char *fn_name);
+#define tevent_req_set_cleanup_fn(req, fn) \
+ _tevent_req_set_cleanup_fn(req, fn, #fn)
#ifdef DOXYGEN
/**
*/
struct {
tevent_req_cleanup_fn fn;
+ const char *fn_name;
enum tevent_req_state state;
} private_cleanup;
#undef tevent_req_set_callback
#undef tevent_req_set_cancel_fn
+#undef tevent_req_set_cleanup_fn
char *tevent_req_default_print(struct tevent_req *req, TALLOC_CTX *mem_ctx)
{
}
void tevent_req_set_cleanup_fn(struct tevent_req *req, tevent_req_cleanup_fn fn)
+{
+ _tevent_req_set_cleanup_fn(req, fn, NULL);
+}
+
+void _tevent_req_set_cleanup_fn(struct tevent_req *req,
+ tevent_req_cleanup_fn fn,
+ const char *fn_name)
{
req->private_cleanup.state = req->internal.state;
req->private_cleanup.fn = fn;
+ req->private_cleanup.fn_name = fn != NULL ? fn_name : NULL;
}
static int tevent_req_profile_destructor(struct tevent_req_profile *p);