<p>Hoernchen has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/25415">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty sched: add api to force deferred applying<br><br>Some applications might not yet have threads at config parsing time, so<br>applying to threads just does not work, allow enforcing this with a new<br>api call. This is not reflected in the config file, since this is the<br>only way this works, so let's not confuse the user with those details by<br>storing flags or modifying the settings.<br><br>Change-Id: Id8405099e6b316c2e14fb0c9b3c5e80a68a91277<br>---<br>M include/osmocom/vty/cpu_sched_vty.h<br>M src/vty/cpu_sched_vty.c<br>2 files changed, 15 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/15/25415/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/vty/cpu_sched_vty.h b/include/osmocom/vty/cpu_sched_vty.h</span><br><span>index 171f168..b60fbf9 100644</span><br><span>--- a/include/osmocom/vty/cpu_sched_vty.h</span><br><span>+++ b/include/osmocom/vty/cpu_sched_vty.h</span><br><span>@@ -33,5 +33,6 @@</span><br><span> </span><br><span> void osmo_cpu_sched_vty_init(void *tall_ctx);</span><br><span> int osmo_cpu_sched_vty_apply_localthread(void);</span><br><span style="color: hsl(120, 100%, 40%);">+void osmo_cpu_sched_force_apply_later(bool yes);</span><br><span> </span><br><span> /*! @} */</span><br><span>diff --git a/src/vty/cpu_sched_vty.c b/src/vty/cpu_sched_vty.c</span><br><span>index 4ccc627..92b356f 100644</span><br><span>--- a/src/vty/cpu_sched_vty.c</span><br><span>+++ b/src/vty/cpu_sched_vty.c</span><br><span>@@ -76,6 +76,7 @@</span><br><span>   int sched_rr_prio;</span><br><span>   struct llist_head cpu_affinity_li;</span><br><span>   pthread_mutex_t cpu_affinity_li_mutex;</span><br><span style="color: hsl(120, 100%, 40%);">+        bool force_apply_later;</span><br><span> };</span><br><span> </span><br><span> static struct sched_vty_opts *sched_vty_opts;</span><br><span>@@ -392,6 +393,8 @@</span><br><span>     cpu_set_t *cpuset;</span><br><span>   size_t cpuset_size;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       applynow = sched_vty_opts->force_apply_later ? false : applynow;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        tid_type = procname2pid(&pid, str_who, applynow);</span><br><span>        if (tid_type == SCHED_VTY_THREAD_UNKNOWN) {</span><br><span>          vty_out(vty, "%% Failed parsing target thread %s%s",</span><br><span>@@ -404,7 +407,7 @@</span><br><span>                         (unsigned long)pid, VTY_NEWLINE);</span><br><span>            return CMD_WARNING;</span><br><span>  }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (tid_type == SCHED_VTY_THREAD_ALL && !applynow)  {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (tid_type == SCHED_VTY_THREAD_ALL && !applynow && !sched_vty_opts->force_apply_later)  {</span><br><span>               vty_out(vty, "%% It makes no sense to delay applying cpu-affinity on all threads%s",</span><br><span>                       VTY_NEWLINE);</span><br><span>                return CMD_WARNING;</span><br><span>@@ -587,7 +590,7 @@</span><br><span>            if (generate_cpu_hex_mask(str_mask, sizeof(str_mask), it->cpuset, it->cpuset_size) < 0)</span><br><span>                     OSMO_STRLCPY_ARRAY(str_mask, "ERROR");</span><br><span>             vty_out(vty, " cpu-affinity %s %s%s%s", it->bufname, str_mask,</span><br><span style="color: hsl(0, 100%, 40%);">-                     it->delay ? " delay" : "", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                       (it->delay && !sched_vty_opts->force_apply_later) ? " delay" : "", VTY_NEWLINE);</span><br><span>   }</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span>@@ -676,4 +679,13 @@</span><br><span>   return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Force deferred cpu affinty for applications that spawn their threads late</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] yes  Enable/disable delayed thread priority application</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+void osmo_cpu_sched_force_apply_later(bool yes)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    OSMO_ASSERT(sched_vty_opts);</span><br><span style="color: hsl(120, 100%, 40%);">+  sched_vty_opts->force_apply_later = yes;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! @} */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/25415">change 25415</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/libosmocore/+/25415"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id8405099e6b316c2e14fb0c9b3c5e80a68a91277 </div>
<div style="display:none"> Gerrit-Change-Number: 25415 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>