#include "monitor.h"
#include <ucontext.h>
#include "sysinfo.h"
Defines | |
| #define | _GNU_SOURCE /* allows F_SETSIG */ |
| #define | INHANDLERCONTEXT(mon) ( aw_in_monthread( (mon)->handler_q.thread ) ) |
| #define | SEND_HANDLER_EVENT(args, trigger_event, event_sig, type, slot, val) |
| ###################### support for handler events | |
| #define | SEND_MONITOR_EVENT(mon, event_sig, type, slot, val) |
| ###################### support for monitor events | |
Functions | |
| aw_handlerid_t | aw_add_handler (aw_monitor_t *mon, aw_handler_t *handler) |
| Add handler to list of executing handlers. | |
| int32_t | aw_add_handler_fdcallback (aw_monitor_t *mon, aw_handler_t *handler, int32_t fd, aw_handler_code_t(*callback)(aw_handler_args_t *args, int32_t fd)) |
| Register a callback to be called when data is available on fd for a handler. Only executed for RUNNING handler. Relationship is 1-1 for fd to handler. | |
| int32_t | aw_add_handler_irecallback (aw_monitor_t *mon, aw_handler_t *handler, aw_address_t ire_id, aw_alarm_sched_t *sched, aw_handler_code_t(*callback)(aw_handler_args_t *args, aw_event_t *e)) |
| Register a callback to be called for every "interrupt" event.Only executed for RUNNING handler. Relationship is 1-1 for fd to handler. | |
| aw_monitor_t * | aw_create_monitor (aw_monitor_params_t *params) |
| Malloc , clear, set, init mutex, return object. | |
| void | aw_destroy_monitor (aw_monitor_t *mon) |
| Cleanup , free resources. | |
| void | aw_handler_append_outq (aw_event_t *e, aw_event_t *te, aw_handler_args_t *args) |
| Send event to handlers. | |
| void | aw_handler_float32_event (aw_handler_args_t *args, aw_event_t *trigger_event, aw_event_sig_t *event_sig, float32_t val) |
| Send float32 event to handlers. | |
| void | aw_handler_float64_event (aw_handler_args_t *args, aw_event_t *trigger_event, aw_event_sig_t *event_sig, float64_t val) |
| Send float64 event to handlers. | |
| void | aw_handler_int32_event (aw_handler_args_t *args, aw_event_t *trigger_event, aw_event_sig_t *event_sig, u_int32_t val) |
| Send int32 event to handlers. | |
| void | aw_handler_int64_event (aw_handler_args_t *args, aw_event_t *trigger_event, aw_event_sig_t *event_sig, u_int64_t val) |
| Send int64 event to handlers. | |
| void | aw_handler_string_event (aw_handler_args_t *args, aw_event_t *trigger_event, aw_event_sig_t *event_sig, byte_t *val, int32_t dup) |
| Send string event to handlers, NOTE: this will free the string later! | |
| void | aw_handler_timestamp_event (aw_handler_args_t *args, aw_event_t *trigger_event, aw_event_sig_t *event_sig, aw_timestamp_t val) |
| Send timestamp event to handlers. | |
| void | aw_monitor_append_event (aw_event_t *event, aw_monitor_t *mon) |
| Send event to handlers. | |
| void | aw_monitor_append_q (aw_event_q_t *q, aw_monitor_t *mon) |
| Dump contents of q to handlers. | |
| void | aw_monitor_float32_event (aw_monitor_t *mon, aw_event_sig_t *event_sig, float32_t val) |
| Send float32 event to handlers. | |
| void | aw_monitor_float64_event (aw_monitor_t *mon, aw_event_sig_t *event_sig, float64_t val) |
| Send float64 event to handlers. | |
| void | aw_monitor_int32_event (aw_monitor_t *mon, aw_event_sig_t *event_sig, u_int32_t val) |
| Send int32 event to handlers. | |
| void | aw_monitor_int64_event (aw_monitor_t *mon, aw_event_sig_t *event_sig, u_int64_t val) |
| Send int64 event to handlers. | |
| void | aw_monitor_logstats (aw_monitor_t *mon, aw_logger_t *logger) |
| Print monitor stats to logger. | |
| void | aw_monitor_string_event (aw_monitor_t *mon, aw_event_sig_t *event_sig, byte_t *val, int32_t dup) |
| Send string event to handlers, NOTE: this will free the string later! | |
| void | aw_monitor_timestamp_event (aw_monitor_t *mon, aw_event_sig_t *event_sig, aw_timestamp_t val) |
| Send timestamp event to handlers. | |
| aw_address_t | aw_next_event_id (aw_monitor_t *mon) |
| Increment and return event id. | |
| void | aw_remove_handler (aw_monitor_t *mon, aw_handlerid_t id) |
| Remove handler from list of executing handlers. | |
| int32_t | aw_remove_handler_fdcallback (aw_monitor_t *mon, int32_t fd) |
| Unregister a callback to be called when data is available on fd. | |
| int32_t | aw_remove_handler_irecallback (aw_monitor_t *mon, aw_address_t ire_id) |
| Unregister a callback. | |
| void | aw_reschedule_handler (aw_monitor_t *mon, aw_handler_t *handler, aw_alarm_sched_t *sched) |
| Alter an existing schedule for a handler. | |
| aw_address_t | aw_reserve_event_mask_bit (aw_monitor_t *mon) |
| Returns a mask with 1 bit set guaranteed to be unique. | |
| void | aw_signal_handler_irecallback (aw_monitor_t *mon, aw_address_t ire_id) |
| Sends an interrupt event to cause the handler to run. | |
| int32_t | aw_wait_monitor (aw_monitor_t *mon) |
| Block until all monitor threads exit. | |
|
|
|
|
|
|
|
|
Value: { \
if ( likely( event_sig -> id != 0 ) ) { /* routeable??? */ \
aw_cache_allocator_t \
*ef = (args->h->tasklet)?NULL:args->ef; /* can't share ef from tasklets! */ \
aw_event_t \
*event ; \
\
event = aw_create_event(AW_EVENT_CONTEXT_HANDLER, ef); \
\
if ( likely( event != NULL ) ) { \
\
event->tstamp = args->currenttime; \
event->payload_type = type ; \
event->payload. slot = val; \
event->sig = *event_sig; \
aw_handler_append_outq(event, trigger_event, args); \
\
}/* end if */ \
}/* end if */ \
}
|
|
|
Value: { \
if ( likely( event_sig -> id != 0 ) ) { /* routeable??? */ \
aw_event_t \
*event ; \
\
event = aw_create_event(AW_EVENT_CONTEXT_EXTERNAL, NULL); \
\
if ( likely ( event != NULL ) ) { \
\
event->tstamp = aw_gettimestamp(); \
event->payload_type = type ; \
event->payload. slot = val; \
event->sig = *event_sig; \
\
aw_monitor_append_event(event, mon); \
\
}/* end if */ \
}/* end if */ \
}
|
|
||||||||||||
|
Add handler to list of executing handlers. aw_add_handler
|
|
||||||||||||||||||||
|
Register a callback to be called when data is available on fd for a handler. Only executed for RUNNING handler. Relationship is 1-1 for fd to handler. aw_add_handler_fdcallback
|
|
||||||||||||||||||||||||
|
Register a callback to be called for every "interrupt" event.Only executed for RUNNING handler. Relationship is 1-1 for fd to handler. aw_add_handler_irecallback
|
|
|
Malloc , clear, set, init mutex, return object. aw_create_monitor
|
|
|
Cleanup , free resources. aw_destroy_monitor
|
|
||||||||||||||||
|
Send event to handlers. aw_handler_append_outq
|
|
||||||||||||||||||||
|
Send float32 event to handlers. aw_handler_float32_event
|
|
||||||||||||||||||||
|
Send float64 event to handlers. aw_handler_float64_event
|
|
||||||||||||||||||||
|
Send int32 event to handlers. aw_handler_int32_event
|
|
||||||||||||||||||||
|
Send int64 event to handlers. aw_handler_int64_event
|
|
||||||||||||||||||||||||
|
Send string event to handlers, NOTE: this will free the string later! aw_handler_string_event
|
|
||||||||||||||||||||
|
Send timestamp event to handlers. aw_handler_timestamp_event
|
|
||||||||||||
|
Send event to handlers. aw_monitor_append_event
|
|
||||||||||||
|
Dump contents of q to handlers. aw_monitor_append_q
|
|
||||||||||||||||
|
Send float32 event to handlers. aw_monitor_float32_event
|
|
||||||||||||||||
|
Send float64 event to handlers. aw_monitor_float64_event
|
|
||||||||||||||||
|
Send int32 event to handlers. aw_monitor_int32_event
|
|
||||||||||||||||
|
Send int64 event to handlers. aw_monitor_int64_event
|
|
||||||||||||
|
Print monitor stats to logger. aw_monitor_logstats
|
|
||||||||||||||||||||
|
Send string event to handlers, NOTE: this will free the string later! aw_monitor_string_event
|
|
||||||||||||||||
|
Send timestamp event to handlers. aw_monitor_timestamp_event
|
|
|
Increment and return event id. aw_next_event_id
|
|
||||||||||||
|
Remove handler from list of executing handlers. aw_remove_handler
|
|
||||||||||||
|
Unregister a callback to be called when data is available on fd. aw_remove_handler_fdcallback
|
|
||||||||||||
|
Unregister a callback. aw_remove_handler_irecallback
|
|
||||||||||||||||
|
Alter an existing schedule for a handler. aw_reschedule_handler
|
|
|
Returns a mask with 1 bit set guaranteed to be unique. aw_reserve_event_mask_bit
|
|
||||||||||||
|
Sends an interrupt event to cause the handler to run. aw_signal_handler_irecallback
|
|
|
Block until all monitor threads exit. aw_wait_monitor
|