tevent(3) | tevent | tevent(3) |
NAME¶
tevent - The tevent API
- The tevent low-level API.
SYNOPSIS¶
Modules¶
The tevent request functions.
A tevent_req represents an asynchronous computation.
Macros¶
#define TEVENT_FD_READ 1
Monitor a file descriptor for data to be read and errors. #define
TEVENT_FD_WRITE 2
Monitor a file descriptor for writeability. #define TEVENT_FD_ERROR 4
Monitor a file descriptor for errors. #define TEVENT_FD_WRITEABLE(fde)
tevent_fd_set_flags(fde, tevent_fd_get_flags(fde) |
TEVENT_FD_WRITE)
Convenience function for declaring a tevent_fd writable. #define
TEVENT_FD_READABLE(fde) tevent_fd_set_flags(fde,
tevent_fd_get_flags(fde) | TEVENT_FD_READ)
Convenience function for declaring a tevent_fd readable. #define
TEVENT_FD_WANTERROR(fde) tevent_fd_set_flags(fde,
tevent_fd_get_flags(fde) | TEVENT_FD_ERROR)
Convenience function for declaring a tevent_fd waiting for errors. #define
TEVENT_FD_NOT_WRITEABLE(fde) tevent_fd_set_flags(fde,
tevent_fd_get_flags(fde) & ~TEVENT_FD_WRITE)
Convenience function for declaring a tevent_fd non-writable. #define
TEVENT_FD_NOT_READABLE(fde) tevent_fd_set_flags(fde,
tevent_fd_get_flags(fde) & ~TEVENT_FD_READ)
Convenience function for declaring a tevent_fd non-readable. #define
TEVENT_FD_NOT_WANTERROR(fde) tevent_fd_set_flags(fde,
tevent_fd_get_flags(fde) & ~TEVENT_FD_ERROR)
Convenience function for declaring a tevent_fd not waiting for errors.
Typedefs¶
typedef void(* tevent_fd_handler_t) (struct tevent_context
*ev, struct tevent_fd *fde, uint16_t flags, void *private_data)
Called when a file descriptor monitored by tevent has data to be read or
written on it. typedef void(* tevent_fd_close_fn_t) (struct
tevent_context *ev, struct tevent_fd *fde, int fd, void *private_data)
Called when tevent is ceasing the monitoring of a file descriptor. typedef
void(* tevent_timer_handler_t) (struct tevent_context *ev, struct
tevent_timer *te, struct timeval current_time, void *private_data)
Called when a tevent timer has fired. typedef void(*
tevent_immediate_handler_t) (struct tevent_context *ctx, struct
tevent_immediate *im, void *private_data)
Called when a tevent immediate event is invoked. typedef void(*
tevent_signal_handler_t) (struct tevent_context *ev, struct
tevent_signal *se, int signum, int count, void *siginfo, void *private_data)
Called after tevent detects the specified signal. typedef void(*
tevent_debug_fn) (void *context, enum tevent_debug_level
level, const char *fmt, va_list ap)
The tevent debug callbac.
Enumerations¶
enum tevent_debug_level
Debug level of tevent. enum tevent_trace_point {
TEVENT_TRACE_BEFORE_WAIT, TEVENT_TRACE_AFTER_WAIT,
TEVENT_TRACE_BEFORE_LOOP_ONCE, TEVENT_TRACE_AFTER_LOOP_ONCE }
enum tevent_event_trace_point { TEVENT_EVENT_TRACE_ATTACH,
TEVENT_EVENT_TRACE_DETACH, TEVENT_EVENT_TRACE_BEFORE_HANDLER }
Functions¶
struct tevent_context * tevent_context_init (TALLOC_CTX
*mem_ctx)
Create a event_context structure. struct tevent_context *
tevent_context_init_byname (TALLOC_CTX *mem_ctx, const char *name)
Create a event_context structure and select a specific backend. struct
tevent_context * tevent_context_init_ops (TALLOC_CTX *mem_ctx, const
struct tevent_ops *ops, void *additional_data)
Create a custom event context. const char ** tevent_backend_list
(TALLOC_CTX *mem_ctx)
List available backends. void tevent_set_default_backend (const char
*backend)
Set the default tevent backend. struct tevent_fd * tevent_add_fd
(struct tevent_context *ev, TALLOC_CTX *mem_ctx, int fd, uint16_t flags,
tevent_fd_handler_t handler, void *private_data)
Add a file descriptor based event. void tevent_fd_set_tag (struct
tevent_fd *fde, uint64_t tag)
Associate a custom tag with the event. uint64_t tevent_fd_get_tag
(const struct tevent_fd *fde)
Get custom event tag. struct tevent_timer * tevent_add_timer (struct
tevent_context *ev, TALLOC_CTX *mem_ctx, struct timeval next_event,
tevent_timer_handler_t handler, void *private_data)
Add a timed event. void tevent_update_timer (struct tevent_timer *te,
struct timeval next_event)
Set the time a tevent_timer fires. void tevent_timer_set_tag (struct
tevent_timer *te, uint64_t tag)
Associate a custom tag with the event. uint64_t tevent_timer_get_tag
(const struct tevent_timer *te)
Get custom event tag. struct tevent_immediate * tevent_create_immediate
(TALLOC_CTX *mem_ctx)
Initialize an immediate event object. void tevent_schedule_immediate
(struct tevent_immediate *im, struct tevent_context *ctx,
tevent_immediate_handler_t handler, void *private_data)
Schedule an event for immediate execution. void
tevent_immediate_set_tag (struct tevent_immediate *im, uint64_t tag)
Associate a custom tag with the event. uint64_t
tevent_immediate_get_tag (const struct tevent_immediate *fde)
Get custom event tag. struct tevent_signal * tevent_add_signal (struct
tevent_context *ev, TALLOC_CTX *mem_ctx, int signum, int sa_flags,
tevent_signal_handler_t handler, void *private_data)
Add a tevent signal handler. void tevent_signal_set_tag (struct
tevent_signal *se, uint64_t tag)
Associate a custom tag with the event. uint64_t tevent_signal_get_tag
(const struct tevent_signal *se)
Get custom event tag. size_t tevent_num_signals (void)
the number of supported signals size_t tevent_sa_info_queue_count
(void)
the number of pending realtime signals int tevent_loop_once (struct
tevent_context *ev)
Pass a single time through the mainloop. int tevent_loop_wait (struct
tevent_context *ev)
Run the mainloop. void tevent_fd_set_close_fn (struct tevent_fd *fde,
tevent_fd_close_fn_t close_fn)
Assign a function to run when a tevent_fd is freed. void
tevent_fd_set_auto_close (struct tevent_fd *fde)
Automatically close the file descriptor when the tevent_fd is freed. uint16_t
tevent_fd_get_flags (struct tevent_fd *fde)
Return the flags set on this file descriptor event. void
tevent_fd_set_flags (struct tevent_fd *fde, uint16_t flags)
Set flags on a file descriptor event. bool tevent_signal_support
(struct tevent_context *ev)
Query whether tevent supports signal handling. int tevent_set_debug
(struct tevent_context *ev, tevent_debug_fn debug, void *context)
Set destination for tevent debug messages. enum tevent_debug_level
tevent_set_max_debug_level (struct tevent_context *ev, enum
tevent_debug_level max_level)
Set maximum debug level for tevent debug messages. int
tevent_set_debug_stderr (struct tevent_context *ev)
Designate stderr for debug message output. void
tevent_set_trace_callback (struct tevent_context *ev,
tevent_trace_callback_t cb, void *private_data)
Register a callback to be called at certain trace points. void
tevent_get_trace_callback (struct tevent_context *ev,
tevent_trace_callback_t *cb, void *private_data)
Retrieve the current trace callback. void tevent_set_trace_fd_callback
(struct tevent_context *ev, tevent_trace_fd_callback_t cb, void
*private_data)
Register a callback to be called at certain trace points of fd event. void
tevent_get_trace_fd_callback (struct tevent_context *ev,
tevent_trace_fd_callback_t *cb, void *p_private_data)
Retrieve the current trace callback of file descriptor event. void
tevent_set_trace_signal_callback (struct tevent_context *ev,
tevent_trace_signal_callback_t cb, void *private_data)
Register a callback to be called at certain trace points of signal event. void
tevent_get_trace_signal_callback (struct tevent_context *ev,
tevent_trace_signal_callback_t *cb, void *p_private_data)
Retrieve the current trace callback of signal event. void
tevent_set_trace_timer_callback (struct tevent_context *ev,
tevent_trace_timer_callback_t cb, void *private_data)
Register a callback to be called at certain trace points of timer event. void
tevent_get_trace_timer_callback (struct tevent_context *ev,
tevent_trace_timer_callback_t *cb, void *p_private_data)
Retrieve the current trace callback of timer event. void
tevent_set_trace_immediate_callback (struct tevent_context *ev,
tevent_trace_immediate_callback_t cb, void *private_data)
Register a callback to be called at certain trace points of immediate event.
void tevent_get_trace_immediate_callback (struct tevent_context *ev,
tevent_trace_immediate_callback_t *cb, void *p_private_data)
Retrieve the current trace callback of immediate event.
Detailed Description¶
The tevent low-level API.
This API provides the public interface to manage events in the tevent mainloop. Functions are provided for managing low-level events such as timer events, fd events and signal handling.
Macro Definition Documentation¶
#define TEVENT_FD_ERROR 4¶
Monitor a file descriptor for errors. Note: we map this from/to POLLHUP, POLLERR and where available POLLRDHUP
#define TEVENT_FD_READ 1¶
Monitor a file descriptor for data to be read and errors. Note: we map this from/to POLLIN, POLLHUP, POLLERR and where available POLLRDHUP
#define TEVENT_FD_WRITE 2¶
Monitor a file descriptor for writeability. Note: we map this from/to POLLOUT
Typedef Documentation¶
typedef void(* tevent_debug_fn) (void *context, enum tevent_debug_level level, const char *fmt, va_list ap)¶
The tevent debug callbac.
Parameters
level The debug level.
fmt The format string.
ap The arguments for the format string.
Enumeration Type Documentation¶
enum tevent_event_trace_point¶
Enumerator
- TEVENT_EVENT_TRACE_ATTACH
- Corresponds to a trace point just before the event is added.
- TEVENT_EVENT_TRACE_DETACH
- Corresponds to a trace point just before the event is removed.
- TEVENT_EVENT_TRACE_BEFORE_HANDLER
- Corresponds to a trace point just before the event handler is called.
enum tevent_trace_point¶
Enumerator
- TEVENT_TRACE_BEFORE_WAIT
- Corresponds to a trace point just before waiting.
- TEVENT_TRACE_AFTER_WAIT
- Corresponds to a trace point just after waiting.
- TEVENT_TRACE_BEFORE_LOOP_ONCE
- Corresponds to a trace point just before calling the loop_once() backend function.
- TEVENT_TRACE_AFTER_LOOP_ONCE
- Corresponds to a trace point right after the loop_once() backend function has returned.
Function Documentation¶
struct tevent_fd* tevent_add_fd (struct tevent_context * ev, TALLOC_CTX * mem_ctx, int fd, uint16_t flags, tevent_fd_handler_t handler, void * private_data)¶
Add a file descriptor based event.
Parameters
mem_ctx The talloc memory context to use.
fd The file descriptor to base the event on.
flags TEVENT_FD_READ, TEVENT_FD_WRITE or TEVENT_FD_ERROR.
handler The callback handler for the event.
private_data The private data passed to the callback handler.
Returns
Note
The caller should avoid closing the file descriptor before calling talloc_free()! Otherwise the behaviour is undefined which might result in crashes. See https://bugzilla.samba.org/show_bug.cgi?id=11141 for an example.
struct tevent_signal* tevent_add_signal (struct tevent_context * ev, TALLOC_CTX * mem_ctx, int signum, int sa_flags, tevent_signal_handler_t handler, void * private_data)¶
Add a tevent signal handler. tevent_add_signal() creates a new event for handling a signal the next time through the mainloop. It implements a very simple traditional signal handler whose only purpose is to add the handler event into the mainloop.
Parameters
mem_ctx The talloc memory context to use.
signum The signal to trap
handler The callback handler for the signal.
sa_flags sigaction flags for this signal handler.
private_data The private data passed to the callback handler.
Returns
Note
See also
struct tevent_timer* tevent_add_timer (struct tevent_context * ev, TALLOC_CTX * mem_ctx, struct timeval next_event, tevent_timer_handler_t handler, void * private_data)¶
Add a timed event.
Parameters
mem_ctx The talloc memory context to use.
next_event Timeval specifying the absolute time to fire this event. This is not an offset.
handler The callback handler for the event.
private_data The private data passed to the callback handler.
Returns
Note
Unlike some mainloops, tevent timers are one-time events. To set up a recurring event, it is necessary to call tevent_add_timer() again during the handler processing.
Due to the internal mainloop processing, a timer set to run immediately will do so after any other pending timers fire, but before any further file descriptor or signal handling events fire. Callers should not rely on this behavior!
const char** tevent_backend_list (TALLOC_CTX * mem_ctx)¶
List available backends.
Parameters
Returns
struct tevent_context* tevent_context_init (TALLOC_CTX * mem_ctx)¶
Create a event_context structure. This must be the first events call, and all subsequent calls pass this event_context as the first element. Event handlers also receive this as their first argument.
Parameters
Returns
See also
struct tevent_context* tevent_context_init_byname (TALLOC_CTX * mem_ctx, const char * name)¶
Create a event_context structure and select a specific backend. This must be the first events call, and all subsequent calls pass this event_context as the first element. Event handlers also receive this as their first argument.
Parameters
name The name of the backend to use.
Returns
struct tevent_context* tevent_context_init_ops (TALLOC_CTX * mem_ctx, const struct tevent_ops * ops, void * additional_data)¶
Create a custom event context.
Parameters
ops The function pointer table of the backend.
additional_data The additional/private data to this instance
Returns
struct tevent_immediate* tevent_create_immediate (TALLOC_CTX * mem_ctx)¶
Initialize an immediate event object. This object can be used to trigger an event to occur immediately after returning from the current event (before any other event occurs)
Parameters
Returns
Note
uint16_t tevent_fd_get_flags (struct tevent_fd * fde)¶
Return the flags set on this file descriptor event.
Parameters
Returns
void tevent_fd_set_auto_close (struct tevent_fd * fde)¶
Automatically close the file descriptor when the tevent_fd is freed. This function calls close(fd) internally.
Parameters
See also
void tevent_fd_set_close_fn (struct tevent_fd * fde, tevent_fd_close_fn_t close_fn)¶
Assign a function to run when a tevent_fd is freed. This function is a destructor for the tevent_fd. It does not automatically close the file descriptor. If this is the desired behavior, then it must be performed by the close_fn.
Parameters
close_fn Destructor to execute when fde is freed
Note
See also
tevent_context_wrapper_create
void tevent_fd_set_flags (struct tevent_fd * fde, uint16_t flags)¶
Set flags on a file descriptor event.
Parameters
flags Flags to set on the event. See TEVENT_FD_READ, TEVENT_FD_WRITE and TEVENT_FD_ERROR
void tevent_fd_set_tag (struct tevent_fd * fde, uint64_t tag)¶
Associate a custom tag with the event. This tag can be then retrieved with tevent_fd_get_tag()
Parameters
tag Custom tag.
void tevent_get_trace_callback (struct tevent_context * ev, tevent_trace_callback_t * cb, void * private_data)¶
Retrieve the current trace callback.
Parameters
cb Registered trace callback
private_data Registered data to be passed to callback
Note
void tevent_get_trace_fd_callback (struct tevent_context * ev, tevent_trace_fd_callback_t * cb, void * p_private_data)¶
Retrieve the current trace callback of file descriptor event.
Parameters
cb Registered trace callback
p_private_data Registered data to be passed to callback
Note
void tevent_get_trace_immediate_callback (struct tevent_context * ev, tevent_trace_immediate_callback_t * cb, void * p_private_data)¶
Retrieve the current trace callback of immediate event.
Parameters
cb Registered trace callback
p_private_data Registered data to be passed to callback
Note
void tevent_get_trace_signal_callback (struct tevent_context * ev, tevent_trace_signal_callback_t * cb, void * p_private_data)¶
Retrieve the current trace callback of signal event.
Parameters
cb Registered trace callback
p_private_data Registered data to be passed to callback
Note
void tevent_get_trace_timer_callback (struct tevent_context * ev, tevent_trace_timer_callback_t * cb, void * p_private_data)¶
Retrieve the current trace callback of timer event.
Parameters
cb Registered trace callback
p_private_data Registered data to be passed to callback
Note
void tevent_immediate_set_tag (struct tevent_immediate * im, uint64_t tag)¶
Associate a custom tag with the event. This tag can be then retrieved with tevent_immediate_get_tag()
Parameters
tag Custom tag.
int tevent_loop_once (struct tevent_context * ev)¶
Pass a single time through the mainloop. This will process any appropriate signal, immediate, fd and timer events
Parameters
Returns
int tevent_loop_wait (struct tevent_context * ev)¶
Run the mainloop. The mainloop will run until there are no events remaining to be processed
Parameters
Returns
size_t tevent_num_signals (void)¶
the number of supported signals This returns value of the configure time TEVENT_NUM_SIGNALS constant.
The 'signum' argument of tevent_add_signal() must be less than TEVENT_NUM_SIGNALS.
See also
size_t tevent_sa_info_queue_count (void)¶
the number of pending realtime signals This returns value of TEVENT_SA_INFO_QUEUE_COUNT.
The tevent internals remember the last TEVENT_SA_INFO_QUEUE_COUNT siginfo_t structures for SA_SIGINFO signals. If the system generates more some signals get lost.
See also
void tevent_schedule_immediate (struct tevent_immediate * im, struct tevent_context * ctx, tevent_immediate_handler_t handler, void * private_data)¶
Schedule an event for immediate execution. This event will occur immediately after returning from the current event (before any other event occurs)
Parameters
ctx The tevent_context to run this event
handler The event handler to run when this event fires
private_data Data to pass to the event handler
int tevent_set_debug (struct tevent_context * ev, tevent_debug_fn debug, void * context)¶
Set destination for tevent debug messages. As of version 0.15.0 the invocation of the debug function for individual messages is limited by the current max_debug_level, which means TEVENT_DEBUG_TRACE messages are not passed by default:
- tevent_set_debug() with debug == NULL implies tevent_set_max_debug_level(ev, TEVENT_DEBUG_FATAL).
- tevent_set_debug() with debug != NULL implies tevent_set_max_debug_level(ev, TEVENT_DEBUG_WARNING).
Parameters
debug Function to handle output printing
context The context to pass to the debug function.
Returns
Note
See also
int tevent_set_debug_stderr (struct tevent_context * ev)¶
Designate stderr for debug message output.
Parameters
Note
void tevent_set_default_backend (const char * backend)¶
Set the default tevent backend.
Parameters
enum tevent_debug_level tevent_set_max_debug_level (struct tevent_context * ev, enum tevent_debug_level max_level)¶
Set maximum debug level for tevent debug messages.
Parameters
max_level Function to handle output printing
Returns
See also
Note
void tevent_set_trace_callback (struct tevent_context * ev, tevent_trace_callback_t cb, void * private_data)¶
Register a callback to be called at certain trace points.
Parameters
cb Trace callback
private_data Data to be passed to callback
Note
void tevent_set_trace_fd_callback (struct tevent_context * ev, tevent_trace_fd_callback_t cb, void * private_data)¶
Register a callback to be called at certain trace points of fd event.
Parameters
cb Trace callback
private_data Data to be passed to callback
Note
void tevent_set_trace_immediate_callback (struct tevent_context * ev, tevent_trace_immediate_callback_t cb, void * private_data)¶
Register a callback to be called at certain trace points of immediate event.
Parameters
cb Trace callback
private_data Data to be passed to callback
Note
void tevent_set_trace_signal_callback (struct tevent_context * ev, tevent_trace_signal_callback_t cb, void * private_data)¶
Register a callback to be called at certain trace points of signal event.
Parameters
cb Trace callback
private_data Data to be passed to callback
Note
void tevent_set_trace_timer_callback (struct tevent_context * ev, tevent_trace_timer_callback_t cb, void * private_data)¶
Register a callback to be called at certain trace points of timer event.
Parameters
cb Trace callback
private_data Data to be passed to callback
Note
void tevent_signal_set_tag (struct tevent_signal * se, uint64_t tag)¶
Associate a custom tag with the event. This tag can be then retrieved with tevent_signal_get_tag()
Parameters
tag Custom tag.
bool tevent_signal_support (struct tevent_context * ev)¶
Query whether tevent supports signal handling.
Parameters
Returns
void tevent_timer_set_tag (struct tevent_timer * te, uint64_t tag)¶
Associate a custom tag with the event. This tag can be then retrieved with tevent_timer_get_tag()
Parameters
tag Custom tag.
void tevent_update_timer (struct tevent_timer * te, struct timeval next_event)¶
Set the time a tevent_timer fires.
Parameters
next_event Timeval specifying the absolute time to fire this event. This is not an offset.
Author¶
Generated automatically by Doxygen for tevent from the source code.
Mon Dec 4 2023 | Version 0.9.8 |