Skip to content

Commit

Permalink
rq app: clone a runqueue to avoid holding its lock (#1000)
Browse files Browse the repository at this point in the history
This avoids disabling preemption for the duration of the program,
which can interfere with printing to the terminal.

Signed-off-by: Klimenty Tsoutsman <klim@tsoutsman.com> 3efa9d3
  • Loading branch information
kevinaboos committed Jul 5, 2023
1 parent 0f8fa96 commit e95ccd8
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion doc/runqueue_priority/struct.RunQueue.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RunQueue" class="impl"><a class="srclink rightside" href="../src/runqueue_priority/lib.rs.html#107-246">source</a><a href="#impl-RunQueue" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.RunQueue.html" title="struct runqueue_priority::RunQueue">RunQueue</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.init" class="method"><a class="srclink rightside" href="../src/runqueue_priority/lib.rs.html#109-126">source</a><h4 class="code-header">pub fn <a href="#method.init" class="fn">init</a>(which_core: <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.u8.html">u8</a>, idle_task: TaskRef) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.unit.html">()</a>, &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.str.html">str</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new <code>RunQueue</code> for the given core, which is an <code>apic_id</code></p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_runqueue" class="method"><a class="srclink rightside" href="../src/runqueue_priority/lib.rs.html#129-131">source</a><h4 class="code-header">pub fn <a href="#method.get_runqueue" class="fn">get_runqueue</a>(
which_core: <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.u8.html">u8</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'static <a class="type" href="../sync_preemption/type.PreemptionSafeRwLock.html" title="type sync_preemption::PreemptionSafeRwLock">PreemptionSafeRwLock</a>&lt;<a class="struct" href="struct.RunQueue.html" title="struct runqueue_priority::RunQueue">RunQueue</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns <code>RunQueue</code> for the given core, which is an <code>apic_id</code>.</p>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'static PreemptionSafeRwLock&lt;<a class="struct" href="struct.RunQueue.html" title="struct runqueue_priority::RunQueue">RunQueue</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns <code>RunQueue</code> for the given core, which is an <code>apic_id</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_least_busy_core" class="method"><a class="srclink rightside" href="../src/runqueue_priority/lib.rs.html#135-137">source</a><h4 class="code-header">pub fn <a href="#method.get_least_busy_core" class="fn">get_least_busy_core</a>() -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the “least busy” core, which is currently very simple, based on
runqueue size.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.add_task_to_any_runqueue" class="method"><a class="srclink rightside" href="../src/runqueue_priority/lib.rs.html#162-168">source</a><h4 class="code-header">pub fn <a href="#method.add_task_to_any_runqueue" class="fn">add_task_to_any_runqueue</a>(task: TaskRef) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.unit.html">()</a>, &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.str.html">str</a>&gt;</h4></section></summary><div class="docblock"><p>Chooses the “least busy” core’s runqueue (based on simple
Expand Down

0 comments on commit e95ccd8

Please sign in to comment.