Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / osal.svg @ 0de5bed8

History | View | Annotate | Download (54.852 KB)

1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="772px" preserveAspectRatio="none" style="width:5482px;height:772px;" version="1.1" viewBox="0 0 5482 772" width="5482px" zoomAndPan="magnify"><defs><filter height="300%" id="f2bgca69xlx2b" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="89" x="2704" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="387" x="2555" y="37.6611">Operating System Abstraction Layer (OSAL)</text><!--MD5=[3dab47d3fc3e186ff10f67819eb99ff8]
2
cluster time--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="121" style="stroke: #000000; stroke-width: 1.5;" width="402" x="2133" y="190.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="34" x="2317" y="205.4014">time</text><!--MD5=[48ccbfc44b1b031f9b243763d7ad5184]
3
cluster mutex--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="134" style="stroke: #000000; stroke-width: 1.5;" width="314" x="759" y="183.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="49" x="891.5" y="198.9014">mutex</text><!--MD5=[2e45f233f6bb64aa81ebe67fb6de8946]
4
cluster condition variable--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="457.5" style="stroke: #000000; stroke-width: 1.5;" width="726" x="14" y="164.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="140" x="307" y="179.4014">condition variable</text><!--MD5=[c7113df1f710ca294cbd01734aa00974]
5
cluster timer--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="432" style="stroke: #000000; stroke-width: 1.5;" width="754" x="2553" y="177.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="2909.5" y="192.4014">timer</text><!--MD5=[107bb3f79455a18bd83c75ada1ac7979]
6
cluster thread--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="596" style="stroke: #000000; stroke-width: 1.5;" width="1039" x="1081" y="57.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="1574.5" y="72.9014">thread</text><!--MD5=[8d74b40516bd265adb19f202ab81f40d]
7
cluster events--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="571.5" style="stroke: #000000; stroke-width: 1.5;" width="1642" x="3315" y="190.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="54" x="4109" y="205.4014">events</text><!--MD5=[b978ecedb6f4da3f32705dc09c84a7d6]
8
cluster streams--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="109" style="stroke: #000000; stroke-width: 1.5;" width="226" x="4965" y="196.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="64" x="5046" y="211.4014">streams</text><!--MD5=[62106fc051f244acf17caf792167c8db]
9
cluster debug--><rect fill="#FFFFFF" filter="url(#f2bgca69xlx2b)" height="96" style="stroke: #000000; stroke-width: 1.5;" width="262" x="5209" y="202.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="50" x="5315" y="217.9014">debug</text><!--MD5=[3677786d1f00795918091b0110bfa4af]
10
class urt_osTime_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="86.4141" id="urt_osTime_t" style="stroke: #A80036; stroke-width: 1.5;" width="385" x="2141.5" y="217.4063"/><ellipse cx="2290.25" cy="233.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2291.0938,240.1563 L2288.6406,240.1563 L2288.6406,229.9063 L2285.5,229.9063 L2285.5,227.7656 L2294.2344,227.7656 L2294.2344,229.9063 L2291.0938,229.9063 L2291.0938,240.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="2310.75" y="237.5605">urt_osTime_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2142.5" x2="2525.5" y1="249.4063" y2="249.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2142.5" x2="2525.5" y1="257.4063" y2="257.4063"/><ellipse cx="2152.5" cy="268.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="231" x="2161.5" y="271.6167">urtTime2Us (t : urt_osTime_t*) : uint64_t</text><ellipse cx="2152.5" cy="281.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="189" x="2161.5" y="284.4214">urtTimeNow (void) : urt_osTime_t</text><ellipse cx="2152.5" cy="294.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="359" x="2161.5" y="297.2261">urtTimeAddUs (time : urt_osTime_t*, offset : urt_delay_t) : void</text><!--MD5=[532279a7a1cac9af7f32856ca2ae6b9b]
11
class urt_osMutex_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="99.2188" id="urt_osMutex_t" style="stroke: #A80036; stroke-width: 1.5;" width="298" x="767" y="210.9063"/><ellipse cx="868.25" cy="226.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M869.0938,233.6563 L866.6406,233.6563 L866.6406,223.4063 L863.5,223.4063 L863.5,221.2656 L872.2344,221.2656 L872.2344,223.4063 L869.0938,223.4063 L869.0938,233.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="888.75" y="231.0605">urt_osMutex_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="768" x2="1064" y1="242.9063" y2="242.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="768" x2="1064" y1="250.9063" y2="250.9063"/><ellipse cx="778" cy="261.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="245" x="787" y="265.1167">urtMutexInit (mutex : urt_osMutex_t*) : void</text><ellipse cx="778" cy="274.7109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="253" x="787" y="277.9214">urtMutexLock (mutex : urt_osMutex_t*) : void</text><ellipse cx="778" cy="287.5156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="272" x="787" y="290.7261">urtMutexTryLock (mutex : urt_osMutex_t*) : bool</text><ellipse cx="778" cy="300.3203" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="787" y="303.5308">urtMutexUnlock (mutex : urt_osMutex_t*) : void</text><!--MD5=[52fa11869cb40c93fa7702378ddd839e]
12
class urt_osCondvarWaitStatus_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="86.4141" id="urt_osCondvarWaitStatus_t" style="stroke: #A80036; stroke-width: 1.5;" width="270" x="242" y="527.9063"/><ellipse cx="288.25" cy="543.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M292.3594,549.9063 L284.6406,549.9063 L284.6406,537.5156 L292.3594,537.5156 L292.3594,539.6719 L287.0938,539.6719 L287.0938,542.3438 L291.8594,542.3438 L291.8594,544.5 L287.0938,544.5 L287.0938,547.75 L292.3594,547.75 L292.3594,549.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="308.75" y="548.0605">urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="511" y1="559.9063" y2="559.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="248" y="574.1167">URT_CONDVAR_WAITSTATUS_SIGNAL = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="258" x="248" y="586.9214">URT_CONDVAR_WAITSTATUS_BROADCAST = 2</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="239" x="248" y="599.7261">URT_CONDVAR_WAITSTATUS_TIMEOUT = 0</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="511" y1="606.3203" y2="606.3203"/><!--MD5=[004fc5dee471033e8e4138c1c73f0692]
13
class urt_osCondvar_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="137.6328" id="urt_osCondvar_t" style="stroke: #A80036; stroke-width: 1.5;" width="710" x="22" y="191.4063"/><ellipse cx="322.25" cy="207.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M323.0938,214.1563 L320.6406,214.1563 L320.6406,203.9063 L317.5,203.9063 L317.5,201.7656 L326.2344,201.7656 L326.2344,203.9063 L323.0938,203.9063 L323.0938,214.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="342.75" y="211.5605">urt_osCondvar_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="731" y1="223.4063" y2="223.4063"/><ellipse cx="33" cy="234.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="283" x="42" y="237.6167">urtCondvarInit (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="247.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="301" x="42" y="250.4214">urtCondvarSignal (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="260.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="324" x="42" y="263.2261">urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="289.625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="559" x="42" y="292.8354">urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*) : urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="23" x2="248.5" y1="276.2227" y2="276.2227"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="257" x="248.5" y="279.5308">URT_CFG_OSAL_CONDVAR_TIMEOUT == false</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="505.5" x2="731" y1="276.2227" y2="276.2227"/><ellipse cx="33" cy="319.2344" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="684" x="42" y="322.4448">urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="23" x2="251" y1="305.832" y2="305.832"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="252" x="251" y="309.1401">URT_CFG_OSAL_CONDVAR_TIMEOUT == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="503" x2="731" y1="305.832" y2="305.832"/><!--MD5=[93799a03260ba286abda700174f4f205]
14
class urt_osTimerCallback_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="60.8047" id="urt_osTimerCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="2787" y="540.4063"/><ellipse cx="2857.75" cy="556.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2858.5938,563.1563 L2856.1406,563.1563 L2856.1406,552.9063 L2853,552.9063 L2853,550.7656 L2861.7344,550.7656 L2861.7344,552.9063 L2858.5938,552.9063 L2858.5938,563.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="2878.25" y="560.5605">urt_osTimerCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2788" x2="3072" y1="572.4063" y2="572.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2788" x2="3072" y1="580.4063" y2="580.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="274" x="2793" y="594.6167">urt_osTimerCallback_t (parameter : void*) : void</text><!--MD5=[0b340d7b925b1eab6a1b7e084f68a7c2]
15
class urt_osTimer_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="112.0234" id="urt_osTimer_t" style="stroke: #A80036; stroke-width: 1.5;" width="737" x="2561.5" y="204.4063"/><ellipse cx="2883.75" cy="220.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2884.5938,227.1563 L2882.1406,227.1563 L2882.1406,216.9063 L2879,216.9063 L2879,214.7656 L2887.7344,214.7656 L2887.7344,216.9063 L2884.5938,216.9063 L2884.5938,227.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="2904.25" y="224.5605">urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2562.5" x2="3297.5" y1="236.4063" y2="236.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2562.5" x2="3297.5" y1="244.4063" y2="244.4063"/><ellipse cx="2572.5" cy="255.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="240" x="2581.5" y="258.6167">urtTimerInit (timer : urt_osTimer_t*) : void</text><ellipse cx="2572.5" cy="268.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="660" x="2581.5" y="271.4214">urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void</text><ellipse cx="2572.5" cy="281.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="711" x="2581.5" y="284.2261">urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void</text><ellipse cx="2572.5" cy="293.8203" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="255" x="2581.5" y="297.0308">urtTimerReset (timer : urt_osTimer_t*) : void</text><ellipse cx="2572.5" cy="306.625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="2581.5" y="309.8354">urtTimerIsArmed (timer : urt_osTimer_t*) : bool</text><!--MD5=[86c16d91227b9a9ec3b6b9b0285de4e9]
16
class urt_osThreadPrio_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="150.4375" id="urt_osThreadPrio_t" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="1089.5" y="495.9063"/><ellipse cx="1125.65" cy="511.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1126.4938,518.6563 L1124.0406,518.6563 L1124.0406,508.4063 L1120.9,508.4063 L1120.9,506.2656 L1129.6344,506.2656 L1129.6344,508.4063 L1126.4938,508.4063 L1126.4938,518.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="1144.35" y="516.0605">urt_osThreadPrio_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1090.5" x2="1285.5" y1="527.9063" y2="527.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="160" x="1095.5" y="542.1167">URT_THREAD_PRIO_LOW_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="163" x="1095.5" y="554.9214">URT_THREAD_PRIO_LOW_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="182" x="1095.5" y="567.7261">URT_THREAD_PRIO_NORMAL_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="1095.5" y="580.5308">URT_THREAD_PRIO_NORMAL_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="164" x="1095.5" y="593.3354">URT_THREAD_PRIO_HIGH_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="167" x="1095.5" y="606.1401">URT_THREAD_PRIO_HIGH_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="1095.5" y="618.9448">URT_THREAD_PRIO_RT_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="1095.5" y="631.7495">URT_THREAD_PRIO_RT_MAX</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1090.5" x2="1285.5" y1="638.3438" y2="638.3438"/><!--MD5=[69d8aab9aa387a2f5052ea3da80e80ea]
17
class urt_osThreadFunction_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="60.8047" id="urt_osThreadFunction_t" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="1322" y="540.4063"/><ellipse cx="1369.75" cy="556.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1370.5938,563.1563 L1368.1406,563.1563 L1368.1406,552.9063 L1365,552.9063 L1365,550.7656 L1373.7344,550.7656 L1373.7344,552.9063 L1370.5938,552.9063 L1370.5938,563.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="1390.25" y="560.5605">urt_osThreadFunction_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1323" x2="1573" y1="572.4063" y2="572.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1323" x2="1573" y1="580.4063" y2="580.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="240" x="1328" y="594.6167">urt_osThreadFunction_t (arg : void*) : void</text><!--MD5=[ab5f611d45c3fa10609c33f780d8c3e1]
18
class urt_osThreadTerminateSignal_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="73.6094" id="urt_osThreadTerminateSignal_t" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="1609" y="533.9063"/><ellipse cx="1630.75" cy="549.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1634.8594,555.9063 L1627.1406,555.9063 L1627.1406,543.5156 L1634.8594,543.5156 L1634.8594,545.6719 L1629.5938,545.6719 L1629.5938,548.3438 L1634.3594,548.3438 L1634.3594,550.5 L1629.5938,550.5 L1629.5938,553.75 L1634.8594,553.75 L1634.8594,555.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="195" x="1646.25" y="554.0605">urt_osThreadTerminateSignal_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1610" x2="1850" y1="565.9063" y2="565.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="1615" y="580.1167">URT_THREAD_TERMINATE_REQUEST = 15</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="1615" y="592.9214">URT_THREAD_TERMINATE_KILL = 9</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1610" x2="1850" y1="599.5156" y2="599.5156"/><!--MD5=[47d14ad2c233fae1b32b8d0a283e820a]
19
class urt_osThreadState_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="137.6328" id="urt_osThreadState_t" style="stroke: #A80036; stroke-width: 1.5;" width="226" x="1886" y="501.9063"/><ellipse cx="1930.75" cy="517.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1934.8594,523.9063 L1927.1406,523.9063 L1927.1406,511.5156 L1934.8594,511.5156 L1934.8594,513.6719 L1929.5938,513.6719 L1929.5938,516.3438 L1934.3594,516.3438 L1934.3594,518.5 L1929.5938,518.5 L1929.5938,521.75 L1934.8594,521.75 L1934.8594,523.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="128" x="1951.25" y="522.0605">urt_osThreadState_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1887" x2="2111" y1="533.9063" y2="533.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="1892" y="548.1167">URT_THREAD_STATE_INACTIVE = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="195" x="1892" y="560.9214">URT_THREAD_STATE_RUNNING = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="180" x="1892" y="573.7261">URT_THREAD_STATE_READY = 2</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="1892" y="586.5308">URT_THREAD_STATE_SLEEPING = 3</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="213" x="1892" y="599.3354">URT_THREAD_STATE_SUSPENDED = 4</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="1892" y="612.1401">URT_THREAD_STATE_WAITING = 5</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="1892" y="624.9448">URT_THREAD_STATE_TERMINATED = 6</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1887" x2="2111" y1="631.5391" y2="631.5391"/><!--MD5=[0a16224ede9ffa9bb2d34e085a076e6d]
20
class urt_osThread_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="350.5078" id="urt_osThread_t" style="stroke: #A80036; stroke-width: 1.5;" width="778" x="1328" y="84.9063"/><ellipse cx="1665.75" cy="100.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1666.5938,107.6563 L1664.1406,107.6563 L1664.1406,97.4063 L1661,97.4063 L1661,95.2656 L1669.7344,95.2656 L1669.7344,97.4063 L1666.5938,97.4063 L1666.5938,107.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="1686.25" y="105.0605">urt_osThread_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1329" x2="2105" y1="116.9063" y2="116.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="179" x="1334" y="131.1167">URT_THREAD_SLEEP_MAX : float</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="225" x="1334" y="143.9214">URT_THREAD_SSLEP_MAX : unsigned int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="233" x="1334" y="156.7261">URT_THREAD_MSLEEP_MAX : unsigned int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="224" x="1334" y="169.5308">URT_THREAD_USLEEP_MAX : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1329" x2="2105" y1="176.125" y2="176.125"/><ellipse cx="1339" cy="187.125" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="248" x="1348" y="190.3354">URT_THREAD_MEMORY (varname, stacksize)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1329" x2="2105" y1="196.9297" y2="196.9297"/><ellipse cx="1339" cy="207.9297" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="752" x="1348" y="211.1401">urtThreadInit (memory : void*, size : size_t, prio : urt_osThreadPrio_t, func : urt_osThreadFunction_t*, arg : void*) : urt_osThread_t*</text><ellipse cx="1339" cy="220.7344" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="272" x="1348" y="223.9448">urtThreadStart (thread : urt_osThread_t*) : void</text><ellipse cx="1339" cy="233.5391" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="1348" y="236.7495">urtThreadYield (void) : void</text><ellipse cx="1339" cy="246.3438" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1348" y="249.5542">urtThreadGetPriority (void) : urt_osThreadPrio_t</text><ellipse cx="1339" cy="259.1484" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="304" x="1348" y="262.3589">urtThreadSetPriority (prio : urt_osThreadPrio_t) : void</text><ellipse cx="1339" cy="271.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="220" x="1348" y="275.1636">urtThreadSleep (seconds : float) : void</text><ellipse cx="1339" cy="284.7578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="273" x="1348" y="287.9683">urtThreadSSleep (seconds : unsigned int) : void</text><ellipse cx="1339" cy="297.5625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="297" x="1348" y="300.7729">urtThreadMSleep (milliseconds : unsigned int) : void</text><ellipse cx="1339" cy="310.3672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="297" x="1348" y="313.5776">urtThreadUSleep (microseconds : urt_delay_t) : void</text><ellipse cx="1339" cy="323.1719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1348" y="326.3823">urtThreadSleepUntil (time : urt_osTime_t) : void</text><ellipse cx="1339" cy="335.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="1348" y="339.187">urtThreadExit (void) : void</text><ellipse cx="1339" cy="348.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="518" x="1348" y="351.9917">urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void</text><ellipse cx="1339" cy="361.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="264" x="1348" y="364.7964">urtThreadJoin (thread : urt_osThread_t*) : void</text><ellipse cx="1339" cy="374.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="1348" y="377.6011">urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t</text><ellipse cx="1339" cy="387.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="237" x="1348" y="390.4058">urtThreadGetSelf (void) : urt_osThread_t*</text><ellipse cx="1339" cy="400" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="380" x="1348" y="403.2104">urtThreadGetChildren (thread : urt_osThread_t*) : urt_osThread_t*</text><ellipse cx="1339" cy="412.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="371" x="1348" y="416.0151">urtThreadGetSibling (thread : urt_osThread_t*) : urt_osThread_t*</text><ellipse cx="1339" cy="425.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="370" x="1348" y="428.8198">urtThreadGetParent (thread : urt_osThread_t*) : urt_osThread_t*</text><!--MD5=[0a4e0f34d8da0ad3ed6ecf72f02e09c8]
21
class urt_osEventMask_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="60.8047" id="urt_osEventMask_t" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="3323" y="540.4063"/><ellipse cx="3400.25" cy="556.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3401.0938,563.1563 L3398.6406,563.1563 L3398.6406,552.9063 L3395.5,552.9063 L3395.5,550.7656 L3404.2344,550.7656 L3404.2344,552.9063 L3401.0938,552.9063 L3401.0938,563.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="3420.75" y="560.5605">urt_osEventMask_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3324" x2="3602" y1="572.4063" y2="572.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="268" x="3329" y="586.6167">URT_EVENTMASK_MAXPRIO : urt_osEventMask_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3324" x2="3602" y1="593.2109" y2="593.2109"/><!--MD5=[dc1cc33af288560680c15dec1e56eda0]
22
class urt_osEventFlags_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="48" id="urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="4044" y="705.9063"/><ellipse cx="4059" cy="721.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4059.8438,728.6563 L4057.3906,728.6563 L4057.3906,718.4063 L4054.25,718.4063 L4054.25,716.2656 L4062.9844,716.2656 L4062.9844,718.4063 L4059.8438,718.4063 L4059.8438,728.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4073" y="726.0605">urt_osEventFlags_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4045" x2="4193" y1="737.9063" y2="737.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4045" x2="4193" y1="745.9063" y2="745.9063"/><!--MD5=[e2bbbd64e6979bf7b755747a6c0ba948]
23
class urt_osEventWait_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="86.4141" id="urt_osEventWait_t" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="3675" y="527.9063"/><ellipse cx="3698.1" cy="543.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3702.2094,549.9063 L3694.4906,549.9063 L3694.4906,537.5156 L3702.2094,537.5156 L3702.2094,539.6719 L3696.9438,539.6719 L3696.9438,542.3438 L3701.7094,542.3438 L3701.7094,544.5 L3696.9438,544.5 L3696.9438,547.75 L3702.2094,547.75 L3702.2094,549.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="3713.9" y="548.0605">urt_osEventWait_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3676" x2="3836" y1="559.9063" y2="559.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="3681" y="574.1167">URT_EVENT_WAIT_ONE = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="3681" y="586.9214">URT_EVENT_WAIT_ANY = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="3681" y="599.7261">URT_EVENT_WAIT_ALL = 2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3676" x2="3836" y1="606.3203" y2="606.3203"/><!--MD5=[d054ac2eda12ce4b1fe5a18c9be716c1]
24
class urt_osEventListener_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="86.4141" id="urt_osEventListener_t" style="stroke: #A80036; stroke-width: 1.5;" width="494" x="3872" y="527.9063"/><ellipse cx="4047.25" cy="543.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4048.0938,550.6563 L4045.6406,550.6563 L4045.6406,540.4063 L4042.5,540.4063 L4042.5,538.2656 L4051.2344,538.2656 L4051.2344,540.4063 L4048.0938,540.4063 L4048.0938,550.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="4067.75" y="548.0605">urt_osEventListener_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3873" x2="4365" y1="559.9063" y2="559.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3873" x2="4365" y1="567.9063" y2="567.9063"/><ellipse cx="3883" cy="578.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="341" x="3892" y="582.1167">urtEventListenerInit (listener : urt_osEventListener_t*) : void</text><ellipse cx="3883" cy="591.7109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="458" x="3892" y="594.9214">urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t</text><ellipse cx="3883" cy="604.5156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="468" x="3892" y="607.7261">urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t</text><!--MD5=[4d6906f8b977dc26629fa492460e6327]
25
class urt_osEventSource_t--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="73.6094" id="urt_osEventSource_t" style="stroke: #A80036; stroke-width: 1.5;" width="547" x="4401.5" y="533.9063"/><ellipse cx="4606.25" cy="549.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4607.0938,556.6563 L4604.6406,556.6563 L4604.6406,546.4063 L4601.5,546.4063 L4601.5,544.2656 L4610.2344,544.2656 L4610.2344,546.4063 L4607.0938,546.4063 L4607.0938,556.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="129" x="4626.75" y="554.0605">urt_osEventSource_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4402.5" x2="4947.5" y1="565.9063" y2="565.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4402.5" x2="4947.5" y1="573.9063" y2="573.9063"/><ellipse cx="4412.5" cy="584.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="325" x="4421.5" y="588.1167">urtEventSourceInit (source : urt_osEventSource_t*) : void</text><ellipse cx="4412.5" cy="597.7109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="521" x="4421.5" y="600.9214">urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void</text><!--MD5=[04a3b5a37031e2a4d723f19d8adf86f5]
26
class urt_events--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="86.4141" id="urt_events" style="stroke: #A80036; stroke-width: 1.5;" width="845" x="3333.5" y="217.4063"/><ellipse cx="3718.75" cy="233.4063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3722.9844,229.1719 L3717.7031,229.1719 L3717.7031,231.8438 L3722.5,231.8438 L3722.5,234 L3717.7031,234 L3717.7031,239.4063 L3715.2656,239.4063 L3715.2656,227.0156 L3722.9844,227.0156 L3722.9844,229.1719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="3739.25" y="237.5605">urt_events</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3334.5" x2="4177.5" y1="249.4063" y2="249.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3334.5" x2="4177.5" y1="257.4063" y2="257.4063"/><ellipse cx="3344.5" cy="268.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="819" x="3353.5" y="271.6167">urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : void</text><ellipse cx="3344.5" cy="281.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="522" x="3353.5" y="284.4214">urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : void</text><ellipse cx="3344.5" cy="294.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="618" x="3353.5" y="297.2261">urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t</text><!--MD5=[0cf29100c96c506429a28b45d347cc92]
27
class urt_streams--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="73.6094" id="urt_streams" style="stroke: #A80036; stroke-width: 1.5;" width="209" x="4973.5" y="223.4063"/><ellipse cx="5036.25" cy="239.4063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5040.4844,235.1719 L5035.2031,235.1719 L5035.2031,237.8438 L5040,237.8438 L5040,240 L5035.2031,240 L5035.2031,245.4063 L5032.7656,245.4063 L5032.7656,233.0156 L5040.4844,233.0156 L5040.4844,235.1719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="5056.75" y="243.5605">urt_streams</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4974.5" x2="5181.5" y1="255.4063" y2="255.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4974.5" x2="5181.5" y1="263.4063" y2="263.4063"/><ellipse cx="4984.5" cy="274.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="166" x="4993.5" y="277.6167">urtPrintf(fmt : char*, ... ) : int</text><ellipse cx="4984.5" cy="287.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="4993.5" y="290.4214">urtErrPrintf(fmt : char*, ... ) : int</text><!--MD5=[f106a25c06a671b3918b1a8f37571a4d]
28
class urt_debug--><rect fill="#FEFECE" filter="url(#f2bgca69xlx2b)" height="60.8047" id="urt_debug" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="5217.5" y="229.9063"/><ellipse cx="5303.75" cy="245.9063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5307.9844,241.6719 L5302.7031,241.6719 L5302.7031,244.3438 L5307.5,244.3438 L5307.5,246.5 L5302.7031,246.5 L5302.7031,251.9063 L5300.2656,251.9063 L5300.2656,239.5156 L5307.9844,239.5156 L5307.9844,241.6719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="5324.25" y="250.0605">urt_debug</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5218.5" x2="5461.5" y1="261.9063" y2="261.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5218.5" x2="5461.5" y1="269.9063" y2="269.9063"/><ellipse cx="5228.5" cy="280.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="219" x="5237.5" y="284.1167">urtDebugAssert(condition : bool) : void</text><!--MD5=[7766572fa0c619a5409829048dc0b6d6]
29
link urt_osCondvar_t to urt_osCondvarWaitStatus_t--><path d="M377,329.7021 C377,388.2809 377,470.7001 377,522.4347 " fill="none" id="urt_osCondvar_t-&gt;urt_osCondvarWaitStatus_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="377,527.6541,381,518.6541,377,522.6541,373,518.6541,377,527.6541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9b2507ea88616aeae65e3c4d63560016]
30
link urt_osCondvar_t to urt_osMutex_t--><path d="M732.0347,260.4063 C741.9278,260.4063 751.8209,260.4063 761.714,260.4063 " fill="none" id="urt_osCondvar_t-&gt;urt_osMutex_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="766.8875,260.4063,757.8875,256.4063,761.8875,260.4063,757.8875,264.4063,766.8875,260.4063" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[83094e108045c8f9585007cdb3b7cb2e]
31
link urt_osTimer_t to urt_osTimerCallback_t--><path d="M2930,316.6355 C2930,380.1229 2930,481.527 2930,535.0795 " fill="none" id="urt_osTimer_t-&gt;urt_osTimerCallback_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="2930,540.1097,2934,531.1097,2930,535.1097,2926,531.1097,2930,540.1097" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8d8c3240b5b2b5edf6544088e583ffa5]
32
link urt_osThread_t to urt_osThreadPrio_t--><path d="M1405.8418,436.025 C1371.6683,455.9771 1337.503,476.2167 1305,495.9063 C1300.4181,498.6819 1295.7508,501.5403 1291.0475,504.4461 " fill="none" id="urt_osThread_t-&gt;urt_osThreadPrio_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1286.7195,507.127,1296.4769,505.7882,1290.9701,504.494,1292.2642,498.9872,1286.7195,507.127" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[d7d1d43fd970fb07a484642bc19fcb13]
33
link urt_osThread_t to urt_osThreadFunction_t--><path d="M1564.8137,436.0711 C1531.6384,474.3646 1499.924,510.9717 1477.9339,536.3543 " fill="none" id="urt_osThread_t-&gt;urt_osThreadFunction_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1474.4894,540.3302,1483.4057,536.147,1477.7633,536.5511,1477.3592,530.9087,1474.4894,540.3302" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6564761b32ad7eeb5abb8896c72cfca5]
34
link urt_osThread_t to urt_osThreadTerminateSignal_t--><path d="M1724.3547,436.0711 C1725.8029,470.6597 1727.1934,503.8725 1728.2321,528.6805 " fill="none" id="urt_osThread_t-&gt;urt_osThreadTerminateSignal_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1728.4483,533.8441,1732.0683,524.6846,1728.2392,528.8484,1724.0753,525.0192,1728.4483,533.8441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[92ba23225d8de8f8080583fedda5e6f8]
35
link urt_osThread_t to urt_osThreadState_t--><path d="M1876.541,436.0711 C1896.286,457.8116 1915.5373,479.0085 1932.7097,497.9165 " fill="none" id="urt_osThread_t-&gt;urt_osThreadState_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1936.1161,501.6671,1933.0263,492.3154,1932.7545,497.9657,1927.1042,497.694,1936.1161,501.6671" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[78b286ab2177e5f7b31e6e832d821818]
36
link urt_osThread_t to urt_osTime_t--><path d="M2106.2402,260.4063 C2116.2156,260.4063 2126.191,260.4063 2136.1664,260.4063 " fill="none" id="urt_osThread_t-&gt;urt_osTime_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="2141.3829,260.4063,2132.3829,256.4063,2136.3829,260.4063,2132.3829,264.4063,2141.3829,260.4063" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[659af6ab57e6a38ebfd5c07c5616787c]
37
link urt_osEventListener_t to urt_osEventFlags_t--><path d="M4119,613.934 C4119,641.41 4119,676.3065 4119,700.6092 " fill="none" id="urt_osEventListener_t-&gt;urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4119,705.6279,4123,696.6279,4119,700.6279,4115,696.6279,4119,705.6279" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[eac11679f26c499aa1c571e1f795945d]
38
link urt_osEventSource_t to urt_osEventFlags_t--><path d="M4545.3444,607.9841 C4438.2675,638.605 4289.6667,681.1005 4199.1503,706.9856 " fill="none" id="urt_osEventSource_t-&gt;urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4194.0794,708.4357,4203.8323,709.807,4198.8867,707.0609,4201.6328,702.1153,4194.0794,708.4357" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0259cdb10c6c32168d1d17d25519d939]
39
link urt_events to urt_osEventSource_t--><path d="M3883.3002,303.4169 C4062.9667,364.1203 4388.1985,474.0055 4560.5849,532.2492 " fill="none" id="urt_events-&gt;urt_osEventSource_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4565.3873,533.8717,4558.1413,527.2012,4560.6504,532.2711,4555.5804,534.7802,4565.3873,533.8717" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0ce043e0e9532fc393f3f8836f5de19a]
40
link urt_events to urt_osEventListener_t--><path d="M3806.4736,303.58 C3874.3757,361.6616 3994.6674,464.5557 4064.5482,524.3297 " fill="none" id="urt_events-&gt;urt_osEventListener_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4068.6635,527.8499,4064.4244,518.96,4064.8639,524.5997,4059.2242,525.0393,4068.6635,527.8499" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[430bebba9cd89d3ba8f63b2078968bca]
41
link urt_events to urt_osEventMask_t--><path d="M3715.2596,303.58 C3656.4833,365.8668 3549.0751,479.6902 3495.3713,536.6016 " fill="none" id="urt_events-&gt;urt_osEventMask_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="3491.9126,540.2668,3500.9986,536.4662,3495.3441,536.6302,3495.1801,530.9757,3491.9126,540.2668" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b1b185abc2161e087cab32ae7fdb2c40]
42
link urt_events to urt_osEventFlags_t--><path d="M3723.6428,303.49 C3668.6239,382.3567 3570.8784,551.2459 3658,653.9063 C3682.3308,682.5766 3913.2829,709.5873 4038.765,722.3005 " fill="none" id="urt_events-&gt;urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4043.9214,722.8209,4035.3686,717.9372,4038.9467,722.3187,4034.5652,725.8968,4043.9214,722.8209" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[706a1974d1b474cbba7e7b0213f243a1]
43
link urt_events to urt_osEventWait_t--><path d="M3756,303.58 C3756,361.0831 3756,462.5105 3756,522.5309 " fill="none" id="urt_events-&gt;urt_osEventWait_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="3756,527.8499,3760,518.8499,3756,522.8499,3752,518.8499,3756,527.8499" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c53e933e32f0d55325f580d74728bef6]
44
@startuml
45

    
46
title **µRtWare**\nOperating System Abstraction Layer (OSAL)
47

    
48

    
49

    
50

    
51

    
52

    
53

    
54

    
55

    
56

    
57

    
58

    
59

    
60
  package "time" <<Rectangle>> {
61
    class urt_osTime_t <<T,00CFFF>> {
62
    + {method} urtTime2Us (t : urt_osTime_t*) : uint64_t
63
    + {method} urtTimeNow (void) : urt_osTime_t
64
    + {method} urtTimeAddUs (time : urt_osTime_t*, offset : urt_delay_t) : void
65
  }
66
}
67

    
68
  package "mutex" <<Rectangle>> {
69
    class urt_osMutex_t <<T,00CFFF>> {
70
    + {method} urtMutexInit (mutex : urt_osMutex_t*) : void
71
    + {method} urtMutexLock (mutex : urt_osMutex_t*) : void
72
    + {method} urtMutexTryLock (mutex : urt_osMutex_t*) : bool
73
    + {method} urtMutexUnlock (mutex : urt_osMutex_t*) : void
74
  }
75
}
76

    
77
  package "condition variable" <<Rectangle>> {
78
    class urt_osCondvarWaitStatus_t <<E,FF7F3F>> {
79
    URT_CONDVAR_WAITSTATUS_SIGNAL = 1
80
    URT_CONDVAR_WAITSTATUS_BROADCAST = 2
81
    URT_CONDVAR_WAITSTATUS_TIMEOUT = 0
82
  }
83

    
84
    class urt_osCondvar_t <<T,00CFFF>> {
85
    + {method} urtCondvarInit (condvar : urt_osCondvar_t*) : void
86
    + {method} urtCondvarSignal (condvar : urt_osCondvar_t*) : void
87
    + {method} urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void
88
    .. URT_CFG_OSAL_CONDVAR_TIMEOUT == false ..
89
    + {method} urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*) : urt_osCondvarWaitStatus_t
90
    .. URT_CFG_OSAL_CONDVAR_TIMEOUT == true ..
91
    + {method} urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t
92
  }
