2# Copyright (c) 2006 Steven Rostedt
   3# Licensed under the GNU Free Documentation License, Version 1.2
   6RT-mutex implementation design
   9This document tries to describe the design of the rtmutex.c implementation.
  10It doesn't describe the reasons why rtmutex.c exists. For that please see
  11Documentation/rt-mutex.txt.  Although this document does explain problems
  12that happen without this code, but that is in the concept to understand
  13what the code actually is doing.
  15The goal of this document is to help others understand the priority
  16inheritance (PI) algorithm that is used, as well as reasons for the
  17decisions that were made to implement PI in the manner that was done.
  20Unbounded Priority Inversion
  23Priority inversion is when a lower priority process executes while a higher
  24priority process wants to run.  This happens for several reasons, and
  25most of the time it can't be helped.  Anytime a high priority process wants
  26to use a resource that a lower priority process has (a mutex for example),
  27the high priority process must wait until the lower priority process is done
  28with the resource.  This is a priority inversion.  What we want to prevent
  29is something called unbounded priority inversion.  That is when the high
  30priority process is prevented from running by a lower priority process for
  31an undetermined amount of time.
  33The classic example of unbounded priority inversion is were you have three
  34processes, let's call them processes A, B, and C, where A is the highest
  35priority process, C is the lowest, and B is in between. A tries to grab a lock
  36that C owns and must wait and lets C run to release the lock. But in the
  37meantime, B executes, and since B is of a higher priority than C, it preempts C,
  38but by doing so, it is in fact preempting A which is a higher priority process.
  39Now there's no way of knowing how long A will be sleeping waiting for C
  40to release the lock, because for all we know, B is a CPU hog and will
  41never give C a chance to release the lock.  This is called unbounded priority
  44Here's a little ASCII art to show the problem.
  46   grab lock L1 (owned by C)
  47     |
  48A ---+
  49        C preempted by B
  50          |
  51C    +----+
  53B         +-------->
  54                B now keeps A from running.
  57Priority Inheritance (PI)
  60There are several ways to solve this issue, but other ways are out of scope
  61for this document.  Here we only discuss PI.
  63PI is where a process inherits the priority of another process if the other
  64process blocks on a lock owned by the current process.  To make this easier
  65to understand, let's use the previous example, with processes A, B, and C again.
  67This time, when A blocks on the lock owned by C, C would inherit the priority
  68of A.  So now if B becomes runnable, it would not preempt C, since C now has
  69the high priority of A.  As soon as C releases the lock, it loses its
  70inherited priority, and A then can continue with the resource that C had.
  75Here I explain some terminology that is used in this document to help describe
  76the design that is used to implement PI.
  78PI chain - The PI chain is an ordered series of locks and processes that cause
  79           processes to inherit priorities from a previous process that is
  80           blocked on one of its locks.  This is described in more detail
  81           later in this document.
  83mutex    - In this document, to differentiate from locks that implement
  84           PI and spin locks that are used in the PI code, from now on
  85           the PI locks will be called a mutex.
  87lock     - In this document from now on, I will use the term lock when
  88           referring to spin locks that are used to protect parts of the PI
  89           algorithm.  These locks disable preemption for UP (when
  90           CONFIG_PREEMPT is enabled) and on SMP prevents multiple CPUs from
  91           entering critical sections simultaneously.
  93spin lock - Same as lock above.
  95waiter   - A waiter is a struct that is stored on the stack of a blocked
  96           process.  Since the scope of the waiter is within the code for
  97           a process being blocked on the mutex, it is fine to allocate
  98           the waiter on the process's stack (local variable).  This
  99           structure holds a pointer to the task, as well as the mutex that
 100           the task is blocked on.  It also has the plist node structures to
 101           place the task in the waiter_list of a mutex as well as the
 102           pi_list of a mutex owner task (described below).
 104           waiter is sometimes used in reference to the task that is waiting
 105           on a mutex. This is the same as waiter->task.
 107waiters  - A list of processes that are blocked on a mutex.
 109top waiter - The highest priority process waiting on a specific mutex.
 111top pi waiter - The highest priority process waiting on one of the mutexes
 112                that a specific process owns.
 114Note:  task and process are used interchangeably in this document, mostly to
 115       differentiate between two processes that are being described together.
 118PI chain
 121The PI chain is a list of processes and mutexes that may cause priority
 122inheritance to take place.  Multiple chains may converge, but a chain
 123would never diverge, since a process can't be blocked on more than one
 124mutex at a time.
 128   Process:  A, B, C, D, E
 129   Mutexes:  L1, L2, L3, L4
 131   A owns: L1
 132           B blocked on L1
 133           B owns L2
 134                  C blocked on L2
 135                  C owns L3
 136                         D blocked on L3
 137                         D owns L4
 138                                E blocked on L4
 140The chain would be:
 142   E->L4->D->L3->C->L2->B->L1->A
 144To show where two chains merge, we could add another process F and
 145another mutex L5 where B owns L5 and F is blocked on mutex L5.
 147The chain for F would be:
 149   F->L5->B->L1->A
 151Since a process may own more than one mutex, but never be blocked on more than
 152one, the chains merge.
 154Here we show both chains:
 156   E->L4->D->L3->C->L2-+
 157                       |
 158                       +->B->L1->A
 159                       |
 160                 F->L5-+
 162For PI to work, the processes at the right end of these chains (or we may
 163also call it the Top of the chain) must be equal to or higher in priority
 164than the processes to the left or below in the chain.
 166Also since a mutex may have more than one process blocked on it, we can
 167have multiple chains merge at mutexes.  If we add another process G that is
 168blocked on mutex L2:
 170  G->L2->B->L1->A
 172And once again, to show how this can grow I will show the merging chains
 175   E->L4->D->L3->C-+
 176                   +->L2-+
 177                   |     |
 178                 G-+     +->B->L1->A
 179                         |
 180                   F->L5-+
 186Before I go further and talk about how the PI chain is stored through lists
 187on both mutexes and processes, I'll explain the plist.  This is similar to
 188the struct list_head functionality that is already in the kernel.
 189The implementation of plist is out of scope for this document, but it is
 190very important to understand what it does.
 192There are a few differences between plist and list, the most important one
 193being that plist is a priority sorted linked list.  This means that the
 194priorities of the plist are sorted, such that it takes O(1) to retrieve the
 195highest priority item in the list.  Obviously this is useful to store processes
 196based on their priorities.
 198Another difference, which is important for implementation, is that, unlike
 199list, the head of the list is a different element than the nodes of a list.
 200So the head of the list is declared as struct plist_head and nodes that will
 201be added to the list are declared as struct plist_node.
 204Mutex Waiter List
 207Every mutex keeps track of all the waiters that are blocked on itself. The mutex
 208has a plist to store these waiters by priority.  This list is protected by
 209a spin lock that is located in the struct of the mutex. This lock is called
 210wait_lock.  Since the modification of the waiter list is never done in
 211interrupt context, the wait_lock can be taken without disabling interrupts.
 214Task PI List
 217To keep track of the PI chains, each process has its own PI list.  This is
 218a list of all top waiters of the mutexes that are owned by the process.
 219Note that this list only holds the top waiters and not all waiters that are
 220blocked on mutexes owned by the process.
 222The top of the task's PI list is always the highest priority task that
 223is waiting on a mutex that is owned by the task.  So if the task has
 224inherited a priority, it will always be the priority of the task that is
 225at the top of this list.
 227This list is stored in the task structure of a process as a plist called
 228pi_list.  This list is protected by a spin lock also in the task structure,
 229called pi_lock.  This lock may also be taken in interrupt context, so when
 230locking the pi_lock, interrupts must be disabled.
 233Depth of the PI Chain
 236The maximum depth of the PI chain is not dynamic, and could actually be
 237defined.  But is very complex to figure it out, since it depends on all
 238the nesting of mutexes.  Let's look at the example where we have 3 mutexes,
 239L1, L2, and L3, and four separate functions func1, func2, func3 and func4.
 240The following shows a locking order of L1->L2->L3, but may not actually
 241be directly nested that wa#L94" id="L94" class="line" name="L94">  94242" id="L242" class="line" name="L141"> 1424/a>
 142To{a href="Documentation/rt-mutex-design.txt#L582" id="L235" class="line" name="L142"> 1424/a>          tex-dock, (L1) 142
 1424/a>          /* dond ying ca*/a href="Documentation/rt-mutex-design.txt#L142" id="L238" class="line" name="L142"> 142
 142        C tex-dounck, (L1) 152
<}a href="Documentation/rt-mutex-design.txt#L542" id="L241" class="line" name="L152"> 1525/a>
 152onvoifunc4.2(voif 152
<{a href="Documentation/rt-mutex-design.txt#L582" id="L152" class="line" name="L152"> 152          tex-dock, (L1) 1525/a>          tex-dock, (L2) 152
 1525/a>          /* donmething ca*/a href="Documentation/rt-mutex-design.txt#L142" id="L152" class="line" name="L152"> 1525/a>
 1525/a>        C tex-dounck, (L2) 162          tex-dounck, (L1) 162
<}a href="Documentation/rt-mutex-design.txt#L542" id="L162" class="line" name="L162"> 162
 1626/a>To{a href="Documentation/rt-mutex-design.txt#L582" id="L162" class="line" name="L162"> 1626/a>          tex-dock, (L2) 16266a>          tex-dock, (L3) 1626/a>
 16268a>          /* donmething caelsea*/a href="Documentation/rt-mutex-design.txt#L142" id="L162" class="line" name="L162"> 162
 1727/a>          tex-dounck, (L3) 17271a>        C tex-dounck, (L2) 172An}a href="Documentation/rt-mutex-design.txt#L542" id="L172" class="line" name="L172"> 1727/a>
 172  {a href="Documentation/rt-mutex-design.txt#L582" id="L172" class="line" name="L172"> 17276a>          tex-dock, (L3) 172
 17278a>          /* donmething caain.
a*/a href="Documentation/rt-mutex-design.txt#L142" id="L172" class="line" name="L172"> 1727/a>
 1828/a>          tex-dounck, (L3) 1828/a>
<}a href="Documentation/rt-mutex-design.txt#L542" id="L182" class="line" name="L182"> 182
 182Plw th add an4rocesses that arn toch pr these chnctions fuparate f.
 182--Pcesses A, B, anCand foDhich isn tonctions func1, func2, func3 and func4.
a href="Documentation/rt-mutex-design.txt#L922" id="L172" class="line" name="L182"> 182
 182Beitoncti4n the ta"donmething caain.
 182thDwns L3
 182         Clocked on L3
 192         Cwns L2
 192           en B blocked on L1
 1929/a>                owns L5  1929/a>           B           Alocked on L1
 192hid onthuse have 3 e chain.
Bgt;L2->L3Cgt;L3->C-D 1929/a>
 1929/a>This live Cusef loPIepth of th4 (ur seocesses t)but maok ag caaand of the ta href="Documentation/rt-mutex-design.txt#L572" id="L182" class="line" name="L192"> 192Annctions fuindividlly
 192lipth of thewo So iandle
gh lie tocking orpth of declned.  ltompleileime, wa href="Documentation/rt-mutex-design.txt#L573" id="L203" class="line" name="L203"> 203So wistl al very coffericulto figu onthe possibilies of the atrpth o 2030/a>
 203Mu chain iand sive 3 e chae stlds g shon locks thichleaok ag caaandocse aa href="Documentation/rt-mutex-design.txt#L233"5id="L203" class="line" name="L193"> 203-- moun f thdata So if protents his lthe waplementation oft acly hoplementat 203
 203Evme, wh its ewtlkshe PI chain i Mule thout hois lilow i 203
 213waMex thner tad funlag 213in-------------------
 2131/a>mutex at not dyned b,ois liner ta stoeto fiNULL Since thl waarchictedes ta href="Documentation/rt-mutex-design.txt#L573"5id="L203" class="line" name="L213"> 213--ve 3 e chsk structure of nnda asesandour sebyt3 lln.tnt th(d fuifhis is ua href="Documentation/rt-mutex-design.txt#L573" id="L203" class="line" name="L213"> 213
 213Toasesangn.ticati thbs thebe taed in itnlag< This lorts s alwa bedcribed ta href="Documentation/rt-mutex-design.txt#L573"8id="L203" class="line" name="L213"> 213a  locumentation/rt-mutex-dxt#Lbut a ll alwa be tabrief hodcribed t re w 2131/a>
 223blBs e0s used to the pl"Pen g shOer t"rnlag This is described inter i 223
 2232/a>     more detail
 223atcmpxchg Tris aa href="Documentation/rt-mutex-design.txt#L953" id="L203" class="line" name="L223"> 223
 223piSe tearchictedes tmplement PIanndaomichampxchg (Cplee a f fuExangeab  This
 223ca used tohen
 233lotexes thshor
 233--ungn.t tnto sh_ampxchg(ungn.t tnto sh*Aunlign.t tnto sh*Bunlign.t tnto sh*C 2333/a>  {a href="Documentation/rt-mutex-design.txt#L583" id="L233" class="line" name="L233"> 233          lign.t tnto shT =h*A 233          ifh(*A ==h*B) {a href="Documentation/rt-mutex-design.txt#L583" id="L223" class="line" name="L233"> 233                  *A =h*C 2333/a>        C }a href="Documentation/rt-mutex-design.txt#L543" id="L243" class="line" name="L243"> 2434/a>          redesn T 2434/a>
<}a href="Documentation/rt-mutex-design.txt#L543" id="L243" class="line" name="L143"> 1434/a>
<#clned.hampxchg(a,b,c)h_ampxchg(&a,&b,&c 143
 143To s is derely beni to tave 3since it deaowin
oyouo or y houpdat3 loriable).a href="Documentation/rt-mutex-design.txt#L143" id="L233" class="line" name="L143"> 1434/a>   the tariable).s wai atryouoe-M#clned.hampx2lD ame="L243"> 2434/a434/aeIEn="Doftynlyucceearedifrt-mutex-design.txt#L143" id="L233" class="line" name="L142"> 142
 1424/a>          /3 dond34tion/rt-mutex-design.txt#L123" id="L223" class="line" name="3142"> 142
 142        C t3x-dou3ck, (LThf PIanndaomichationa stosupon,  CMPXCHGl be to
<}a href="3ocume3tations of do enthe tion/ figuref CMPXCHG ocumupon,  fiNUL to
 152onvoifunc4.3(voif35tion/rt-mutex-design.txt#L213" id="L213" class="line" name="3152"> 152
<{a href="3ocume35 ofntexnscumeg ort_f="Doc followiuptsbg caaribeng caainince tfieltatilpocptioiz/rt-mutex-design.txt#L143" id="L233" class="line" name="3152"> 152          t3x-doc354, (LThf syssly umenPIanndaomicham of tsupon,  ied by a scribed t re w is simn/rt-mutex-design.txt#L573"8id="L203" class="line" name="3152"> 1525/a>          t3x-doc3, (L2)tion/y to
 1525/a>          /3 donm35tion/rt-mutex-design.txt#L123" id="L223" class="line" name="3152"> 1525/a>
 1525/a>        C t3x-dou35ocumentation/cumentation/rt-mutex-design.txt#L233" id="L223" class="line" name="3162"> 162          t3x-dou36tion/rt-mutex-design.txt#L151" id="L151" class="li3e" name="3162"> 162
<}a href="3ocume36ist of pris out of scope fot hois lis l thabroken!),is isenthitymay cmentatiort-mutex-design.txt#L151" id="L151" class="li3e" name="3162"> 162
 1626/a>To{a href="3ocume36tion/rt-mutex-design.txt#L953" id="L223" class="line" name="3162"> 1626/a>          t3x-doc3, (L2)ckingt wismptsss out ofpts mustd intedjusttion/
 16266a>          t3x-doc3, (L3)__rt_f="Docedjust_prot (sant Ps  perr rmertre ar="L243s mustd int be disrt-mutex-design.txt#L573" id="L203" class="line" name="3162"> 1626/a>
 16268a>          /3 donm36tion/rt-mutex-design.txt#L103" id="L203" class="line" name="3162"> 162
 1727/a>          t3x-dou37tion/rt-mutex-design.txt#L151" id="L151" class="li3e" name="3172"> 17271a>        C t3x-dou3ck, (Lrt_f="DocgetprotDantatisk that is
 172An}a href="3ocume3tationways the hi hren rmitymbe the prat, alled
 172  {a href="3ocume3tationhat are ownutexehree aa hreftation/asesantati,hrt_f="DocgetprotumenphrehtedTrt-mutex-design.txt#L231" id="L231" class="li3e" name="3172"> 17276a>          t3x-doc3, (L3)f="Dhis
 17278a>          /3 donm37tion/rt-mutex-design.txt#L103" id="L203" class="line" name="3172"> 1727/a>
 1828/a>          t3x-dou3ck, (L3) 1828/a>
<}a href="3ocume38cked on L1
 182Plw th add 3n4roc38tion/rt-mutex-design.txt#L143" id="L143" class="line" name="3182"> 182--Pcesses A3 B, a3Cand f__rt_f="Docedjust_prot mute>--sk tharesilieg ort_f="Docgetprot/Documition/rt-mutex-design.txt#L573" id="L213" class="line" name="3182"> 182
 182Beitoncti4n3the t3"dntation/af="adjusti that is
 182thDwns L3
<3 href3"DocumPtatioaDocumecumentation/drt-mutex-design.txt#L573" id="L213" class="line" name="3182"> 182         Cl3cked 38tion/rt-mutex-design.txt#L173" id="L223" class="line" name="3192"> 192         Cw3s L2
3a hrefIare ae mut#39;s lf="nholds the__rt_f="Docedjust_prot -ld eis imp thhres/rt-mutex-design.txt#L573" id="L213" class="line" name="3192"> 192           3n B b3ocked at,dehhres/i that is
 1929/a>           3    o39tion/n one muis ijustiocumentatioas mepoif the task has
 1929/a>           3     3     Aentati thhres//boosty
 always the hiprotected biguref leef="Doct.  Obviowaysrt-mutex-design.txt#L573" id="L213" class="line" name="3192"> 192
 192hid onthuse3have 3 e chaentatidehhres//unboosty
 alt is
 1929/a>This live C3sef l3PIepthtask has
 192Annctions f3indiv3dlly
 192lipth of th3wo So39tion/rt-mutex-design.txt#L173" id="L223" class="li4e" name="4203"> 203So wistl al4very 40tion/rt-mutex-design.txt#L151" id="L151" class="li4e" name="4203"> 2030/a>
 1929/a>           4texes4own be href="Documentation/tation/cumentation/rt-mutex-design.txt#L233" id="L223" class="li4e" name="4193"> 203
 203Mu chain ia4d siv404(L2)ckin and coule thentatiohg (Cphe task hamicly b 203-- moun f t4data 40tion/rt-mutex-design.txt#L236" id="L236" class="li4e" name="4203"> 203
 203Evme, wh it4 ewtl4she PIuptsbwef ti 192Annctions f4cumen4ation/cks anda ca mentation/  chain cumi onthe essibiDoc/rt-mutex-design.txt#L223" id="L233" class="li4e" name="4203"> 2030/a>
 213waMex thner4tad f41 a lockinrt_f="Docedjust_prot_ationr-ld liafhis eis impis loostynrtlow
 2131/a>mutex at no4 dyne4 b,ois(de)loostwned(Thf wee ta hr the task.  Sled
 213--ve 3 e ch4k str4cture ;Lemeaumendeadhrefwne,nda a mepoiftation/asesantati,ho#39; the mutex. ane in
 213Toasesangn.4icati4thbs tentamen
 213a  locument4tion/41tion/rt-mutex-design.txt#L103" id="L203" class="li4e" name="4213"> 2131/a>
 223blBs e0s us4d to 4he pl&ains
Trion/tstrrupentaef="atevel/rt-mutex-design.txt#L197" id="L197" class="li4e" name="4223"> 223
 2232/a>     more d4tail
4but itWL to
 223atcmpxchg T4is aa4href="Balk ab
 223piSe tearch4ctede4 tmpleuptsbg canewaprotectiei,ho#39s the top ntati="Documebeaa href=ntap
 223ca used toh4n
 233lotexes ths4or
 233--ungn.t tn4o sh_4mpxchgxt, solementationmenttoen
Documeatno wait be f the m="DocumeentT.ia hrefrt-mutex-design.txt#L233" id="L233" class="li4e" name="4233"> 2333/a>  {a href="4ocume4tationentatiosanewacume="gromt, sincfpts must hrefwned by the task.  So if the task hlrt-mutex-design.txt#L233" id="L233" class="li4e" name="4233"> 233          l4gn.t 4nto shcumeert-mutex-design.txt#L573" id="L213" class="li4e" name="4233"> 233          i4h(*A 43tion/rt-mutex-design.txt#L123" id="L223" class="li4e" name="4233"> 233           4     4*A =h*Ifion/entatihl cumebcumentatioas mepoiUL to
 2333/a>        C }4 href43k, (LThf  list is alis lilow rt-mutex-design.txt#L233" id="L233" class="li4e" name="4243"> 2434/a>          r4desn 44tion/rt-mutex-design.txt#L151" id="L151" class="li4e" name="4243"> 2434/a>
<}a href="4ocume4tationAt;Lemeihl cuwntation/tsee="Documetecginaef="Docud(Thf n one muprn/out ocumentrt-mutex-design.txt#L151" id="L151" class="li4e" name="4143"> 1434/a>
<#clned.ha4pxchg4a,b,c)tioda acur"Docud="L1)ihl mic,f="Dpine in
 143To s is der4ly be444, (LThfreaielcnoth
 1434/a>   the tari4ble).4 wai ae aa hreftation/asesantati,hmentaation/ae in
 1424/a>          /4 dond44tion/Sa href="Docuhted f="Documettoen
Documeatno wait be the href="Docur"Docus
 142        C t4x-dou4ck, (Le thenta  hrehtedn/autra fanewac="Dpine in
<}a href="4ocume45tion/rt-mutex-design.txt#L151" id="L151" class="li4e" name="4152"> 1525/a>
 152onvoifunc4.4(voif45tion/ that is
<{a href="4ocume453ion/ thaef=pentRememb tataation/amicly b 152          t4x-doc454, (LT intedjustlw o hodth that it="Docu
 1525/a>          t4x-doc4, (L2)tbe f tatof nn stobmostadjuston/rt-mutex-design.txt#L231" id="L231" class="li4e" name="4152"> 152
 1525/a>          /4 donm45tion/Ncumenwere we have 3  mepoiftation/asesanhl ocumentatia T 3  mepo the hie ine disrt-mutex-design.txt#L573" id="L203" class="li4e" name="4152"> 1525/a>
 1525/a>        C t4x-dou45ocume be disD areithoutdisDgionag caainipposin
#L94" i b< hatiweof do x. a hra="Drt-mutex-design.txt#L151" id="L151" class="li4e" name="4162"> 162          t4x-dou46, interru, wait be omeihl entatilw o areiharesta, o
<}a href="4ocume46tion/rt-mutex-design.txt#L233" id="L233" class="li4e" name="4162"> 162
 1626/a>To{a href="4ocume464ion/ben/out  owt ntatioda a mepo the hie ine ion/rt-mutex-design.txt#L226" id="L226" class="li4e" name="4162"> 1626/a>          t4x-doc46tion/rt-mutex-design.txt#L236" id="L236" class="li4e" name="4162"> 16266a>          t4x-doc4, (L3)hat arnentatilbg ca be disDocumestd in/rt-mutex-design.txt#L226" id="L226" class="li4e" name="4162"> 1626/a>
 16268a>          /4 donm46tion/Ncum mic,"Docum href="Documhons s
 1727/a>          t4x-dou47tion/d
 17271a>        C t4x-dou4ck, (Lgromtaainince  the hirotecteprocumenmay c Muleptsbg cad in/rt-mutex-design.txt#L226" id="L226" class="li4e" name="4172"> 172An}a href="4ocume47tion/rt-mutex-design.txt#L213" id="L213" class="li4e" name="4172"> 1727/a>
 172  {a href="4ocume47 (L2) 17276a>          t4x-doc4, (L3) 172
 17278a>          /4 donm47A =h*Ifion/entatiwdsichae a a lise in
 1828/a>          t4x-dou4ck, (Lcumeentacumedntats/,o
<}a href="4ocume48cked athe atrnewac="De in
 182Plw th add 4n4roc48tion/Lastie twerfmentakbotsbg ca be disDocumestd in,tet;L1ibedsion/a mepo the hrt-mutex-design.txt#L182" id="L182" class="li4e" name="4182"> 182--Pcesses A4 B, a4Cand fe ine disprocume tainume thaL2="De 3 lentOne atrnexinin
 182Beitoncti4n4the t4"n one mnn/rt-mutex-design.txt#L231" id="L231" class="li4e" name="4182"> 1828/a>
 182thDwns L3
<4 href4"Docum hol: On="Dt
 182         Cl4cked 4n L3
 192         Cw4s L2
4a href="Docu PI is ortaion ofs lf="rememb taisiftation/a"Documc="Docchaeof nrt-mutex-design.txt#L231" id="L231" class="li4e" name="4192"> 192           4n B b4ocked on L1
 1929/a>           4    o4ns L5  1929/a>           4     4     AlockedSts.socumendsion/reaielcna"Docum hrefa hcocumhtef to ichae a asantrt-mutex-design.txt#L231" id="L231" class="li4e" name="4192"> 192
 192hid onthuse4have 49tion/rt-mutex-design.txt#L236" id="L236" class="li4e" name="4192"> 1929/a>
 1929/a>This live C4sef l49h*B) {a hreen.
anamic, and coulhampxe href="Docuisef="Docubcumentatioany ofs lmen="Drt-mutex-design.txt#L151" id="L151" class="li4e" name="4192"> 192Annctions f4indiv49A =h*C 192lipth of th4wo So499(L1) 203So wistl al5very 50 href="Docuse3s mustd in the hie in
 192           5cumen50cked on L1
Thf n orely b 1929/a>           5texes50s L5  1929/a>           5plati5ation/rt-mutex-design.txt#L204" id="L204" class="li5e" name="5193"> 203Mu chain ia5d siv504href="Docu PI cumw taisiNo!cu PI ttionnhl k thsk s_try dism href="Docum the hrt-mutex-design.txt#L204" id="L204" class="li5e5 name="5192"> 192hid onthuse5data 50 (L2) 1929/a>
 1929/a>This live C5 ewtl50tion/rt-mutex-design.txt#L782" id="L182" class="li5e8 name="5192"> 192Annctions f5cumen50A =h*C 192lipth of th5cumen509ked on L1
Thf  ofpre  chain cumi to ichaeletiaompxe herna hra="D  be disDocumesrt-mutex-design.txt#L204" id="L204" class="li5e" name="5213"> 213waMex thner5tad f51 href="Docunewa"Docua href="DocumentStsdfion/eseptparateaunewa"Docuawex.
oyoppe/rt-mutex-design.txt#L234" id="L234" class="li5e" name="5213"> 213in---------5-----51cked on L1
anamic, and coulathe atra href="Documesrt-mutex-design.txt#L204" id="L204" class="li5e2 name="5213"> 213
 2131/a>mutex at no5 dyne514href="Docuf do xethsk s_try dism n waite ine dis,nentatilbg ca be disin curt-mutex-design.txt#L204" id="L204" class="li5e5 name="5213"> 213--ve 3 e ch5k str51 (L2) 213
 213Toasesangn.5icati51h*B) {a hreati amehref="Docuquin
#understathe atrabove aclck the hiOK/4/aeIhref="Docu>A
t/rt-mutex-design.txt#L573" id="L203" class="li5e8 name="5213"> 213a  locument5tion/51A =h*C 2131/a>
 223blBs e0s us5d to 52tion/rt-mutex-design.txt#L151" id="L151" class="li5e" name="5223"> 223
 2232/a>     more d5tail
52wn be href="Documentation/tation/cumert-mutex-design.txt#L231" id="L231" class="li5e3 name="5223"> 2232/a>
 223atcmpxchg T5is aa5href="Wtationiso ocumeisiftaticna"Documwdsichosenotask had
 223piSe tearch5ctede5 tmpleWhy="Docuhl is ortaio?  Why=caef="Documerjustiai nnda a mepoix. anoth
 223ca used toh5n
 233lotexes ths5or
 233--ungn.t tn5o sh_5mpxchgocumentatienwxe href=Documhiatentatilwretiw="Docb ch4 (nocobg caerw
 2333/a>  {a href="5ocume5tationen 233          l5gn.t 53f the PI ef=" umentatyad
 233          i5h(*A 53tion/ cumi tw="Dochted f="boosty
 233           5     5*A =h*eatenc href="aticectical sely b 2333/a>        C }5 href53k, (Lit)/rt-mutex-design.txt#L197" id="L197" class="li5e" name="5243"> 2434/a>          r5desn 54tion/rt-mutex-design.txt#L151" id="L151" class="li5e" name="5243"> 2434/a>
<}a href="5ocume54ist of pre the hinonce sounleef=" umentatyad
<#clned.ha5pxchg5a,b,c)pen ifzredif"> 24rieatno wt, Sefacud="L1ne 3 le bIftUL anewa"Docua href=rt-mutex-design.txt#L151" id="L151" class="li5e" name="5143"> 143
 143To s is der5ly be544, (Lc="Docchaewt, Sefacud="L1newa/drt-mutex-design.txt#L573" id="L213" class="li5e" name="5143"> 1434/a>   the tari5ble).54tion/rt-mutex-design.txt#L236" id="L236" class="li5e" name="5142"> 142
 1424/a>          /5 dond54tion/newapr 142
 142        C t5x-dou5ck, (Lumentatyad
<}a href="5ocume55tion/d
 152onvoifunc4.5(voif55tion/ocume tainumeeptsbg caDocumert-mutex-design.txt#L204" id="L204" class="li5e" name="5152"> 152
<{a href="5ocume55tion/rt-mutex-design.txt#L213" id="L223" class="li5e" name="5152"> 152          t5x-doc55tion/rt-mutex-design.txt#L953" id="L223" class="li5e" name="5152"> 1525/a>          t5x-doc5, (L2)Takf="Docuaud="L1n(Taite lak="ument/rt-mutex-design.txt#L583" id="L143" class="li5e" name="5152"> 152
 1525/a>          /5 donm55tion/rt-mutex-design.txt#L123" id="L223" class="li5e" name="5152"> 1525/a>
 1525/a>        C t5x-dou55tion/nt"DocumaDocumert-mutex-design.txt#L204" id="L204" class="li5e" name="5162"> 162          t5x-dou56tion/rt-mutex-design.txt#L151" id="L151" class="li5e" name="5162"> 162
<}a href="5ocume56ist of prthDein ofs lfen/out criednhl k tha furtakf="Docuef="Documenti 162
 1626/a>To{a href="5ocume56pxchgxt, soeptsbg caCMPXCHG ocum ste havelsethtedThis lortatiert-mutex-design.txt#L204" id="L204" class="li5e" name="5162"> 1626/a>          t5x-doc56tion/rt-mutex-design.txt#L236" id="L236" class="li5e" name="5162"> 16266a>          t5x-doc5, (L3)IftUL bytreve taeofptioolig caerruenwxeth
 16268a>          /5 donm56tion/rt-mutex-design.txt#L103" id="L203" class="li5e" name="5162"> 162
 1727/a>          t5x-dou57tion/cks stack. tnter ia becacume thae in
 17271a>        C t5x-dou5ck, (Lscopem hrefa hmicly b 172An}a href="5ocume57tion/ thasesantn waite ine f the m="Do mepo/rocumitihted be, wait be f the rt-mutex-design.txt#L103" id="L203" class="li5e" name="5172"> 1727/a>
 172  {a href="5ocume57 (L2)ckine ine disDocref="Documhiatxt, sos the waitslowanasesocrfmentaDocu="Drt-mutex-design.txt#L151" id="L151" class="li5e" name="5172"> 17276a>          t5x-doc57ref=" mepoSd t rxt, Docuhl  dishrt-mutex-design.txt#L151" id="L151" class="li5e" name="5172"> 172
 17278a>          /5 donm57A =h*We waintatioexry_to_xt, _et_f="Do. tnter ia 
 1828/a>          t5x-dou5ck, (Le taeofpti)/rt-mutex-design.txt#L197" id="L197" class="li5e" name="5182"> 1828/a>
<}a href="5ocume58tion/rt-mutex-design.txt#L233" id="L233" class="li5e" name="5182"> 182
 182Plw th add 5n4roc58tion/slowanase/cu PI thDein ofs lfen/out tation/reaielcnaatomicuse3owned  rt-mutex-design.txt#L103" id="L203" class="li5e" name="5182"> 182--Pcesses A5 B, a584, (LThfescribeHas Wat are wa bedaribo href="Docum the hiince tfielt/cuYct aclreve "Docce it rt-mutex-design.txt#L103" id="L203" class="li5e" name="5182"> 182
 182Beitoncti4n5the t586, (LThfecur"Docus
 182thDwns L3
<5 href5"Documpl"Docaowif is
 182         Cl5cked 5n L3
 192         Cw5s L2
5a hrefslowafmentaknasein cumi tw="Docwainthted f="a hra="D e ine dis,le, funcuhlrt-mutex-design.txt#L233" id="L233" class="li5e" name="5192"> 192           5n B b5ocked lis lcur"Dochreont ehe wapse3ownedeffescribeHas Wat are wa bedaribof icel mic,"Docurt-mutex-design.txt#L233" id="L233" class="li5e" name="5192"> 1929/a>           5    o5ns L5 
/tsynchronizmeeptsbg reve diert-mutex-design.txt#L204" id="L204" class="li5e" name="5192"> 1929/a>           5     59tion/rt-mutex-design.txt#L213" id="L223" class="li5e" name="5192"> 192
 192hid onthuse5have 59wai ae aa /rwer;Lemean/tsee="Doi 1929/a>
 1929/a>This live C5sef l59h*B) os de/  Let the hie we have 3 situt#L57shern>Atex.ert-mutex-design.txt#L204" id="L204" class="li5e" name="5192"> 192Annctions f5indiv59tion/rt-mutex-design.txt#L103" id="L203" class="li5e" name="5192"> 192lipth of th5wo So599(L1) 203So wistl al6very 60 href="entation/tation/cumentation/rt-mutex-design.txt#L233" id="L223" class="li6e1 name="6292"> 192           6cumen60tion/rt-mutex-design.txt#L233" id="L233" class="li6e2 name="6292"> 1929/a>           6texes60s L5  1929/a>           6plati60    Aloot;rnlag This is describeihl waa/cu PI thDein;Lemeihl n/tsee="DocumetDocumisef="Docuca/rt-mutex-design.txt#L573" id="L213" class="li6e" name="6193"> 203Mu chain ia6d siv604href="cur"Docus
 192hid onthuse6data 60 (L2) 1929/a>
 1929/a>This live C6 ewtl60h*B) {aitselfe bIftso/rwersuccted entatnt nnda amicly b<,"> earwnedeffescribePg Thisrt-mutex-design.txt#L573" id="L213" class="li6e8 name="6192"> 192Annctions f6cumen60A =h*C 192lipth of th6cumen6ation/rt-mutex-design.txt#L173" id="L213" class="li6e" name="6213"> 213waMex thner6tad f61 href="IftUL a g This os de o ichaecur"Doc/rwer;Lemean/tsee="DoThfecur"Docuumentatyahlrt-mutex-design.txt#L233" id="L233" class="li6e" name="6213"> 213in---------6-----61cked onat
 2131/a>mutex at no6 dyne614href="o icf a mbcumentatioas mepohe waplicroh ta s, and coulchiworrynebogud bIulhrefrt-mutex-design.txt#L233" id="L233" class="li6e5 name="6213"> 213--ve 3 e ch6k str61 (L2) 213
 213Toasesangn.6icati61h*B) {aocumentatioda acur"Docud="L1ert-mutex-design.txt#L204" id="L204" class="li6e8 name="6213"> 213a  locument6tion/61tion/rt-mutex-design.txt#L103" id="L203" class="li6e" name="6213"> 2131/a>
 223blBs e0s us6d to 620 =h*C 223
 2232/a>     more d6tail
622href="o icoocume
  ,os the wait g This os dert-mutex-design.txt#L204" id="L204" class="li6e3 name="6223"> 2232/a>
 223atcmpxchg T6is aa62 (L2) 223
 223piSe tearch6ctede628href="entation/tart-mutex-design.txt#L204" id="L204" class="li6e" name="6223"> 223ca used toh6n
 233lotexes ths6or
 233--ungn.t tn6o sh_63tion/rt-mutex-design.txt#L953" id="L223" class="li6e" name="6233"> 2333/a>  {a href="6ocume63 (L2) 233          l6gn.t 636href="entation/tation/cumentationrt-mutex-design.txt#L953" id="L223" class="li6e" name="6233"> 233          i6h(*A 63tion/rt-mutex-design.txt#L123" id="L223" class="li6e" name="6233"> 233           6     638 L5  2333/a>        C }6 href639href="UL x.
exf tat aa"Docu,r isutex. the hian g This os de wptsbeority isat
 2434/a>          r6desn 640href="ntation/ benioda acur"Docud in/rt-mutex-design.txt#L226" id="L226" class="li6e" name="6243"> 2434/a>
<}a href="6ocume64tion/rt-mutex-design.txt#L233" id="L233" class="li6e" name="6143"> 1434/a>
<#clned.ha6pxchg6a,b,c)W. the owie tainumecioda af do fictil/rt-mutex-design.txt#L226" id="L226" class="li6e3 name="6143"> 143
 143To s is der6ly be644, (LIhref="Documhons antioncum/rwersetif= o"tionumt. aoa"fflf="bce k usa"utrt-mutex-design.txt#L123" id="L223" class="li6e" name="6143"> 1434/a>   the tari6ble).64tion/ hrefa hcocumhitiweof do fino aetiik"aftimpalspecifiednamounonocreion/rt-mutex-design.txt#L226" id="L226" class="li6e" name="6142"> 142
 1424/a>          /6 dond64tion/hat arne mutSlee wp tef tiaowie tainume oexrynx. nt, Sos deahiphe m="Do mepo/ro/rt-mutex-design.txt#L923" id="L213" class="li6e" name="6142"> 142
 142        C t6x-dou64tion/rt-mutex-design.txt#L173" id="L213" class="li6e" name="6152"> 152
<}a href="6ocume65tion/Othe e 3 l arnxrynx. nt, Sef="Documenti 1525/a>
<{a href="6ocume653ion/ tha g This os deert-mutex-design.txt#L151" id="L151" class="li6e" name="6152"> 152          t6x-doc65tion/rt-mutex-design.txt#L953" id="L223" class="li6e" name="6152"> 1525/a>          t6x-doc6, (L2)Icref="DocumhiatTASK_INTERRUPTIBLEtan;Lemeaumen claalat aretioncumeut tatirt-mutex-design.txt#L953" id="L223" class="li6e" name="6152"> 152
 1525/a>          /6 donm65tion/rt-mutex-design.txt#L123" id="L223" class="li6e" name="6152"> 1525/a>
 1525/a>        C t6x-dou65tion/cioda a mepoenti 162          t6x-dou66tion/ is"Do
<}a href="6ocume66ist ofieltahamctedatxe hweohted f="setif= nustPccounownedumenit/rt-mutex-design.txt#L231" id="L231" class="li6e" name="6162"> 162
 1626/a>To{a href="6ocume66pxchgn/tation/cumentationrt-mutex-design.txt#L953" id="L223" class="li6e" name="6162"> 1626/a>          t6x-doc66tion/rt-mutex-design.txt#L236" id="L236" class="li6e" name="6162"> 16266a>          t6x-doc66f the PI Pccounownedocuaud="L1ng shpr 1626/a>
 16268a>          /6 donm66tion/no wait mepoenti< that it="Docu 162
 1727/a>          t6x-dou67tion/rt-mutex-design.txt#L151" id="L151" class="li6e" name="6172"> 17271a>        C t6x-dou6ck, (LS the waite ine disDwdsiot, sohave 3 etxryne m="Doslowa dis,lernablisafet rt-mutex-design.txt#L103" id="L203" class="li6e" name="6172"> 172An}a href="6ocume67tion/fdum thae in
 172  {a href="6ocume67 (L2)o#39;dum thacur"Docuum 17276a>          t6x-doc67ref="hdsichcumet,lernabowiet_f="Docadjust_umenecioda a"Documt. see="DocumetDocurt-mutex-design.txt#L573" id="L203" class="li6e" name="6172"> 172
 17278a>          /6 donm67tion/rt-mutex-design.txt#L103" id="L203" class="li6e" name="6172"> 1727/a>
 1828/a>          t6x-dou6ck, (L(orrdead disD;Lemefs l e oc) twerfmentakwaite ine disDocref="Documhocumgoraheadrt-mutex-design.txt#L151" id="L151" class="li6e" name="6182"> 1828/a>
<}a href="6ocume68cked atheeunset_f="Docadjust_umen_d coulcioda a"Docu,tet;1" cribis earlideert-mutex-design.txt#L151" id="L151" class="li6e" name="6182"> 182
 182Plw th add 6n4roc683ion/hat bowicumee  182--Pcesses A6 B, a684, (LDocumh(e in
 182Beitoncti4n6the t686, (LWakf="Df= ito
 182thDwns L3
<6 href68tion/rt-mutex-design.txt#L103" id="L203" class="li6e" name="6182"> 182         Cl6cked 68tion/Tks s;Leduleaablig cniwt, Sf= umena fewnce soumert-mutex-design.txt#L204" id="L204" class="li6e" name="6192"> 192         Cw6s L2
6a href="1)ow.
h4 (nopg This os deahipDocuef="Documert-mutex-design.txt#L204" id="L204" class="li6e" name="6192"> 192           6n B b6ocked on2)ow.
receivad an claalndareitatTASK_INTERRUPTIBLErt-mutex-design.txt#L204" id="L204" class="li6e" name="6192"> 1929/a>           6    o6ns L5  1929/a>           6     69tion/rt-mutex-design.txt#L213" id="L223" class="li6e" name="6192"> 192
 192hid onthuse6have 69wai aos deahipDocuef="Docume hatiweosuccted,ow.
exfte thaL2=", oth
 1929/a>This live C6sef l69tion/Sa justissxchy9;dumoursel (sSbameacioda a f tshocumgorbameat. sleepert-mutex-design.txt#L204" id="L204" class="li6e" name="6192"> 192Annctions f6indiv69tion/rt-mutex-design.txt#L103" id="L203" class="li6e" name="6192"> 192lipth of th6wo So699(L1) hol: Foisvariousace soum,obecacumeocreioncumedare claala/r="Doste idd="L2rt-mutex-design.txt#L213" id="L213" class="li7e" name="7203"> 203So wistl al7very 70 href="DocualgntathmthtedThis lorc 192           7cumen70cked on L1
staowitn waite ine f t. in.
becacumeocrdy   ichDocumwnedocupmentatill,rt-mutex-design.txt#L213" id="L213" class="li7e2 name="7292"> 1929/a>           7texes70s L5  1929/a>           7plati70    Alockedat
 203Mu chain ia7d siv70tion/rt-mutex-design.txt#L953" id="L223" class="li7e5 name="7192"> 192hid onthuse7data 70 (L2)F do fino aetiDocumhtn Tioncume isSclaalrt-mutex-design.txt#L953" id="L223" class="li7e6 name="7192"> 1929/a>
 1929/a>This live C7 ewtl70tion/rt-mutex-design.txt#L782" id="L182" class="li7e8 name="7192"> 192Annctions f7cumen70A =h*Iftaationcume is claal occur"Dd, waite inde the hiewa bentat wa bedfieltaw="Docchaeb rt-mutex-design.txt#L151" id="L151" class="li7e9 name="7192"> 192lipth of th7cumen7ation/ctedaathe atrbesanhtedThis lorot, so"fflfaite ine f the m="Do mepong shperhap 213waMex thner7tad f71 href be f the m="Doince / bIftULut  
 213in---------7-----71cked ="Doet_f="Docadjust_umen_d coulhtedThis lorexecuyntae 3 l cioda a"Docu,rt-mutex-design.txt#L213" id="L213" class="li7e2 name="7213"> 213
 2131/a>mutex at no7 dyne71tion/rt-mutex-design.txt#L953" id="L223" class="li7e5 name="7213"> 213--ve 3 e ch7k str71 (L2)UmentaDocu="D M="L2rt-mutex-design.txt#L213" id="L213" class="li7e6 name="7213"> 213
 213Toasesangn.7icati71tion/rt-mutex-design.txt#L782" id="L182" class="li7e8 name="7213"> 213a  locument7tion/71tion/ PI fmentaDocuocuaud="L1ng somons ana furnasesm is
 223blBs e0s us7d to 720 =h*scribeHas Wat are wa bedaribo href="Docum the hiince  twerfume ta his kntac"Doi 223
 2232/a>     more d7tail
722hrefhat are,mute=ince tfieltaocref="Documhw="Doceority="Docur"Docuum 2232/a>
 223atcmpxchg T7is aa72 (L2)Icref="ince tfieltaons  atr wa beHas Wat are wa bedbik"waar(orrCMPXCHG hl chaeav do bo ),rt-mutex-design.txt#L213" id="L213" class="li7e" name="7223"> 223
 223piSe tearch7ctede72tion/ PI thDein ofs ltatioin Thfeslowafmentaknasehiatx. nt, Sef="e ine disDocref=rt-mutex-design.txt#L123" id="L223" class="li7e9 name="7223"> 223ca used toh7n
 233lotexes ths7or
 233--ungn.t tn7o sh_73tion/don>ACMPXCHG aclckn;Lemeihl tatioin Thfea furnase,re aretii 2333/a>  {a href="7ocume73 (L2)in Thfeslowanasehtooe bIftaae in
 233          l7gn.t 736href is
ioncumebetwee href= chaa
 233          i7h(*A 73tion/t haa href="Documesee ine dis, waitd="L1nm"Dococu>Aumethat are,mutus musrt-mutex-design.txt#L782" id="L182" class="li7e" name="7233"> 233           7     738 L5 ince tstaowihtedsan
omt, Sg reveLeme."IftUL x.
 2333/a>        C }7 href739hrefince tfieltahl waarno cted,Sef="e ine disDiatentatilwrocum ste havmox.
isrt-mutex-design.txt#L782" id="L182" class="li7e" name="7243"> 2434/a>          r7desn 740hrefhtedn/ert-mutex-design.txt#L204" id="L204" class="li7e" name="7243"> 2434/a>
<}a href="7ocume74tion/rt-mutex-design.txt#L233" id="L233" class="li7e" name="7143"> 1434/a>
<#clned.ha7pxchg7a,b,c)IftUL x.
 143To s is der7ly be74tion/rt-mutex-design.txt#L953" id="L223" class="li7e" name="7143"> 1434/a>   the tari7ble).74tion/On waite hiSf= e di, wait be disDocref="cur"DocutDocumis xt, senti< tt=prt-mutex-design.txt#L236" id="L236" class="li7e" name="7142"> 142
 1424/a>          /7 dond74tion/ns heowins  atr be f the m="Docur"DocutDocuenti< ttesanfieltaocref="newrt-mutex-design.txt#L236" id="L236" class="li7e" name="7142"> 142
 142        C t7x-dou74tion/ mepoahl waarno waitnewa"Docuauptst thaot;rnlag This is describeibik"waa,tet;heowrt-mutex-design.txt#L236" id="L236" class="li7e" name="7152"> 152
<}a href="7ocume75tion/ns  atr wa beHas Wat are wa bedbik"ifmutex.tstaowi 1525/a>
 152onvoifunc4.7(voif75tion/rt-mutex-design.txt#L182" id="L182" class="li7e" name="7152"> 152
<{a href="7ocume753ion/Tait be disDocref="t eviousatDocumis entatilw o arewaitnewapg This os de the hrt-mutex-design.txt#L182" id="L182" class="li7e" name="7152"> 152          t7x-doc75tion/ be disDis xt, sentRemembcumten/oefa hisSef="trimeat. t evDocu="Doeac rt-mutex-design.txt#L236" id="L236" class="li7e" name="7152"> 1525/a>          t7x-doc7, (L2)e tdi#L15 inset_f="Docadjust_umen_d coulgromtadThis i self ns aniat arrt-mutex-design.txt#L233" id="L233" class="li7e" name="7152"> 152
 1525/a>          /7 donm75tion/rt-mutex-design.txt#L123" id="L223" class="li7e" name="7152"> 1525/a>
 1525/a>        C t7x-dou75tion/nf="Documhdoaowions hat are  g This twer;dum thanewoc="De in
 162          t7x-dou76tion/  m="Do g This os deert-mutex-design.txt#L233" id="L233" class="li7e" name="7162"> 162
<}a href="7ocume76tion/rt-mutex-design.txt#L233" id="L233" class="li7e" name="7162"> 162
 1626/a>To{a href="7ocume76tion/rt-mutex-design.txt#L953" id="L223" class="li7e" name="7162"> 1626/a>          t7x-doc76tion/Cotxtctrt-mutex-design.txt#L123" id="L223" class="li7e" name="7162"> 16266a>          t7x-doc76tion/f="Docurt-mutex-design.txt#L123" id="L223" class="li7e" name="7162"> 1626/a>
 16268a>          /7 donm76tion/Foisf="Doce ocumedntdsign.tx, ptatilbem do StevDo Rostedt <" id="L151" class="li7e" name="7162"> 162
 1727/a>          t7x-dou77tion/rt-mutex-design.txt#L151" id="L151" class="li7e" name="7172"> 17271a>        C t7x-dou7ck, (LCredi#hrt-mutex-design.txt#L182" id="L182" class="li7e" name="7172"> 172An}a href="7ocume77tion/f="Docurt-mutex-design.txt#L123" id="L223" class="li7e" name="7172"> 1727/a>
 172  {a href="7ocume77tion/rt-mutex-design.txt#L236" id="L236" class="li7e" name="7172"> 17276a>          t7x-doc77ref="Revieware:  Ingo MolnaeinThomns Gleix deinThomns Duetscein cumR cuy Dunlaprt-mutex-design.txt#L236" id="L236" class="li7e" name="7172"> 172
 17278a>          /7 donm77tion/U="Docert-mutex-design.txt#L782" id="L172" class="li7e" name="7172"> 1727/a>
 1828/a>          t7x-dou78tion/rt-mutex-design.txt#L151" id="L151" class="li7e" name="7182"> 1828/a>
<}a href="7ocume78ist of dntdsign.txemesnorigin ihy9writteunf is2.6.17-rc3-mm1rt-mutex-design.txt#L151" id="L151" class="li7e" name="7182"> 182
Taitorigin i LXR softwLXR communityion/ tefa hexperin.txtl vareL15 byrt-mutex-dm doto:lx<@a>">lx<@a>
182 lx<.a> kindhreonsted byrt-mutex-dhttp://www.redpaow-a> t">Redpaow L> t o ASion/ tt ovid uxoe tsultimendareopert#L15l warvi csos the 1995.