<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>