From c969ea1e5766ee3e01c50a9315f41b7253c71787 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 3 Jan 2018 11:03:44 -0500 Subject: [PATCH] move stats and statsps into global scope Change-Id: I02d16e31f8980bd0ef3ff3a190b23dc61c087018 --- daemon/call.c | 17 ++++++++++------- daemon/call.h | 6 +++--- daemon/call_interfaces.c | 4 ++-- daemon/cli.c | 4 ++-- daemon/graphite.c | 2 +- daemon/media_socket.c | 12 +++++------- daemon/statistics.c | 8 ++++---- 7 files changed, 27 insertions(+), 26 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index 30a10e93a..3b7f9fc69 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -116,6 +116,9 @@ const struct transport_protocol transport_protocols[] = { }; const int num_transport_protocols = G_N_ELEMENTS(transport_protocols); +/* XXX rework these */ +struct stats rtpe_statsps; +struct stats rtpe_stats; rwlock_t rtpe_callhash_lock; GHashTable *rtpe_callhash; @@ -463,7 +466,7 @@ destroy: else \ d = ke->stats.x - ks_val; \ atomic64_add(&ps->stats.x, d); \ - atomic64_add(&m->statsps.x, d); \ + atomic64_add(&rtpe_statsps.x, d); \ } while (0) static void callmaster_timer(void *ptr) { struct callmaster *m = ptr; @@ -495,13 +498,13 @@ static void callmaster_timer(void *ptr) { g_list_foreach(calls, call_timer_iterator, &hlp); g_list_free_full(calls, call_obj_put); } - atomic64_local_copy_zero_struct(&tmpstats, &m->statsps, bytes); - atomic64_local_copy_zero_struct(&tmpstats, &m->statsps, packets); - atomic64_local_copy_zero_struct(&tmpstats, &m->statsps, errors); + atomic64_local_copy_zero_struct(&tmpstats, &rtpe_statsps, bytes); + atomic64_local_copy_zero_struct(&tmpstats, &rtpe_statsps, packets); + atomic64_local_copy_zero_struct(&tmpstats, &rtpe_statsps, errors); - atomic64_set(&m->stats.bytes, atomic64_get_na(&tmpstats.bytes)); - atomic64_set(&m->stats.packets, atomic64_get_na(&tmpstats.packets)); - atomic64_set(&m->stats.errors, atomic64_get_na(&tmpstats.errors)); + atomic64_set(&rtpe_stats.bytes, atomic64_get_na(&tmpstats.bytes)); + atomic64_set(&rtpe_stats.packets, atomic64_get_na(&tmpstats.packets)); + atomic64_set(&rtpe_stats.errors, atomic64_get_na(&tmpstats.errors)); i = kernel_list(); while (i) { diff --git a/daemon/call.h b/daemon/call.h index ec12136cb..051fb7ba7 100644 --- a/daemon/call.h +++ b/daemon/call.h @@ -416,9 +416,6 @@ struct callmaster_config { struct callmaster { struct obj obj; - /* XXX rework these */ - struct stats statsps; /* per second stats, running timer */ - struct stats stats; /* copied from statsps once a second */ struct totalstats totalstats; struct totalstats totalstats_interval; mutex_t totalstats_lastinterval_lock; @@ -432,6 +429,9 @@ struct callmaster { extern rwlock_t rtpe_callhash_lock; extern GHashTable *rtpe_callhash; +extern struct stats rtpe_statsps; /* per second stats, running timer */ +extern struct stats rtpe_stats; /* copied from statsps once a second */ + struct callmaster *callmaster_new(void); void callmaster_get_all_calls(struct callmaster *m, GQueue *q); diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index dc91ca24c..050130615 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -452,7 +452,7 @@ void calls_status_tcp(struct callmaster *m, struct streambuf_stream *s) { streambuf_printf(s->outbuf, "proxy %u "UINT64F"/%i/%i\n", g_queue_get_length(&q), - atomic64_get(&m->stats.bytes), 0, 0); + atomic64_get(&rtpe_stats.bytes), 0, 0); while (q.head) { c = g_queue_pop_head(&q); @@ -818,7 +818,7 @@ const char *call_offer_ng(bencode_item_t *input, struct callmaster *m, bencode_i if (m->conf.max_sessions>=0) { rwlock_lock_r(&rtpe_callhash_lock); if (g_hash_table_size(rtpe_callhash) - - atomic64_get(&m->stats.foreign_sessions) >= m->conf.max_sessions) { + atomic64_get(&rtpe_stats.foreign_sessions) >= m->conf.max_sessions) { rwlock_unlock_r(&rtpe_callhash_lock); /* foreign calls can't get rejected * total_rejected_sess applies only to "own" sessions */ diff --git a/daemon/cli.c b/daemon/cli.c index 4c282c380..055728a4a 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -254,8 +254,8 @@ static void cli_incoming_list_totals(str *instr, struct callmaster* m, struct st static void cli_incoming_list_numsessions(str *instr, struct callmaster* m, struct streambuf *replybuffer) { rwlock_lock_r(&rtpe_callhash_lock); - streambuf_printf(replybuffer, "Current sessions own: "UINT64F"\n", g_hash_table_size(rtpe_callhash) - atomic64_get(&m->stats.foreign_sessions)); - streambuf_printf(replybuffer, "Current sessions foreign: "UINT64F"\n", atomic64_get(&m->stats.foreign_sessions)); + streambuf_printf(replybuffer, "Current sessions own: "UINT64F"\n", g_hash_table_size(rtpe_callhash) - atomic64_get(&rtpe_stats.foreign_sessions)); + streambuf_printf(replybuffer, "Current sessions foreign: "UINT64F"\n", atomic64_get(&rtpe_stats.foreign_sessions)); streambuf_printf(replybuffer, "Current sessions total: %i\n", g_hash_table_size(rtpe_callhash)); rwlock_unlock_r(&rtpe_callhash_lock); } diff --git a/daemon/graphite.c b/daemon/graphite.c index 8502eec6c..2595c2c88 100644 --- a/daemon/graphite.c +++ b/daemon/graphite.c @@ -136,7 +136,7 @@ int send_graphite_data(struct callmaster *cm, struct totalstats *sent_data) { ts->managed_sess_max = cm->totalstats_interval.managed_sess_max; ts->managed_sess_min = cm->totalstats_interval.managed_sess_min; ts->total_sessions = g_hash_table_size(rtpe_callhash); - ts->foreign_sessions = atomic64_get(&cm->stats.foreign_sessions); + ts->foreign_sessions = atomic64_get(&rtpe_stats.foreign_sessions); ts->own_sessions = ts->total_sessions - ts->foreign_sessions; cm->totalstats_interval.managed_sess_max = ts->own_sessions;; cm->totalstats_interval.managed_sess_min = ts->own_sessions; diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 774d8961d..a7be8dbaa 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -1198,7 +1198,6 @@ static int stream_packet(struct stream_fd *sfd, str *s, const endpoint_t *fsin, unk = 0; int i; struct call *call; - struct callmaster *cm; /*unsigned char cc;*/ struct endpoint endpoint; rewrite_func rwf_in, rwf_out; @@ -1209,7 +1208,6 @@ static int stream_packet(struct stream_fd *sfd, str *s, const endpoint_t *fsin, struct ssrc_ctx *ssrc_in = NULL, *ssrc_out = NULL; call = sfd->call; - cm = call->callmaster; rwlock_lock_r(&call->master_lock); @@ -1319,7 +1317,7 @@ loop_ok: ilog(LOG_WARNING | LOG_FLAG_LIMIT, "RTP packet with unknown payload type %u received", i); atomic64_inc(&stream->stats.errors); - atomic64_inc(&cm->statsps.errors); + atomic64_inc(&rtpe_statsps.errors); } else { @@ -1338,7 +1336,7 @@ loop_ok: if (G_UNLIKELY(!sink || !sink->selected_sfd || !out_srtp || !out_srtp->selected_sfd || !in_srtp->selected_sfd)) { ilog(LOG_WARNING, "RTP packet from %s discarded", endpoint_print_buf(fsin)); atomic64_inc(&stream->stats.errors); - atomic64_inc(&cm->statsps.errors); + atomic64_inc(&rtpe_statsps.errors); goto unlock_out; } @@ -1511,7 +1509,7 @@ forward: ret = -errno; ilog(LOG_DEBUG,"Error when sending message. Error: %s",strerror(errno)); atomic64_inc(&stream->stats.errors); - atomic64_inc(&cm->statsps.errors); + atomic64_inc(&rtpe_statsps.errors); goto out; } @@ -1524,8 +1522,8 @@ drop: atomic64_inc(&stream->stats.packets); atomic64_add(&stream->stats.bytes, s->len); atomic64_set(&stream->last_packet, rtpe_now.tv_sec); - atomic64_inc(&cm->statsps.packets); - atomic64_add(&cm->statsps.bytes, s->len); + atomic64_inc(&rtpe_statsps.packets); + atomic64_add(&rtpe_statsps.bytes, s->len); out: if (ret == 0 && update) diff --git a/daemon/statistics.c b/daemon/statistics.c index bf4eaf173..15d5ee72d 100644 --- a/daemon/statistics.c +++ b/daemon/statistics.c @@ -76,13 +76,13 @@ void statistics_update_foreignown_dec(struct call* c) { m = c->callmaster; if (IS_FOREIGN_CALL(c)) { - atomic64_dec(&m->stats.foreign_sessions); + atomic64_dec(&rtpe_stats.foreign_sessions); } if(IS_OWN_CALL(c)) { mutex_lock(&m->totalstats_interval.managed_sess_lock); m->totalstats_interval.managed_sess_min = MIN(m->totalstats_interval.managed_sess_min, - g_hash_table_size(rtpe_callhash) - atomic64_get(&m->stats.foreign_sessions)); + g_hash_table_size(rtpe_callhash) - atomic64_get(&rtpe_stats.foreign_sessions)); mutex_unlock(&m->totalstats_interval.managed_sess_lock); } @@ -94,11 +94,11 @@ void statistics_update_foreignown_inc(struct callmaster *m, struct call* c) { m->totalstats_interval.managed_sess_max = MAX( m->totalstats_interval.managed_sess_max, g_hash_table_size(rtpe_callhash) - - atomic64_get(&m->stats.foreign_sessions)); + - atomic64_get(&rtpe_stats.foreign_sessions)); mutex_unlock(&m->totalstats_interval.managed_sess_lock); } else if (IS_FOREIGN_CALL(c)) { /* foreign call*/ - atomic64_inc(&m->stats.foreign_sessions); + atomic64_inc(&rtpe_stats.foreign_sessions); atomic64_inc(&m->totalstats.total_foreign_sessions); }