From 2889f074a0a2ce83481fd89a0039bf85a96b6f84 Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Tue, 10 Mar 2015 23:09:49 +0000 Subject: core: Don't create snapshots with locks. Snapshots are immutable and are never changed. Allocating them with a lock is wasteful. Review: https://reviewboard.asterisk.org/r/4469/ ........ Merged revisions 432742 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432743 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/endpoints.c | 5 +++-- main/stasis_bridges.c | 3 ++- main/stasis_channels.c | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/main/endpoints.c b/main/endpoints.c index f8cca45b8..3a6f494c0 100644 --- a/main/endpoints.c +++ b/main/endpoints.c @@ -467,9 +467,10 @@ struct ast_endpoint_snapshot *ast_endpoint_snapshot_create( channel_count = ao2_container_count(endpoint->channel_ids); - snapshot = ao2_alloc( + snapshot = ao2_alloc_options( sizeof(*snapshot) + channel_count * sizeof(char *), - endpoint_snapshot_dtor); + endpoint_snapshot_dtor, + AO2_ALLOC_OPT_LOCK_NOLOCK); if (ast_string_field_init(snapshot, 80) != 0) { return NULL; diff --git a/main/stasis_bridges.c b/main/stasis_bridges.c index fbdb98c83..183855773 100644 --- a/main/stasis_bridges.c +++ b/main/stasis_bridges.c @@ -232,7 +232,8 @@ struct ast_bridge_snapshot *ast_bridge_snapshot_create(struct ast_bridge *bridge RAII_VAR(struct ast_bridge_snapshot *, snapshot, NULL, ao2_cleanup); struct ast_bridge_channel *bridge_channel; - snapshot = ao2_alloc(sizeof(*snapshot), bridge_snapshot_dtor); + snapshot = ao2_alloc_options(sizeof(*snapshot), bridge_snapshot_dtor, + AO2_ALLOC_OPT_LOCK_NOLOCK); if (!snapshot || ast_string_field_init(snapshot, 128)) { return NULL; } diff --git a/main/stasis_channels.c b/main/stasis_channels.c index 6b3f76592..85abe58bc 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -209,7 +209,8 @@ struct ast_channel_snapshot *ast_channel_snapshot_create(struct ast_channel *cha return NULL; } - snapshot = ao2_alloc(sizeof(*snapshot), channel_snapshot_dtor); + snapshot = ao2_alloc_options(sizeof(*snapshot), channel_snapshot_dtor, + AO2_ALLOC_OPT_LOCK_NOLOCK); if (!snapshot || ast_string_field_init(snapshot, 1024)) { ao2_cleanup(snapshot); return NULL; @@ -617,7 +618,8 @@ void ast_multi_channel_blob_add_channel(struct ast_multi_channel_blob *obj, cons return; } - role_snapshot = ao2_alloc(sizeof(*role_snapshot) + role_len, channel_role_snapshot_dtor); + role_snapshot = ao2_alloc_options(sizeof(*role_snapshot) + role_len, channel_role_snapshot_dtor, + AO2_ALLOC_OPT_LOCK_NOLOCK); if (!role_snapshot) { return; } -- cgit v1.2.3