93
}
94

    
95
  package "timer" <<Rectangle>> {
96
    class urt_osTimerCallback_t <<T,00CFFF>> {
97
    urt_osTimerCallback_t (parameter : void*) : void
98
  }
99

    
100
    class urt_osTimer_t <<T,00CFFF>> {
101
    + {method} urtTimerInit (timer : urt_osTimer_t*) : void
102
    + {method} urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void
103
    + {method} urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void
104
    + {method} urtTimerReset (timer : urt_osTimer_t*) : void
105
    + {method} urtTimerIsArmed (timer : urt_osTimer_t*) : bool
106
  }
107
} 
108

    
109
  package "thread" <<Rectangle>> {
110
    class urt_osThreadPrio_t <<T,00CFFF>> {
111
    URT_THREAD_PRIO_LOW_MIN
112
    URT_THREAD_PRIO_LOW_MAX
113
    URT_THREAD_PRIO_NORMAL_MIN
114
    URT_THREAD_PRIO_NORMAL_MAX
115
    URT_THREAD_PRIO_HIGH_MIN
116
    URT_THREAD_PRIO_HIGH_MAX
117
    URT_THREAD_PRIO_RT_MIN
118
    URT_THREAD_PRIO_RT_MAX
119
  }
120

    
121
    class urt_osThreadFunction_t <<T,00CFFF>> {
122
    urt_osThreadFunction_t (arg : void*) : void
123
  }
124

    
125
    class urt_osThreadTerminateSignal_t <<E,FF7F3F>> {
126
    URT_THREAD_TERMINATE_REQUEST = 15
127
    URT_THREAD_TERMINATE_KILL = 9
128
  }
129

    
130
    class urt_osThreadState_t <<E,FF7F3F>> {
131
    URT_THREAD_STATE_INACTIVE = 0
132
    URT_THREAD_STATE_RUNNING = 1
133
    URT_THREAD_STATE_READY = 2
134
    URT_THREAD_STATE_SLEEPING = 3
135
    URT_THREAD_STATE_SUSPENDED = 4
136
    URT_THREAD_STATE_WAITING = 5
137
    URT_THREAD_STATE_TERMINATED = 6
138
  }
139

    
140
    class urt_osThread_t <<T,00CFFF>> {
141
    URT_THREAD_SLEEP_MAX : float
142
    URT_THREAD_SSLEP_MAX : unsigned int
143
    URT_THREAD_MSLEEP_MAX : unsigned int
144
    URT_THREAD_USLEEP_MAX : urt_delay_t
145
    - -
146
    + {method} URT_THREAD_MEMORY (varname, stacksize)
147
    ..
148
    + {method} urtThreadInit (memory : void*, size : size_t, prio : urt_osThreadPrio_t, func : urt_osThreadFunction_t*, arg : void*) : urt_osThread_t*
149
    + {method} urtThreadStart (thread : urt_osThread_t*) : void
150
    + {method} urtThreadYield (void) : void
151
    + {method} urtThreadGetPriority (void) : urt_osThreadPrio_t
152
    + {method} urtThreadSetPriority (prio : urt_osThreadPrio_t) : void
153
    + {method} urtThreadSleep (seconds : float) : void
154
    + {method} urtThreadSSleep (seconds : unsigned int) : void
155
    + {method} urtThreadMSleep (milliseconds : unsigned int) : void
156
    + {method} urtThreadUSleep (microseconds : urt_delay_t) : void
157
    + {method} urtThreadSleepUntil (time : urt_osTime_t) : void
158
    + {method} urtThreadExit (void) : void
159
    + {method} urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void
160
    + {method} urtThreadJoin (thread : urt_osThread_t*) : void
161
    + {method} urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t
162
    + {method} urtThreadGetSelf (void) : urt_osThread_t*
163
    + urtThreadGetChildren (thread : urt_osThread_t*) : urt_osThread_t*
164
    + urtThreadGetSibling (thread : urt_osThread_t*) : urt_osThread_t*
165
    + urtThreadGetParent (thread : urt_osThread_t*) : urt_osThread_t*
166
  }
167
} 
168

    
169
  package "events" <<Rectangle>> {
170
    class urt_osEventMask_t <<T,00CFFF>> {
171
    URT_EVENTMASK_MAXPRIO : urt_osEventMask_t
172
  }
173

    
174
    class urt_osEventFlags_t <<T,00CFFF>> {
175
  }
176

    
177
    class urt_osEventWait_t <<E,FF7F3F>> {
178
    URT_EVENT_WAIT_ONE = 0
179
    URT_EVENT_WAIT_ANY = 1
180
    URT_EVENT_WAIT_ALL = 2
181
  }
182

    
183
    class urt_osEventListener_t <<T,00CFFF>> {
184
    + {method} urtEventListenerInit (listener : urt_osEventListener_t*) : void
185
    + {method} urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
186
    + {method} urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
187
  }
188

    
189
    class urt_osEventSource_t <<T,00CFFF>> {
190
    + {method} urtEventSourceInit (source : urt_osEventSource_t*) : void
191
    + {method} urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void
192
  }
193

    
194
    class urt_events <<F,E0E0E0>> {
195
    + {method} urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : void
196
    + {method} urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : void
197
    + {method} urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t
198
  }
199
} 
200

    
201
  package "streams" <<Rectangle>> {
202
    class urt_streams <<F,E0E0E0>> {
203
    + {method} urtPrintf(fmt : char*, ... ) : int
204
    + {method} urtErrPrintf(fmt : char*, ... ) : int
205
  }
206
}
207

    
208
  package "debug" <<Rectangle>> {
209
    class urt_debug <<F,E0E0E0>> {
210
    + {method} urtDebugAssert(condition : bool) : void
211
  }
212
}
213

    
214

    
215

    
216

    
217
urt_osCondvar_t ..> urt_osCondvarWaitStatus_t
218
urt_osCondvar_t .> urt_osMutex_t
219

    
220
urt_osTimer_t ..> urt_osTimerCallback_t
221

    
222
urt_osThread_t ..> urt_osThreadPrio_t
223
urt_osThread_t ..> urt_osThreadFunction_t
224
urt_osThread_t ..> urt_osThreadTerminateSignal_t
225
urt_osThread_t ..> urt_osThreadState_t
226
urt_osThread_t .> urt_osTime_t
227

    
228
urt_osEventListener_t ..> urt_osEventFlags_t
229
urt_osEventSource_t ..> urt_osEventFlags_t
230
urt_events ..> urt_osEventSource_t
231
urt_events ..> urt_osEventListener_t
232
urt_events ..> urt_osEventMask_t
233
urt_events ..> urt_osEventFlags_t
234
urt_events ..> urt_osEventWait_t
235

    
236

    
237

    
238
@enduml
239

    
240
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
241
(GPL source distribution)
242
Java Runtime: OpenJDK Runtime Environment
243
JVM: OpenJDK 64-Bit Server VM
244
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
245
Operating System: Linux
246
Default Encoding: UTF-8
247
Language: en
248
Country: US
249
--></g></svg>