classtk_1_1_mutex.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?xml version='1.0' encoding='UTF-8' standalone='no'?>
  2. <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.18.0" xml:lang="ja">
  3. <compounddef id="classtk_1_1_mutex" kind="class" language="C++" prot="public">
  4. <compoundname>tk::Mutex</compoundname>
  5. <includes refid="sync_8hpp" local="no">sync.hpp</includes>
  6. <sectiondef kind="private-attrib">
  7. <memberdef kind="variable" id="classtk_1_1_mutex_1af9c0ef5790eb8dd480eafb5b240346c7" prot="private" static="no" mutable="no">
  8. <type>bool</type>
  9. <definition>bool tk::Mutex::locked_</definition>
  10. <argsstring></argsstring>
  11. <name>locked_</name>
  12. <qualifiedname>tk::Mutex::locked_</qualifiedname>
  13. <initializer>{false}</initializer>
  14. <briefdescription>
  15. </briefdescription>
  16. <detaileddescription>
  17. </detaileddescription>
  18. <inbodydescription>
  19. </inbodydescription>
  20. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="197" column="10" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="197" bodyend="197"/>
  21. </memberdef>
  22. <memberdef kind="variable" id="classtk_1_1_mutex_1af1e61669758d602826e01ba0504f3c22" prot="private" static="no" mutable="no">
  23. <type>uint8_t</type>
  24. <definition>uint8_t tk::Mutex::owner_slot_</definition>
  25. <argsstring></argsstring>
  26. <name>owner_slot_</name>
  27. <qualifiedname>tk::Mutex::owner_slot_</qualifiedname>
  28. <initializer>{0xFF}</initializer>
  29. <briefdescription>
  30. </briefdescription>
  31. <detaileddescription>
  32. </detaileddescription>
  33. <inbodydescription>
  34. </inbodydescription>
  35. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="198" column="13" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="198" bodyend="198"/>
  36. </memberdef>
  37. <memberdef kind="variable" id="classtk_1_1_mutex_1aeac0965733267f9ba05bdb552676670d" prot="private" static="no" mutable="no">
  38. <type><ref refid="namespacetk_1add371a241ec6c1695ef4e67935317edd" kindref="member">task_mask_t</ref></type>
  39. <definition>task_mask_t tk::Mutex::wait_mask_</definition>
  40. <argsstring></argsstring>
  41. <name>wait_mask_</name>
  42. <qualifiedname>tk::Mutex::wait_mask_</qualifiedname>
  43. <initializer>{0}</initializer>
  44. <briefdescription>
  45. </briefdescription>
  46. <detaileddescription>
  47. </detaileddescription>
  48. <inbodydescription>
  49. </inbodydescription>
  50. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="199" column="17" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="199" bodyend="199"/>
  51. </memberdef>
  52. </sectiondef>
  53. <sectiondef kind="public-func">
  54. <memberdef kind="function" id="classtk_1_1_mutex_1a8b17431db60f4ab48a3859b2ca722eb1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
  55. <type></type>
  56. <definition>tk::Mutex::Mutex</definition>
  57. <argsstring>()=default</argsstring>
  58. <name>Mutex</name>
  59. <qualifiedname>tk::Mutex::Mutex</qualifiedname>
  60. <briefdescription>
  61. </briefdescription>
  62. <detaileddescription>
  63. </detaileddescription>
  64. <inbodydescription>
  65. </inbodydescription>
  66. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="125" column="5"/>
  67. </memberdef>
  68. <memberdef kind="function" id="classtk_1_1_mutex_1a7f5645bba55df2db263f92a954802c27" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
  69. <type>void</type>
  70. <definition>void tk::Mutex::lock</definition>
  71. <argsstring>()</argsstring>
  72. <name>lock</name>
  73. <qualifiedname>tk::Mutex::lock</qualifiedname>
  74. <briefdescription>
  75. <para>ミューテックスをロックします (空くまでブロック待機) </para>
  76. </briefdescription>
  77. <detaileddescription>
  78. <para>他のタスクが保持している場合は、解放されるまで自タスクを <computeroutput>State::Blocked</computeroutput> にして休止します。 </para>
  79. </detaileddescription>
  80. <inbodydescription>
  81. </inbodydescription>
  82. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="132" column="10" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="132" bodyend="144"/>
  83. </memberdef>
  84. <memberdef kind="function" id="classtk_1_1_mutex_1a666dd03fb22c5cb855e3145f76a58b9c" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
  85. <type>bool</type>
  86. <definition>bool tk::Mutex::try_lock</definition>
  87. <argsstring>()</argsstring>
  88. <name>try_lock</name>
  89. <qualifiedname>tk::Mutex::try_lock</qualifiedname>
  90. <briefdescription>
  91. <para>ミューテックスのロックを試みます (ノンブロッキング) </para>
  92. </briefdescription>
  93. <detaileddescription>
  94. <para><simplesect kind="return"><para>true ロック獲得成功 </para>
  95. </simplesect>
  96. <simplesect kind="return"><para>false 他のタスクが保持しているため獲得失敗 (ブロックせず即座に復帰) </para>
  97. </simplesect>
  98. </para>
  99. </detaileddescription>
  100. <inbodydescription>
  101. </inbodydescription>
  102. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="152" column="10" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="152" bodyend="163"/>
  103. </memberdef>
  104. <memberdef kind="function" id="classtk_1_1_mutex_1ae8d5dfd5655b5aa54d63db6e0cf2f707" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
  105. <type>void</type>
  106. <definition>void tk::Mutex::unlock</definition>
  107. <argsstring>()</argsstring>
  108. <name>unlock</name>
  109. <qualifiedname>tk::Mutex::unlock</qualifiedname>
  110. <briefdescription>
  111. <para>ミューテックスのロックを解除します </para>
  112. </briefdescription>
  113. <detaileddescription>
  114. <para>ロックを保持しているタスク本人だけが解除できます。 待機中のタスクが存在する場合、最も優先度が高いタスクを 1 つ起床させます。 </para>
  115. </detaileddescription>
  116. <inbodydescription>
  117. </inbodydescription>
  118. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="171" column="10" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="171" bodyend="186"/>
  119. </memberdef>
  120. <memberdef kind="function" id="classtk_1_1_mutex_1acf574e35540879481f1f6e5452a504ab" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
  121. <type>bool</type>
  122. <definition>bool tk::Mutex::is_locked</definition>
  123. <argsstring>() const</argsstring>
  124. <name>is_locked</name>
  125. <qualifiedname>tk::Mutex::is_locked</qualifiedname>
  126. <briefdescription>
  127. </briefdescription>
  128. <detaileddescription>
  129. <para>現在ロックされているかどうかを判定 </para>
  130. </detaileddescription>
  131. <inbodydescription>
  132. </inbodydescription>
  133. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="189" column="10" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="189" bodyend="194"/>
  134. </memberdef>
  135. </sectiondef>
  136. <briefdescription>
  137. <para>所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック) </para>
  138. </briefdescription>
  139. <detaileddescription>
  140. <para>共有リソースやペリフェラルへの同時アクセスを防止します。 ロックしたタスク本人以外の誤った <computeroutput><ref refid="classtk_1_1_mutex_1ae8d5dfd5655b5aa54d63db6e0cf2f707" kindref="member">unlock()</ref></computeroutput> は安全に無視されます。 C++ の <computeroutput>BasicLockable</computeroutput> を満たしており、<computeroutput>std::lock_guard</computeroutput> や <computeroutput><ref refid="classtk_1_1_lock_guard" kindref="compound">tk::LockGuard</ref></computeroutput> が利用可能です。</para>
  141. <para><programlisting><codeline><highlight class="normal">tk::Mutex<sp/>mtx;</highlight></codeline>
  142. <codeline><highlight class="normal"></highlight></codeline>
  143. <codeline><highlight class="normal">{</highlight></codeline>
  144. <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>tk::LockGuard&lt;tk::Mutex&gt;<sp/><ref refid="classtk_1_1_mutex_1a7f5645bba55df2db263f92a954802c27" kindref="member">lock</ref>(mtx);</highlight></codeline>
  145. <codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>クリティカルセクション...</highlight><highlight class="normal"></highlight></codeline>
  146. <codeline><highlight class="normal">}<sp/></highlight><highlight class="comment">//<sp/>自動でアンロック</highlight></codeline>
  147. </programlisting> </para>
  148. </detaileddescription>
  149. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" line="123" column="1" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp" bodystart="123" bodyend="200"/>
  150. <listofallmembers>
  151. <member refid="classtk_1_1_mutex_1acf574e35540879481f1f6e5452a504ab" prot="public" virt="non-virtual"><scope>tk::Mutex</scope><name>is_locked</name></member>
  152. <member refid="classtk_1_1_mutex_1a7f5645bba55df2db263f92a954802c27" prot="public" virt="non-virtual"><scope>tk::Mutex</scope><name>lock</name></member>
  153. <member refid="classtk_1_1_mutex_1af9c0ef5790eb8dd480eafb5b240346c7" prot="private" virt="non-virtual"><scope>tk::Mutex</scope><name>locked_</name></member>
  154. <member refid="classtk_1_1_mutex_1a8b17431db60f4ab48a3859b2ca722eb1" prot="public" virt="non-virtual"><scope>tk::Mutex</scope><name>Mutex</name></member>
  155. <member refid="classtk_1_1_mutex_1af1e61669758d602826e01ba0504f3c22" prot="private" virt="non-virtual"><scope>tk::Mutex</scope><name>owner_slot_</name></member>
  156. <member refid="classtk_1_1_mutex_1a666dd03fb22c5cb855e3145f76a58b9c" prot="public" virt="non-virtual"><scope>tk::Mutex</scope><name>try_lock</name></member>
  157. <member refid="classtk_1_1_mutex_1ae8d5dfd5655b5aa54d63db6e0cf2f707" prot="public" virt="non-virtual"><scope>tk::Mutex</scope><name>unlock</name></member>
  158. <member refid="classtk_1_1_mutex_1aeac0965733267f9ba05bdb552676670d" prot="private" virt="non-virtual"><scope>tk::Mutex</scope><name>wait_mask_</name></member>
  159. </listofallmembers>
  160. </compounddef>
  161. </doxygen>