Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

doc: Update memory-ordering documentation for ->gp-seq

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

+243 -223
+10 -12
Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
··· 357 357 grace-period initialization. 358 358 359 359 <p>The first ordering-related grace-period initialization action is to 360 - increment the <tt>rcu_state</tt> structure's <tt>-&gt;gpnum</tt> 360 + advance the <tt>rcu_state</tt> structure's <tt>-&gt;gp_seq</tt> 361 361 grace-period-number counter, as shown below: 362 362 363 363 </p><p><img src="TreeRCU-gp-init-1.svg" alt="TreeRCU-gp-init-1.svg" width="75%"> ··· 388 388 389 389 <p>The final <tt>rcu_gp_init()</tt> pass through the <tt>rcu_node</tt> 390 390 tree traverses breadth-first, setting each <tt>rcu_node</tt> structure's 391 - <tt>-&gt;gpnum</tt> field to the newly incremented value from the 391 + <tt>-&gt;gp_seq</tt> field to the newly advanced value from the 392 392 <tt>rcu_state</tt> structure, as shown in the following diagram. 393 393 394 394 </p><p><img src="TreeRCU-gp-init-3.svg" alt="TreeRCU-gp-init-1.svg" width="75%"> ··· 398 398 to notice that a new grace period has started, as described in the next 399 399 section. 400 400 But because the grace-period kthread started the grace period at the 401 - root (with the increment of the <tt>rcu_state</tt> structure's 402 - <tt>-&gt;gpnum</tt> field) before setting each leaf <tt>rcu_node</tt> 403 - structure's <tt>-&gt;gpnum</tt> field, each CPU's observation of 401 + root (with the advancing of the <tt>rcu_state</tt> structure's 402 + <tt>-&gt;gp_seq</tt> field) before setting each leaf <tt>rcu_node</tt> 403 + structure's <tt>-&gt;gp_seq</tt> field, each CPU's observation of 404 404 the start of the grace period will happen after the actual start 405 405 of the grace period. 406 406 ··· 466 466 <tr><td> 467 467 But a RCU read-side critical section might have started 468 468 after the beginning of the grace period 469 - (the <tt>-&gt;gpnum++</tt> from earlier), so why should 469 + (the advancing of <tt>-&gt;gp_seq</tt> from earlier), so why should 470 470 the grace period wait on such a critical section? 471 471 </td></tr> 472 472 <tr><th align="left">Answer:</th></tr> ··· 609 609 <h4><a name="Grace-Period Cleanup">Grace-Period Cleanup</a></h4> 610 610 611 611 <p>Grace-period cleanup first scans the <tt>rcu_node</tt> tree 612 - breadth-first setting all the <tt>-&gt;completed</tt> fields equal 613 - to the number of the newly completed grace period, then it sets 614 - the <tt>rcu_state</tt> structure's <tt>-&gt;completed</tt> field, 615 - again to the number of the newly completed grace period. 612 + breadth-first advancing all the <tt>-&gt;gp_seq</tt> fields, then it 613 + advances the <tt>rcu_state</tt> structure's <tt>-&gt;gp_seq</tt> field. 616 614 The ordering effects are shown below: 617 615 618 616 </p><p><img src="TreeRCU-gp-cleanup.svg" alt="TreeRCU-gp-cleanup.svg" width="75%"> ··· 632 634 CPU has reported its quiescent state, but it may be some 633 635 milliseconds before RCU becomes aware of this. 634 636 The latest reasonable candidate is once the <tt>rcu_state</tt> 635 - structure's <tt>-&gt;completed</tt> field has been updated, 637 + structure's <tt>-&gt;gp_seq</tt> field has been updated, 636 638 but it is quite possible that some CPUs have already completed 637 639 phase two of their updates by that time. 638 640 In short, if you are going to work with RCU, you need to ··· 645 647 <h4><a name="Callback Invocation">Callback Invocation</a></h4> 646 648 647 649 <p>Once a given CPU's leaf <tt>rcu_node</tt> structure's 648 - <tt>-&gt;completed</tt> field has been updated, that CPU can begin 650 + <tt>-&gt;gp_seq</tt> field has been updated, that CPU can begin 649 651 invoking its RCU callbacks that were waiting for this grace period 650 652 to end. 651 653 These callbacks are identified by <tt>rcu_advance_cbs()</tt>,
+65 -58
Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg
··· 384 384 inkscape:window-height="1144" 385 385 id="namedview208" 386 386 showgrid="true" 387 - inkscape:zoom="0.70710678" 388 - inkscape:cx="617.89017" 389 - inkscape:cy="542.52419" 390 - inkscape:window-x="86" 391 - inkscape:window-y="28" 387 + inkscape:zoom="0.78716603" 388 + inkscape:cx="513.06403" 389 + inkscape:cy="623.1214" 390 + inkscape:window-x="102" 391 + inkscape:window-y="38" 392 392 inkscape:window-maximized="0" 393 393 inkscape:current-layer="g3188-3" 394 394 fit-margin-top="5" ··· 417 417 id="g3188"> 418 418 <text 419 419 xml:space="preserve" 420 - x="3199.1516" 420 + x="3145.9592" 421 421 y="13255.592" 422 422 font-style="normal" 423 423 font-weight="bold" 424 424 font-size="192" 425 425 id="text202" 426 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 426 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier"><tspan 427 + style="font-size:172.87567139px" 428 + id="tspan3143">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 427 429 <g 428 430 id="g3107" 429 431 transform="translate(947.90548,11584.029)"> ··· 504 502 </g> 505 503 <text 506 504 xml:space="preserve" 507 - x="5324.5371" 508 - y="15414.598" 505 + x="5264.4731" 506 + y="15428.84" 509 507 font-style="normal" 510 508 font-weight="bold" 511 509 font-size="192" 512 - id="text202-753" 513 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 510 + id="text202-36-7" 511 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 512 + style="font-size:172.87567139px" 513 + id="tspan3166-5">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 514 514 </g> 515 515 <g 516 516 style="fill:none;stroke-width:0.025in" ··· 551 547 sodipodi:linespacing="125%"><tspan 552 548 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 553 549 id="tspan3104-6-5-6-0">Leaf</tspan></text> 554 - <text 555 - xml:space="preserve" 556 - x="7479.5796" 557 - y="17699.943" 558 - font-style="normal" 559 - font-weight="bold" 560 - font-size="192" 561 - id="text202-9" 562 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 563 550 <path 564 551 sodipodi:nodetypes="cc" 565 552 inkscape:connector-curvature="0" ··· 561 566 style="fill:none;stroke-width:0.025in" 562 567 transform="translate(-737.93887,7732.6672)" 563 568 id="g3188-3"> 564 - <text 565 - xml:space="preserve" 566 - x="3225.7478" 567 - y="13175.802" 568 - font-style="normal" 569 - font-weight="bold" 570 - font-size="192" 571 - id="text202-60" 572 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rsp-&gt;completed =</text> 573 569 <g 574 570 id="g3107-62" 575 571 transform="translate(947.90548,11584.029)"> ··· 593 607 sodipodi:linespacing="125%"><tspan 594 608 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 595 609 id="tspan3104-6-5-7">Root</tspan></text> 596 - <text 597 - xml:space="preserve" 598 - x="3225.7478" 599 - y="13390.038" 600 - font-style="normal" 601 - font-weight="bold" 602 - font-size="192" 603 - id="text202-60-3" 604 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"> rnp-&gt;completed</text> 605 610 <flowRoot 606 611 xml:space="preserve" 607 612 id="flowRoot3356" ··· 604 627 height="63.63961" 605 628 x="332.34018" 606 629 y="681.87292" /></flowRegion><flowPara 607 - id="flowPara3362" /></flowRoot> </g> 630 + id="flowPara3362" /></flowRoot> <text 631 + xml:space="preserve" 632 + x="3156.6121" 633 + y="13317.754" 634 + font-style="normal" 635 + font-weight="bold" 636 + font-size="192" 637 + id="text202-36-6" 638 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 639 + style="font-size:172.87567139px" 640 + id="tspan3166-0">rcu_seq_end(&amp;rsp-&gt;gp_seq)</tspan></text> 641 + </g> 608 642 <g 609 643 style="fill:none;stroke-width:0.025in" 610 644 transform="translate(-858.40227,7769.0342)" ··· 847 859 id="path3414-8-3-6-6" 848 860 inkscape:connector-curvature="0" 849 861 sodipodi:nodetypes="cc" /> 862 + <text 863 + xml:space="preserve" 864 + x="7418.769" 865 + y="17646.104" 866 + font-style="normal" 867 + font-weight="bold" 868 + font-size="192" 869 + id="text202-36-70" 870 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 871 + style="font-size:172.87567139px" 872 + id="tspan3166-93">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 850 873 </g> 851 874 <g 852 875 transform="translate(-1642.5377,-11611.245)" ··· 886 887 </g> 887 888 <text 888 889 xml:space="preserve" 889 - x="5327.3057" 890 + x="5274.1133" 890 891 y="15428.84" 891 892 font-style="normal" 892 893 font-weight="bold" 893 894 font-size="192" 894 895 id="text202-36" 895 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 896 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 897 + style="font-size:172.87567139px" 898 + id="tspan3166">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 896 899 </g> 897 900 <g 898 901 transform="translate(-151.71746,-11647.612)" ··· 973 972 id="tspan3104-6-5-6-0-92">Leaf</tspan></text> 974 973 <text 975 974 xml:space="preserve" 976 - x="7486.4907" 977 - y="17670.119" 975 + x="7408.5918" 976 + y="17619.504" 978 977 font-style="normal" 979 978 font-weight="bold" 980 979 font-size="192" 981 - id="text202-6" 982 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 980 + id="text202-36-2" 981 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 982 + style="font-size:172.87567139px" 983 + id="tspan3166-9">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 983 984 </g> 984 985 <g 985 986 transform="translate(-6817.1997,-11647.612)" ··· 1022 1019 id="tspan3104-6-5-6-0-1">Leaf</tspan></text> 1023 1020 <text 1024 1021 xml:space="preserve" 1025 - x="7474.1382" 1026 - y="17688.926" 1022 + x="7416.8003" 1023 + y="17619.504" 1027 1024 font-style="normal" 1028 1025 font-weight="bold" 1029 1026 font-size="192" 1030 - id="text202-5" 1031 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 1027 + id="text202-36-3" 1028 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 1029 + style="font-size:172.87567139px" 1030 + id="tspan3166-56">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 1032 1031 </g> 1033 1032 <path 1034 1033 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" ··· 1064 1059 id="path3414-8-3-6" 1065 1060 inkscape:connector-curvature="0" 1066 1061 sodipodi:nodetypes="cc" /> 1067 - <text 1068 - xml:space="preserve" 1069 - x="7318.9653" 1070 - y="6031.6353" 1071 - font-style="normal" 1072 - font-weight="bold" 1073 - font-size="192" 1074 - id="text202-2" 1075 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 1076 1062 <g 1077 1063 style="fill:none;stroke-width:0.025in" 1078 1064 id="g4504-3-9" ··· 1119 1123 id="path3134-9-0-3-5" 1120 1124 d="m 6875.6003,15833.906 1595.7755,0" 1121 1125 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send-36)" /> 1126 + <text 1127 + xml:space="preserve" 1128 + x="7275.2612" 1129 + y="5971.8916" 1130 + font-style="normal" 1131 + font-weight="bold" 1132 + font-size="192" 1133 + id="text202-36-1" 1134 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 1135 + style="font-size:172.87567139px" 1136 + id="tspan3166-2">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 1122 1137 </svg>
+9 -7
Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg
··· 272 272 inkscape:window-height="1144" 273 273 id="namedview208" 274 274 showgrid="true" 275 - inkscape:zoom="0.70710678" 276 - inkscape:cx="617.89019" 277 - inkscape:cy="636.57143" 278 - inkscape:window-x="697" 275 + inkscape:zoom="2.6330492" 276 + inkscape:cx="524.82797" 277 + inkscape:cy="519.31194" 278 + inkscape:window-x="79" 279 279 inkscape:window-y="28" 280 280 inkscape:window-maximized="0" 281 - inkscape:current-layer="svg2" 281 + inkscape:current-layer="g3188" 282 282 fit-margin-top="5" 283 283 fit-margin-right="5" 284 284 fit-margin-left="5" ··· 305 305 id="g3188"> 306 306 <text 307 307 xml:space="preserve" 308 - x="3305.5364" 308 + x="3119.363" 309 309 y="13255.592" 310 310 font-style="normal" 311 311 font-weight="bold" 312 312 font-size="192" 313 313 id="text202" 314 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rsp-&gt;gpnum++</text> 314 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier"><tspan 315 + style="font-size:172.87567139px" 316 + id="tspan3071">rcu_seq_start(rsp-&gt;gp_seq)</tspan></text> 315 317 <g 316 318 id="g3107" 317 319 transform="translate(947.90548,11584.029)">
+30 -26
Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg
··· 19 19 id="svg2" 20 20 version="1.1" 21 21 inkscape:version="0.48.4 r9939" 22 - sodipodi:docname="TreeRCU-gp-init-2.svg"> 22 + sodipodi:docname="TreeRCU-gp-init-3.svg"> 23 23 <metadata 24 24 id="metadata212"> 25 25 <rdf:RDF> ··· 257 257 inkscape:window-width="1087" 258 258 inkscape:window-height="1144" 259 259 id="namedview208" 260 - showgrid="false" 261 - inkscape:zoom="0.70710678" 260 + showgrid="true" 261 + inkscape:zoom="0.68224756" 262 262 inkscape:cx="617.89019" 263 263 inkscape:cy="625.84293" 264 - inkscape:window-x="697" 264 + inkscape:window-x="54" 265 265 inkscape:window-y="28" 266 266 inkscape:window-maximized="0" 267 - inkscape:current-layer="svg2" 267 + inkscape:current-layer="g3153" 268 268 fit-margin-top="5" 269 269 fit-margin-right="5" 270 270 fit-margin-left="5" 271 - fit-margin-bottom="5" /> 271 + fit-margin-bottom="5"> 272 + <inkscape:grid 273 + type="xygrid" 274 + id="grid3090" /> 275 + </sodipodi:namedview> 272 276 <path 273 277 sodipodi:nodetypes="cccccccccccccccccccccccc" 274 278 inkscape:connector-curvature="0" ··· 285 281 id="g3188"> 286 282 <text 287 283 xml:space="preserve" 288 - x="3305.5364" 284 + x="3145.9592" 289 285 y="13255.592" 290 286 font-style="normal" 291 287 font-weight="bold" 292 288 font-size="192" 293 289 id="text202" 294 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 290 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 295 291 <g 296 292 id="g3107" 297 293 transform="translate(947.90548,11584.029)"> ··· 370 366 </g> 371 367 <text 372 368 xml:space="preserve" 373 - x="5392.3345" 374 - y="15407.104" 369 + x="5253.6904" 370 + y="15407.032" 375 371 font-style="normal" 376 372 font-weight="bold" 377 373 font-size="192" 378 374 id="text202-6" 379 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 375 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 380 376 </g> 381 377 <g 382 378 style="fill:none;stroke-width:0.025in" ··· 417 413 id="tspan3104-6-5-6-0">Leaf</tspan></text> 418 414 <text 419 415 xml:space="preserve" 420 - x="7536.4883" 421 - y="17640.934" 416 + x="7415.4365" 417 + y="17670.572" 422 418 font-style="normal" 423 419 font-weight="bold" 424 420 font-size="192" 425 421 id="text202-9" 426 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 422 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 427 423 </g> 428 424 <g 429 425 transform="translate(-1642.5375,-11610.962)" ··· 452 448 </g> 453 449 <text 454 450 xml:space="preserve" 455 - x="5378.4146" 456 - y="15436.927" 451 + x="5258.0688" 452 + y="15412.313" 457 453 font-style="normal" 458 454 font-weight="bold" 459 455 font-size="192" 460 456 id="text202-3" 461 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 457 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 462 458 </g> 463 459 <g 464 460 transform="translate(-151.71726,-11647.329)" ··· 537 533 id="tspan3104-6-5-6-0-92">Leaf</tspan></text> 538 534 <text 539 535 xml:space="preserve" 540 - x="7520.1294" 541 - y="17673.639" 536 + x="7405.2607" 537 + y="17670.572" 542 538 font-style="normal" 543 539 font-weight="bold" 544 540 font-size="192" 545 541 id="text202-35" 546 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 542 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 547 543 </g> 548 544 <g 549 545 transform="translate(-6817.1998,-11647.329)" ··· 584 580 id="tspan3104-6-5-6-0-1">Leaf</tspan></text> 585 581 <text 586 582 xml:space="preserve" 587 - x="7521.4663" 588 - y="17666.062" 583 + x="7413.4688" 584 + y="17670.566" 589 585 font-style="normal" 590 586 font-weight="bold" 591 587 font-size="192" 592 588 id="text202-75" 593 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 589 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 594 590 </g> 595 591 <path 596 592 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" ··· 626 622 sodipodi:nodetypes="cc" /> 627 623 <text 628 624 xml:space="preserve" 629 - x="7370.856" 630 - y="5997.5972" 625 + x="7271.9297" 626 + y="6023.2412" 631 627 font-style="normal" 632 628 font-weight="bold" 633 629 font-size="192" 634 630 id="text202-62" 635 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 631 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 636 632 </svg>
+123 -114
Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg
··· 1070 1070 inkscape:window-height="1144" 1071 1071 id="namedview208" 1072 1072 showgrid="true" 1073 - inkscape:zoom="0.6004608" 1074 - inkscape:cx="826.65969" 1075 - inkscape:cy="483.3047" 1076 - inkscape:window-x="66" 1077 - inkscape:window-y="28" 1073 + inkscape:zoom="0.81932583" 1074 + inkscape:cx="840.45848" 1075 + inkscape:cy="5052.4242" 1076 + inkscape:window-x="787" 1077 + inkscape:window-y="24" 1078 1078 inkscape:window-maximized="0" 1079 - inkscape:current-layer="svg2" 1079 + inkscape:current-layer="g4" 1080 1080 fit-margin-top="5" 1081 1081 fit-margin-right="5" 1082 1082 fit-margin-left="5" ··· 1543 1543 style="fill:none;stroke-width:0.025in" 1544 1544 transform="translate(1749.0282,658.72243)" 1545 1545 id="g3188"> 1546 - <text 1547 - xml:space="preserve" 1548 - x="3305.5364" 1549 - y="13255.592" 1550 - font-style="normal" 1551 - font-weight="bold" 1552 - font-size="192" 1553 - id="text202-5" 1554 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rsp-&gt;gpnum++</text> 1555 1546 <g 1556 1547 id="g3107-62" 1557 1548 transform="translate(947.90548,11584.029)"> ··· 1575 1584 sodipodi:linespacing="125%"><tspan 1576 1585 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 1577 1586 id="tspan3104-6-5-7">Root</tspan></text> 1587 + <text 1588 + xml:space="preserve" 1589 + x="3137.9988" 1590 + y="13271.316" 1591 + font-style="normal" 1592 + font-weight="bold" 1593 + font-size="192" 1594 + id="text202-626" 1595 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 1596 + style="font-size:172.87567139px" 1597 + id="tspan3071">rcu_seq_start(rsp-&gt;gp_seq)</tspan></text> 1578 1598 </g> 1579 1599 <rect 1580 1600 ry="0" ··· 2320 2318 style="fill:none;stroke-width:0.025in" 2321 2319 transform="translate(1739.0986,17188.625)" 2322 2320 id="g3188-6"> 2323 - <text 2324 - xml:space="preserve" 2325 - x="3305.5364" 2326 - y="13255.592" 2327 - font-style="normal" 2328 - font-weight="bold" 2329 - font-size="192" 2330 - id="text202-1" 2331 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2332 2321 <g 2333 2322 id="g3107-5" 2334 2323 transform="translate(947.90548,11584.029)"> ··· 2352 2359 sodipodi:linespacing="125%"><tspan 2353 2360 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 2354 2361 id="tspan3104-6-5-1">Root</tspan></text> 2362 + <text 2363 + xml:space="preserve" 2364 + x="3147.9268" 2365 + y="13240.524" 2366 + font-style="normal" 2367 + font-weight="bold" 2368 + font-size="192" 2369 + id="text202-1" 2370 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 2355 2371 </g> 2356 2372 <g 2357 2373 style="fill:none;stroke-width:0.025in" ··· 2389 2387 </g> 2390 2388 <text 2391 2389 xml:space="preserve" 2392 - x="5392.3345" 2393 - y="15407.104" 2390 + x="5263.1094" 2391 + y="15411.646" 2394 2392 font-style="normal" 2395 2393 font-weight="bold" 2396 2394 font-size="192" 2397 - id="text202-6-7" 2398 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2395 + id="text202-92" 2396 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 2399 2397 </g> 2400 2398 <g 2401 2399 style="fill:none;stroke-width:0.025in" ··· 2436 2434 id="tspan3104-6-5-6-0-94">Leaf</tspan></text> 2437 2435 <text 2438 2436 xml:space="preserve" 2439 - x="7536.4883" 2440 - y="17640.934" 2437 + x="7417.4053" 2438 + y="17655.502" 2441 2439 font-style="normal" 2442 2440 font-weight="bold" 2443 2441 font-size="192" 2444 - id="text202-9" 2445 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2442 + id="text202-759" 2443 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 2446 2444 </g> 2447 2445 <g 2448 2446 transform="translate(-2353.8462,17224.992)" ··· 2471 2469 </g> 2472 2470 <text 2473 2471 xml:space="preserve" 2474 - x="5378.4146" 2475 - y="15436.927" 2472 + x="5246.1548" 2473 + y="15411.648" 2476 2474 font-style="normal" 2477 2475 font-weight="bold" 2478 2476 font-size="192" 2479 - id="text202-3" 2480 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2477 + id="text202-87" 2478 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 2481 2479 </g> 2482 2480 <g 2483 2481 transform="translate(-863.02613,17188.625)" ··· 2556 2554 id="tspan3104-6-5-6-0-92-6">Leaf</tspan></text> 2557 2555 <text 2558 2556 xml:space="preserve" 2559 - x="7520.1294" 2560 - y="17673.639" 2557 + x="7433.8257" 2558 + y="17682.098" 2561 2559 font-style="normal" 2562 2560 font-weight="bold" 2563 2561 font-size="192" 2564 - id="text202-35" 2565 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2562 + id="text202-2" 2563 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 2566 2564 </g> 2567 2565 <g 2568 2566 transform="translate(-7528.5085,17188.625)" ··· 2603 2601 id="tspan3104-6-5-6-0-1-8">Leaf</tspan></text> 2604 2602 <text 2605 2603 xml:space="preserve" 2606 - x="7521.4663" 2607 - y="17666.062" 2604 + x="7415.4404" 2605 + y="17682.098" 2608 2606 font-style="normal" 2609 2607 font-weight="bold" 2610 2608 font-size="192" 2611 - id="text202-75-1" 2612 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2609 + id="text202-0" 2610 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 2613 2611 </g> 2614 2612 <path 2615 2613 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" ··· 2643 2641 id="path3414-8-3-6-4" 2644 2642 inkscape:connector-curvature="0" 2645 2643 sodipodi:nodetypes="cc" /> 2646 - <text 2647 - xml:space="preserve" 2648 - x="6659.5469" 2649 - y="34833.551" 2650 - font-style="normal" 2651 - font-weight="bold" 2652 - font-size="192" 2653 - id="text202-62" 2654 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text> 2655 2644 <path 2656 2645 sodipodi:nodetypes="ccc" 2657 2646 inkscape:connector-curvature="0" ··· 3837 3844 font-weight="bold" 3838 3845 font-size="192" 3839 3846 id="text202-6-6-5" 3840 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rdp-&gt;gpnum</text> 3847 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rdp-&gt;gp_seq</text> 3841 3848 <text 3842 3849 xml:space="preserve" 3843 3850 x="5035.4155" ··· 4277 4284 style="fill:none;stroke-width:0.025in" 4278 4285 transform="translate(1874.038,53203.538)" 4279 4286 id="g3188-7"> 4280 - <text 4281 - xml:space="preserve" 4282 - x="3199.1516" 4283 - y="13255.592" 4284 - font-style="normal" 4285 - font-weight="bold" 4286 - font-size="192" 4287 - id="text202-82" 4288 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4289 4287 <g 4290 4288 id="g3107-53" 4291 4289 transform="translate(947.90548,11584.029)"> ··· 4309 4325 sodipodi:linespacing="125%"><tspan 4310 4326 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 4311 4327 id="tspan3104-6-5-19">Root</tspan></text> 4328 + <text 4329 + xml:space="preserve" 4330 + x="3175.896" 4331 + y="13240.11" 4332 + font-style="normal" 4333 + font-weight="bold" 4334 + font-size="192" 4335 + id="text202-36-3" 4336 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 4337 + style="font-size:172.87567139px" 4338 + id="tspan3166">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 4312 4339 </g> 4313 4340 <rect 4314 4341 ry="0" ··· 4366 4371 </g> 4367 4372 <text 4368 4373 xml:space="preserve" 4369 - x="5324.5371" 4370 - y="15414.598" 4374 + x="5264.4829" 4375 + y="15411.231" 4371 4376 font-style="normal" 4372 4377 font-weight="bold" 4373 4378 font-size="192" 4374 - id="text202-753" 4375 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4379 + id="text202-36-7" 4380 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 4381 + style="font-size:172.87567139px" 4382 + id="tspan3166-5">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 4376 4383 </g> 4377 4384 <g 4378 4385 style="fill:none;stroke-width:0.025in" ··· 4409 4412 sodipodi:linespacing="125%"><tspan 4410 4413 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 4411 4414 id="tspan3104-6-5-6-0-4">Leaf</tspan></text> 4412 - <text 4413 - xml:space="preserve" 4414 - x="10084.225" 4415 - y="70903.312" 4416 - font-style="normal" 4417 - font-weight="bold" 4418 - font-size="192" 4419 - id="text202-9-0" 4420 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4421 4415 <path 4422 4416 sodipodi:nodetypes="ccc" 4423 4417 inkscape:connector-curvature="0" 4424 4418 id="path3134-9-0-3-9" 4425 4419 d="m 6315.6122,72629.054 -20.9533,8108.684 1648.968,0" 4426 4420 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" /> 4427 - <text 4428 - xml:space="preserve" 4429 - x="5092.4683" 4430 - y="74111.672" 4431 - font-style="normal" 4432 - font-weight="bold" 4433 - font-size="192" 4434 - id="text202-60" 4435 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rsp-&gt;completed =</text> 4436 4421 <g 4437 4422 style="fill:none;stroke-width:0.025in" 4438 4423 id="g3107-62-6" ··· 4448 4469 sodipodi:linespacing="125%"><tspan 4449 4470 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans" 4450 4471 id="tspan3104-6-5-7-7">Root</tspan></text> 4451 - <text 4452 - xml:space="preserve" 4453 - x="5092.4683" 4454 - y="74325.906" 4455 - font-style="normal" 4456 - font-weight="bold" 4457 - font-size="192" 4458 - id="text202-60-3" 4459 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"> rnp-&gt;completed</text> 4460 4472 <g 4461 4473 style="fill:none;stroke-width:0.025in" 4462 4474 transform="translate(1746.2528,60972.572)" ··· 4706 4736 </g> 4707 4737 <text 4708 4738 xml:space="preserve" 4709 - x="5327.3057" 4710 - y="15428.84" 4739 + x="5274.1216" 4740 + y="15411.231" 4711 4741 font-style="normal" 4712 4742 font-weight="bold" 4713 4743 font-size="192" 4714 4744 id="text202-36" 4715 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4745 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 4746 + style="font-size:172.87567139px" 4747 + id="tspan3166-6">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 4716 4748 </g> 4717 4749 <g 4718 4750 transform="translate(-728.08545,53203.538)" ··· 4793 4821 id="tspan3104-6-5-6-0-92-5">Leaf</tspan></text> 4794 4822 <text 4795 4823 xml:space="preserve" 4796 - x="7486.4907" 4797 - y="17670.119" 4824 + x="7435.1987" 4825 + y="17708.281" 4798 4826 font-style="normal" 4799 4827 font-weight="bold" 4800 4828 font-size="192" 4801 - id="text202-6-2" 4802 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4829 + id="text202-36-9" 4830 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 4831 + style="font-size:172.87567139px" 4832 + id="tspan3166-1">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 4803 4833 </g> 4804 4834 <g 4805 4835 transform="translate(-7393.5687,53203.538)" ··· 4842 4868 id="tspan3104-6-5-6-0-1-5">Leaf</tspan></text> 4843 4869 <text 4844 4870 xml:space="preserve" 4845 - x="7474.1382" 4846 - y="17688.926" 4871 + x="7416.8125" 4872 + y="17708.281" 4847 4873 font-style="normal" 4848 4874 font-weight="bold" 4849 4875 font-size="192" 4850 - id="text202-5-1" 4851 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4876 + id="text202-36-35" 4877 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 4878 + style="font-size:172.87567139px" 4879 + id="tspan3166-62">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 4852 4880 </g> 4853 4881 <path 4854 4882 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" ··· 4884 4908 id="path3414-8-3-6-67" 4885 4909 inkscape:connector-curvature="0" 4886 4910 sodipodi:nodetypes="cc" /> 4887 - <text 4888 - xml:space="preserve" 4889 - x="6742.6001" 4890 - y="70882.617" 4891 - font-style="normal" 4892 - font-weight="bold" 4893 - font-size="192" 4894 - id="text202-2" 4895 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text> 4896 4911 <g 4897 4912 style="fill:none;stroke-width:0.025in" 4898 4913 id="g4504-3-9-6" ··· 5098 5131 font-size="192" 5099 5132 id="text202-7-9-6-6-7" 5100 5133 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_do_batch()</text> 5134 + <text 5135 + xml:space="preserve" 5136 + x="6698.9019" 5137 + y="70885.211" 5138 + font-style="normal" 5139 + font-weight="bold" 5140 + font-size="192" 5141 + id="text202-36-2" 5142 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 5143 + style="font-size:172.87567139px" 5144 + id="tspan3166-7">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 5145 + <text 5146 + xml:space="preserve" 5147 + x="10023.457" 5148 + y="70885.234" 5149 + font-style="normal" 5150 + font-weight="bold" 5151 + font-size="192" 5152 + id="text202-36-0" 5153 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 5154 + style="font-size:172.87567139px" 5155 + id="tspan3166-9">rcu_seq_end(&amp;rnp-&gt;gp_seq)</tspan></text> 5156 + <text 5157 + xml:space="preserve" 5158 + x="5023.3389" 5159 + y="74209.773" 5160 + font-style="normal" 5161 + font-weight="bold" 5162 + font-size="192" 5163 + id="text202-36-36" 5164 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"><tspan 5165 + style="font-size:172.87567139px" 5166 + id="tspan3166-0">rcu_seq_end(&amp;rsp-&gt;gp_seq)</tspan></text> 5167 + <text 5168 + xml:space="preserve" 5169 + x="6562.5884" 5170 + y="34870.727" 5171 + font-style="normal" 5172 + font-weight="bold" 5173 + font-size="192" 5174 + id="text202-3" 5175 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gp_seq = rsp-&gt;gp_seq</text> 5101 5176 </g> 5102 5177 </svg>
+6 -6
Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg
··· 300 300 inkscape:window-height="1144" 301 301 id="namedview208" 302 302 showgrid="true" 303 - inkscape:zoom="0.70710678" 304 - inkscape:cx="616.47598" 305 - inkscape:cy="595.41964" 306 - inkscape:window-x="813" 303 + inkscape:zoom="0.96484375" 304 + inkscape:cx="507.0191" 305 + inkscape:cy="885.62207" 306 + inkscape:window-x="47" 307 307 inkscape:window-y="28" 308 308 inkscape:window-maximized="0" 309 - inkscape:current-layer="g4405" 309 + inkscape:current-layer="g3115" 310 310 fit-margin-top="5" 311 311 fit-margin-right="5" 312 312 fit-margin-left="5" ··· 710 710 font-weight="bold" 711 711 font-size="192" 712 712 id="text202-6-6" 713 - style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rdp-&gt;gpnum</text> 713 + style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rdp-&gt;gp_seq</text> 714 714 <text 715 715 xml:space="preserve" 716 716 x="5035.4155"