mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	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/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -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; | ||||
|   | ||||
| @@ -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; | ||||
| 	} | ||||
|   | ||||
| @@ -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; | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user