
Go to the source code of this file.
Data Structures | |
| struct | ao2_global_obj |
| struct | ao2_iterator |
| When we need to walk through a container, we use an ao2_iterator to keep track of the current position. More... | |
Defines | |
| #define | ao2_callback_data(container, flags, cb_fn, arg, data) __ao2_callback_data((container), (flags), (cb_fn), (arg), (data)) |
| #define | ao2_cleanup(obj) __ao2_cleanup(obj) |
| #define | ao2_find(container, arg, flags) __ao2_find((container), (arg), (flags)) |
| #define | ao2_global_obj_ref(holder) __ao2_global_obj_ref(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| #define | ao2_global_obj_release(holder) __ao2_global_obj_release(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| #define | ao2_global_obj_replace(holder, obj) __ao2_global_obj_replace(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| #define | ao2_global_obj_replace_unref(holder, obj) __ao2_global_obj_replace_unref(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| #define | AO2_GLOBAL_OBJ_STATIC(name) |
| Define a global object holder to be used to hold an ao2 object, statically initialized. | |
| #define | ao2_iterator_next(iter) __ao2_iterator_next((iter)) |
| #define | ao2_lock(a) __ao2_lock(a, AO2_LOCK_REQ_MUTEX, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define | ao2_rdlock(a) __ao2_lock(a, AO2_LOCK_REQ_RDLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define | ao2_t_callback_data(container, flags, cb_fn, arg, data, tag) __ao2_callback_data((container), (flags), (cb_fn), (arg), (data)) |
| ao2_callback_data() is a generic function that applies cb_fn() to all objects in a container. It is functionally identical to ao2_callback() except that instead of taking an ao2_callback_fn *, it takes an ao2_callback_data_fn *, and allows the caller to pass in arbitrary data. | |
| #define | ao2_t_find(container, arg, flags, tag) __ao2_find((container), (arg), (flags)) |
| #define | ao2_t_global_obj_ref(holder, tag) __ao2_global_obj_ref(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| Get a reference to the object stored in the global holder. | |
| #define | ao2_t_global_obj_release(holder, tag) __ao2_global_obj_release(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| Release the ao2 object held in the global holder. | |
| #define | ao2_t_global_obj_replace(holder, obj, tag) __ao2_global_obj_replace(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| Replace an ao2 object in the global holder. | |
| #define | ao2_t_global_obj_replace_unref(holder, obj, tag) __ao2_global_obj_replace_unref(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| Replace an ao2 object in the global holder, throwing away any old object. | |
| #define | ao2_t_iterator_next(iter, tag) __ao2_iterator_next((iter)) |
| #define | ao2_trylock(a) __ao2_trylock(a, AO2_LOCK_REQ_MUTEX, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define | ao2_tryrdlock(a) __ao2_trylock(a, AO2_LOCK_REQ_RDLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define | ao2_trywrlock(a) __ao2_trylock(a, AO2_LOCK_REQ_WRLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define | ao2_unlock(a) __ao2_unlock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define | ao2_wrlock(a) __ao2_lock(a, AO2_LOCK_REQ_WRLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Typedefs | |
| typedef int( | ao2_callback_data_fn )(void *obj, void *arg, void *data, int flags) |
| Type of a generic callback function. | |
| typedef int( | ao2_callback_fn )(void *obj, void *arg, int flags) |
| Type of a generic callback function. | |
| typedef void(* | ao2_destructor_fn )(void *) |
| Typedef for an object destructor. This is called just before freeing the memory for the object. It is passed a pointer to the user-defined data of the object. | |
| typedef int( | ao2_hash_fn )(const void *obj, int flags) |
Enumerations | |
| enum | _cb_results { CMP_MATCH = 0x1, CMP_STOP = 0x2 } |
| A callback function will return a combination of CMP_MATCH and CMP_STOP. The latter will terminate the search in a container. More... | |
| enum | ao2_alloc_opts { AO2_ALLOC_OPT_LOCK_MUTEX = (0 << 0), AO2_ALLOC_OPT_LOCK_RWLOCK = (1 << 0), AO2_ALLOC_OPT_LOCK_NOLOCK = (2 << 0), AO2_ALLOC_OPT_LOCK_MASK = (3 << 0) } |
| Options available when allocating an ao2 object. More... | |
| enum | ao2_iterator_flags { AO2_ITERATOR_DONTLOCK = (1 << 0), AO2_ITERATOR_MALLOCD = (1 << 1), AO2_ITERATOR_UNLINK = (1 << 2) } |
| enum | ao2_lock_req { AO2_LOCK_REQ_MUTEX, AO2_LOCK_REQ_RDLOCK, AO2_LOCK_REQ_WRLOCK } |
| Which lock to request. More... | |
| enum | search_flags { OBJ_UNLINK = (1 << 0), OBJ_NODATA = (1 << 1), OBJ_MULTIPLE = (1 << 2), OBJ_POINTER = (1 << 3), OBJ_CONTINUE = (1 << 4), OBJ_NOLOCK = (1 << 5), OBJ_KEY = (1 << 6) } |
| Flags passed to ao2_callback() and ao2_hash_fn() to modify its behaviour. More... | |
Functions | |
| void * | __ao2_callback_data (struct ao2_container *c, enum search_flags flags, ao2_callback_data_fn *cb_fn, void *arg, void *data) |
| void * | __ao2_callback_data_debug (struct ao2_container *c, enum search_flags flags, ao2_callback_data_fn *cb_fn, void *arg, void *data, const char *tag, const char *file, int line, const char *func) |
| void | __ao2_cleanup (void *obj) |
| void | __ao2_cleanup_debug (void *obj, const char *file, int line, const char *function) |
| void * | __ao2_find (struct ao2_container *c, const void *arg, enum search_flags flags) |
| void * | __ao2_find_debug (struct ao2_container *c, const void *arg, enum search_flags flags, const char *tag, const char *file, int line, const char *func) |
| void * | __ao2_global_obj_ref (struct ao2_global_obj *holder, const char *tag, const char *file, int line, const char *func, const char *name) |
| void | __ao2_global_obj_release (struct ao2_global_obj *holder, const char *tag, const char *file, int line, const char *func, const char *name) |
| void * | __ao2_global_obj_replace (struct ao2_global_obj *holder, void *obj, const char *tag, const char *file, int line, const char *func, const char *name) |
| int | __ao2_global_obj_replace_unref (struct ao2_global_obj *holder, void *obj, const char *tag, const char *file, int line, const char *func, const char *name) |
| void * | __ao2_iterator_next (struct ao2_iterator *iter) |
| void * | __ao2_iterator_next_debug (struct ao2_iterator *iter, const char *tag, const char *file, int line, const char *func) |
| int | __ao2_lock (void *a, enum ao2_lock_req lock_how, const char *file, const char *func, int line, const char *var) |
| Lock an object. | |
| int | __ao2_trylock (void *a, enum ao2_lock_req lock_how, const char *file, const char *func, int line, const char *var) |
| Try locking-- (don't block if fail) | |
| int | __ao2_unlock (void *a, const char *file, const char *func, int line, const char *var) |
| Unlock an object. | |
| void | ao2_bt (void) |
| void | ao2_iterator_cleanup (struct ao2_iterator *iter) |
| void | ao2_iterator_destroy (struct ao2_iterator *iter) |
| Destroy a container iterator. | |
| struct ao2_iterator | ao2_iterator_init (struct ao2_container *c, int flags) |
| Create an iterator for a container. | |
| int | ao2_match_by_addr (void *obj, void *arg, int flags) |
| A common ao2_callback is one that matches by address. | |
| void * | ao2_object_get_lockaddr (void *obj) |
| Return the mutex lock address of an object. | |
| #define | ao2_t_alloc_options(data_size, destructor_fn, options, debug_msg) __ao2_alloc((data_size), (destructor_fn), (options)) |
| Allocate and initialize an object. | |
| #define | ao2_alloc_options(data_size, destructor_fn, options) __ao2_alloc((data_size), (destructor_fn), (options)) |
| #define | ao2_t_alloc(data_size, destructor_fn, debug_msg) __ao2_alloc((data_size), (destructor_fn), AO2_ALLOC_OPT_LOCK_MUTEX) |
| #define | ao2_alloc(data_size, destructor_fn) __ao2_alloc((data_size), (destructor_fn), AO2_ALLOC_OPT_LOCK_MUTEX) |
| void * | __ao2_alloc_debug (size_t data_size, ao2_destructor_fn destructor_fn, unsigned int options, const char *tag, const char *file, int line, const char *func, int ref_debug) |
| void * | __ao2_alloc (size_t data_size, ao2_destructor_fn destructor_fn, unsigned int options) |
| #define | ao2_t_ref(o, delta, tag) __ao2_ref((o), (delta)) |
| Reference/unreference an object and return the old refcount. | |
| #define | ao2_ref(o, delta) __ao2_ref((o), (delta)) |
| int | __ao2_ref_debug (void *o, int delta, const char *tag, const char *file, int line, const char *func) |
| int | __ao2_ref (void *o, int delta) |
Object Containers | |
| #define | ao2_t_container_alloc_options(options, n_buckets, hash_fn, cmp_fn, tag) __ao2_container_alloc((options), (n_buckets), (hash_fn), (cmp_fn)) |
| Allocate and initialize a hash container with the desired number of buckets. | |
| #define | ao2_container_alloc_options(options, n_buckets, hash_fn, cmp_fn) __ao2_container_alloc((options), (n_buckets), (hash_fn), (cmp_fn)) |
| #define | ao2_t_container_alloc(n_buckets, hash_fn, cmp_fn, tag) __ao2_container_alloc(AO2_ALLOC_OPT_LOCK_MUTEX, (n_buckets), (hash_fn), (cmp_fn)) |
| #define | ao2_container_alloc(n_buckets, hash_fn, cmp_fn) __ao2_container_alloc(AO2_ALLOC_OPT_LOCK_MUTEX, (n_buckets), (hash_fn), (cmp_fn)) |
| #define | ao2_t_container_clone(orig, flags, tag) __ao2_container_clone(orig, flags) |
| #define | ao2_container_clone(orig, flags) __ao2_container_clone(orig, flags) |
| struct ao2_container * | __ao2_container_alloc (unsigned int options, unsigned int n_buckets, ao2_hash_fn *hash_fn, ao2_callback_fn *cmp_fn) |
| struct ao2_container * | __ao2_container_alloc_debug (unsigned int options, unsigned int n_buckets, ao2_hash_fn *hash_fn, ao2_callback_fn *cmp_fn, const char *tag, const char *file, int line, const char *func, int ref_debug) |
| int | ao2_container_count (struct ao2_container *c) |
| Returns the number of elements in a container. | |
| int | ao2_container_dup (struct ao2_container *dest, struct ao2_container *src, enum search_flags flags) |
| Copy all object references in the src container into the dest container. | |
| struct ao2_container * | __ao2_container_clone (struct ao2_container *orig, enum search_flags flags) |
| Create a clone/copy of the given container. | |
| struct ao2_container * | __ao2_container_clone_debug (struct ao2_container *orig, enum search_flags flags, const char *tag, const char *file, int line, const char *func, int ref_debug) |
Object Management | |
Here we have functions to manage objects. We can use the functions below on any kind of object defined by the user. | |
| #define | ao2_t_link(container, obj, tag) __ao2_link((container), (obj), 0) |
| Add an object to a container. | |
| #define | ao2_link(container, obj) __ao2_link((container), (obj), 0) |
| #define | ao2_t_link_flags(container, obj, flags, tag) __ao2_link((container), (obj), (flags)) |
| #define | ao2_link_flags(container, obj, flags) __ao2_link((container), (obj), (flags)) |
| #define | ao2_t_unlink(container, obj, tag) __ao2_unlink((container), (obj), 0) |
| Remove an object from a container. | |
| #define | ao2_unlink(container, obj) __ao2_unlink((container), (obj), 0) |
| #define | ao2_t_unlink_flags(container, obj, flags, tag) __ao2_unlink((container), (obj), (flags)) |
| #define | ao2_unlink_flags(container, obj, flags) __ao2_unlink((container), (obj), (flags)) |
| void * | __ao2_link_debug (struct ao2_container *c, void *obj_new, int flags, const char *tag, const char *file, int line, const char *func) |
| void * | __ao2_link (struct ao2_container *c, void *obj_new, int flags) |
| void * | __ao2_unlink_debug (struct ao2_container *c, void *obj, int flags, const char *tag, const char *file, int line, const char *func) |
| void * | __ao2_unlink (struct ao2_container *c, void *obj, int flags) |
| #define | ao2_t_callback(c, flags, cb_fn, arg, tag) __ao2_callback((c), (flags), (cb_fn), (arg)) |
| ao2_callback() is a generic function that applies cb_fn() to all objects in a container, as described below. | |
| #define | ao2_callback(c, flags, cb_fn, arg) __ao2_callback((c), (flags), (cb_fn), (arg)) |
| void * | __ao2_callback_debug (struct ao2_container *c, enum search_flags flags, ao2_callback_fn *cb_fn, void *arg, const char *tag, const char *file, int line, const char *func) |
| void * | __ao2_callback (struct ao2_container *c, enum search_flags flags, ao2_callback_fn *cb_fn, void *arg) |
Object Model implementing objects and containers.
Definition in file astobj2.h.
| #define ao2_alloc | ( | data_size, | |
| destructor_fn | |||
| ) | __ao2_alloc((data_size), (destructor_fn), AO2_ALLOC_OPT_LOCK_MUTEX) |
Definition at line 459 of file astobj2.h.
Referenced by __aco_option_register(), __ast_channel_internal_alloc(), _ast_odbc_request_obj2(), _moh_class_malloc(), aco_option_register_deprecated(), add_calltoken_ignore(), add_column_name(), alloc_event_ref(), ast_add_hint(), ast_bridge_new(), ast_calendar_event_alloc(), ast_channel_dialed_causes_add(), ast_config_hook_register(), ast_format_cap_add(), ast_manager_register2(), ast_msg_alloc(), ast_msg_tech_register(), ast_register_indication(), ast_rtp_codecs_payloads_copy(), ast_rtp_codecs_payloads_default(), ast_rtp_codecs_payloads_set_m_type(), ast_rtp_codecs_payloads_set_rtpmap_type_rate(), ast_rtp_instance_new(), ast_taskprocessor_get(), ast_tcptls_client_create(), ast_tcptls_server_root(), ast_tone_zone_alloc(), ast_websocket_add_protocol(), ast_xml_doc_item_alloc(), ast_xmpp_client_config_alloc(), bridge_channel_alloc(), bridge_request(), build_calendar(), build_callno_limits(), build_device(), build_format_list_array(), build_mansession(), build_peer(), build_profile(), build_route(), build_user(), caldav_load_calendar(), calendar_query_exec(), chan_list_init(), conf_run(), create_callno_pools(), create_esc_entry(), create_parkinglot(), create_queue_member(), create_trunk_ref(), data_filter_alloc(), data_provider_new(), data_result_create(), data_search_alloc(), dialgroup_write(), ewscal_load_calendar(), exchangecal_load_calendar(), extension_state_add_destroy(), fax_detect_new(), fax_gateway_new(), fax_session_new(), fax_session_reserve(), featuremap_write(), format_list_add_custom(), format_list_add_static(), get_filestream(), ical_load_calendar(), inprocess_count(), jingle_alloc(), jingle_config_alloc(), jingle_endpoint_alloc(), jingle_endpoint_state_create(), join_conference_bridge(), kqueue_timer_open(), load_config(), load_odbc_config(), local_alloc(), msg_data_alloc(), multiplexed_bridge_create(), named_acl_alloc(), named_acl_config_alloc(), new_iax(), new_realtime_sqlite3_db(), peercnt_add(), presence_state_cb(), proxy_from_config(), pthread_timer_open(), realtime_common(), session_details_new(), set_fn(), sig_pri_cc_monitor_instance_init(), sip_monitor_instance_init(), sip_prepare_socket(), sip_tcptls_write(), sip_threadinfo_create(), skel_config_alloc(), skel_game_alloc(), skel_level_alloc(), skel_state_alloc(), sla_build_station(), sla_build_trunk(), sla_create_station_ref(), softmix_bridge_create(), timerfd_timer_open(), try_calling(), udptl_snapshot_alloc(), ustmtext(), websocket_callback(), xml_translate(), xmpp_client_alloc(), xmpp_client_create_buddy(), xmpp_config_alloc(), and xmpp_pak_presence().
| #define ao2_alloc_options | ( | data_size, | |
| destructor_fn, | |||
| options | |||
| ) | __ao2_alloc((data_size), (destructor_fn), (options)) |
Definition at line 454 of file astobj2.h.
Referenced by ast_cel_linkedid_ref(), ast_create_callid(), ast_extension_state3(), ast_format_attr_reg_interface(), ast_get_namedgroups(), and parse_apps().
| #define ao2_callback | ( | c, | |
| flags, | |||
| cb_fn, | |||
| arg | |||
| ) | __ao2_callback((c), (flags), (cb_fn), (arg)) |
Definition at line 1250 of file astobj2.h.
Referenced by _ast_odbc_request_obj2(), _sip_show_peers(), acf_jabberstatus_read(), aco_option_find(), admin_exec(), ast_begin_shutdown(), ast_calendar_clear_events(), ast_calendar_merge_events(), ast_calendar_unregister(), ast_channel_dialed_causes_channels(), ast_channel_dialed_causes_clear(), ast_event_dump_cache(), ast_extension_state_del(), ast_format_cap_append(), ast_format_cap_best_byid(), ast_format_cap_copy(), ast_format_cap_dup(), ast_format_cap_has_joint(), ast_format_cap_joint(), ast_format_cap_remove(), ast_format_cap_remove_all(), ast_format_cap_remove_byid(), ast_format_cap_remove_bytype(), ast_merge_contexts_and_delete(), ast_namedgroups_intersect(), ast_rtp_codecs_payload_code(), ast_rtp_codecs_payload_formats(), ast_unregister_indication_country(), caldav_destructor(), calendar_is_busy(), calltoken_required(), cc_handle_publish_error(), channel_admin_exec(), cleanup(), conf_run(), delete_users(), destroy_hint(), do_timing(), event_dump_cache(), event_update_cache(), ewscal_destructor(), exchangecal_destructor(), handle_cc_notify(), handle_manager_show_events(), handle_response_subscribe(), icalendar_destructor(), joint_copy_helper(), load_config(), load_format_config(), load_indications(), load_module(), mark_all_databases_dirty(), meetme_data_provider_get(), meetme_menu_admin(), meetme_menu_admin_extended(), multiplexed_bridge_create(), queue_delme_members_decrement_followers(), queue_member_follower_removal(), reload(), reload_config(), reload_queues(), reload_single_queue(), set_config_destroy(), set_defaults(), set_peercnt_limit(), sig_pri_find_cc_monitor_by_cc_id(), sip_tcp_locate(), sla_destroy(), sla_load_config(), unlink_dirty_databases(), unload_module(), xmpp_client_config_post_apply(), xmpp_client_service_discovery_result_hook(), xmpp_config_post_apply(), xmpp_pak_presence(), xmpp_roster_hook(), and xmpp_status_exec().
| #define ao2_callback_data | ( | container, | |
| flags, | |||
| cb_fn, | |||
| arg, | |||
| data | |||
| ) | __ao2_callback_data((container), (flags), (cb_fn), (arg), (data)) |
Definition at line 1288 of file astobj2.h.
Referenced by ast_channel_callback(), and function_amiclient().
| #define ao2_cleanup | ( | obj | ) | __ao2_cleanup(obj) |
Definition at line 1510 of file astobj2.h.
Referenced by __ast_manager_event_multichan(), __ast_udptl_reload(), acf_jabberreceive_read(), acf_jabberstatus_read(), aco_process_ast_config(), aco_process_config(), aco_process_var(), admin_exec(), app_exec(), ast_cel_engine_term(), ast_named_acl_find(), ast_namedgroups_intersect(), ast_rtp_codecs_payloads_destroy(), ast_udptl_new_with_bindaddr(), ast_unref_namedgroups(), ast_xmpp_client_config_destructor(), ast_xmpp_client_find(), cli_display_named_acl(), cli_display_named_acl_list(), complete_confbridge_participant(), delete_old_messages(), device_state_info_dt(), dial_trunk(), extensionstate_update(), format_list_add_custom(), handle_cli_show_config(), handle_manager_show_event(), handle_request_subscribe(), handle_show_named_acl_cmd(), handle_skel_show_config(), handle_skel_show_levels(), handle_statechange(), internal_type_destroy(), jingle_config_destructor(), jingle_endpoint_state_find_or_create(), jingle_request(), load_module(), manager_jabber_send(), named_acl_config_destructor(), namedgroup_match(), process_category(), run_station(), skel_config_destructor(), skel_find_or_create_state(), skel_game_destructor(), skel_level_destructor(), sla_add_trunk_to_station(), sla_build_station(), sla_build_trunk(), sla_check_station_delay(), sla_handle_dial_state_event(), sla_state(), sla_station_exec(), sla_trunk_exec(), udptl_config_destructor(), unload_module(), xmpp_action_hook(), xmpp_cli_create_collection(), xmpp_cli_create_leafnode(), xmpp_cli_delete_pubsub_node(), xmpp_cli_list_pubsub_nodes(), xmpp_cli_purge_pubsub_nodes(), xmpp_client_destructor(), xmpp_client_find_or_create(), xmpp_client_reconnect(), xmpp_client_send_message(), xmpp_client_set_group_presence(), xmpp_client_set_presence(), xmpp_client_thread(), xmpp_component_register_get_hook(), xmpp_component_service_discovery_get_hook(), xmpp_component_service_discovery_items_hook(), xmpp_config_destructor(), xmpp_config_post_apply(), xmpp_config_prelink(), xmpp_connect_hook(), xmpp_init_event_distribution(), xmpp_join_exec(), xmpp_leave_exec(), xmpp_log_hook(), xmpp_pubsub_build_publish_skeleton(), xmpp_pubsub_handle_error(), xmpp_pubsub_iq_create(), xmpp_pubsub_publish_device_state(), xmpp_pubsub_subscribe(), xmpp_roster_hook(), xmpp_send_cb(), xmpp_send_exec(), xmpp_sendgroup_exec(), xmpp_show_buddies(), xmpp_show_clients(), and xmpp_status_exec().
| #define ao2_container_alloc | ( | n_buckets, | |
| hash_fn, | |||
| cmp_fn | |||
| ) | __ao2_container_alloc(AO2_ALLOC_OPT_LOCK_MUTEX, (n_buckets), (hash_fn), (cmp_fn)) |
Definition at line 1001 of file astobj2.h.
Referenced by __ast_channel_internal_alloc(), __init_manager(), aco_option_container_alloc(), ast_add_hint(), ast_calendar_event_container_alloc(), ast_channels_init(), ast_config_hook_register(), ast_config_text_file_save(), ast_data_init(), ast_event_init(), ast_features_init(), ast_indications_init(), ast_msg_alloc(), ast_msg_init(), ast_pbx_init(), ast_rtp_codecs_payloads_initialize(), ast_tps_init(), ast_xmldoc_build_documentation(), ast_xmpp_client_config_alloc(), build_calendar(), build_conf(), build_mansession(), create_callno_pools(), data_filter_alloc(), data_provider_new(), data_result_create(), data_search_alloc(), dialgroup_write(), format_list_init(), get_feature_ds(), get_lock(), init_queue(), initialize_escs(), jingle_config_alloc(), jingle_endpoint_state_create(), load_module(), load_objects(), load_odbc_config(), named_acl_config_alloc(), realtime_sqlite3_require(), sig_pri_load(), skel_config_alloc(), sla_load_config(), ustmtext(), xml_translate(), xmpp_client_alloc(), xmpp_client_create_buddy(), and xmpp_config_alloc().
| #define ao2_container_alloc_options | ( | options, | |
| n_buckets, | |||
| hash_fn, | |||
| cmp_fn | |||
| ) | __ao2_container_alloc((options), (n_buckets), (hash_fn), (cmp_fn)) |
Definition at line 996 of file astobj2.h.
Referenced by alloc_device_state_info(), ast_cel_engine_init(), ast_format_attr_init(), ast_get_namedgroups(), ast_pickup_find_by_group(), and cap_alloc_helper().
| #define ao2_container_clone | ( | orig, | |
| flags | |||
| ) | __ao2_container_clone(orig, flags) |
| #define ao2_find | ( | container, | |
| arg, | |||
| flags | |||
| ) | __ao2_find((container), (arg), (flags)) |
Definition at line 1313 of file astobj2.h.
Referenced by __find_callno(), _lookup_timer(), acf_jabberstatus_read(), action_confbridgekick(), action_confbridgelist(), action_confbridgesetsinglevideosrc(), action_confbridgestartrecord(), action_confbridgestoprecord(), add_calltoken_ignore(), admin_exec(), app_exec(), ast_add_hint(), ast_cel_check_retire_linkedid(), ast_cel_linkedid_ref(), ast_cel_report_event(), ast_change_hint(), ast_channel_dialed_causes_add(), ast_channel_dialed_causes_find(), ast_config_hook_unregister(), ast_event_get_cached(), ast_extension_state_del(), ast_format_attr_reg_interface(), ast_format_attr_unreg_interface(), ast_format_cap_get_compatible_format(), ast_format_cap_iscompatible(), ast_get_indication_zone(), ast_get_namedgroups(), ast_merge_contexts_and_delete(), ast_remove_hint(), ast_rtp_codecs_find_payload_code(), ast_rtp_codecs_get_payload_format(), ast_rtp_codecs_payload_lookup(), ast_rtp_codecs_payloads_copy(), ast_rtp_codecs_payloads_set_m_type(), ast_rtp_codecs_payloads_set_rtpmap_type_rate(), ast_rtp_codecs_payloads_unset(), ast_taskprocessor_get(), ast_unregister_indication_country(), ast_websocket_add_protocol(), ast_websocket_remove_protocol(), authenticate_request(), authenticate_verify(), build_callno_limits(), build_peer(), build_user(), builtin_feature_get_exten(), check_manager_session_inuse(), cli_alias_passthrough(), cli_fax_show_session(), client_buddy_handler(), compare_weight(), complete_confbridge_participant(), complete_indications(), data_filter_find(), data_provider_find(), data_result_find_child(), data_search_find(), dialgroup_read(), dialgroup_write(), extension_state_add_destroy(), featuremap_write(), find_calendar(), find_database(), find_event(), find_hint_by_cb_id(), find_interface(), find_member_by_queuename_and_interface(), find_parkinglot(), find_peer(), find_profile(), find_pvt(), find_timer(), find_user(), func_confbridge_info(), generic_lock_unlock_helper(), generic_mute_unmute_helper(), get_esc_entry(), get_unused_callno(), handle_cli_confbridge_kick(), handle_cli_confbridge_list(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_iax2_unregister(), handle_cli_indication_show(), handle_manager_show_event(), iax2_destroy_helper(), inprocess_count(), jingle_action_hook(), jingle_endpoint_find(), jingle_request(), join_conference_bridge(), meetme_menu_admin(), meetmemute(), msg_data_find(), msg_find_by_tech(), named_acl_find(), namedgroup_match(), parse_tone_zone(), peercnt_add(), peercnt_modify(), peercnt_remove_by_addr(), phoneprov_callback(), realtime_common(), realtime_sqlite3_require(), reload_single_member(), remove_from_queue(), sched_delay_remove(), set_fn(), sip_poke_peer_s(), skel_find_or_create_state(), skel_level_find(), sla_find_station(), sla_find_trunk(), timerfd_timer_ack(), timerfd_timer_close(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_set_rate(), update_queue(), ustmtext(), websocket_callback(), xml_translate(), xmpp_client_config_merge_buddies(), xmpp_client_service_discovery_result_hook(), xmpp_component_register_get_hook(), xmpp_config_find(), xmpp_pak_presence(), xmpp_pak_s10n(), xmpp_roster_hook(), and xmpp_status_exec().
| #define ao2_global_obj_ref | ( | holder | ) | __ao2_global_obj_ref(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
Definition at line 727 of file astobj2.h.
Referenced by __ast_manager_event_multichan(), acf_jabberreceive_read(), acf_jabberstatus_read(), app_exec(), ast_named_acl_find(), ast_udptl_new_with_bindaddr(), ast_xmpp_client_find(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), build_mansession(), check_manager_session_inuse(), cli_display_named_acl(), cli_display_named_acl_list(), delete_old_messages(), find_session(), find_session_by_nonce(), function_amiclient(), handle_cli_show_config(), handle_manager_show_event(), handle_manager_show_events(), handle_show_named_acl_cmd(), handle_showmanconn(), handle_skel_show_config(), handle_skel_show_levels(), jingle_endpoint_state_find_or_create(), jingle_request(), manager_jabber_send(), purge_sessions(), session_destroy(), skel_find_or_create_state(), xmpp_action_hook(), xmpp_cli_create_collection(), xmpp_cli_create_leafnode(), xmpp_cli_delete_pubsub_node(), xmpp_cli_list_pubsub_nodes(), xmpp_cli_purge_pubsub_nodes(), xmpp_client_find_or_create(), xmpp_client_reconnect(), xmpp_client_send_message(), xmpp_client_set_group_presence(), xmpp_client_set_presence(), xmpp_client_thread(), xmpp_component_register_get_hook(), xmpp_component_service_discovery_get_hook(), xmpp_component_service_discovery_items_hook(), xmpp_config_post_apply(), xmpp_config_prelink(), xmpp_connect_hook(), xmpp_init_event_distribution(), xmpp_join_exec(), xmpp_leave_exec(), xmpp_log_hook(), xmpp_pubsub_build_publish_skeleton(), xmpp_pubsub_handle_error(), xmpp_pubsub_iq_create(), xmpp_pubsub_publish_device_state(), xmpp_pubsub_subscribe(), xmpp_roster_hook(), xmpp_send_cb(), xmpp_send_exec(), xmpp_sendgroup_exec(), xmpp_show_buddies(), xmpp_show_clients(), and xmpp_status_exec().
| #define ao2_global_obj_release | ( | holder | ) | __ao2_global_obj_release(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
Definition at line 638 of file astobj2.h.
Referenced by manager_shutdown(), named_acl_cleanup(), and unload_module().
| #define ao2_global_obj_replace | ( | holder, | |
| obj | |||
| ) | __ao2_global_obj_replace(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| #define ao2_global_obj_replace_unref | ( | holder, | |
| obj | |||
| ) | __ao2_global_obj_replace_unref(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
Definition at line 701 of file astobj2.h.
Referenced by __ast_udptl_reload(), __init_manager(), and apply_config().
| #define AO2_GLOBAL_OBJ_STATIC | ( | name | ) |
struct ao2_global_obj name = { \ .lock = AST_RWLOCK_INIT_VALUE, \ }
Define a global object holder to be used to hold an ao2 object, statically initialized.
| name | This will be the name of the object holder. |
This macro creates a global object holder that can be used to hold an ao2 object accessible using the API. The structure is allocated and initialized to be empty.
Example usage:
static AO2_GLOBAL_OBJ_STATIC(global_cfg);
This defines global_cfg, intended to hold an ao2 object accessible using an API.
| #define ao2_iterator_next | ( | iter | ) | __ao2_iterator_next((iter)) |
Definition at line 1491 of file astobj2.h.
Referenced by __ast_data_search_cmp_structure(), __ast_manager_event_multichan(), __data_result_print_cli(), __iax2_show_peers(), __queues_show(), aco_set_defaults(), action_confbridgelistrooms(), action_meetmelist(), add_ice_to_sdp(), alias_show(), ast_channel_iterator_next(), ast_data_iterator_next(), ast_data_search_match(), ast_format_cap_get_type(), ast_format_cap_has_joint(), ast_format_cap_has_type(), ast_format_cap_identical(), ast_format_cap_iter_next(), ast_format_cap_joint(), ast_format_cap_to_old_bitfield(), ast_merge_contexts_and_delete(), ast_msg_var_iterator_next(), ast_pickup_find_by_group(), ast_print_namedgroups(), ast_srtp_unprotect(), ast_var_indications(), ast_var_indications_table(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), authenticate(), authenticate_reply(), build_dialplan_useage_map(), build_format_list_array(), calendar_query_exec(), check_access(), clear_queue(), cli_console_active(), cli_display_named_acl_list(), cli_fax_show_sessions(), cli_list_devices(), cli_tps_report(), complete_confbridge_name(), complete_core_show_hint(), complete_country(), complete_iax2_peers(), complete_iax2_unregister(), complete_queue_remove_member(), complete_userno(), conf_queue_dtmf(), config_hook_exec(), data_filter_find(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_print_cli(), data_provider_release_all(), data_result_generate_node(), data_result_manager_output(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_read(), do_parking_thread(), dump_queue_members(), extension_state_cb(), fax_session_tab_complete(), find_call(), find_queue_by_name_rt(), find_ringing_channel(), find_session(), find_session_by_nonce(), free_members(), get_device_state_causing_channels(), get_member_status(), handle_cli_confbridge_list(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_users(), handle_cli_indication_show(), handle_cli_odbc_show(), handle_cli_status(), handle_feature_show(), handle_manager_show_event(), handle_manager_show_events(), handle_parkedcalls(), handle_presencechange(), handle_show_calendar(), handle_show_calendars(), handle_show_hint(), handle_show_hints(), handle_show_named_acl_cmd(), handle_show_routes(), handle_showmanconn(), handle_skel_show_games(), handle_skel_show_levels(), handle_statechange(), hints_data_provider_get(), iax2_getpeername(), iax2_getpeertrunk(), interface_exists(), jingle_add_google_candidates_to_transport(), jingle_add_ice_udp_candidates_to_transport(), jingle_request(), joint_copy_helper(), local_devicestate(), locals_show(), manager_iax2_show_peer_list(), manager_optimize_away(), manager_parking_status(), manager_parkinglot_list(), manager_queues_status(), manager_queues_summary(), meetme_menu_admin_extended(), meetme_show_cmd(), moh_rescan_files(), msg_func_write(), num_available_members(), peers_data_provider_get(), poke_all_peers(), pp_each_user_helper(), prune_peers(), prune_users(), purge_sessions(), queue_function_mem_read(), queue_function_qac_dep(), queue_function_queuememberlist(), queues_data_provider_get(), queues_data_provider_get_helper(), reload(), rt_handle_member_record(), sla_calc_station_delays(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), stop_streams(), tps_taskprocessor_tab_complete(), try_calling(), unload_module(), update_realtime_members(), users_data_provider_get(), xmpp_pubsub_create_affiliations(), xmpp_show_buddies(), and xmpp_show_clients().
| #define ao2_link | ( | container, | |
| obj | |||
| ) | __ao2_link((container), (obj), 0) |
Definition at line 1108 of file astobj2.h.
Referenced by __ast_channel_alloc_ap(), _ast_odbc_request_obj2(), add_calltoken_ignore(), add_column_name(), add_new_event_cb(), app_exec(), ast_add_hint(), ast_cel_linkedid_ref(), ast_change_hint(), ast_change_name(), ast_channel_dialed_causes_add(), ast_config_hook_register(), ast_do_masquerade(), ast_extension_state3(), ast_format_cap_add(), ast_get_namedgroups(), ast_merge_contexts_and_delete(), ast_msg_tech_register(), ast_register_indication_country(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_xmldoc_build_documentation(), build_calendar(), build_callno_limits(), build_device(), build_mansession(), build_parkinglot(), build_profile(), build_route(), caldav_add_event(), conf_run(), create_callno_pools(), create_dynamic_parkinglot(), create_new_sip_etag(), data_filter_add_child(), data_provider_add_child(), data_result_add_child(), data_search_add_child(), dialgroup_write(), endelm(), event_update_cache(), extension_state_add_destroy(), fax_session_new(), featuremap_write(), find_channel_by_group(), format_list_add_custom(), format_list_add_static(), get_lock(), icalendar_add_event(), inprocess_count(), jingle_action_session_initiate(), jingle_request(), join_conference_bridge(), kqueue_timer_open(), link_option_to_types(), load_config(), local_alloc(), member_add_to_queue(), msg_set_var_full(), multiplexed_bridge_create(), odbc_register_class(), on_dns_update_peer(), parse_apps(), parse_config(), parse_tag(), peercnt_add(), process_category(), pthread_timer_open(), realtime_common(), realtime_peer(), realtime_user(), reload_single_member(), replace_callno(), set_config(), set_fn(), sig_pri_cc_monitor_instance_init(), sip_monitor_instance_init(), sla_build_station(), sla_build_trunk(), store_by_peercallno(), store_by_transfercallno(), timerfd_timer_open(), ustmtext(), xml_translate(), xmpp_client_config_merge_buddies(), and xmpp_client_create_buddy().
| #define ao2_link_flags | ( | container, | |
| obj, | |||
| flags | |||
| ) | __ao2_link((container), (obj), (flags)) |
Definition at line 1111 of file astobj2.h.
Referenced by ast_format_attr_reg_interface(), ast_rtp_codecs_payloads_copy(), ast_rtp_codecs_payloads_default(), ast_rtp_codecs_payloads_set_m_type(), ast_rtp_codecs_payloads_set_rtpmap_type_rate(), ast_websocket_add_protocol(), and xmpp_pak_presence().
| #define ao2_lock | ( | a | ) | __ao2_lock(a, AO2_LOCK_REQ_MUTEX, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 528 of file astobj2.h.
Referenced by __ast_manager_event_multichan(), __queues_show(), _ast_odbc_request_obj2(), _sip_show_peer(), _sip_show_peers(), _sip_show_peers_one(), _sip_tcp_helper_thread(), action_confbridgelist(), action_confbridgelistrooms(), action_confbridgesetsinglevideosrc(), action_confbridgestartrecord(), action_confbridgestoprecord(), action_kick_last(), action_toggle_mute_participants(), action_waitevent(), add_calltoken_ignore(), add_sdp(), add_to_queue(), aoro2_obj_cb(), app_exec(), ast_add_hint(), ast_bridge_change_state(), ast_bridge_depart(), ast_bridge_destroy(), ast_bridge_dtmf_stream(), ast_bridge_is_video_src(), ast_bridge_join(), ast_bridge_merge(), ast_bridge_number_video_src(), ast_bridge_remove(), ast_bridge_remove_video_src(), ast_bridge_set_internal_sample_rate(), ast_bridge_set_mixing_interval(), ast_bridge_set_single_src_video_mode(), ast_bridge_set_talker_src_video_mode(), ast_bridge_suspend(), ast_bridge_unsuspend(), ast_bridge_update_talker_src_video_mode(), ast_change_hint(), ast_change_name(), ast_do_masquerade(), ast_extension_state_del(), ast_format_cap_iter_start(), ast_get_indication_tone(), ast_get_indication_zone(), ast_hook_send_action(), ast_manager_unregister(), ast_merge_contexts_and_delete(), ast_odbc_direct_execute(), ast_odbc_find_table(), ast_odbc_prepare_and_execute(), ast_odbc_smart_execute(), ast_register_indication_country(), ast_remove_hint(), ast_set_indication_country(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_unregister_indication_country(), ast_websocket_add_protocol(), ast_xmpp_client_lock(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), attended_abort_transfer(), auth_http_callback(), awesome_locking(), bridge_channel_join(), bridge_channel_join_multithreaded(), bridge_channel_join_singlethreaded(), bridge_channel_suspend(), bridge_channel_thread(), bridge_channel_unsuspend(), bridge_hangup(), bridge_thread(), bridge_write(), build_callno_limits(), build_parkinglot(), build_peer(), build_reply_digest(), builtin_feature_get_exten(), calendar_destructor(), change_callid_pvt(), check_bridge(), clear_stats(), cli_fax_show_sessions(), compare_weight(), complete_confbridge_participant(), complete_core_show_hint(), complete_queue_remove_member(), complete_sip_user(), conf_moh_suspend(), conf_moh_unsuspend(), conf_run(), create_addr_from_peer(), data_odbc_provider_handler(), db_destructor(), db_open(), db_sync_thread(), destroy_gateway(), destroy_v21_sessions(), event_update_cache(), execute_menu_entry(), execute_state_callback(), extension_state_add_destroy(), extension_state_cb(), featuremap_write(), find_member_by_queuename_and_interface(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), func_confbridge_info(), generic_fax_exec(), generic_http_callback(), generic_lock_unlock_helper(), generic_mute_unmute_helper(), generic_thread_loop(), get_input(), get_member_penalty(), get_member_status(), get_unused_callno(), handle_cli_confbridge_list(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_misdn_send_facility(), handle_cli_odbc_show(), handle_manager_show_events(), handle_presencechange(), handle_request_subscribe(), handle_show_hint(), handle_show_hints(), handle_showmanconn(), handle_statechange(), handle_video_on_exit(), handle_video_on_join(), inprocess_count(), is_our_turn(), jingle_fixup(), jingle_hangup(), jingle_new(), jingle_request(), jingle_session_lock_full(), join_conference_bridge(), join_queue(), kick_conference_participant(), leave_conference(), leave_queue(), load_indications(), local_answer(), local_bridgedchannel(), local_call(), local_devicestate(), local_digit_begin(), local_digit_end(), local_fixup(), local_indicate(), local_queryoption(), local_queue_frame(), local_sendhtml(), local_sendtext(), local_setoption(), local_write(), locals_show(), manager_optimize_away(), manager_queues_status(), manager_queues_summary(), manager_sip_peer_status(), member_add_to_queue(), member_call_pending_clear(), member_call_pending_set(), member_remove_from_queue(), moh_class_destructor(), moh_release(), mohalloc(), monmp3thread(), msg_data_func_read(), msg_data_func_write(), msg_func_read(), msg_func_write(), msg_send_exec(), multiplexed_add_or_remove(), multiplexed_bridge_create(), multiplexed_bridge_destroy(), multiplexed_thread_function(), on_dns_update_peer(), peercnt_add(), peercnt_remove(), peers_data_provider_get(), process_events(), process_message(), pthread_timer_ack(), pthread_timer_disable_continuous(), pthread_timer_enable_continuous(), pthread_timer_get_event(), pthread_timer_open(), pthread_timer_set_rate(), purge_sessions(), queue_function_mem_read(), queue_function_mem_write(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuewaitingcount(), queue_function_var(), queues_data_provider_get(), realtime_sqlite3_execute_handle(), recalc_holdtime(), record_abandoned(), register_verify(), reload_queues(), reload_single_member(), reload_single_queue(), remove_from_queue(), replace_callno(), ring_entry(), rna(), run_timer(), schedule_calendar_event(), session_do(), set_eventmask(), set_member_paused(), set_member_penalty_help_members(), set_member_ringinuse_help_members(), set_queue_variables(), sip_keepalive_all_peers(), sip_poke_all_peers(), sip_prune_realtime(), sip_send_mwi_to_peer(), sip_show_inuse(), sip_show_user(), sip_show_users(), sip_tcptls_write(), sip_tls_read(), sla_add_trunk_to_station(), sla_build_station(), sla_build_trunk(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), sla_state(), sla_station_exec(), sla_station_is_marked(), sla_station_mark(), sla_trunk_is_marked(), sla_trunk_mark(), smart_bridge_operation(), softmix_bridge_thread(), spandsp_fax_cli_show_session(), timerfd_timer_ack(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_set_rate(), try_calling(), update_call_counter(), update_peer_lastmsgssent(), update_queue(), update_realtime_members(), xmpp_client_service_discovery_result_hook(), xmpp_pak_presence(), and xmpp_pak_s10n().
| #define ao2_rdlock | ( | a | ) | __ao2_lock(a, AO2_LOCK_REQ_RDLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 529 of file astobj2.h.
Referenced by adjust_lock(), ao2_container_dup(), ast_format_get_value(), ast_format_sdp_generate(), ast_format_sdp_parse(), format_cmp_helper(), format_isset_helper(), format_joint_helper(), format_set_helper(), internal_ao2_callback(), and internal_ao2_iterator_next().
Definition at line 502 of file astobj2.h.
Referenced by __aco_option_register(), __ao2_cleanup(), __ast_channel_alloc_ap(), __ast_data_add(), __ast_data_register(), __ast_data_search_cmp_structure(), __ast_read(), __data_result_print_cli(), __find_callno(), __init_manager(), __queues_show(), __sip_destroy(), __unload_module(), _ast_event_queue(), _ast_odbc_request_obj2(), _sip_tcp_helper_thread(), acf_faxopt_read(), acf_faxopt_write(), acf_jabberstatus_read(), aco_option_register_deprecated(), aco_process_var(), aco_set_defaults(), action_confbridgekick(), action_confbridgelist(), action_confbridgelistrooms(), action_confbridgesetsinglevideosrc(), action_confbridgestartrecord(), action_confbridgestoprecord(), action_meetmelist(), action_messagesend(), add_calltoken_ignore(), add_cc_call_info_to_response(), add_column_name(), add_event_to_list(), add_hintdevice(), add_ice_to_sdp(), add_to_queue(), admin_exec(), alias_show(), announce_thread(), ao2_iterator_destroy(), ao2_iterator_init(), app_exec(), ast_add_hint(), ast_bridge_destroy(), ast_bridge_impart(), ast_bridge_join(), ast_bridge_merge(), ast_bridge_new(), ast_calendar_unref_event(), ast_cel_check_retire_linkedid(), ast_cel_linkedid_ref(), ast_cel_report_event(), ast_change_hint(), ast_channel_dialed_causes_add(), ast_closestream(), ast_config_text_file_save(), ast_data_free(), ast_data_iterator_end(), ast_data_iterator_next(), ast_data_search_match(), ast_event_get_cached(), ast_extension_state3(), ast_extension_state_del(), ast_extension_state_extended(), ast_format_attr_reg_interface(), ast_format_attr_unreg_interface(), ast_format_cap_add(), ast_format_cap_destroy(), ast_format_cap_get_compatible_format(), ast_format_cap_get_type(), ast_format_cap_has_joint(), ast_format_cap_has_type(), ast_format_cap_identical(), ast_format_cap_iscompatible(), ast_format_cap_iter_next(), ast_format_cap_joint(), ast_format_cap_remove(), ast_format_cap_to_old_bitfield(), ast_format_get_value(), ast_format_list_destroy(), ast_format_list_get(), ast_format_sdp_generate(), ast_format_sdp_parse(), ast_get_namedgroups(), ast_merge_contexts_and_delete(), ast_moh_destroy(), ast_msg_alloc(), ast_msg_destroy(), ast_msg_get_var(), ast_msg_queue(), ast_msg_ref(), ast_msg_send(), ast_msg_tech_register(), ast_msg_tech_unregister(), ast_msg_var_iterator_next(), ast_msg_var_unref_current(), ast_pickup_find_by_group(), ast_print_namedgroups(), ast_ref_namedgroups(), ast_remove_hint(), ast_rtcp_write(), ast_rtp_codecs_find_payload_code(), ast_rtp_codecs_get_payload_format(), ast_rtp_codecs_payload_code(), ast_rtp_codecs_payload_lookup(), ast_rtp_codecs_payloads_copy(), ast_rtp_codecs_payloads_default(), ast_rtp_codecs_payloads_set_m_type(), ast_rtp_codecs_payloads_set_rtpmap_type_rate(), ast_rtp_destroy(), ast_rtp_instance_destroy(), ast_rtp_instance_make_compatible(), ast_rtp_instance_new(), ast_rtp_prop_set(), ast_rtp_raw_write(), ast_rtp_read(), ast_rtp_stop(), ast_settimeout_full(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_tcptls_client_create(), ast_tcptls_client_start(), ast_tcptls_server_root(), ast_tone_zone_ref(), ast_tone_zone_sound_ref(), ast_tone_zone_sound_unref(), ast_tone_zone_unref(), ast_websocket_add_protocol(), ast_websocket_ref(), ast_websocket_remove_protocol(), ast_websocket_unref(), ast_xml_doc_item_alloc(), ast_xml_doc_item_destructor(), ast_xmpp_client_config_alloc(), ast_xmpp_client_find(), ast_xmpp_client_unref(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), bridge_channel_alloc(), bridge_channel_destroy(), bridge_channel_join(), bridge_channel_thread(), bridge_hangup(), bridge_request(), bridge_thread(), build_callno_limits(), build_conf(), build_dialplan_useage_map(), build_format_list_array(), build_mansession(), builtin_feature_get_exten(), caldav_destructor(), calendar_destructor(), calendar_devstate_change(), calendar_event_notify(), calendar_query_exec(), callattempt_free(), calltoken_required(), cb_events(), cc_esc_publish_handler(), cc_handle_publish_error(), chan_cleanup(), chan_list_destructor(), channel_admin_exec(), channels_shutdown(), check_manager_session_inuse(), clear_queue(), cli_alias_passthrough(), cli_display_named_acl_list(), cli_fax_show_session(), cli_fax_show_sessions(), cli_tps_ping(), cli_tps_report(), client_buddy_handler(), compare_weight(), complete_confbridge_name(), complete_core_show_hint(), complete_queue_remove_member(), complete_userno(), conf_free(), conf_queue_dtmf(), conf_run(), config_hook_exec(), copy_parkinglot(), copy_socket_data(), create_callno_pools(), create_esc_entry(), create_trunk_ref(), data_filter_add_nodes(), data_filter_alloc(), data_filter_destructor(), data_filter_find(), data_filter_generate(), data_filter_release(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_create(), data_provider_destructor(), data_provider_find(), data_provider_new(), data_provider_print_cli(), data_provider_release(), data_provider_release_all(), data_result_create(), data_result_destructor(), data_result_find_child(), data_result_generate(), data_result_generate_node(), data_result_get_node(), data_result_manager_output(), data_search_alloc(), data_search_cmp_bool(), data_search_cmp_char(), data_search_cmp_dbl(), data_search_cmp_int(), data_search_cmp_ipaddr(), data_search_cmp_ptr(), data_search_cmp_string(), data_search_cmp_uint(), data_search_create(), data_search_destructor(), data_search_find(), data_search_get_node(), data_search_release(), db_start_batch(), destroy_callback(), destroy_escs(), destroy_faxdetect(), destroy_gateway(), destroy_hint(), destroy_queue(), destroy_session(), destroy_v21_sessions(), dialgroup_read(), dialgroup_write(), dialog_ref_debug(), dialog_unref_debug(), do_notify(), do_parking_thread(), dtls_srtp_renegotiate(), dtls_srtp_setup(), dump_queue_members(), end_bridge_callback(), end_bridge_callback_data_fixup(), event_notification_duplicate(), event_shutdown(), event_update_cache(), eventlist_destroy(), eventlist_destructor(), eventlist_duplicate(), ewscal_destructor(), exchangecal_destructor(), expire_register(), extension_state_add_destroy(), extension_state_cb(), extensionstate_update(), fax_detect_attach(), fax_detect_framehook_destroy(), fax_detect_new(), fax_gateway_attach(), fax_gateway_detect_t38(), fax_gateway_framehook(), fax_gateway_framehook_destroy(), fax_gateway_new(), fax_gateway_request_t38(), fax_gateway_start(), fax_session_new(), fax_session_reserve(), fax_session_tab_complete(), feature_ds_destroy(), featuremap_write(), features_shutdown(), find_details(), find_hint_by_cb_id(), find_or_create_details(), find_queue_by_name_rt(), find_ringing_channel(), find_session(), find_session_by_nonce(), format_attr_shutdown(), format_cmp_helper(), format_isset_helper(), format_joint_helper(), format_list_add_static(), format_set_helper(), free_members(), func_confbridge_info(), function_amiclient(), generic_fax_exec(), generic_lock_unlock_helper(), generic_mute_unmute_helper(), get_destination(), get_device_state_causing_channels(), get_member_penalty(), get_member_status(), group_destroy(), gtalk_get_rtp_peer(), handle_cc_notify(), handle_cc_subscribe(), handle_cli_confbridge_kick(), handle_cli_confbridge_list(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_iax2_set_debug(), handle_cli_iax2_show_callno_limits(), handle_cli_odbc_show(), handle_cli_status(), handle_event(), handle_feature_show(), handle_manager_show_event(), handle_manager_show_events(), handle_parkedcalls(), handle_presencechange(), handle_queue_remove_member(), handle_request_subscribe(), handle_response_subscribe(), handle_show_hint(), handle_show_hints(), handle_show_named_acl_cmd(), handle_showmanconn(), handle_sip_publish_initial(), handle_sip_publish_modify(), handle_sip_publish_refresh(), handle_sip_publish_remove(), handle_skel_show_games(), handle_skel_show_levels(), handle_statechange(), handle_tcptls_connection(), hangupcause_read(), has_interface(), hintdevice_destroy(), hints_data_provider_get(), httpd_helper_thread(), iax2_destroy(), icalendar_destructor(), indications_shutdown(), inprocess_count(), interface_exists(), internal_ao2_callback(), jingle_action_hook(), jingle_action_session_initiate(), jingle_add_google_candidates_to_transport(), jingle_add_ice_udp_candidates_to_transport(), jingle_alloc(), jingle_config_alloc(), jingle_endpoint_alloc(), jingle_endpoint_destructor(), jingle_endpoint_state_create(), jingle_endpoint_state_destructor(), jingle_endpoint_state_find_or_create(), jingle_get_rtp_peer(), jingle_hangup(), jingle_request(), join_conference_bridge(), joint_copy_helper(), kqueue_timer_ack(), kqueue_timer_close(), kqueue_timer_disable_continuous(), kqueue_timer_enable_continuous(), kqueue_timer_get_event(), kqueue_timer_open(), kqueue_timer_set_rate(), leave_conference(), link_option_to_types(), load_config(), load_module(), load_objects(), load_odbc_config(), local_alloc(), local_answer(), local_call(), local_devicestate(), local_digit_begin(), local_digit_end(), local_hangup(), local_indicate(), local_request(), local_sendhtml(), local_sendtext(), local_setoption(), local_write(), locals_show(), manager_add_filter(), manager_optimize_away(), manager_parking_status(), manager_parkinglot_list(), manager_queues_status(), manager_queues_summary(), manager_remove_queue_member(), meetme_menu_admin(), meetme_menu_admin_extended(), meetme_show_cmd(), meetmemute(), message_shutdown(), mgcp_get_rtp_peer(), misdn_attempt_transfer(), moh_rescan_files(), msg_data_alloc(), msg_data_func_read(), msg_data_func_write(), msg_destructor(), msg_ds_destroy(), msg_func_read(), msg_func_write(), msg_q_cb(), msg_send_exec(), msg_set_var_full(), multiplexed_add_or_remove(), multiplexed_bridge_create(), multiplexed_bridge_destroy(), multiplexed_thread_function(), named_acl_config_alloc(), new_iax(), num_available_members(), odbc_class_destructor(), odbc_obj_destructor(), odbc_release_obj2(), oh323_get_rtp_peer(), parkinglot_addref(), parkinglot_unref(), parse_apps(), parse_moved_contact(), pbx_shutdown(), peer_ref(), peer_unref(), peercnt_add(), peercnt_modify(), peercnt_remove_by_addr(), peercnt_remove_cb(), peers_data_provider_get(), presence_state_cb(), proxy_from_config(), pthread_timer_ack(), pthread_timer_close(), pthread_timer_disable_continuous(), pthread_timer_enable_continuous(), pthread_timer_get_event(), pthread_timer_open(), pthread_timer_set_rate(), publish_expire(), purge_sessions(), queue_function_mem_read(), queue_function_mem_write(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_ref(), queue_ringing_trunk(), queue_unref(), queues_data_provider_get_helper(), realtime_common(), realtime_sqlite3_execute(), realtime_sqlite3_require(), receivefax_exec(), record_thread(), ref_proxy(), ref_pvt(), reload(), reload_single_member(), remove_from_queue(), replace_callno(), rna(), rqm_exec(), rt_handle_member_record(), sched_delay_remove(), sendfax_exec(), session_destroy(), session_details_new(), session_do(), set_fn(), set_member_paused(), set_member_penalty_help_members(), set_member_ringinuse_help_members(), set_peer_defaults(), set_peercnt_limit(), set_socket_transport(), sig_pri_call(), sig_pri_cc_available(), sig_pri_cc_generic_check(), sig_pri_cc_link_canceled(), sig_pri_cc_monitor_destructor(), sig_pri_handle_cis_subcmds(), sig_pri_handle_subcmds(), sig_pri_unload(), sip_cc_monitor_suspend(), sip_destroy_peer(), sip_get_rtp_peer(), sip_get_trtp_peer(), sip_get_vrtp_peer(), sip_handle_cc(), sip_monitor_instance_init(), sip_prepare_socket(), sip_tcp_locate(), skel_config_alloc(), skel_find_or_create_state(), skel_game_alloc(), skel_level_alloc(), skinny_get_rtp_peer(), skinny_get_vrtp_peer(), sla_add_trunk_to_station(), sla_calc_station_delays(), sla_change_trunk_state(), sla_choose_idle_trunk(), sla_choose_ringing_trunk(), sla_create_failed_station(), sla_create_ringing_station(), sla_create_station_ref(), sla_destroy(), sla_event_destroy(), sla_failed_station_destroy(), sla_find_trunk_ref(), sla_find_trunk_ref_byname(), sla_handle_dial_state_event(), sla_queue_event_conf(), sla_queue_event_full(), sla_ringing_station_destroy(), sla_ringing_trunk_destroy(), sla_show_stations(), sla_show_trunks(), sla_station_exec(), sla_station_is_marked(), sla_station_ref_destructor(), sla_station_release_refs(), sla_stop_ringing_trunk(), sla_trunk_is_marked(), sla_trunk_ref_destructor(), sla_trunk_release_refs(), softmix_bridge_create(), softmix_bridge_destroy(), softmix_bridge_thread(), spandsp_fax_gw_gen_alloc(), spandsp_fax_gw_gen_release(), start_conf_record_thread(), timerfd_timer_ack(), timerfd_timer_close(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_open(), timerfd_timer_set_rate(), tps_taskprocessor_tab_complete(), transmit_publish(), try_calling(), udptl_snapshot_alloc(), unistim_get_rtp_peer(), unload_module(), unref_caldav(), unref_calendar(), unref_db(), unref_ewscal(), unref_exchangecal(), unref_icalendar(), unref_instance_cond(), unref_mansession(), unref_profile(), unref_pvt(), unref_route(), unref_user(), update_queue(), update_realtime_members(), user_ref(), user_unref(), ustmtext(), websocket_callback(), xml_translate(), xmpp_buddy_destructor(), xmpp_client_alloc(), xmpp_client_config_merge_buddies(), xmpp_client_create_buddy(), xmpp_client_find_or_create(), xmpp_client_service_discovery_result_hook(), xmpp_component_register_get_hook(), xmpp_config_alloc(), xmpp_pak_presence(), xmpp_pak_s10n(), xmpp_pubsub_create_affiliations(), xmpp_roster_hook(), xmpp_show_buddies(), xmpp_show_clients(), and xmpp_status_exec().
| #define ao2_t_alloc | ( | data_size, | |
| destructor_fn, | |||
| debug_msg | |||
| ) | __ao2_alloc((data_size), (destructor_fn), AO2_ALLOC_OPT_LOCK_MUTEX) |
Definition at line 457 of file astobj2.h.
Referenced by add_hintdevice(), add_realm_authentication(), alloc_queue(), ast_srtp_policy_alloc(), build_peer(), cc_agent_init(), cc_core_init_instance(), cc_device_monitor_init(), cc_extension_monitor_init(), cc_interfaces_datastore_init(), create_epa_entry(), create_new_generic_list(), manager_add_filter(), sip_alloc(), and temp_peer().
| #define ao2_t_alloc_options | ( | data_size, | |
| destructor_fn, | |||
| options, | |||
| debug_msg | |||
| ) | __ao2_alloc((data_size), (destructor_fn), (options)) |
Allocate and initialize an object.
| data_size | The sizeof() of the user-defined structure. |
| destructor_fn | The destructor function (can be NULL) |
| options | The ao2 object options (See enum ao2_alloc_opts) |
| debug_msg | An ao2 object debug tracing message. |
Allocates a struct astobj2 with sufficient space for the user-defined structure.
| #define ao2_t_callback | ( | c, | |
| flags, | |||
| cb_fn, | |||
| arg, | |||
| tag | |||
| ) | __ao2_callback((c), (flags), (cb_fn), (arg)) |
ao2_callback() is a generic function that applies cb_fn() to all objects in a container, as described below.
| c | A pointer to the container to operate on. |
| flags | A set of flags specifying the operation to perform, partially used by the container code, but also passed to the callback.
|
| cb_fn | A function pointer, that will be called on all objects, to see if they match. This function returns CMP_MATCH if the object is matches the criteria; CMP_STOP if the traversal should immediately stop, or both (via bitwise ORing), if you find a match and want to end the traversal, and 0 if the object is not a match, but the traversal should continue. This is the function that is applied to each object traversed. Its arguments are: (void *obj, void *arg, int flags), where: obj is an object arg is the same as arg passed into ao2_callback flags is the same as flags passed into ao2_callback (flags are also used by ao2_callback). |
| arg | passed to the callback. |
| tag | used for debugging. |
| NULL | on failure or no matching object found. |
| object | found if OBJ_MULTIPLE is not set in the flags parameter. |
| ao2_iterator | pointer if OBJ_MULTIPLE is set in the flags parameter. The iterator must be destroyed with ao2_iterator_destroy() when the caller no longer needs it. |
If the function returns any objects, their refcount is incremented, and the caller is in charge of decrementing them once done.
Typically, ao2_callback() is used for two purposes:
This function searches through a container and performs operations on objects according on flags passed. XXX describe better The comparison is done calling the compare function set implicitly. The arg pointer can be a pointer to an object or to a key, we can say this looking at flags value. If arg points to an object we will search for the object pointed by this value, otherwise we search for a key value. If the key is not unique we only find the first matching value.
The use of flags argument is the follow:
OBJ_UNLINK unlinks the object found OBJ_NODATA on match, do return an object Callbacks use OBJ_NODATA as a default functions such as find() do OBJ_MULTIPLE return multiple matches Default is no. OBJ_POINTER the pointer is an object pointer OBJ_KEY the pointer is to a hashable key
Definition at line 1248 of file astobj2.h.
Referenced by __init_manager(), ast_cc_agent_callback(), ast_cc_monitor_count(), ast_moh_destroy(), ast_srtp_destroy(), cc_cli_output_status(), do_monitor(), find_call(), get_mohbydigit(), handle_cc_kill(), handle_statechange(), load_config(), load_moh_classes(), reload_config(), remove_hintdevice(), sip_show_channels(), sip_show_channelstats(), sip_show_objects(), unlink_peers_from_tables(), and unload_module().
| #define ao2_t_callback_data | ( | container, | |
| flags, | |||
| cb_fn, | |||
| arg, | |||
| data, | |||
| tag | |||
| ) | __ao2_callback_data((container), (flags), (cb_fn), (arg), (data)) |
ao2_callback_data() is a generic function that applies cb_fn() to all objects in a container. It is functionally identical to ao2_callback() except that instead of taking an ao2_callback_fn *, it takes an ao2_callback_data_fn *, and allows the caller to pass in arbitrary data.
This call would be used instead of ao2_callback() when the caller needs to pass OBJ_POINTER as part of the flags argument (which in turn requires passing in a prototype ao2 object for 'arg') and also needs access to other non-global data to complete it's comparison or task.
See the documentation for ao2_callback() for argument descriptions.
Definition at line 1286 of file astobj2.h.
Referenced by cccancel_exec(), ccreq_exec(), ccss_device_state(), count_agents(), kill_duplicate_offers(), match_filter(), and sip_find_peer_full().
| #define ao2_t_container_alloc | ( | n_buckets, | |
| hash_fn, | |||
| cmp_fn, | |||
| tag | |||
| ) | __ao2_container_alloc(AO2_ALLOC_OPT_LOCK_MUTEX, (n_buckets), (hash_fn), (cmp_fn)) |
Definition at line 999 of file astobj2.h.
Referenced by ast_cc_init(), load_module(), and res_srtp_new().
| #define ao2_t_container_alloc_options | ( | options, | |
| n_buckets, | |||
| hash_fn, | |||
| cmp_fn, | |||
| tag | |||
| ) | __ao2_container_alloc((options), (n_buckets), (hash_fn), (cmp_fn)) |
Allocate and initialize a hash container with the desired number of buckets.
We allocate space for a struct astobj_container, struct container and the buckets[] array.
| options | Container ao2 object options (See enum ao2_alloc_opts) |
| n_buckets | Number of buckets for hash |
| hash_fn | Pointer to a function computing a hash value. (NULL if everyting goes in first bucket.) |
| cmp_fn | Pointer to a compare function used by ao2_find. (NULL to match everything) |
| tag | used for debugging. |
| #define ao2_t_container_clone | ( | orig, | |
| flags, | |||
| tag | |||
| ) | __ao2_container_clone(orig, flags) |
| #define ao2_t_find | ( | container, | |
| arg, | |||
| flags, | |||
| tag | |||
| ) | __ao2_find((container), (arg), (flags)) |
ao2_find() is a short hand for ao2_callback(c, flags, c->cmp_fn, arg) XXX possibly change order of arguments ?
Definition at line 1311 of file astobj2.h.
Referenced by _sip_tcp_helper_thread(), build_peer(), find_call(), find_cc_core_instance(), find_generic_monitor_instance_list(), find_load_queue_rt_friendly(), find_policy(), find_queue_by_name_rt(), get_member_penalty(), get_sip_pvt_byid_locked(), queue_function_queuememberlist(), queue_function_queuewaitingcount(), queue_function_var(), reload_queue_members(), reload_single_queue(), remove_from_queue(), sip_prune_realtime(), and sip_tcptls_write().
| #define ao2_t_global_obj_ref | ( | holder, | |
| tag | |||
| ) | __ao2_global_obj_ref(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
| #define ao2_t_global_obj_release | ( | holder, | |
| tag | |||
| ) | __ao2_global_obj_release(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
Release the ao2 object held in the global holder.
| holder | Global ao2 object holder. |
| tag | used for debugging |
Definition at line 636 of file astobj2.h.
Referenced by manager_shutdown(), and udptl_shutdown().
| #define ao2_t_global_obj_replace | ( | holder, | |
| obj, | |||
| tag | |||
| ) | __ao2_global_obj_replace(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
Replace an ao2 object in the global holder.
| holder | Global ao2 object holder. |
| obj | Object to put into the holder. Can be NULL. |
| tag | used for debugging |
| Reference | to previous global ao2 object stored. |
| NULL | if no object available. |
| #define ao2_t_global_obj_replace_unref | ( | holder, | |
| obj, | |||
| tag | |||
| ) | __ao2_global_obj_replace_unref(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) |
Replace an ao2 object in the global holder, throwing away any old object.
| holder | Global ao2 object holder. |
| obj | Object to put into the holder. Can be NULL. |
| tag | used for debugging |
| 0 | The global object was previously empty |
| 1 | The global object was not previously empty |
Definition at line 699 of file astobj2.h.
Referenced by __init_manager().
| #define ao2_t_iterator_next | ( | iter, | |
| tag | |||
| ) | __ao2_iterator_next((iter)) |
Definition at line 1490 of file astobj2.h.
Referenced by __queues_show(), _sip_show_peers(), clear_stats(), compare_weight(), complete_core_id(), complete_queue(), complete_queue_remove_member(), complete_sip_peer(), complete_sip_registered_peer(), complete_sip_user(), complete_sipch(), extension_state_cb(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_statechange(), manager_queues_status(), manager_queues_summary(), manager_sip_peer_status(), set_member_paused(), set_member_value(), sip_keepalive_all_peers(), sip_poke_all_peers(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_tcp(), sip_show_users(), unload_module(), and update_queue().
| #define ao2_t_link | ( | container, | |
| obj, | |||
| tag | |||
| ) | __ao2_link((container), (obj), 0) |
Add an object to a container.
| container | The container to operate on. |
| obj | The object to be added. |
| flags | search_flags to control linking the object. (OBJ_NOLOCK) |
| tag | used for debugging. |
| NULL | on errors. |
| !NULL | on success. |
This function inserts an object in a container according its key.
Definition at line 1107 of file astobj2.h.
Referenced by _moh_register(), add_hintdevice(), add_sdp(), ast_srtp_add_stream(), ast_srtp_create(), authenticate(), cc_core_init_instance(), change_callid_pvt(), create_new_generic_list(), manager_add_filter(), parse_register_contact(), pvt_set_needdestroy(), realtime_peer(), register_verify(), reload_config(), sip_alloc(), sip_prune_realtime(), and sip_threadinfo_create().
| #define ao2_t_link_flags | ( | container, | |
| obj, | |||
| flags, | |||
| tag | |||
| ) | __ao2_link((container), (obj), (flags)) |
Reference/unreference an object and return the old refcount.
| o | A pointer to the object |
| delta | Value to add to the reference counter. |
| tag | used for debugging |
Increase/decrease the reference counter according the value of delta.
If the refcount goes to zero, the object is destroyed.
Definition at line 501 of file astobj2.h.
Referenced by __init_manager(), __sip_destroy(), _sip_show_peer(), _sip_tcp_helper_thread(), action_find(), add_hintdevice(), ast_channel_internal_cleanup(), ast_hook_send_action(), ast_manager_register2(), ast_manager_register_struct(), ast_manager_unregister(), ast_srtp_add_stream(), ast_srtp_change_source(), ast_srtp_destroy(), ast_srtp_policy_destroy(), ast_srtp_unprotect(), ast_xmldoc_build_documentation(), authenticate(), build_peer(), build_reply_digest(), cc_ref(), cc_shutdown(), cc_unref(), check_peer_ok(), create_addr_from_peer(), data_shutdown(), dialog_dump_func(), format_list_shutdown(), handle_request_do(), handle_statechange(), load_module(), local_attended_transfer(), manager_add_filter(), manager_free_user(), peer_dump_func(), process_message(), reload_config(), session_destructor(), sip_alloc(), sip_call(), sip_cc_monitor_cancel_available_timer(), sip_cc_monitor_request_cc(), sip_destroy_peer(), sip_monitor_instance_destructor(), sip_prepare_socket(), sip_ref_peer(), sip_reload(), sip_show_channel(), sip_show_history(), sip_show_settings(), sip_show_tcp(), sip_tcp_locate(), sip_tcptls_write(), sip_threadinfo_create(), sip_threadinfo_destructor(), sip_unref_peer(), temp_peer(), tps_shutdown(), and unload_module().
| #define ao2_t_unlink | ( | container, | |
| obj, | |||
| tag | |||
| ) | __ao2_unlink((container), (obj), 0) |
Remove an object from a container.
| container | The container to operate on. |
| obj | The object to unlink. |
| flags | search_flags to control unlinking the object. (OBJ_NOLOCK) |
| tag | used for debugging. |
| NULL,always |
Definition at line 1146 of file astobj2.h.
Referenced by _sip_tcp_helper_thread(), add_sdp(), ast_srtp_add_stream(), build_peer(), cc_complete(), cc_failed(), cc_generic_monitor_destructor(), dialog_unlink_all(), expire_register(), parse_register_contact(), sip_prepare_socket(), sip_prune_realtime(), and unlink_peer_from_tables().
| #define ao2_t_unlink_flags | ( | container, | |
| obj, | |||
| flags, | |||
| tag | |||
| ) | __ao2_unlink((container), (obj), (flags)) |
| #define ao2_trylock | ( | a | ) | __ao2_trylock(a, AO2_LOCK_REQ_MUTEX, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 548 of file astobj2.h.
Referenced by caldav_load_calendar(), ewscal_load_calendar(), exchangecal_load_calendar(), ical_load_calendar(), and multiplexed_thread_function().
| #define ao2_tryrdlock | ( | a | ) | __ao2_trylock(a, AO2_LOCK_REQ_RDLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define ao2_trywrlock | ( | a | ) | __ao2_trylock(a, AO2_LOCK_REQ_WRLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
| #define ao2_unlink | ( | container, | |
| obj | |||
| ) | __ao2_unlink((container), (obj), 0) |
Definition at line 1147 of file astobj2.h.
Referenced by app_exec(), ast_cel_check_retire_linkedid(), ast_change_name(), ast_channel_release(), ast_channel_unlink(), ast_data_remove_node(), ast_do_masquerade(), ast_hangup(), ast_pickup_find_by_group(), ast_taskprocessor_unreference(), ast_websocket_remove_protocol(), build_calendar(), build_user(), conf_ended(), conf_run(), create_new_sip_etag(), data_provider_release(), data_provider_release_all(), delete_profiles(), delete_routes(), delete_users(), destroy_gateway(), destroy_pvts(), destroy_v21_sessions(), dialgroup_write(), generic_fax_exec(), get_lock(), handle_cli_iax2_prune_realtime(), handle_sip_publish_remove(), jingle_hangup(), kqueue_timer_close(), link_option_to_types(), local_hangup(), local_request(), member_remove_from_queue(), merge_events_cb(), msg_set_var_full(), multiplexed_bridge_destroy(), on_dns_update_peer(), peercnt_remove(), prune_users(), publish_expire(), reload(), reload_single_member(), remove_by_peercallno(), remove_by_transfercallno(), session_destroy(), sig_pri_cc_available(), sig_pri_cc_monitor_destructor(), sip_cc_monitor_destructor(), timerfd_timer_close(), and unlink_peer().
| #define ao2_unlink_flags | ( | container, | |
| obj, | |||
| flags | |||
| ) | __ao2_unlink((container), (obj), (flags)) |
Definition at line 1150 of file astobj2.h.
Referenced by xmpp_pak_presence().
| #define ao2_unlock | ( | a | ) | __ao2_unlock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 539 of file astobj2.h.
Referenced by __ao2_container_clone(), __ao2_container_clone_debug(), __ast_manager_event_multichan(), __queues_show(), _ast_odbc_request_obj2(), _sip_show_peer(), _sip_show_peers(), _sip_show_peers_one(), _sip_tcp_helper_thread(), action_confbridgelist(), action_confbridgelistrooms(), action_confbridgesetsinglevideosrc(), action_confbridgestartrecord(), action_confbridgestoprecord(), action_kick_last(), action_toggle_mute_participants(), action_waitevent(), add_calltoken_ignore(), add_sdp(), add_to_queue(), adjust_lock(), ao2_container_dup(), aoro2_obj_cb(), app_exec(), ast_add_hint(), ast_bridge_change_state(), ast_bridge_depart(), ast_bridge_destroy(), ast_bridge_dtmf_stream(), ast_bridge_is_video_src(), ast_bridge_join(), ast_bridge_merge(), ast_bridge_number_video_src(), ast_bridge_remove(), ast_bridge_remove_video_src(), ast_bridge_set_internal_sample_rate(), ast_bridge_set_mixing_interval(), ast_bridge_set_single_src_video_mode(), ast_bridge_set_talker_src_video_mode(), ast_bridge_suspend(), ast_bridge_unsuspend(), ast_bridge_update_talker_src_video_mode(), ast_change_hint(), ast_change_name(), ast_do_masquerade(), ast_extension_state_del(), ast_format_attr_reg_interface(), ast_format_attr_unreg_interface(), ast_format_cap_iter_end(), ast_format_get_value(), ast_format_sdp_generate(), ast_format_sdp_parse(), ast_get_indication_tone(), ast_get_indication_zone(), ast_hook_send_action(), ast_manager_unregister(), ast_merge_contexts_and_delete(), ast_odbc_direct_execute(), ast_odbc_find_table(), ast_odbc_prepare_and_execute(), ast_odbc_smart_execute(), ast_register_indication_country(), ast_remove_hint(), ast_set_indication_country(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_unregister_indication_country(), ast_websocket_add_protocol(), ast_xmpp_client_unlock(), astman_is_authed(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), attended_abort_transfer(), auth_http_callback(), awesome_locking(), bridge_channel_join(), bridge_channel_join_multithreaded(), bridge_channel_join_singlethreaded(), bridge_channel_suspend(), bridge_channel_thread(), bridge_channel_unsuspend(), bridge_hangup(), bridge_thread(), bridge_write(), build_callno_limits(), build_parkinglot(), build_peer(), build_reply_digest(), builtin_feature_get_exten(), caldav_load_calendar(), calendar_destructor(), change_callid_pvt(), check_bridge(), clear_stats(), cli_fax_show_sessions(), compare_weight(), complete_confbridge_participant(), complete_core_show_hint(), complete_queue_remove_member(), complete_sip_user(), conf_moh_suspend(), conf_moh_unsuspend(), conf_run(), create_addr_from_peer(), data_odbc_provider_handler(), db_destructor(), db_open(), db_sync_thread(), destroy_gateway(), destroy_v21_sessions(), event_update_cache(), ewscal_load_calendar(), exchangecal_load_calendar(), execute_menu_entry(), execute_state_callback(), extension_state_add_destroy(), extension_state_cb(), featuremap_write(), find_member_by_queuename_and_interface(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), format_cmp_helper(), format_isset_helper(), format_joint_helper(), format_set_helper(), func_confbridge_info(), generic_fax_exec(), generic_http_callback(), generic_lock_unlock_helper(), generic_mute_unmute_helper(), generic_thread_loop(), get_input(), get_member_penalty(), get_member_status(), get_unused_callno(), handle_cli_confbridge_list(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_misdn_send_facility(), handle_cli_odbc_show(), handle_manager_show_events(), handle_presencechange(), handle_request_subscribe(), handle_show_hint(), handle_show_hints(), handle_showmanconn(), handle_statechange(), handle_video_on_exit(), handle_video_on_join(), ical_load_calendar(), inprocess_count(), internal_ao2_callback(), internal_ao2_iterator_next(), internal_ao2_link(), is_our_turn(), jingle_action_session_accept(), jingle_action_session_info(), jingle_action_session_terminate(), jingle_fixup(), jingle_hangup(), jingle_interpret_content(), jingle_new(), jingle_outgoing_hook(), jingle_queue_hangup_with_cause(), jingle_request(), jingle_session_lock_full(), join_conference_bridge(), join_queue(), kick_conference_participant(), leave_conference(), leave_queue(), load_indications(), local_answer(), local_bridgedchannel(), local_call(), local_devicestate(), local_digit_begin(), local_digit_end(), local_fixup(), local_hangup(), local_indicate(), local_queryoption(), local_queue_frame(), local_sendhtml(), local_sendtext(), local_setoption(), local_write(), locals_show(), manager_optimize_away(), manager_queues_status(), manager_queues_summary(), manager_sip_peer_status(), member_add_to_queue(), member_call_pending_clear(), member_call_pending_set(), member_remove_from_queue(), moh_class_destructor(), moh_release(), mohalloc(), monmp3thread(), msg_data_func_read(), msg_data_func_write(), msg_func_read(), msg_func_write(), msg_send_exec(), multiplexed_add_or_remove(), multiplexed_bridge_create(), multiplexed_bridge_destroy(), multiplexed_thread_function(), on_dns_update_peer(), peercnt_add(), peercnt_remove(), peers_data_provider_get(), process_events(), process_message(), pthread_timer_ack(), pthread_timer_disable_continuous(), pthread_timer_enable_continuous(), pthread_timer_get_event(), pthread_timer_open(), pthread_timer_set_rate(), purge_sessions(), queue_function_mem_read(), queue_function_mem_write(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuewaitingcount(), queue_function_var(), queues_data_provider_get(), realtime_sqlite3_execute_handle(), recalc_holdtime(), record_abandoned(), register_verify(), reinvite_timeout(), reload_queues(), reload_single_member(), reload_single_queue(), remove_from_queue(), replace_callno(), ring_entry(), rna(), run_timer(), schedule_calendar_event(), session_do(), set_eventmask(), set_member_paused(), set_member_penalty_help_members(), set_member_ringinuse_help_members(), set_queue_variables(), sip_keepalive_all_peers(), sip_poke_all_peers(), sip_prune_realtime(), sip_send_mwi_to_peer(), sip_show_inuse(), sip_show_user(), sip_show_users(), sip_tcptls_write(), sip_tls_read(), sla_add_trunk_to_station(), sla_build_station(), sla_build_trunk(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), sla_state(), sla_station_exec(), sla_station_is_marked(), sla_station_mark(), sla_trunk_is_marked(), sla_trunk_mark(), smart_bridge_operation(), softmix_bridge_thread(), spandsp_fax_cli_show_session(), timerfd_timer_ack(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_set_rate(), try_calling(), update_call_counter(), update_peer_lastmsgssent(), update_queue(), update_realtime_members(), xmpp_client_service_discovery_result_hook(), xmpp_pak_presence(), and xmpp_pak_s10n().
| #define ao2_wrlock | ( | a | ) | __ao2_lock(a, AO2_LOCK_REQ_WRLOCK, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 530 of file astobj2.h.
Referenced by __ao2_container_clone(), __ao2_container_clone_debug(), adjust_lock(), ao2_container_dup(), ast_format_attr_reg_interface(), ast_format_attr_unreg_interface(), internal_ao2_callback(), internal_ao2_iterator_next(), and internal_ao2_link().
| typedef int( ao2_callback_data_fn)(void *obj, void *arg, void *data, int flags) |
Type of a generic callback function.
| obj | pointer to the (user-defined part) of an object. |
| arg | callback argument from ao2_callback() |
| data | arbitrary data from ao2_callback() |
| flags | flags from ao2_callback() |
The return values are a combination of enum _cb_results. Callback functions are used to search or manipulate objects in a container.
| typedef int( ao2_callback_fn)(void *obj, void *arg, int flags) |
Type of a generic callback function.
| obj | pointer to the (user-defined part) of an object. |
| arg | callback argument from ao2_callback() |
| flags | flags from ao2_callback() |
The return values are a combination of enum _cb_results. Callback functions are used to search or manipulate objects in a container.
| typedef void(* ao2_destructor_fn)(void *) |
| typedef int( ao2_hash_fn)(const void *obj, int flags) |
Type of a generic function to generate a hash value from an object. flags is ignored at the moment. Eventually, it will include the value of OBJ_POINTER passed to ao2_callback().
| enum _cb_results |
A callback function will return a combination of CMP_MATCH and CMP_STOP. The latter will terminate the search in a container.
| enum ao2_alloc_opts |
Options available when allocating an ao2 object.
Definition at line 394 of file astobj2.h.
{
/*! The ao2 object has a recursive mutex lock associated with it. */
AO2_ALLOC_OPT_LOCK_MUTEX = (0 << 0),
/*! The ao2 object has a non-recursive read/write lock associated with it. */
AO2_ALLOC_OPT_LOCK_RWLOCK = (1 << 0),
/*! The ao2 object has no lock associated with it. */
AO2_ALLOC_OPT_LOCK_NOLOCK = (2 << 0),
/*! The ao2 object locking option field mask. */
AO2_ALLOC_OPT_LOCK_MASK = (3 << 0),
};
| enum ao2_iterator_flags |
Flags that can be passed to ao2_iterator_init() to modify the behavior of the iterator.
| AO2_ITERATOR_DONTLOCK |
Assume that the ao2_container is already locked.
|
| AO2_ITERATOR_MALLOCD |
Indicates that the iterator was dynamically allocated by astobj2 API and should be freed by ao2_iterator_destroy(). |
| AO2_ITERATOR_UNLINK |
Indicates that before the iterator returns an object from the container being iterated, the object should be unlinked from the container. |
Definition at line 1421 of file astobj2.h.
{
/*!
* \brief Assume that the ao2_container is already locked.
*
* \note For ao2_containers that have mutexes, no locking will
* be done.
*
* \note For ao2_containers that have RWLOCKs, the lock will be
* promoted to write mode as needed. The lock will be returned
* to the original locked state.
*
* \note Only use this flag if the ao2_container is manually
* locked already.
*/
AO2_ITERATOR_DONTLOCK = (1 << 0),
/*!
* Indicates that the iterator was dynamically allocated by
* astobj2 API and should be freed by ao2_iterator_destroy().
*/
AO2_ITERATOR_MALLOCD = (1 << 1),
/*!
* Indicates that before the iterator returns an object from
* the container being iterated, the object should be unlinked
* from the container.
*/
AO2_ITERATOR_UNLINK = (1 << 2),
};
| enum ao2_lock_req |
Which lock to request.
| AO2_LOCK_REQ_MUTEX |
Request the mutex lock be acquired. |
| AO2_LOCK_REQ_RDLOCK |
Request the read lock be acquired. |
| AO2_LOCK_REQ_WRLOCK |
Request the write lock be acquired. |
Definition at line 512 of file astobj2.h.
{
/*! Request the mutex lock be acquired. */
AO2_LOCK_REQ_MUTEX,
/*! Request the read lock be acquired. */
AO2_LOCK_REQ_RDLOCK,
/*! Request the write lock be acquired. */
AO2_LOCK_REQ_WRLOCK,
};
| enum search_flags |
Flags passed to ao2_callback() and ao2_hash_fn() to modify its behaviour.
| OBJ_UNLINK |
Unlink the object for which the callback function returned CMP_MATCH. |
| OBJ_NODATA |
On match, don't return the object hence do not increase its refcount. |
| OBJ_MULTIPLE |
Don't stop at the first match in ao2_callback() unless the result of of the callback function has the CMP_STOP bit set. |
| OBJ_POINTER |
The given obj is an object of the same type as the one being searched for, so use the object's hash function for optimized searching. The matching function is unaffected (i.e. The cb_fn argument to ao2_callback). |
| OBJ_CONTINUE |
Continue if a match is not found in the hashed out bucket. This flag is to be used in combination with OBJ_POINTER. This tells the ao2_callback() core to keep searching through the rest of the buckets if a match is not found in the starting bucket defined by the hash value on the argument. |
| OBJ_NOLOCK |
Assume that the ao2_container is already locked.
|
| OBJ_KEY |
The data is hashable, but is not an object. This can be used when you want to be able to pass custom data to the container's stored ao2_hash_fn and ao2_find ao2_callback_fn functions that is not a full object, but perhaps just a string.
|
Definition at line 875 of file astobj2.h.
{
/*!
* Unlink the object for which the callback function returned
* CMP_MATCH.
*/
OBJ_UNLINK = (1 << 0),
/*!
* On match, don't return the object hence do not increase its
* refcount.
*/
OBJ_NODATA = (1 << 1),
/*!
* Don't stop at the first match in ao2_callback() unless the
* result of of the callback function has the CMP_STOP bit set.
*/
OBJ_MULTIPLE = (1 << 2),
/*!
* The given obj is an object of the same type as the one being
* searched for, so use the object's hash function for optimized
* searching.
*
* The matching function is unaffected (i.e. The cb_fn argument
* to ao2_callback).
*/
OBJ_POINTER = (1 << 3),
/*!
* \brief Continue if a match is not found in the hashed out bucket
*
* This flag is to be used in combination with OBJ_POINTER. This tells
* the ao2_callback() core to keep searching through the rest of the
* buckets if a match is not found in the starting bucket defined by
* the hash value on the argument.
*/
OBJ_CONTINUE = (1 << 4),
/*!
* \brief Assume that the ao2_container is already locked.
*
* \note For ao2_containers that have mutexes, no locking will
* be done.
*
* \note For ao2_containers that have RWLOCKs, the lock will be
* promoted to write mode as needed. The lock will be returned
* to the original locked state.
*
* \note Only use this flag if the ao2_container is manually
* locked already.
*/
OBJ_NOLOCK = (1 << 5),
/*!
* \brief The data is hashable, but is not an object.
*
* \details
* This can be used when you want to be able to pass custom data
* to the container's stored ao2_hash_fn and ao2_find
* ao2_callback_fn functions that is not a full object, but
* perhaps just a string.
*
* \note OBJ_KEY and OBJ_POINTER are mutually exclusive options.
*/
OBJ_KEY = (1 << 6),
};
| void* __ao2_alloc | ( | size_t | data_size, |
| ao2_destructor_fn | destructor_fn, | ||
| unsigned int | options | ||
| ) |
Definition at line 640 of file astobj2.c.
References internal_ao2_alloc().
Referenced by __ao2_container_alloc().
{
return internal_ao2_alloc(data_size, destructor_fn, options, __FILE__, __LINE__, __FUNCTION__);
}
| void* __ao2_alloc_debug | ( | size_t | data_size, |
| ao2_destructor_fn | destructor_fn, | ||
| unsigned int | options, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| int | ref_debug | ||
| ) |
Definition at line 620 of file astobj2.c.
References internal_ao2_alloc(), and REF_FILE.
Referenced by __ao2_container_alloc_debug(), __ast_channel_internal_alloc(), and _moh_class_malloc().
{
/* allocation */
void *obj;
FILE *refo;
if ((obj = internal_ao2_alloc(data_size, destructor_fn, options, file, line, func)) == NULL) {
return NULL;
}
if (ref_debug && (refo = fopen(REF_FILE, "a"))) {
fprintf(refo, "%p =1 %s:%d:%s (%s)\n", obj, file, line, func, tag);
fclose(refo);
}
/* return a pointer to the user data */
return obj;
}
| void* __ao2_callback | ( | struct ao2_container * | c, |
| enum search_flags | flags, | ||
| ao2_callback_fn * | cb_fn, | ||
| void * | arg | ||
| ) |
Definition at line 1204 of file astobj2.c.
References DEFAULT, and internal_ao2_callback().
Referenced by __ao2_find(), __ao2_unlink(), ao2_container_dup(), and container_destruct().
{
return internal_ao2_callback(c,flags, cb_fn, arg, NULL, DEFAULT, NULL, NULL, 0, NULL);
}
| void* __ao2_callback_data | ( | struct ao2_container * | c, |
| enum search_flags | flags, | ||
| ao2_callback_data_fn * | cb_fn, | ||
| void * | arg, | ||
| void * | data | ||
| ) |
Definition at line 1217 of file astobj2.c.
References internal_ao2_callback(), and WITH_DATA.
{
return internal_ao2_callback(c, flags, cb_fn, arg, data, WITH_DATA, NULL, NULL, 0, NULL);
}
| void* __ao2_callback_data_debug | ( | struct ao2_container * | c, |
| enum search_flags | flags, | ||
| ao2_callback_data_fn * | cb_fn, | ||
| void * | arg, | ||
| void * | data, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 1210 of file astobj2.c.
References internal_ao2_callback(), and WITH_DATA.
{
return internal_ao2_callback(c, flags, cb_fn, arg, data, WITH_DATA, tag, file, line, func);
}
| void* __ao2_callback_debug | ( | struct ao2_container * | c, |
| enum search_flags | flags, | ||
| ao2_callback_fn * | cb_fn, | ||
| void * | arg, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 1197 of file astobj2.c.
References DEFAULT, and internal_ao2_callback().
Referenced by __ao2_find_debug(), __ao2_unlink_debug(), and container_destruct_debug().
{
return internal_ao2_callback(c,flags, cb_fn, arg, NULL, DEFAULT, tag, file, line, func);
}
| void __ao2_cleanup | ( | void * | obj | ) |
| void __ao2_cleanup_debug | ( | void * | obj, |
| const char * | file, | ||
| int | line, | ||
| const char * | function | ||
| ) |
Definition at line 1550 of file astobj2.c.
References __ao2_ref_debug().
{
if (obj) {
__ao2_ref_debug(obj, -1, "ao2_cleanup", file, line, function);
}
}
| struct ao2_container* __ao2_container_alloc | ( | unsigned int | options, |
| unsigned int | n_buckets, | ||
| ao2_hash_fn * | hash_fn, | ||
| ao2_callback_fn * | cmp_fn | ||
| ) | [read] |
Definition at line 851 of file astobj2.c.
References __ao2_alloc(), container_destruct(), and internal_ao2_container_alloc().
Referenced by __ao2_container_clone(), and internal_ao2_callback().
{
/* XXX maybe consistency check on arguments ? */
/* compute the container size */
const unsigned int num_buckets = hash_fn ? n_buckets : 1;
size_t container_size = sizeof(struct ao2_container) + num_buckets * sizeof(struct bucket);
struct ao2_container *c = __ao2_alloc(container_size, container_destruct, options);
return internal_ao2_container_alloc(c, num_buckets, hash_fn, cmp_fn);
}
| struct ao2_container* __ao2_container_alloc_debug | ( | unsigned int | options, |
| unsigned int | n_buckets, | ||
| ao2_hash_fn * | hash_fn, | ||
| ao2_callback_fn * | cmp_fn, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| int | ref_debug | ||
| ) | [read] |
Definition at line 838 of file astobj2.c.
References __ao2_alloc_debug(), container_destruct(), container_destruct_debug(), and internal_ao2_container_alloc().
Referenced by __ao2_container_clone_debug().
{
/* XXX maybe consistency check on arguments ? */
/* compute the container size */
unsigned int num_buckets = hash_fn ? n_buckets : 1;
size_t container_size = sizeof(struct ao2_container) + num_buckets * sizeof(struct bucket);
struct ao2_container *c = __ao2_alloc_debug(container_size, ref_debug ? container_destruct_debug : container_destruct, options, tag, file, line, func, ref_debug);
return internal_ao2_container_alloc(c, num_buckets, hash_fn, cmp_fn);
}
| struct ao2_container* __ao2_container_clone | ( | struct ao2_container * | orig, |
| enum search_flags | flags | ||
| ) | [read] |
Create a clone/copy of the given container.
| orig | Container to copy all object references from. |
| flags | OBJ_NOLOCK if a lock is already held on the container. |
| Clone | container on success. |
| NULL | on error. |
Definition at line 1477 of file astobj2.c.
References __ao2_container_alloc(), __ao2_ref(), ao2_container_dup(), ao2_unlock, ao2_wrlock, ao2_container::cmp_fn, ao2_container::hash_fn, INTERNAL_OBJ(), ao2_container::n_buckets, OBJ_NOLOCK, __priv_data::options, and astobj2::priv_data.
{
struct ao2_container *clone;
struct astobj2 *orig_obj;
unsigned int options;
int failed;
orig_obj = INTERNAL_OBJ(orig);
if (!orig_obj) {
return NULL;
}
options = orig_obj->priv_data.options;
/* Create the clone container with the same properties as the original. */
clone = __ao2_container_alloc(options, orig->n_buckets, orig->hash_fn, orig->cmp_fn);
if (!clone) {
return NULL;
}
if (flags & OBJ_NOLOCK) {
ao2_wrlock(clone);
}
failed = ao2_container_dup(clone, orig, flags);
if (flags & OBJ_NOLOCK) {
ao2_unlock(clone);
}
if (failed) {
/* Object copy into the clone container failed. */
__ao2_ref(clone, -1);
clone = NULL;
}
return clone;
}
| struct ao2_container* __ao2_container_clone_debug | ( | struct ao2_container * | orig, |
| enum search_flags | flags, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| int | ref_debug | ||
| ) | [read] |
Definition at line 1511 of file astobj2.c.
References __ao2_container_alloc_debug(), __ao2_ref(), __ao2_ref_debug(), ao2_container_dup(), ao2_unlock, ao2_wrlock, ao2_container::cmp_fn, ao2_container::hash_fn, INTERNAL_OBJ(), ao2_container::n_buckets, OBJ_NOLOCK, __priv_data::options, and astobj2::priv_data.
{
struct ao2_container *clone;
struct astobj2 *orig_obj;
unsigned int options;
int failed;
orig_obj = INTERNAL_OBJ(orig);
if (!orig_obj) {
return NULL;
}
options = orig_obj->priv_data.options;
/* Create the clone container with the same properties as the original. */
clone = __ao2_container_alloc_debug(options, orig->n_buckets, orig->hash_fn,
orig->cmp_fn, tag, file, line, func, ref_debug);
if (!clone) {
return NULL;
}
if (flags & OBJ_NOLOCK) {
ao2_wrlock(clone);
}
failed = ao2_container_dup(clone, orig, flags);
if (flags & OBJ_NOLOCK) {
ao2_unlock(clone);
}
if (failed) {
/* Object copy into the clone container failed. */
if (ref_debug) {
__ao2_ref_debug(clone, -1, tag, file, line, func);
} else {
__ao2_ref(clone, -1);
}
clone = NULL;
}
return clone;
}
| void* __ao2_find | ( | struct ao2_container * | c, |
| const void * | arg, | ||
| enum search_flags | flags | ||
| ) |
Definition at line 1234 of file astobj2.c.
References __ao2_callback(), and ao2_container::cmp_fn.
Referenced by _get_mohbyname().
{
void *arged = (void *) arg;/* Done to avoid compiler const warning */
return __ao2_callback(c, flags, c->cmp_fn, arged);
}
| void* __ao2_find_debug | ( | struct ao2_container * | c, |
| const void * | arg, | ||
| enum search_flags | flags, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
the find function just invokes the default callback with some reasonable flags.
Definition at line 1226 of file astobj2.c.
References __ao2_callback_debug(), and ao2_container::cmp_fn.
Referenced by _get_mohbyname().
{
void *arged = (void *) arg;/* Done to avoid compiler const warning */
return __ao2_callback_debug(c, flags, c->cmp_fn, arged, tag, file, line, func);
}
| void* __ao2_global_obj_ref | ( | struct ao2_global_obj * | holder, |
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| const char * | name | ||
| ) |
Definition at line 716 of file astobj2.c.
References __ao2_ref(), __ao2_ref_debug(), __ast_rwlock_rdlock(), __ast_rwlock_unlock(), ast_log(), ao2_global_obj::lock, LOG_ERROR, and ao2_global_obj::obj.
{
void *obj;
if (!holder) {
/* For sanity */
ast_log(LOG_ERROR, "Must be called with a global object!\n");
return NULL;
}
if (__ast_rwlock_rdlock(file, line, func, &holder->lock, name)) {
/* Could not get the read lock. */
return NULL;
}
obj = holder->obj;
if (obj) {
if (tag) {
__ao2_ref_debug(obj, +1, tag, file, line, func);
} else {
__ao2_ref(obj, +1);
}
}
__ast_rwlock_unlock(file, line, func, &holder->lock, name);
return obj;
}
| void __ao2_global_obj_release | ( | struct ao2_global_obj * | holder, |
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| const char * | name | ||
| ) |
Definition at line 646 of file astobj2.c.
References __ao2_ref(), __ao2_ref_debug(), __ast_rwlock_unlock(), __ast_rwlock_wrlock(), ast_log(), ao2_global_obj::lock, LOG_ERROR, and ao2_global_obj::obj.
{
if (!holder) {
/* For sanity */
ast_log(LOG_ERROR, "Must be called with a global object!\n");
return;
}
if (__ast_rwlock_wrlock(file, line, func, &holder->lock, name)) {
/* Could not get the write lock. */
return;
}
/* Release the held ao2 object. */
if (holder->obj) {
if (tag) {
__ao2_ref_debug(holder->obj, -1, tag, file, line, func);
} else {
__ao2_ref(holder->obj, -1);
}
holder->obj = NULL;
}
__ast_rwlock_unlock(file, line, func, &holder->lock, name);
}
| void* __ao2_global_obj_replace | ( | struct ao2_global_obj * | holder, |
| void * | obj, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| const char * | name | ||
| ) |
Definition at line 671 of file astobj2.c.
References __ao2_ref(), __ao2_ref_debug(), __ast_rwlock_unlock(), __ast_rwlock_wrlock(), ast_log(), ao2_global_obj::lock, LOG_ERROR, and ao2_global_obj::obj.
Referenced by __ao2_global_obj_replace_unref().
{
void *obj_old;
if (!holder) {
/* For sanity */
ast_log(LOG_ERROR, "Must be called with a global object!\n");
return NULL;
}
if (__ast_rwlock_wrlock(file, line, func, &holder->lock, name)) {
/* Could not get the write lock. */
return NULL;
}
if (obj) {
if (tag) {
__ao2_ref_debug(obj, +1, tag, file, line, func);
} else {
__ao2_ref(obj, +1);
}
}
obj_old = holder->obj;
holder->obj = obj;
__ast_rwlock_unlock(file, line, func, &holder->lock, name);
return obj_old;
}
| int __ao2_global_obj_replace_unref | ( | struct ao2_global_obj * | holder, |
| void * | obj, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func, | ||
| const char * | name | ||
| ) |
Definition at line 700 of file astobj2.c.
References __ao2_global_obj_replace(), __ao2_ref(), and __ao2_ref_debug().
{
void *obj_old;
obj_old = __ao2_global_obj_replace(holder, obj, tag, file, line, func, name);
if (obj_old) {
if (tag) {
__ao2_ref_debug(obj_old, -1, tag, file, line, func);
} else {
__ao2_ref(obj_old, -1);
}
return 1;
}
return 0;
}
| void* __ao2_iterator_next | ( | struct ao2_iterator * | iter | ) |
Definition at line 1371 of file astobj2.c.
References internal_ao2_iterator_next().
{
return internal_ao2_iterator_next(iter, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}
| void* __ao2_iterator_next_debug | ( | struct ao2_iterator * | iter, |
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 1366 of file astobj2.c.
References internal_ao2_iterator_next().
{
return internal_ao2_iterator_next(iter, tag, file, line, func);
}
| void* __ao2_link | ( | struct ao2_container * | c, |
| void * | obj_new, | ||
| int | flags | ||
| ) |
Definition at line 930 of file astobj2.c.
References internal_ao2_link().
Referenced by dup_obj_cb(), and internal_ao2_callback().
{
return internal_ao2_link(c, obj_new, flags, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}
| void* __ao2_link_debug | ( | struct ao2_container * | c, |
| void * | obj_new, | ||
| int | flags, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 925 of file astobj2.c.
References internal_ao2_link().
Referenced by internal_ao2_callback().
{
return internal_ao2_link(c, obj_new, flags, tag, file, line, func);
}
| int __ao2_lock | ( | void * | a, |
| enum ao2_lock_req | lock_how, | ||
| const char * | file, | ||
| const char * | func, | ||
| int | line, | ||
| const char * | var | ||
| ) |
Lock an object.
| a | A pointer to the object we want to lock. |
Definition at line 179 of file astobj2.c.
References __ast_pthread_mutex_lock(), __ast_rwlock_rdlock(), __ast_rwlock_wrlock(), __LOG_ERROR, AO2_ALLOC_OPT_LOCK_MASK, AO2_ALLOC_OPT_LOCK_MUTEX, AO2_ALLOC_OPT_LOCK_NOLOCK, AO2_ALLOC_OPT_LOCK_RWLOCK, AO2_LOCK_REQ_MUTEX, AO2_LOCK_REQ_RDLOCK, AO2_LOCK_REQ_WRLOCK, ast_atomic_fetchadd_int(), ast_log(), INTERNAL_OBJ(), INTERNAL_OBJ_MUTEX, INTERNAL_OBJ_RWLOCK, ao2_lock_priv::lock, ao2_rwlock_priv::lock, astobj2_lock::mutex, ao2_rwlock_priv::num_lockers, __priv_data::options, astobj2::priv_data, and astobj2_rwlock::rwlock.
Referenced by _ast_bridge_lock().
{
struct astobj2 *obj = INTERNAL_OBJ(user_data);
struct astobj2_lock *obj_mutex;
struct astobj2_rwlock *obj_rwlock;
int res = 0;
if (obj == NULL) {
return -1;
}
switch (obj->priv_data.options & AO2_ALLOC_OPT_LOCK_MASK) {
case AO2_ALLOC_OPT_LOCK_MUTEX:
obj_mutex = INTERNAL_OBJ_MUTEX(user_data);
res = __ast_pthread_mutex_lock(file, line, func, var, &obj_mutex->mutex.lock);
#ifdef AO2_DEBUG
if (!res) {
ast_atomic_fetchadd_int(&ao2.total_locked, 1);
}
#endif
break;
case AO2_ALLOC_OPT_LOCK_RWLOCK:
obj_rwlock = INTERNAL_OBJ_RWLOCK(user_data);
switch (lock_how) {
case AO2_LOCK_REQ_MUTEX:
case AO2_LOCK_REQ_WRLOCK:
res = __ast_rwlock_wrlock(file, line, func, &obj_rwlock->rwlock.lock, var);
if (!res) {
ast_atomic_fetchadd_int(&obj_rwlock->rwlock.num_lockers, -1);
#ifdef AO2_DEBUG
ast_atomic_fetchadd_int(&ao2.total_locked, 1);
#endif
}
break;
case AO2_LOCK_REQ_RDLOCK:
res = __ast_rwlock_rdlock(file, line, func, &obj_rwlock->rwlock.lock, var);
if (!res) {
ast_atomic_fetchadd_int(&obj_rwlock->rwlock.num_lockers, +1);
#ifdef AO2_DEBUG
ast_atomic_fetchadd_int(&ao2.total_locked, 1);
#endif
}
break;
}
break;
case AO2_ALLOC_OPT_LOCK_NOLOCK:
/* The ao2 object has no lock. */
break;
default:
ast_log(__LOG_ERROR, file, line, func, "Invalid lock option on ao2 object %p\n",
user_data);
return -1;
}
return res;
}
| int __ao2_ref | ( | void * | o, |
| int | delta | ||
| ) |
Definition at line 540 of file astobj2.c.
References internal_ao2_ref().
Referenced by __ao2_container_clone(), __ao2_container_clone_debug(), __ao2_global_obj_ref(), __ao2_global_obj_release(), __ao2_global_obj_replace(), __ao2_global_obj_replace_unref(), ao2_container_dup(), cd_cb(), internal_ao2_callback(), internal_ao2_iterator_next(), and internal_ao2_link().
{
return internal_ao2_ref(user_data, delta, __FILE__, __LINE__, __FUNCTION__);
}
| int __ao2_ref_debug | ( | void * | o, |
| int | delta, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 515 of file astobj2.c.
References __priv_data::destructor_fn, internal_ao2_ref(), INTERNAL_OBJ(), astobj2::priv_data, __priv_data::ref_counter, and REF_FILE.
Referenced by __ao2_cleanup_debug(), __ao2_container_clone_debug(), __ao2_global_obj_ref(), __ao2_global_obj_release(), __ao2_global_obj_replace(), __ao2_global_obj_replace_unref(), cd_cb_debug(), dialog_ref_debug(), dialog_unref_debug(), internal_ao2_callback(), internal_ao2_iterator_next(), and internal_ao2_link().
{
struct astobj2 *obj = INTERNAL_OBJ(user_data);
if (obj == NULL)
return -1;
if (delta != 0) {
FILE *refo = fopen(REF_FILE, "a");
if (refo) {
fprintf(refo, "%p %s%d %s:%d:%s (%s) [@%d]\n", user_data, (delta < 0 ? "" : "+"),
delta, file, line, func, tag, obj->priv_data.ref_counter);
fclose(refo);
}
}
if (obj->priv_data.ref_counter + delta == 0 && obj->priv_data.destructor_fn != NULL) { /* this isn't protected with lock; just for o/p */
FILE *refo = fopen(REF_FILE, "a");
if (refo) {
fprintf(refo, "%p **call destructor** %s:%d:%s (%s)\n", user_data, file, line, func, tag);
fclose(refo);
}
}
return internal_ao2_ref(user_data, delta, file, line, func);
}
| int __ao2_trylock | ( | void * | a, |
| enum ao2_lock_req | lock_how, | ||
| const char * | file, | ||
| const char * | func, | ||
| int | line, | ||
| const char * | var | ||
| ) |
Try locking-- (don't block if fail)
| a | A pointer to the object we want to lock. |
Definition at line 285 of file astobj2.c.
References __ast_pthread_mutex_trylock(), __ast_rwlock_tryrdlock(), __ast_rwlock_trywrlock(), __LOG_ERROR, AO2_ALLOC_OPT_LOCK_MASK, AO2_ALLOC_OPT_LOCK_MUTEX, AO2_ALLOC_OPT_LOCK_NOLOCK, AO2_ALLOC_OPT_LOCK_RWLOCK, AO2_LOCK_REQ_MUTEX, AO2_LOCK_REQ_RDLOCK, AO2_LOCK_REQ_WRLOCK, ast_atomic_fetchadd_int(), ast_log(), INTERNAL_OBJ(), INTERNAL_OBJ_MUTEX, INTERNAL_OBJ_RWLOCK, ao2_lock_priv::lock, ao2_rwlock_priv::lock, astobj2_lock::mutex, ao2_rwlock_priv::num_lockers, __priv_data::options, astobj2::priv_data, and astobj2_rwlock::rwlock.
{
struct astobj2 *obj = INTERNAL_OBJ(user_data);
struct astobj2_lock *obj_mutex;
struct astobj2_rwlock *obj_rwlock;
int res = 0;
if (obj == NULL) {
return -1;
}
switch (obj->priv_data.options & AO2_ALLOC_OPT_LOCK_MASK) {
case AO2_ALLOC_OPT_LOCK_MUTEX:
obj_mutex = INTERNAL_OBJ_MUTEX(user_data);
res = __ast_pthread_mutex_trylock(file, line, func, var, &obj_mutex->mutex.lock);
#ifdef AO2_DEBUG
if (!res) {
ast_atomic_fetchadd_int(&ao2.total_locked, 1);
}
#endif
break;
case AO2_ALLOC_OPT_LOCK_RWLOCK:
obj_rwlock = INTERNAL_OBJ_RWLOCK(user_data);
switch (lock_how) {
case AO2_LOCK_REQ_MUTEX:
case AO2_LOCK_REQ_WRLOCK:
res = __ast_rwlock_trywrlock(file, line, func, &obj_rwlock->rwlock.lock, var);
if (!res) {
ast_atomic_fetchadd_int(&obj_rwlock->rwlock.num_lockers, -1);
#ifdef AO2_DEBUG
ast_atomic_fetchadd_int(&ao2.total_locked, 1);
#endif
}
break;
case AO2_LOCK_REQ_RDLOCK:
res = __ast_rwlock_tryrdlock(file, line, func, &obj_rwlock->rwlock.lock, var);
if (!res) {
ast_atomic_fetchadd_int(&obj_rwlock->rwlock.num_lockers, +1);
#ifdef AO2_DEBUG
ast_atomic_fetchadd_int(&ao2.total_locked, 1);
#endif
}
break;
}
break;
case AO2_ALLOC_OPT_LOCK_NOLOCK:
/* The ao2 object has no lock. */
return 0;
default:
ast_log(__LOG_ERROR, file, line, func, "Invalid lock option on ao2 object %p\n",
user_data);
return -1;
}
return res;
}
| void* __ao2_unlink | ( | struct ao2_container * | c, |
| void * | obj, | ||
| int | flags | ||
| ) |
Definition at line 960 of file astobj2.c.
References __ao2_callback(), ao2_match_by_addr(), INTERNAL_OBJ(), OBJ_NODATA, OBJ_POINTER, and OBJ_UNLINK.
{
if (INTERNAL_OBJ(user_data) == NULL) { /* safety check on the argument */
return NULL;
}
flags |= (OBJ_UNLINK | OBJ_POINTER | OBJ_NODATA);
__ao2_callback(c, flags, ao2_match_by_addr, user_data);
return NULL;
}
| void* __ao2_unlink_debug | ( | struct ao2_container * | c, |
| void * | obj, | ||
| int | flags, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 947 of file astobj2.c.
References __ao2_callback_debug(), ao2_match_by_addr(), INTERNAL_OBJ(), OBJ_NODATA, OBJ_POINTER, and OBJ_UNLINK.
{
if (INTERNAL_OBJ(user_data) == NULL) { /* safety check on the argument */
return NULL;
}
flags |= (OBJ_UNLINK | OBJ_POINTER | OBJ_NODATA);
__ao2_callback_debug(c, flags, ao2_match_by_addr, user_data, tag, file, line, func);
return NULL;
}
| int __ao2_unlock | ( | void * | a, |
| const char * | file, | ||
| const char * | func, | ||
| int | line, | ||
| const char * | var | ||
| ) |
Unlock an object.
| a | A pointer to the object we want unlock. |
Definition at line 236 of file astobj2.c.
References __ast_pthread_mutex_unlock(), __ast_rwlock_unlock(), __LOG_ERROR, AO2_ALLOC_OPT_LOCK_MASK, AO2_ALLOC_OPT_LOCK_MUTEX, AO2_ALLOC_OPT_LOCK_NOLOCK, AO2_ALLOC_OPT_LOCK_RWLOCK, ast_atomic_fetchadd_int(), ast_log(), INTERNAL_OBJ(), INTERNAL_OBJ_MUTEX, INTERNAL_OBJ_RWLOCK, ao2_lock_priv::lock, ao2_rwlock_priv::lock, astobj2_lock::mutex, ao2_rwlock_priv::num_lockers, __priv_data::options, astobj2::priv_data, and astobj2_rwlock::rwlock.
Referenced by _ast_bridge_unlock().
{
struct astobj2 *obj = INTERNAL_OBJ(user_data);
struct astobj2_lock *obj_mutex;
struct astobj2_rwlock *obj_rwlock;
int res = 0;
int current_value;
if (obj == NULL) {
return -1;
}
switch (obj->priv_data.options & AO2_ALLOC_OPT_LOCK_MASK) {
case AO2_ALLOC_OPT_LOCK_MUTEX:
obj_mutex = INTERNAL_OBJ_MUTEX(user_data);
res = __ast_pthread_mutex_unlock(file, line, func, var, &obj_mutex->mutex.lock);
#ifdef AO2_DEBUG
if (!res) {
ast_atomic_fetchadd_int(&ao2.total_locked, -1);
}
#endif
break;
case AO2_ALLOC_OPT_LOCK_RWLOCK:
obj_rwlock = INTERNAL_OBJ_RWLOCK(user_data);
current_value = ast_atomic_fetchadd_int(&obj_rwlock->rwlock.num_lockers, -1) - 1;
if (current_value < 0) {
/* It was a WRLOCK that we are unlocking. Fix the count. */
ast_atomic_fetchadd_int(&obj_rwlock->rwlock.num_lockers, -current_value);
}
res = __ast_rwlock_unlock(file, line, func, &obj_rwlock->rwlock.lock, var);
#ifdef AO2_DEBUG
if (!res) {
ast_atomic_fetchadd_int(&ao2.total_locked, -1);
}
#endif
break;
case AO2_ALLOC_OPT_LOCK_NOLOCK:
/* The ao2 object has no lock. */
break;
default:
ast_log(__LOG_ERROR, file, line, func, "Invalid lock option on ao2 object %p\n",
user_data);
res = -1;
break;
}
return res;
}
| void ao2_bt | ( | void | ) |
Definition at line 113 of file astobj2.c.
References ast_bt_get_symbols(), ast_std_free(), ast_verbose(), and N1.
{
int c, i;
#define N1 20
void *addresses[N1];
char **strings;
c = backtrace(addresses, N1);
strings = ast_bt_get_symbols(addresses,c);
ast_verbose("backtrace returned: %d\n", c);
for(i = 0; i < c; i++) {
ast_verbose("%d: %p %s\n", i, addresses[i], strings[i]);
}
ast_std_free(strings);
}
| int ao2_container_count | ( | struct ao2_container * | c | ) |
Returns the number of elements in a container.
return the number of elements in the container
Definition at line 866 of file astobj2.c.
References ao2_container::elements.
Referenced by __ast_data_register(), __ast_manager_event_multichan(), __queues_show(), _sip_show_peers(), action_confbridgekick(), action_confbridgelist(), action_confbridgelistrooms(), action_confbridgesetsinglevideosrc(), action_confbridgestartrecord(), action_confbridgestoprecord(), action_lock_unlock_helper(), action_mute_unmute_helper(), ast_active_channels(), ast_data_search_match(), ast_format_cap_get_type(), ast_format_cap_identical(), ast_format_cap_is_empty(), ast_format_cap_joint(), ast_get_namedgroups(), ast_merge_contexts_and_delete(), ast_namedgroups_intersect(), ast_srtp_unprotect(), ast_tone_zone_count(), build_format_list_array(), calc_metric(), cc_cli_output_status(), cleanup(), cli_fax_show_sessions(), cli_tps_report(), data_odbc_provider_handler(), data_provider_release(), data_provider_release_all(), do_timing(), endelm(), func_confbridge_info(), get_device_state_causing_channels(), get_unused_callno(), handle_cli_iax2_show_callno_limits(), handle_manager_show_events(), handle_show_hint(), handle_show_hints(), handle_statechange(), hints_data_provider_get(), joint_copy_helper(), list_hash_cb(), locals_show(), lock_broker(), match_filter(), meetme_data_provider_get(), member_add_to_queue(), pthread_timer_open(), queue_exec(), queue_function_mem_read(), queues_data_provider_get_helper(), sla_in_use(), try_calling(), unload_module(), and xmpp_show_clients().
{
return c->elements;
}
| int ao2_container_dup | ( | struct ao2_container * | dest, |
| struct ao2_container * | src, | ||
| enum search_flags | flags | ||
| ) |
Copy all object references in the src container into the dest container.
| dest | Container to copy src object references into. |
| src | Container to copy all object references from. |
| flags | OBJ_NOLOCK if a lock is already held on both containers. Otherwise, the src container is locked first. |
| 0 | on success. |
| -1 | on error. |
Definition at line 1450 of file astobj2.c.
References __ao2_callback(), __ao2_ref(), ao2_rdlock, ao2_unlock, ao2_wrlock, dup_obj_cb(), OBJ_MULTIPLE, OBJ_NODATA, OBJ_NOLOCK, and OBJ_UNLINK.
Referenced by __ao2_container_clone(), and __ao2_container_clone_debug().
{
void *obj;
int res = 0;
if (!(flags & OBJ_NOLOCK)) {
ao2_rdlock(src);
ao2_wrlock(dest);
}
obj = __ao2_callback(src, OBJ_NOLOCK, dup_obj_cb, dest);
if (obj) {
/* Failed to put this obj into the dest container. */
__ao2_ref(obj, -1);
/* Remove all items from the dest container. */
__ao2_callback(dest, OBJ_NOLOCK | OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, NULL,
NULL);
res = -1;
}
if (!(flags & OBJ_NOLOCK)) {
ao2_unlock(dest);
ao2_unlock(src);
}
return res;
}
| void ao2_iterator_cleanup | ( | struct ao2_iterator * | iter | ) |
Definition at line 1564 of file astobj2.c.
References ao2_iterator_destroy().
{
if (iter) {
ao2_iterator_destroy(iter);
}
}
| void ao2_iterator_destroy | ( | struct ao2_iterator * | iter | ) |
Destroy a container iterator.
| iter | the iterator to destroy |
| none | This function will release the container reference held by the iterator and any other resources it may be holding. |
destroy an iterator
Definition at line 1259 of file astobj2.c.
References AO2_ITERATOR_MALLOCD, ao2_ref, ast_free, ao2_iterator::c, and ao2_iterator::flags.
Referenced by __ast_data_search_cmp_structure(), __ast_manager_event_multichan(), __data_result_print_cli(), __iax2_show_peers(), __queues_show(), _sip_show_peers(), aco_set_defaults(), action_confbridgelistrooms(), action_meetmelist(), add_ice_to_sdp(), alias_show(), ao2_iterator_cleanup(), ast_channel_iterator_destroy(), ast_data_iterator_end(), ast_data_search_match(), ast_format_cap_get_type(), ast_format_cap_has_joint(), ast_format_cap_has_type(), ast_format_cap_identical(), ast_format_cap_iter_end(), ast_format_cap_joint(), ast_format_cap_to_old_bitfield(), ast_merge_contexts_and_delete(), ast_msg_var_iterator_destroy(), ast_pickup_find_by_group(), ast_print_namedgroups(), ast_srtp_unprotect(), ast_var_indications(), ast_var_indications_table(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), authenticate(), authenticate_reply(), build_dialplan_useage_map(), build_format_list_array(), calendar_query_exec(), check_access(), clear_queue(), clear_stats(), cli_console_active(), cli_display_named_acl_list(), cli_fax_show_sessions(), cli_list_devices(), cli_tps_report(), compare_weight(), complete_confbridge_name(), complete_core_id(), complete_core_show_hint(), complete_country(), complete_iax2_peers(), complete_iax2_unregister(), complete_queue(), complete_queue_remove_member(), complete_sip_peer(), complete_sip_registered_peer(), complete_sip_user(), complete_sipch(), complete_userno(), conf_queue_dtmf(), config_hook_exec(), data_filter_find(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_print_cli(), data_provider_release_all(), data_result_generate_node(), data_result_manager_output(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_read(), do_parking_thread(), dump_queue_members(), extension_state_cb(), fax_session_tab_complete(), find_call(), find_queue_by_name_rt(), find_ringing_channel(), find_session(), find_session_by_nonce(), free_members(), get_device_state_causing_channels(), get_member_status(), handle_cli_confbridge_list(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_users(), handle_cli_indication_show(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_status(), handle_feature_show(), handle_manager_show_event(), handle_manager_show_events(), handle_parkedcalls(), handle_presencechange(), handle_show_calendar(), handle_show_calendars(), handle_show_hint(), handle_show_hints(), handle_show_named_acl_cmd(), handle_show_routes(), handle_showmanconn(), handle_skel_show_games(), handle_skel_show_levels(), handle_statechange(), hints_data_provider_get(), iax2_getpeername(), iax2_getpeertrunk(), interface_exists(), jingle_add_google_candidates_to_transport(), jingle_add_ice_udp_candidates_to_transport(), jingle_request(), joint_copy_helper(), kill_duplicate_offers(), local_devicestate(), locals_show(), manager_iax2_show_peer_list(), manager_optimize_away(), manager_parking_status(), manager_queues_status(), manager_queues_summary(), manager_sip_peer_status(), meetme_menu_admin_extended(), meetme_show_cmd(), moh_rescan_files(), msg_func_write(), num_available_members(), peers_data_provider_get(), poke_all_peers(), pp_each_user_helper(), prune_peers(), prune_users(), purge_sessions(), queue_function_mem_read(), queue_function_qac_dep(), queue_function_queuememberlist(), queues_data_provider_get(), queues_data_provider_get_helper(), reload(), rt_handle_member_record(), set_member_paused(), set_member_value(), sip_keepalive_all_peers(), sip_poke_all_peers(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_tcp(), sip_show_users(), sla_calc_station_delays(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), stop_streams(), tps_taskprocessor_tab_complete(), try_calling(), unload_module(), update_queue(), update_realtime_members(), users_data_provider_get(), xmpp_pubsub_create_affiliations(), xmpp_show_buddies(), and xmpp_show_clients().
| struct ao2_iterator ao2_iterator_init | ( | struct ao2_container * | c, |
| int | flags | ||
| ) | [read] |
Create an iterator for a container.
| c | the container |
| flags | one or more flags from ao2_iterator_flags |
| the | constructed iterator |
This function will take a reference on the container being iterated.
initialize an iterator so we start from the first object
Definition at line 1244 of file astobj2.c.
References ao2_ref, ao2_iterator::c, and ao2_iterator::flags.
Referenced by __ast_data_search_cmp_structure(), __ast_manager_event_multichan(), __data_result_print_cli(), __iax2_show_peers(), __queues_show(), aco_set_defaults(), action_confbridgelistrooms(), action_meetmelist(), add_ice_to_sdp(), alias_show(), ast_channel_iterator_all_new(), ast_data_iterator_init(), ast_data_search_match(), ast_format_cap_get_type(), ast_format_cap_has_joint(), ast_format_cap_has_type(), ast_format_cap_identical(), ast_format_cap_iter_start(), ast_format_cap_joint(), ast_format_cap_to_old_bitfield(), ast_merge_contexts_and_delete(), ast_msg_var_iterator_init(), ast_pickup_find_by_group(), ast_print_namedgroups(), ast_srtp_unprotect(), ast_tone_zone_iterator_init(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), authenticate(), authenticate_reply(), build_dialplan_useage_map(), build_format_list_array(), calendar_query_exec(), check_access(), clear_queue(), clear_stats(), cli_console_active(), cli_display_named_acl_list(), cli_fax_show_sessions(), cli_list_devices(), cli_tps_report(), compare_weight(), complete_confbridge_name(), complete_core_id(), complete_core_show_hint(), complete_country(), complete_iax2_peers(), complete_iax2_unregister(), complete_queue(), complete_queue_remove_member(), complete_sip_peer(), complete_sip_registered_peer(), complete_sip_user(), complete_sipch(), complete_userno(), conf_queue_dtmf(), config_hook_exec(), data_filter_find(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_print_cli(), data_provider_release_all(), data_result_generate_node(), data_result_manager_output(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_read(), do_parking_thread(), dump_queue_members(), extension_state_cb(), fax_session_tab_complete(), find_queue_by_name_rt(), find_ringing_channel(), find_session(), find_session_by_nonce(), free_members(), get_device_state_causing_channels(), get_member_status(), handle_cli_confbridge_list(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_users(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_status(), handle_feature_show(), handle_manager_show_event(), handle_parkedcalls(), handle_presencechange(), handle_show_calendar(), handle_show_calendars(), handle_show_hint(), handle_show_hints(), handle_show_named_acl_cmd(), handle_show_routes(), handle_showmanconn(), handle_skel_show_games(), handle_skel_show_levels(), handle_statechange(), hints_data_provider_get(), iax2_getpeername(), iax2_getpeertrunk(), interface_exists(), internal_ao2_callback(), jingle_add_google_candidates_to_transport(), jingle_add_ice_udp_candidates_to_transport(), jingle_request(), joint_copy_helper(), local_devicestate(), locals_show(), manager_iax2_show_peer_list(), manager_optimize_away(), manager_parking_status(), manager_parkinglot_list(), manager_queues_status(), manager_queues_summary(), manager_sip_peer_status(), meetme_menu_admin_extended(), meetme_show_cmd(), moh_rescan_files(), msg_func_write(), num_available_members(), peers_data_provider_get(), poke_all_peers(), pp_each_user_helper(), prune_peers(), prune_users(), purge_sessions(), queue_function_mem_read(), queue_function_qac_dep(), queue_function_queuememberlist(), queues_data_provider_get(), queues_data_provider_get_helper(), reload(), rt_handle_member_record(), set_member_paused(), set_member_value(), sip_keepalive_all_peers(), sip_poke_all_peers(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_tcp(), sip_show_users(), sla_calc_station_delays(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), stop_streams(), tps_taskprocessor_tab_complete(), try_calling(), unload_module(), update_queue(), update_realtime_members(), users_data_provider_get(), xmpp_pubsub_create_affiliations(), xmpp_show_buddies(), and xmpp_show_clients().
{
struct ao2_iterator a = {
.c = c,
.flags = flags
};
ao2_ref(c, +1);
return a;
}
| int ao2_match_by_addr | ( | void * | user_data, |
| void * | arg, | ||
| int | flags | ||
| ) |
A common ao2_callback is one that matches by address.
Definition at line 938 of file astobj2.c.
References CMP_MATCH, and CMP_STOP.
Referenced by __ao2_unlink(), __ao2_unlink_debug(), load_module(), and load_odbc_config().
| void* ao2_object_get_lockaddr | ( | void * | obj | ) |
Return the mutex lock address of an object.
| [in] | obj | A pointer to the object we want. |
This function comes in handy mainly for debugging locking situations, where the locking trace code reports the lock address, this allows you to correlate against object address, to match objects to reported locks.
Definition at line 406 of file astobj2.c.
References AO2_ALLOC_OPT_LOCK_MASK, AO2_ALLOC_OPT_LOCK_MUTEX, INTERNAL_OBJ(), INTERNAL_OBJ_MUTEX, ao2_lock_priv::lock, astobj2_lock::mutex, __priv_data::options, and astobj2::priv_data.
Referenced by bridge_channel_join_multithreaded(), bridge_channel_join_singlethreaded(), and db_sync_thread().
{
struct astobj2 *obj = INTERNAL_OBJ(user_data);
struct astobj2_lock *obj_mutex;
if (obj == NULL) {
return NULL;
}
switch (obj->priv_data.options & AO2_ALLOC_OPT_LOCK_MASK) {
case AO2_ALLOC_OPT_LOCK_MUTEX:
obj_mutex = INTERNAL_OBJ_MUTEX(user_data);
return &obj_mutex->mutex.lock;
default:
break;
}
return NULL;
}