This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Hoernchen gerrit-no-reply at lists.osmocom.orgHoernchen has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-mgw/+/25422 ) Change subject: libosmo-mgcp: atomic rate counter group indexes ...................................................................... libosmo-mgcp: atomic rate counter group indexes Postfix++ on atomics is specified as rmw operation with memory_order_seq_cst. Change-Id: Ib82d15aab2b3ba25827f9cf8751dbf87ee92a444 --- M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_ratectr.c 2 files changed, 15 insertions(+), 20 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/22/25422/1 diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 7988c48..ca12347 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -21,6 +21,7 @@ * */ +#include <stdatomic.h> #include <osmocom/mgcp/mgcp_conn.h> #include <osmocom/mgcp/mgcp_network.h> #include <osmocom/mgcp/mgcp_protocol.h> @@ -89,7 +90,7 @@ /* FIXME: Each new rate counter group requires an unique index. At the * moment we generate this index using this counter, but perhaps there * is a more concious way to assign the indexes. */ - static unsigned int rate_ctr_index = 0; + static atomic_uint rate_ctr_index = 0; conn_rtp->type = MGCP_RTP_DEFAULT; conn_rtp->osmux.cid_allocated = false; @@ -110,13 +111,12 @@ end->output_enabled = 0; end->maximum_packet_time = -1; - conn_rtp->rate_ctr_group = rate_ctr_group_alloc(conn, &rate_ctr_group_desc, rate_ctr_index); + conn_rtp->rate_ctr_group = rate_ctr_group_alloc(conn, &rate_ctr_group_desc, rate_ctr_index++); if (!conn_rtp->rate_ctr_group) return -1; conn_rtp->state.in_stream.err_ts_ctr = rate_ctr_group_get_ctr(conn_rtp->rate_ctr_group, IN_STREAM_ERR_TSTMP_CTR); conn_rtp->state.out_stream.err_ts_ctr = rate_ctr_group_get_ctr(conn_rtp->rate_ctr_group, OUT_STREAM_ERR_TSTMP_CTR); - rate_ctr_index++; /* Make sure codec table is reset */ mgcp_codec_reset_all(conn_rtp); diff --git a/src/libosmo-mgcp/mgcp_ratectr.c b/src/libosmo-mgcp/mgcp_ratectr.c index 040dbb5..6030ce2 100644 --- a/src/libosmo-mgcp/mgcp_ratectr.c +++ b/src/libosmo-mgcp/mgcp_ratectr.c @@ -22,6 +22,7 @@ * */ +#include <stdatomic.h> #include <errno.h> #include <osmocom/core/stats.h> #include <osmocom/core/stat_item.h> @@ -152,17 +153,16 @@ int mgcp_ratectr_global_alloc(struct mgcp_config *cfg) { struct mgcp_ratectr_global *ratectr = &cfg->ratectr; - static unsigned int general_rate_ctr_index = 0; + static atomic_uint general_rate_ctr_index = 0; char ctr_name[512]; if (ratectr->mgcp_general_ctr_group == NULL) { ratectr->mgcp_general_ctr_group = - rate_ctr_group_alloc(cfg, &mgcp_general_ctr_group_desc, general_rate_ctr_index); + rate_ctr_group_alloc(cfg, &mgcp_general_ctr_group_desc, general_rate_ctr_index++); if (!ratectr->mgcp_general_ctr_group) return -EINVAL; snprintf(ctr_name, sizeof(ctr_name), "%s:general", cfg->domain); rate_ctr_group_set_name(ratectr->mgcp_general_ctr_group, ctr_name); - general_rate_ctr_index++; } return 0; } @@ -187,62 +187,57 @@ int mgcp_ratectr_trunk_alloc(struct mgcp_trunk *trunk) { struct mgcp_ratectr_trunk *ratectr = &trunk->ratectr; - static unsigned int crcx_rate_ctr_index = 0; - static unsigned int mdcx_rate_ctr_index = 0; - static unsigned int dlcx_rate_ctr_index = 0; - static unsigned int all_rtp_conn_rate_ctr_index = 0; + static atomic_uint crcx_rate_ctr_index = 0; + static atomic_uint mdcx_rate_ctr_index = 0; + static atomic_uint dlcx_rate_ctr_index = 0; + static atomic_uint all_rtp_conn_rate_ctr_index = 0; char ctr_name[256]; if (ratectr->mgcp_crcx_ctr_group == NULL) { ratectr->mgcp_crcx_ctr_group = - rate_ctr_group_alloc(trunk, &mgcp_crcx_ctr_group_desc, crcx_rate_ctr_index); + rate_ctr_group_alloc(trunk, &mgcp_crcx_ctr_group_desc, crcx_rate_ctr_index++); if (!ratectr->mgcp_crcx_ctr_group) return -EINVAL; snprintf(ctr_name, sizeof(ctr_name), "%s-%u:crcx", mgcp_trunk_type_strs_str(trunk->trunk_type), trunk->trunk_nr); rate_ctr_group_set_name(ratectr->mgcp_crcx_ctr_group, ctr_name); - crcx_rate_ctr_index++; } if (ratectr->mgcp_mdcx_ctr_group == NULL) { ratectr->mgcp_mdcx_ctr_group = - rate_ctr_group_alloc(trunk, &mgcp_mdcx_ctr_group_desc, mdcx_rate_ctr_index); + rate_ctr_group_alloc(trunk, &mgcp_mdcx_ctr_group_desc, mdcx_rate_ctr_index++); if (!ratectr->mgcp_mdcx_ctr_group) return -EINVAL; snprintf(ctr_name, sizeof(ctr_name), "%s-%u:mdcx", mgcp_trunk_type_strs_str(trunk->trunk_type), trunk->trunk_nr); rate_ctr_group_set_name(ratectr->mgcp_mdcx_ctr_group, ctr_name); - mdcx_rate_ctr_index++; } if (ratectr->mgcp_dlcx_ctr_group == NULL) { ratectr->mgcp_dlcx_ctr_group = - rate_ctr_group_alloc(trunk, &mgcp_dlcx_ctr_group_desc, dlcx_rate_ctr_index); + rate_ctr_group_alloc(trunk, &mgcp_dlcx_ctr_group_desc, dlcx_rate_ctr_index++); if (!ratectr->mgcp_dlcx_ctr_group) return -EINVAL; snprintf(ctr_name, sizeof(ctr_name), "%s-%u:dlcx", mgcp_trunk_type_strs_str(trunk->trunk_type), trunk->trunk_nr); rate_ctr_group_set_name(ratectr->mgcp_dlcx_ctr_group, ctr_name); - dlcx_rate_ctr_index++; } if (ratectr->all_rtp_conn_stats == NULL) { ratectr->all_rtp_conn_stats = rate_ctr_group_alloc(trunk, &all_rtp_conn_rate_ctr_group_desc, - all_rtp_conn_rate_ctr_index); + all_rtp_conn_rate_ctr_index++); if (!ratectr->all_rtp_conn_stats) return -EINVAL; snprintf(ctr_name, sizeof(ctr_name), "%s-%u:rtp_conn", mgcp_trunk_type_strs_str(trunk->trunk_type), trunk->trunk_nr); rate_ctr_group_set_name(ratectr->all_rtp_conn_stats, ctr_name); - all_rtp_conn_rate_ctr_index++; } /* E1 specific */ if (trunk->trunk_type == MGCP_TRUNK_E1 && ratectr->e1_stats == NULL) { - ratectr->e1_stats = rate_ctr_group_alloc(trunk, &e1_rate_ctr_group_desc, mdcx_rate_ctr_index); + ratectr->e1_stats = rate_ctr_group_alloc(trunk, &e1_rate_ctr_group_desc, mdcx_rate_ctr_index++); if (!ratectr->e1_stats) return -EINVAL; snprintf(ctr_name, sizeof(ctr_name), "%s-%u:e1", mgcp_trunk_type_strs_str(trunk->trunk_type), trunk->trunk_nr); rate_ctr_group_set_name(ratectr->e1_stats, ctr_name); - mdcx_rate_ctr_index++; } return 0; } -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/25422 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: Ib82d15aab2b3ba25827f9cf8751dbf87ee92a444 Gerrit-Change-Number: 25422 Gerrit-PatchSet: 1 Gerrit-Owner: Hoernchen <ewild at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210909/92c1e183/attachment.htm>