<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/26474">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">switch to libosmocore multihread-logging<br><br>When osmo-remsim was originally developed, libosmocore logging was<br>not yet thread-safe. This meant that the worker threads of remsim-bankd<br>and remsim-server could not log via the libosmocore logging framework<br>but directly used stderr/stdout, which produced rather inconsistent log<br>output.<br><br>However, since 1.3.0, libosmocore has received support for<br>multi-threaded applications. Let's make use of this and consistently<br>use it in remsim-server and remsim-bankd. This obviously also means<br>adding some more log categories.<br><br>Change-Id: I7bd5264c559b756927046563a2d00c54826bee9b<br>---<br>M src/bankd/bankd.h<br>M src/bankd/bankd_main.c<br>M src/debug.c<br>M src/debug.h<br>M src/server/remsim_server.c<br>M src/server/rest_api.c<br>M src/server/rspro_server.c<br>M src/slotmap.c<br>8 files changed, 34 insertions(+), 12 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bankd/bankd.h b/src/bankd/bankd.h</span><br><span>index 6de3213..c007802 100644</span><br><span>--- a/src/bankd/bankd.h</span><br><span>+++ b/src/bankd/bankd.h</span><br><span>@@ -20,8 +20,8 @@</span><br><span> extern struct value_string worker_state_names[];</span><br><span> </span><br><span> #define LOGW(w, fmt, args...) \</span><br><span style="color: hsl(0, 100%, 40%);">- printf("[%03u %s] %s:%u " fmt, (w)->num, get_value_string(worker_state_names, (w)->state), \</span><br><span style="color: hsl(0, 100%, 40%);">- __FILE__, __LINE__, ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DBANKDW, LOGL_INFO, "[%03u %s] " fmt, (w)->num, get_value_string(worker_state_names, (w)->state), \</span><br><span style="color: hsl(120, 100%, 40%);">+ ## args)</span><br><span> </span><br><span> struct bankd;</span><br><span> </span><br><span>diff --git a/src/bankd/bankd_main.c b/src/bankd/bankd_main.c</span><br><span>index 3842b0c..5b70b88 100644</span><br><span>--- a/src/bankd/bankd_main.c</span><br><span>+++ b/src/bankd/bankd_main.c</span><br><span>@@ -80,6 +80,8 @@</span><br><span> log_set_print_category(osmo_stderr_target, 1);</span><br><span> log_set_print_category_hex(osmo_stderr_target, 0);</span><br><span> osmo_fsm_log_addr(0);</span><br><span style="color: hsl(120, 100%, 40%);">+ log_set_print_tid(osmo_stderr_target, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ log_enable_multithread();</span><br><span> </span><br><span> asn_debug = 0;</span><br><span> </span><br><span>diff --git a/src/debug.c b/src/debug.c</span><br><span>index a538697..2dfc16e 100644</span><br><span>--- a/src/debug.c</span><br><span>+++ b/src/debug.c</span><br><span>@@ -41,6 +41,21 @@</span><br><span> .loglevel = LOGL_INFO,</span><br><span> .enabled = 1,</span><br><span> },</span><br><span style="color: hsl(120, 100%, 40%);">+ [DREST] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "DREST",</span><br><span style="color: hsl(120, 100%, 40%);">+ .loglevel = LOGL_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ [DSLOTMAP] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "DSLOTMAP",</span><br><span style="color: hsl(120, 100%, 40%);">+ .loglevel = LOGL_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ [DBANKDW] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "DBANKDW",</span><br><span style="color: hsl(120, 100%, 40%);">+ .loglevel = LOGL_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span> };</span><br><span> </span><br><span> const struct log_info log_info = {</span><br><span>diff --git a/src/debug.h b/src/debug.h</span><br><span>index 51331f4..88288ca 100644</span><br><span>--- a/src/debug.h</span><br><span>+++ b/src/debug.h</span><br><span>@@ -5,6 +5,9 @@</span><br><span> DMAIN,</span><br><span> DST2,</span><br><span> DRSPRO,</span><br><span style="color: hsl(120, 100%, 40%);">+ DREST,</span><br><span style="color: hsl(120, 100%, 40%);">+ DSLOTMAP,</span><br><span style="color: hsl(120, 100%, 40%);">+ DBANKDW,</span><br><span> };</span><br><span> </span><br><span> extern const struct log_info log_info;</span><br><span>diff --git a/src/server/remsim_server.c b/src/server/remsim_server.c</span><br><span>index 49107b9..c2d54e5 100644</span><br><span>--- a/src/server/remsim_server.c</span><br><span>+++ b/src/server/remsim_server.c</span><br><span>@@ -93,6 +93,8 @@</span><br><span> log_set_print_category(osmo_stderr_target, 1);</span><br><span> log_set_print_category_hex(osmo_stderr_target, 0);</span><br><span> osmo_fsm_log_addr(0);</span><br><span style="color: hsl(120, 100%, 40%);">+ log_set_print_tid(osmo_stderr_target, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ log_enable_multithread();</span><br><span> </span><br><span> handle_options(argc, argv);</span><br><span> </span><br><span>diff --git a/src/server/rest_api.c b/src/server/rest_api.c</span><br><span>index ff1b588..540fbd4 100644</span><br><span>--- a/src/server/rest_api.c</span><br><span>+++ b/src/server/rest_api.c</span><br><span>@@ -304,7 +304,7 @@</span><br><span> </span><br><span> rc = write(g_event_ofd.fd, &one, sizeof(one));</span><br><span> if (rc < 8)</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "Error writing to eventfd(): %d\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DREST, LOGL_ERROR, "Error writing to eventfd(): %d\n", rc);</span><br><span> }</span><br><span> </span><br><span> static int api_cb_slotmaps_post(const struct _u_request *req, struct _u_response *resp, void *user_data)</span><br><span>@@ -318,7 +318,7 @@</span><br><span> </span><br><span> json_req = ulfius_get_json_body_request(req, &json_err);</span><br><span> if (!json_req) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "REST: No JSON Body\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DREST, LOGL_NOTICE, "REST: No JSON Body\n");</span><br><span> goto err;</span><br><span> }</span><br><span> </span><br><span>@@ -327,7 +327,7 @@</span><br><span> goto err;</span><br><span> map = slotmap_add(g_rps->slotmaps, &slotmap.bank, &slotmap.client);</span><br><span> if (!map) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "REST: Cannot add slotmap\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DREST, LOGL_NOTICE, "REST: Cannot add slotmap\n");</span><br><span> goto err;</span><br><span> }</span><br><span> slotmap_state_change(map, SLMAP_S_NEW, NULL);</span><br><span>@@ -511,7 +511,7 @@</span><br><span> ulfius_add_endpoint(&g_instance, &api_endpoints[i]);</span><br><span> </span><br><span> if (ulfius_start_framework(&g_instance) != U_OK) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "Cannot start REST API on port %u\n", port);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DREST, LOGL_FATAL, "Cannot start REST API on port %u\n", port);</span><br><span> return -1;</span><br><span> }</span><br><span> return 0;</span><br><span>diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c</span><br><span>index b35800f..6514f80 100644</span><br><span>--- a/src/server/rspro_server.c</span><br><span>+++ b/src/server/rspro_server.c</span><br><span>@@ -709,11 +709,11 @@</span><br><span> /* read from the socket to "confirm" the event and make it non-readable again */</span><br><span> rc = read(ofd->fd, &value, 8);</span><br><span> if (rc < 8) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "Error reading eventfd: %d\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DMAIN, LOGL_ERROR, "Error reading eventfd: %d\n", rc);</span><br><span> return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- printf("rspro_server: Event FD arrived, checking for any pending work\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DMAIN, LOGL_INFO, "Event FD arrived, checking for any pending work\n");</span><br><span> </span><br><span> pthread_rwlock_rdlock(&srv->rwlock);</span><br><span> llist_for_each_entry(conn, &srv->banks, list) {</span><br><span>diff --git a/src/slotmap.c b/src/slotmap.c</span><br><span>index b837f01..fe0c6b7 100644</span><br><span>--- a/src/slotmap.c</span><br><span>+++ b/src/slotmap.c</span><br><span>@@ -103,14 +103,14 @@</span><br><span> </span><br><span> map = slotmap_by_bank(maps, bank);</span><br><span> if (map) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "BANKD %u:%u already in use, cannot add new map\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DSLOTMAP, LOGL_ERROR, "BANKD %u:%u already in use, cannot add new map\n",</span><br><span> bank->bank_id, bank->slot_nr);</span><br><span> return NULL;</span><br><span> }</span><br><span> </span><br><span> map = slotmap_by_client(maps, client);</span><br><span> if (map) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "CLIENT %u:%u already in use, cannot add new map\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DSLOTMAP, LOGL_ERROR, "CLIENT %u:%u already in use, cannot add new map\n",</span><br><span> client->client_id, client->slot_nr);</span><br><span> return NULL;</span><br><span> }</span><br><span>@@ -132,7 +132,7 @@</span><br><span> #endif</span><br><span> slotmaps_unlock(maps);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- printf("Slot Map %s added\n", slotmap_name(mapname, sizeof(mapname), map));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DSLOTMAP, LOGL_INFO, "Slot Map %s added\n", slotmap_name(mapname, sizeof(mapname), map));</span><br><span> </span><br><span> return map;</span><br><span> }</span><br><span>@@ -142,7 +142,7 @@</span><br><span> {</span><br><span> char mapname[64];</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- printf("Slot Map %s deleted\n", slotmap_name(mapname, sizeof(mapname), map));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DSLOTMAP, LOGL_INFO, "Slot Map %s deleted\n", slotmap_name(mapname, sizeof(mapname), map));</span><br><span> </span><br><span> llist_del(&map->list);</span><br><span> #ifdef REMSIM_SERVER</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/26474">change 26474</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-remsim/+/26474"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-remsim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I7bd5264c559b756927046563a2d00c54826bee9b </div>
<div style="display:none"> Gerrit-Change-Number: 26474 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>