diff options
Diffstat (limited to 'Documentation/RCU/Design')
9 files changed, 748 insertions, 3084 deletions
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg b/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg deleted file mode 100644 index 9bbb1944f962..000000000000 --- a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg +++ /dev/null | |||
| @@ -1,499 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Creator: fig2dev Version 3.2 Patchlevel 5e --> | ||
| 3 | |||
| 4 | <!-- CreationDate: Wed Dec 9 17:26:09 2015 --> | ||
| 5 | |||
| 6 | <!-- Magnification: 2.000 --> | ||
| 7 | |||
| 8 | <svg | ||
| 9 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 10 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 11 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 12 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 13 | xmlns="http://www.w3.org/2000/svg" | ||
| 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 16 | width="5.7in" | ||
| 17 | height="6.6in" | ||
| 18 | viewBox="-44 -44 6838 7888" | ||
| 19 | id="svg2" | ||
| 20 | version="1.1" | ||
| 21 | inkscape:version="0.48.4 r9939" | ||
| 22 | sodipodi:docname="BigTreeClassicRCUBH.fig"> | ||
| 23 | <metadata | ||
| 24 | id="metadata110"> | ||
| 25 | <rdf:RDF> | ||
| 26 | <cc:Work | ||
| 27 | rdf:about=""> | ||
| 28 | <dc:format>image/svg+xml</dc:format> | ||
| 29 | <dc:type | ||
| 30 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 31 | <dc:title></dc:title> | ||
| 32 | </cc:Work> | ||
| 33 | </rdf:RDF> | ||
| 34 | </metadata> | ||
| 35 | <defs | ||
| 36 | id="defs108"> | ||
| 37 | <marker | ||
| 38 | inkscape:stockid="Arrow1Mend" | ||
| 39 | orient="auto" | ||
| 40 | refY="0.0" | ||
| 41 | refX="0.0" | ||
| 42 | id="Arrow1Mend" | ||
| 43 | style="overflow:visible;"> | ||
| 44 | <path | ||
| 45 | id="path3868" | ||
| 46 | d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " | ||
| 47 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" | ||
| 48 | transform="scale(0.4) rotate(180) translate(10,0)" /> | ||
| 49 | </marker> | ||
| 50 | <marker | ||
| 51 | inkscape:stockid="Arrow2Mend" | ||
| 52 | orient="auto" | ||
| 53 | refY="0.0" | ||
| 54 | refX="0.0" | ||
| 55 | id="Arrow2Mend" | ||
| 56 | style="overflow:visible;"> | ||
| 57 | <path | ||
| 58 | id="path3886" | ||
| 59 | style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" | ||
| 60 | d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " | ||
| 61 | transform="scale(0.6) rotate(180) translate(0,0)" /> | ||
| 62 | </marker> | ||
| 63 | </defs> | ||
| 64 | <sodipodi:namedview | ||
| 65 | pagecolor="#ffffff" | ||
| 66 | bordercolor="#666666" | ||
| 67 | borderopacity="1" | ||
| 68 | objecttolerance="10" | ||
| 69 | gridtolerance="10" | ||
| 70 | guidetolerance="10" | ||
| 71 | inkscape:pageopacity="0" | ||
| 72 | inkscape:pageshadow="2" | ||
| 73 | inkscape:window-width="878" | ||
| 74 | inkscape:window-height="1148" | ||
| 75 | id="namedview106" | ||
| 76 | showgrid="false" | ||
| 77 | inkscape:zoom="1.3547758" | ||
| 78 | inkscape:cx="256.5" | ||
| 79 | inkscape:cy="297" | ||
| 80 | inkscape:window-x="45" | ||
| 81 | inkscape:window-y="24" | ||
| 82 | inkscape:window-maximized="0" | ||
| 83 | inkscape:current-layer="g4" /> | ||
| 84 | <g | ||
| 85 | style="stroke-width:.025in; fill:none" | ||
| 86 | id="g4"> | ||
| 87 | <!-- Line: box --> | ||
| 88 | <rect | ||
| 89 | x="450" | ||
| 90 | y="0" | ||
| 91 | width="6300" | ||
| 92 | height="7350" | ||
| 93 | rx="0" | ||
| 94 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 95 | id="rect6" /> | ||
| 96 | <!-- Line: box --> | ||
| 97 | <rect | ||
| 98 | x="4950" | ||
| 99 | y="4950" | ||
| 100 | width="1500" | ||
| 101 | height="900" | ||
| 102 | rx="0" | ||
| 103 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 104 | id="rect8" /> | ||
| 105 | <!-- Line: box --> | ||
| 106 | <rect | ||
| 107 | x="750" | ||
| 108 | y="600" | ||
| 109 | width="5700" | ||
| 110 | height="3750" | ||
| 111 | rx="0" | ||
| 112 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 113 | id="rect10" /> | ||
| 114 | <!-- Line: box --> | ||
| 115 | <rect | ||
| 116 | x="0" | ||
| 117 | y="450" | ||
| 118 | width="6300" | ||
| 119 | height="7350" | ||
| 120 | rx="0" | ||
| 121 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 122 | id="rect12" /> | ||
| 123 | <!-- Line: box --> | ||
| 124 | <rect | ||
| 125 | x="300" | ||
| 126 | y="1050" | ||
| 127 | width="5700" | ||
| 128 | height="3750" | ||
| 129 | rx="0" | ||
| 130 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 131 | id="rect14" /> | ||
| 132 | <!-- Circle --> | ||
| 133 | <circle | ||
| 134 | cx="2850" | ||
| 135 | cy="3900" | ||
| 136 | r="76" | ||
| 137 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 138 | id="circle16" /> | ||
| 139 | <!-- Circle --> | ||
| 140 | <circle | ||
| 141 | cx="3150" | ||
| 142 | cy="3900" | ||
| 143 | r="76" | ||
| 144 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 145 | id="circle18" /> | ||
| 146 | <!-- Circle --> | ||
| 147 | <circle | ||
| 148 | cx="3450" | ||
| 149 | cy="3900" | ||
| 150 | r="76" | ||
| 151 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 152 | id="circle20" /> | ||
| 153 | <!-- Circle --> | ||
| 154 | <circle | ||
| 155 | cx="1350" | ||
| 156 | cy="5100" | ||
| 157 | r="76" | ||
| 158 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 159 | id="circle22" /> | ||
| 160 | <!-- Circle --> | ||
| 161 | <circle | ||
| 162 | cx="1650" | ||
| 163 | cy="5100" | ||
| 164 | r="76" | ||
| 165 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 166 | id="circle24" /> | ||
| 167 | <!-- Circle --> | ||
| 168 | <circle | ||
| 169 | cx="1950" | ||
| 170 | cy="5100" | ||
| 171 | r="76" | ||
| 172 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 173 | id="circle26" /> | ||
| 174 | <!-- Circle --> | ||
| 175 | <circle | ||
| 176 | cx="4350" | ||
| 177 | cy="5100" | ||
| 178 | r="76" | ||
| 179 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 180 | id="circle28" /> | ||
| 181 | <!-- Circle --> | ||
| 182 | <circle | ||
| 183 | cx="4650" | ||
| 184 | cy="5100" | ||
| 185 | r="76" | ||
| 186 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 187 | id="circle30" /> | ||
| 188 | <!-- Circle --> | ||
| 189 | <circle | ||
| 190 | cx="4950" | ||
| 191 | cy="5100" | ||
| 192 | r="76" | ||
| 193 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 194 | id="circle32" /> | ||
| 195 | <!-- Line --> | ||
| 196 | <polyline | ||
| 197 | points="1350,3450 2350,2590 " | ||
| 198 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 199 | id="polyline34" /> | ||
| 200 | <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510--> | ||
| 201 | <!-- Line --> | ||
| 202 | <polyline | ||
| 203 | points="4950,3450 3948,2590 " | ||
| 204 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 205 | id="polyline38" /> | ||
| 206 | <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510--> | ||
| 207 | <!-- Line: box --> | ||
| 208 | <rect | ||
| 209 | x="750" | ||
| 210 | y="3450" | ||
| 211 | width="1800" | ||
| 212 | height="900" | ||
| 213 | rx="0" | ||
| 214 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 215 | id="rect42" /> | ||
| 216 | <!-- Line --> | ||
| 217 | <polyline | ||
| 218 | points="2250,5400 2250,4414 " | ||
| 219 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 220 | id="polyline44" /> | ||
| 221 | <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290--> | ||
| 222 | <!-- Line: box --> | ||
| 223 | <rect | ||
| 224 | x="1500" | ||
| 225 | y="5400" | ||
| 226 | width="1500" | ||
| 227 | height="900" | ||
| 228 | rx="0" | ||
| 229 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 230 | id="rect48" /> | ||
| 231 | <!-- Line: box --> | ||
| 232 | <rect | ||
| 233 | x="300" | ||
| 234 | y="6600" | ||
| 235 | width="1500" | ||
| 236 | height="900" | ||
| 237 | rx="0" | ||
| 238 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 239 | id="rect50" /> | ||
| 240 | <!-- Line: box --> | ||
| 241 | <rect | ||
| 242 | x="3750" | ||
| 243 | y="3450" | ||
| 244 | width="1800" | ||
| 245 | height="900" | ||
| 246 | rx="0" | ||
| 247 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 248 | id="rect52" /> | ||
| 249 | <!-- Line: box --> | ||
| 250 | <rect | ||
| 251 | x="4500" | ||
| 252 | y="5400" | ||
| 253 | width="1500" | ||
| 254 | height="900" | ||
| 255 | rx="0" | ||
| 256 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 257 | id="rect54" /> | ||
| 258 | <!-- Line: box --> | ||
| 259 | <rect | ||
| 260 | x="3300" | ||
| 261 | y="6600" | ||
| 262 | width="1500" | ||
| 263 | height="900" | ||
| 264 | rx="0" | ||
| 265 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 266 | id="rect56" /> | ||
| 267 | <!-- Line: box --> | ||
| 268 | <rect | ||
| 269 | x="2250" | ||
| 270 | y="1650" | ||
| 271 | width="1800" | ||
| 272 | height="900" | ||
| 273 | rx="0" | ||
| 274 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 275 | id="rect58" /> | ||
| 276 | <!-- Text --> | ||
| 277 | <text | ||
| 278 | xml:space="preserve" | ||
| 279 | x="6450" | ||
| 280 | y="300" | ||
| 281 | fill="#000000" | ||
| 282 | font-family="Helvetica" | ||
| 283 | font-style="normal" | ||
| 284 | font-weight="normal" | ||
| 285 | font-size="192" | ||
| 286 | text-anchor="end" | ||
| 287 | id="text60">rcu_bh</text> | ||
| 288 | <!-- Text --> | ||
| 289 | <text | ||
| 290 | xml:space="preserve" | ||
| 291 | x="3150" | ||
| 292 | y="1950" | ||
| 293 | fill="#000000" | ||
| 294 | font-family="Courier" | ||
| 295 | font-style="normal" | ||
| 296 | font-weight="bold" | ||
| 297 | font-size="192" | ||
| 298 | text-anchor="middle" | ||
| 299 | id="text62">struct</text> | ||
| 300 | <!-- Text --> | ||
| 301 | <text | ||
| 302 | xml:space="preserve" | ||
| 303 | x="3150" | ||
| 304 | y="2250" | ||
| 305 | fill="#000000" | ||
| 306 | font-family="Courier" | ||
| 307 | font-style="normal" | ||
| 308 | font-weight="bold" | ||
| 309 | font-size="192" | ||
| 310 | text-anchor="middle" | ||
| 311 | id="text64">rcu_node</text> | ||
| 312 | <!-- Text --> | ||
| 313 | <text | ||
| 314 | xml:space="preserve" | ||
| 315 | x="1650" | ||
| 316 | y="3750" | ||
| 317 | fill="#000000" | ||
| 318 | font-family="Courier" | ||
| 319 | font-style="normal" | ||
| 320 | font-weight="bold" | ||
| 321 | font-size="192" | ||
| 322 | text-anchor="middle" | ||
| 323 | id="text66">struct</text> | ||
| 324 | <!-- Text --> | ||
| 325 | <text | ||
| 326 | xml:space="preserve" | ||
| 327 | x="1650" | ||
| 328 | y="4050" | ||
| 329 | fill="#000000" | ||
| 330 | font-family="Courier" | ||
| 331 | font-style="normal" | ||
| 332 | font-weight="bold" | ||
| 333 | font-size="192" | ||
| 334 | text-anchor="middle" | ||
| 335 | id="text68">rcu_node</text> | ||
| 336 | <!-- Text --> | ||
| 337 | <text | ||
| 338 | xml:space="preserve" | ||
| 339 | x="4650" | ||
| 340 | y="4050" | ||
| 341 | fill="#000000" | ||
| 342 | font-family="Courier" | ||
| 343 | font-style="normal" | ||
| 344 | font-weight="bold" | ||
| 345 | font-size="192" | ||
| 346 | text-anchor="middle" | ||
| 347 | id="text70">rcu_node</text> | ||
| 348 | <!-- Text --> | ||
| 349 | <text | ||
| 350 | xml:space="preserve" | ||
| 351 | x="4650" | ||
| 352 | y="3750" | ||
| 353 | fill="#000000" | ||
| 354 | font-family="Courier" | ||
| 355 | font-style="normal" | ||
| 356 | font-weight="bold" | ||
| 357 | font-size="192" | ||
| 358 | text-anchor="middle" | ||
| 359 | id="text72">struct</text> | ||
| 360 | <!-- Text --> | ||
| 361 | <text | ||
| 362 | xml:space="preserve" | ||
| 363 | x="2250" | ||
| 364 | y="5700" | ||
| 365 | fill="#000000" | ||
| 366 | font-family="Courier" | ||
| 367 | font-style="normal" | ||
| 368 | font-weight="bold" | ||
| 369 | font-size="192" | ||
| 370 | text-anchor="middle" | ||
| 371 | id="text74">struct</text> | ||
| 372 | <!-- Text --> | ||
| 373 | <text | ||
| 374 | xml:space="preserve" | ||
| 375 | x="2250" | ||
| 376 | y="6000" | ||
| 377 | fill="#000000" | ||
| 378 | font-family="Courier" | ||
| 379 | font-style="normal" | ||
| 380 | font-weight="bold" | ||
| 381 | font-size="192" | ||
| 382 | text-anchor="middle" | ||
| 383 | id="text76">rcu_data</text> | ||
| 384 | <!-- Text --> | ||
| 385 | <text | ||
| 386 | xml:space="preserve" | ||
| 387 | x="1050" | ||
| 388 | y="6900" | ||
| 389 | fill="#000000" | ||
| 390 | font-family="Courier" | ||
| 391 | font-style="normal" | ||
| 392 | font-weight="bold" | ||
| 393 | font-size="192" | ||
| 394 | text-anchor="middle" | ||
| 395 | id="text78">struct</text> | ||
| 396 | <!-- Text --> | ||
| 397 | <text | ||
| 398 | xml:space="preserve" | ||
| 399 | x="1050" | ||
| 400 | y="7200" | ||
| 401 | fill="#000000" | ||
| 402 | font-family="Courier" | ||
| 403 | font-style="normal" | ||
| 404 | font-weight="bold" | ||
| 405 | font-size="192" | ||
| 406 | text-anchor="middle" | ||
| 407 | id="text80">rcu_data</text> | ||
| 408 | <!-- Text --> | ||
| 409 | <text | ||
| 410 | xml:space="preserve" | ||
| 411 | x="5250" | ||
| 412 | y="5700" | ||
| 413 | fill="#000000" | ||
| 414 | font-family="Courier" | ||
| 415 | font-style="normal" | ||
| 416 | font-weight="bold" | ||
| 417 | font-size="192" | ||
| 418 | text-anchor="middle" | ||
| 419 | id="text82">struct</text> | ||
| 420 | <!-- Text --> | ||
| 421 | <text | ||
| 422 | xml:space="preserve" | ||
| 423 | x="5250" | ||
| 424 | y="6000" | ||
| 425 | fill="#000000" | ||
| 426 | font-family="Courier" | ||
| 427 | font-style="normal" | ||
| 428 | font-weight="bold" | ||
| 429 | font-size="192" | ||
| 430 | text-anchor="middle" | ||
| 431 | id="text84">rcu_data</text> | ||
| 432 | <!-- Text --> | ||
| 433 | <text | ||
| 434 | xml:space="preserve" | ||
| 435 | x="4050" | ||
| 436 | y="6900" | ||
| 437 | fill="#000000" | ||
| 438 | font-family="Courier" | ||
| 439 | font-style="normal" | ||
| 440 | font-weight="bold" | ||
| 441 | font-size="192" | ||
| 442 | text-anchor="middle" | ||
| 443 | id="text86">struct</text> | ||
| 444 | <!-- Text --> | ||
| 445 | <text | ||
| 446 | xml:space="preserve" | ||
| 447 | x="4050" | ||
| 448 | y="7200" | ||
| 449 | fill="#000000" | ||
| 450 | font-family="Courier" | ||
| 451 | font-style="normal" | ||
| 452 | font-weight="bold" | ||
| 453 | font-size="192" | ||
| 454 | text-anchor="middle" | ||
| 455 | id="text88">rcu_data</text> | ||
| 456 | <!-- Text --> | ||
| 457 | <text | ||
| 458 | xml:space="preserve" | ||
| 459 | x="450" | ||
| 460 | y="1350" | ||
| 461 | fill="#000000" | ||
| 462 | font-family="Courier" | ||
| 463 | font-style="normal" | ||
| 464 | font-weight="bold" | ||
| 465 | font-size="192" | ||
| 466 | text-anchor="start" | ||
| 467 | id="text90">struct rcu_state</text> | ||
| 468 | <!-- Text --> | ||
| 469 | <text | ||
| 470 | xml:space="preserve" | ||
| 471 | x="6000" | ||
| 472 | y="750" | ||
| 473 | fill="#000000" | ||
| 474 | font-family="Helvetica" | ||
| 475 | font-style="normal" | ||
| 476 | font-weight="normal" | ||
| 477 | font-size="192" | ||
| 478 | text-anchor="end" | ||
| 479 | id="text92">rcu_sched</text> | ||
| 480 | <!-- Line --> | ||
| 481 | <polyline | ||
| 482 | points="5250,5400 5250,4414 " | ||
| 483 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 484 | id="polyline94" /> | ||
| 485 | <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290--> | ||
| 486 | <!-- Line --> | ||
| 487 | <polyline | ||
| 488 | points="4050,6600 4050,4414 " | ||
| 489 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 490 | id="polyline98" /> | ||
| 491 | <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290--> | ||
| 492 | <!-- Line --> | ||
| 493 | <polyline | ||
| 494 | points="1050,6600 1050,4414 " | ||
| 495 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 496 | id="polyline102" /> | ||
| 497 | <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290--> | ||
| 498 | </g> | ||
| 499 | </svg> | ||
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg b/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg deleted file mode 100644 index 21ba7823479d..000000000000 --- a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg +++ /dev/null | |||
| @@ -1,695 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Creator: fig2dev Version 3.2 Patchlevel 5e --> | ||
| 3 | |||
| 4 | <!-- CreationDate: Wed Dec 9 17:20:02 2015 --> | ||
| 5 | |||
| 6 | <!-- Magnification: 2.000 --> | ||
| 7 | |||
| 8 | <svg | ||
| 9 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 10 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 11 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 12 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 13 | xmlns="http://www.w3.org/2000/svg" | ||
| 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 16 | width="5.7in" | ||
| 17 | height="8.6in" | ||
| 18 | viewBox="-44 -44 6838 10288" | ||
| 19 | id="svg2" | ||
| 20 | version="1.1" | ||
| 21 | inkscape:version="0.48.4 r9939" | ||
| 22 | sodipodi:docname="BigTreeClassicRCUBHdyntick.fig"> | ||
| 23 | <metadata | ||
| 24 | id="metadata166"> | ||
| 25 | <rdf:RDF> | ||
| 26 | <cc:Work | ||
| 27 | rdf:about=""> | ||
| 28 | <dc:format>image/svg+xml</dc:format> | ||
| 29 | <dc:type | ||
| 30 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 31 | <dc:title></dc:title> | ||
| 32 | </cc:Work> | ||
| 33 | </rdf:RDF> | ||
| 34 | </metadata> | ||
| 35 | <defs | ||
| 36 | id="defs164"> | ||
| 37 | <marker | ||
| 38 | inkscape:stockid="Arrow1Mend" | ||
| 39 | orient="auto" | ||
| 40 | refY="0.0" | ||
| 41 | refX="0.0" | ||
| 42 | id="Arrow1Mend" | ||
| 43 | style="overflow:visible;"> | ||
| 44 | <path | ||
| 45 | id="path3924" | ||
| 46 | d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " | ||
| 47 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" | ||
| 48 | transform="scale(0.4) rotate(180) translate(10,0)" /> | ||
| 49 | </marker> | ||
| 50 | <marker | ||
| 51 | inkscape:stockid="Arrow2Lend" | ||
| 52 | orient="auto" | ||
| 53 | refY="0.0" | ||
| 54 | refX="0.0" | ||
| 55 | id="Arrow2Lend" | ||
| 56 | style="overflow:visible;"> | ||
| 57 | <path | ||
| 58 | id="path3936" | ||
| 59 | style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" | ||
| 60 | d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " | ||
| 61 | transform="scale(1.1) rotate(180) translate(1,0)" /> | ||
| 62 | </marker> | ||
| 63 | </defs> | ||
| 64 | <sodipodi:namedview | ||
| 65 | pagecolor="#ffffff" | ||
| 66 | bordercolor="#666666" | ||
| 67 | borderopacity="1" | ||
| 68 | objecttolerance="10" | ||
| 69 | gridtolerance="10" | ||
| 70 | guidetolerance="10" | ||
| 71 | inkscape:pageopacity="0" | ||
| 72 | inkscape:pageshadow="2" | ||
| 73 | inkscape:window-width="845" | ||
| 74 | inkscape:window-height="988" | ||
| 75 | id="namedview162" | ||
| 76 | showgrid="false" | ||
| 77 | inkscape:zoom="1.0452196" | ||
| 78 | inkscape:cx="256.5" | ||
| 79 | inkscape:cy="387.00003" | ||
| 80 | inkscape:window-x="356" | ||
| 81 | inkscape:window-y="61" | ||
| 82 | inkscape:window-maximized="0" | ||
| 83 | inkscape:current-layer="g4" /> | ||
| 84 | <g | ||
| 85 | style="stroke-width:.025in; fill:none" | ||
| 86 | id="g4"> | ||
| 87 | <!-- Line: box --> | ||
| 88 | <rect | ||
| 89 | x="450" | ||
| 90 | y="0" | ||
| 91 | width="6300" | ||
| 92 | height="7350" | ||
| 93 | rx="0" | ||
| 94 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 95 | id="rect6" /> | ||
| 96 | <!-- Line: box --> | ||
| 97 | <rect | ||
| 98 | x="4950" | ||
| 99 | y="4950" | ||
| 100 | width="1500" | ||
| 101 | height="900" | ||
| 102 | rx="0" | ||
| 103 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 104 | id="rect8" /> | ||
| 105 | <!-- Line: box --> | ||
| 106 | <rect | ||
| 107 | x="750" | ||
| 108 | y="600" | ||
| 109 | width="5700" | ||
| 110 | height="3750" | ||
| 111 | rx="0" | ||
| 112 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 113 | id="rect10" /> | ||
| 114 | <!-- Line --> | ||
| 115 | <polyline | ||
| 116 | points="5250,8100 5688,5912 " | ||
| 117 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 118 | id="polyline12" /> | ||
| 119 | <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790--> | ||
| 120 | <polyline | ||
| 121 | points="5714 6068 5704 5822 5598 6044 " | ||
| 122 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 123 | id="polyline14" /> | ||
| 124 | <!-- Line --> | ||
| 125 | <polyline | ||
| 126 | points="4050,9300 4486,7262 " | ||
| 127 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 128 | id="polyline16" /> | ||
| 129 | <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140--> | ||
| 130 | <polyline | ||
| 131 | points="4514 7418 4506 7172 4396 7394 " | ||
| 132 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 133 | id="polyline18" /> | ||
| 134 | <!-- Line --> | ||
| 135 | <polyline | ||
| 136 | points="1040,9300 1476,7262 " | ||
| 137 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 138 | id="polyline20" /> | ||
| 139 | <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140--> | ||
| 140 | <polyline | ||
| 141 | points="1504 7418 1496 7172 1386 7394 " | ||
| 142 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 143 | id="polyline22" /> | ||
| 144 | <!-- Line --> | ||
| 145 | <polyline | ||
| 146 | points="2240,8100 2676,6062 " | ||
| 147 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 148 | id="polyline24" /> | ||
| 149 | <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940--> | ||
| 150 | <polyline | ||
| 151 | points="2704 6218 2696 5972 2586 6194 " | ||
| 152 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 153 | id="polyline26" /> | ||
| 154 | <!-- Line: box --> | ||
| 155 | <rect | ||
| 156 | x="0" | ||
| 157 | y="450" | ||
| 158 | width="6300" | ||
| 159 | height="7350" | ||
| 160 | rx="0" | ||
| 161 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 162 | id="rect28" /> | ||
| 163 | <!-- Line: box --> | ||
| 164 | <rect | ||
| 165 | x="300" | ||
| 166 | y="1050" | ||
| 167 | width="5700" | ||
| 168 | height="3750" | ||
| 169 | rx="0" | ||
| 170 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 171 | id="rect30" /> | ||
| 172 | <!-- Line --> | ||
| 173 | <polyline | ||
| 174 | points="1350,3450 2350,2590 " | ||
| 175 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 176 | id="polyline32" /> | ||
| 177 | <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510--> | ||
| 178 | <!-- Line --> | ||
| 179 | <polyline | ||
| 180 | points="4950,3450 3948,2590 " | ||
| 181 | style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 182 | id="polyline36" /> | ||
| 183 | <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510--> | ||
| 184 | <!-- Line --> | ||
| 185 | <polyline | ||
| 186 | points="4050,6600 4050,4414 " | ||
| 187 | style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 188 | id="polyline40" /> | ||
| 189 | <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290--> | ||
| 190 | <!-- Line --> | ||
| 191 | <polyline | ||
| 192 | points="1050,6600 1050,4414 " | ||
| 193 | style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 194 | id="polyline44" /> | ||
| 195 | <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290--> | ||
| 196 | <!-- Line --> | ||
| 197 | <polyline | ||
| 198 | points="2250,5400 2250,4414 " | ||
| 199 | style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 200 | id="polyline48" /> | ||
| 201 | <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290--> | ||
| 202 | <!-- Line --> | ||
| 203 | <polyline | ||
| 204 | points="2250,8100 2250,6364 " | ||
| 205 | style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | ||
| 206 | id="polyline52" /> | ||
| 207 | <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240--> | ||
| 208 | <!-- Line --> | ||
| 209 | <polyline | ||
| 210 | points="1050,9300 1050,7564 " | ||
| 211 | style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | ||
| 212 | id="polyline56" /> | ||
| 213 | <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440--> | ||
| 214 | <!-- Line --> | ||
| 215 | <polyline | ||
| 216 | points="4050,9300 4050,7564 " | ||
| 217 | style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | ||
| 218 | id="polyline60" /> | ||
| 219 | <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440--> | ||
| 220 | <!-- Line --> | ||
| 221 | <polyline | ||
| 222 | points="5250,8100 5250,6364 " | ||
| 223 | style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | ||
| 224 | id="polyline64" /> | ||
| 225 | <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240--> | ||
| 226 | <!-- Circle --> | ||
| 227 | <circle | ||
| 228 | cx="2850" | ||
| 229 | cy="3900" | ||
| 230 | r="76" | ||
| 231 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 232 | id="circle68" /> | ||
| 233 | <!-- Circle --> | ||
| 234 | <circle | ||
| 235 | cx="3150" | ||
| 236 | cy="3900" | ||
| 237 | r="76" | ||
| 238 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 239 | id="circle70" /> | ||
| 240 | <!-- Circle --> | ||
| 241 | <circle | ||
| 242 | cx="3450" | ||
| 243 | cy="3900" | ||
| 244 | r="76" | ||
| 245 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 246 | id="circle72" /> | ||
| 247 | <!-- Circle --> | ||
| 248 | <circle | ||
| 249 | cx="1350" | ||
| 250 | cy="5100" | ||
| 251 | r="76" | ||
| 252 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 253 | id="circle74" /> | ||
| 254 | <!-- Circle --> | ||
| 255 | <circle | ||
| 256 | cx="1650" | ||
| 257 | cy="5100" | ||
| 258 | r="76" | ||
| 259 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 260 | id="circle76" /> | ||
| 261 | <!-- Circle --> | ||
| 262 | <circle | ||
| 263 | cx="1950" | ||
| 264 | cy="5100" | ||
| 265 | r="76" | ||
| 266 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 267 | id="circle78" /> | ||
| 268 | <!-- Circle --> | ||
| 269 | <circle | ||
| 270 | cx="4350" | ||
| 271 | cy="5100" | ||
| 272 | r="76" | ||
| 273 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 274 | id="circle80" /> | ||
| 275 | <!-- Circle --> | ||
| 276 | <circle | ||
| 277 | cx="4650" | ||
| 278 | cy="5100" | ||
| 279 | r="76" | ||
| 280 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 281 | id="circle82" /> | ||
| 282 | <!-- Circle --> | ||
| 283 | <circle | ||
| 284 | cx="4950" | ||
| 285 | cy="5100" | ||
| 286 | r="76" | ||
| 287 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 288 | id="circle84" /> | ||
| 289 | <!-- Line: box --> | ||
| 290 | <rect | ||
| 291 | x="750" | ||
| 292 | y="3450" | ||
| 293 | width="1800" | ||
| 294 | height="900" | ||
| 295 | rx="0" | ||
| 296 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 297 | id="rect86" /> | ||
| 298 | <!-- Line: box --> | ||
| 299 | <rect | ||
| 300 | x="300" | ||
| 301 | y="6600" | ||
| 302 | width="1500" | ||
| 303 | height="900" | ||
| 304 | rx="0" | ||
| 305 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 306 | id="rect88" /> | ||
| 307 | <!-- Line: box --> | ||
| 308 | <rect | ||
| 309 | x="3750" | ||
| 310 | y="3450" | ||
| 311 | width="1800" | ||
| 312 | height="900" | ||
| 313 | rx="0" | ||
| 314 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 315 | id="rect90" /> | ||
| 316 | <!-- Line: box --> | ||
| 317 | <rect | ||
| 318 | x="4500" | ||
| 319 | y="5400" | ||
| 320 | width="1500" | ||
| 321 | height="900" | ||
| 322 | rx="0" | ||
| 323 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 324 | id="rect92" /> | ||
| 325 | <!-- Line: box --> | ||
| 326 | <rect | ||
| 327 | x="3300" | ||
| 328 | y="6600" | ||
| 329 | width="1500" | ||
| 330 | height="900" | ||
| 331 | rx="0" | ||
| 332 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 333 | id="rect94" /> | ||
| 334 | <!-- Line: box --> | ||
| 335 | <rect | ||
| 336 | x="2250" | ||
| 337 | y="1650" | ||
| 338 | width="1800" | ||
| 339 | height="900" | ||
| 340 | rx="0" | ||
| 341 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 342 | id="rect96" /> | ||
| 343 | <!-- Line: box --> | ||
| 344 | <rect | ||
| 345 | x="0" | ||
| 346 | y="9300" | ||
| 347 | width="2100" | ||
| 348 | height="900" | ||
| 349 | rx="0" | ||
| 350 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 351 | id="rect98" /> | ||
| 352 | <!-- Line: box --> | ||
| 353 | <rect | ||
| 354 | x="1350" | ||
| 355 | y="8100" | ||
| 356 | width="2100" | ||
| 357 | height="900" | ||
| 358 | rx="0" | ||
| 359 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 360 | id="rect100" /> | ||
| 361 | <!-- Line: box --> | ||
| 362 | <rect | ||
| 363 | x="3000" | ||
| 364 | y="9300" | ||
| 365 | width="2100" | ||
| 366 | height="900" | ||
| 367 | rx="0" | ||
| 368 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 369 | id="rect102" /> | ||
| 370 | <!-- Line: box --> | ||
| 371 | <rect | ||
| 372 | x="4350" | ||
| 373 | y="8100" | ||
| 374 | width="2100" | ||
| 375 | height="900" | ||
| 376 | rx="0" | ||
| 377 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 378 | id="rect104" /> | ||
| 379 | <!-- Line: box --> | ||
| 380 | <rect | ||
| 381 | x="1500" | ||
| 382 | y="5400" | ||
| 383 | width="1500" | ||
| 384 | height="900" | ||
| 385 | rx="0" | ||
| 386 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 387 | id="rect106" /> | ||
| 388 | <!-- Text --> | ||
| 389 | <text | ||
| 390 | xml:space="preserve" | ||
| 391 | x="6450" | ||
| 392 | y="300" | ||
| 393 | fill="#000000" | ||
| 394 | font-family="Helvetica" | ||
| 395 | font-style="normal" | ||
| 396 | font-weight="normal" | ||
| 397 | font-size="192" | ||
| 398 | text-anchor="end" | ||
| 399 | id="text108">rcu_bh</text> | ||
| 400 | <!-- Text --> | ||
| 401 | <text | ||
| 402 | xml:space="preserve" | ||
| 403 | x="3150" | ||
| 404 | y="1950" | ||
| 405 | fill="#000000" | ||
| 406 | font-family="Courier" | ||
| 407 | font-style="normal" | ||
| 408 | font-weight="bold" | ||
| 409 | font-size="192" | ||
| 410 | text-anchor="middle" | ||
| 411 | id="text110">struct</text> | ||
| 412 | <!-- Text --> | ||
| 413 | <text | ||
| 414 | xml:space="preserve" | ||
| 415 | x="3150" | ||
| 416 | y="2250" | ||
| 417 | fill="#000000" | ||
| 418 | font-family="Courier" | ||
| 419 | font-style="normal" | ||
| 420 | font-weight="bold" | ||
| 421 | font-size="192" | ||
| 422 | text-anchor="middle" | ||
| 423 | id="text112">rcu_node</text> | ||
| 424 | <!-- Text --> | ||
| 425 | <text | ||
| 426 | xml:space="preserve" | ||
| 427 | x="1650" | ||
| 428 | y="3750" | ||
| 429 | fill="#000000" | ||
| 430 | font-family="Courier" | ||
| 431 | font-style="normal" | ||
| 432 | font-weight="bold" | ||
| 433 | font-size="192" | ||
| 434 | text-anchor="middle" | ||
| 435 | id="text114">struct</text> | ||
| 436 | <!-- Text --> | ||
| 437 | <text | ||
| 438 | xml:space="preserve" | ||
| 439 | x="1650" | ||
| 440 | y="4050" | ||
| 441 | fill="#000000" | ||
| 442 | font-family="Courier" | ||
| 443 | font-style="normal" | ||
| 444 | font-weight="bold" | ||
| 445 | font-size="192" | ||
| 446 | text-anchor="middle" | ||
| 447 | id="text116">rcu_node</text> | ||
| 448 | <!-- Text --> | ||
| 449 | <text | ||
| 450 | xml:space="preserve" | ||
| 451 | x="4650" | ||
| 452 | y="4050" | ||
| 453 | fill="#000000" | ||
| 454 | font-family="Courier" | ||
| 455 | font-style="normal" | ||
| 456 | font-weight="bold" | ||
| 457 | font-size="192" | ||
| 458 | text-anchor="middle" | ||
| 459 | id="text118">rcu_node</text> | ||
| 460 | <!-- Text --> | ||
| 461 | <text | ||
| 462 | xml:space="preserve" | ||
| 463 | x="4650" | ||
| 464 | y="3750" | ||
| 465 | fill="#000000" | ||
| 466 | font-family="Courier" | ||
| 467 | font-style="normal" | ||
| 468 | font-weight="bold" | ||
| 469 | font-size="192" | ||
| 470 | text-anchor="middle" | ||
| 471 | id="text120">struct</text> | ||
| 472 | <!-- Text --> | ||
| 473 | <text | ||
| 474 | xml:space="preserve" | ||
| 475 | x="2250" | ||
| 476 | y="5700" | ||
| 477 | fill="#000000" | ||
| 478 | font-family="Courier" | ||
| 479 | font-style="normal" | ||
| 480 | font-weight="bold" | ||
| 481 | font-size="192" | ||
| 482 | text-anchor="middle" | ||
| 483 | id="text122">struct</text> | ||
| 484 | <!-- Text --> | ||
| 485 | <text | ||
| 486 | xml:space="preserve" | ||
| 487 | x="2250" | ||
| 488 | y="6000" | ||
| 489 | fill="#000000" | ||
| 490 | font-family="Courier" | ||
| 491 | font-style="normal" | ||
| 492 | font-weight="bold" | ||
| 493 | font-size="192" | ||
| 494 | text-anchor="middle" | ||
| 495 | id="text124">rcu_data</text> | ||
| 496 | <!-- Text --> | ||
| 497 | <text | ||
| 498 | xml:space="preserve" | ||
| 499 | x="1050" | ||
| 500 | y="6900" | ||
| 501 | fill="#000000" | ||
| 502 | font-family="Courier" | ||
| 503 | font-style="normal" | ||
| 504 | font-weight="bold" | ||
| 505 | font-size="192" | ||
| 506 | text-anchor="middle" | ||
| 507 | id="text126">struct</text> | ||
| 508 | <!-- Text --> | ||
| 509 | <text | ||
| 510 | xml:space="preserve" | ||
| 511 | x="1050" | ||
| 512 | y="7200" | ||
| 513 | fill="#000000" | ||
| 514 | font-family="Courier" | ||
| 515 | font-style="normal" | ||
| 516 | font-weight="bold" | ||
| 517 | font-size="192" | ||
| 518 | text-anchor="middle" | ||
| 519 | id="text128">rcu_data</text> | ||
| 520 | <!-- Text --> | ||
| 521 | <text | ||
| 522 | xml:space="preserve" | ||
| 523 | x="5250" | ||
| 524 | y="5700" | ||
| 525 | fill="#000000" | ||
| 526 | font-family="Courier" | ||
| 527 | font-style="normal" | ||
| 528 | font-weight="bold" | ||
| 529 | font-size="192" | ||
| 530 | text-anchor="middle" | ||
| 531 | id="text130">struct</text> | ||
| 532 | <!-- Text --> | ||
| 533 | <text | ||
| 534 | xml:space="preserve" | ||
| 535 | x="5250" | ||
| 536 | y="6000" | ||
| 537 | fill="#000000" | ||
| 538 | font-family="Courier" | ||
| 539 | font-style="normal" | ||
| 540 | font-weight="bold" | ||
| 541 | font-size="192" | ||
| 542 | text-anchor="middle" | ||
| 543 | id="text132">rcu_data</text> | ||
| 544 | <!-- Text --> | ||
| 545 | <text | ||
| 546 | xml:space="preserve" | ||
| 547 | x="4050" | ||
| 548 | y="6900" | ||
| 549 | fill="#000000" | ||
| 550 | font-family="Courier" | ||
| 551 | font-style="normal" | ||
| 552 | font-weight="bold" | ||
| 553 | font-size="192" | ||
| 554 | text-anchor="middle" | ||
| 555 | id="text134">struct</text> | ||
| 556 | <!-- Text --> | ||
| 557 | <text | ||
| 558 | xml:space="preserve" | ||
| 559 | x="4050" | ||
| 560 | y="7200" | ||
| 561 | fill="#000000" | ||
| 562 | font-family="Courier" | ||
| 563 | font-style="normal" | ||
| 564 | font-weight="bold" | ||
| 565 | font-size="192" | ||
| 566 | text-anchor="middle" | ||
| 567 | id="text136">rcu_data</text> | ||
| 568 | <!-- Text --> | ||
| 569 | <text | ||
| 570 | xml:space="preserve" | ||
| 571 | x="450" | ||
| 572 | y="1350" | ||
| 573 | fill="#000000" | ||
| 574 | font-family="Courier" | ||
| 575 | font-style="normal" | ||
| 576 | font-weight="bold" | ||
| 577 | font-size="192" | ||
| 578 | text-anchor="start" | ||
| 579 | id="text138">struct rcu_state</text> | ||
| 580 | <!-- Text --> | ||
| 581 | <text | ||
| 582 | xml:space="preserve" | ||
| 583 | x="1050" | ||
| 584 | y="9600" | ||
| 585 | fill="#000000" | ||
| 586 | font-family="Courier" | ||
| 587 | font-style="normal" | ||
| 588 | font-weight="bold" | ||
| 589 | font-size="192" | ||
| 590 | text-anchor="middle" | ||
| 591 | id="text140">struct</text> | ||
| 592 | <!-- Text --> | ||
| 593 | <text | ||
| 594 | xml:space="preserve" | ||
| 595 | x="1050" | ||
| 596 | y="9900" | ||
| 597 | fill="#000000" | ||
| 598 | font-family="Courier" | ||
| 599 | font-style="normal" | ||
| 600 | font-weight="bold" | ||
| 601 | font-size="192" | ||
| 602 | text-anchor="middle" | ||
| 603 | id="text142">rcu_dynticks</text> | ||
| 604 | <!-- Text --> | ||
| 605 | <text | ||
| 606 | xml:space="preserve" | ||
| 607 | x="4050" | ||
| 608 | y="9600" | ||
| 609 | fill="#000000" | ||
| 610 | font-family="Courier" | ||
| 611 | font-style="normal" | ||
| 612 | font-weight="bold" | ||
| 613 | font-size="192" | ||
| 614 | text-anchor="middle" | ||
| 615 | id="text144">struct</text> | ||
| 616 | <!-- Text --> | ||
| 617 | <text | ||
| 618 | xml:space="preserve" | ||
| 619 | x="4050" | ||
| 620 | y="9900" | ||
| 621 | fill="#000000" | ||
| 622 | font-family="Courier" | ||
| 623 | font-style="normal" | ||
| 624 | font-weight="bold" | ||
| 625 | font-size="192" | ||
| 626 | text-anchor="middle" | ||
| 627 | id="text146">rcu_dynticks</text> | ||
| 628 | <!-- Text --> | ||
| 629 | <text | ||
| 630 | xml:space="preserve" | ||
| 631 | x="2400" | ||
| 632 | y="8400" | ||
| 633 | fill="#000000" | ||
| 634 | font-family="Courier" | ||
| 635 | font-style="normal" | ||
| 636 | font-weight="bold" | ||
| 637 | font-size="192" | ||
| 638 | text-anchor="middle" | ||
| 639 | id="text148">struct</text> | ||
| 640 | <!-- Text --> | ||
| 641 | <text | ||
| 642 | xml:space="preserve" | ||
| 643 | x="2400" | ||
| 644 | y="8700" | ||
| 645 | fill="#000000" | ||
| 646 | font-family="Courier" | ||
| 647 | font-style="normal" | ||
| 648 | font-weight="bold" | ||
| 649 | font-size="192" | ||
| 650 | text-anchor="middle" | ||
| 651 | id="text150">rcu_dynticks</text> | ||
| 652 | <!-- Text --> | ||
| 653 | <text | ||
| 654 | xml:space="preserve" | ||
| 655 | x="5400" | ||
| 656 | y="8400" | ||
| 657 | fill="#000000" | ||
| 658 | font-family="Courier" | ||
| 659 | font-style="normal" | ||
| 660 | font-weight="bold" | ||
| 661 | font-size="192" | ||
| 662 | text-anchor="middle" | ||
| 663 | id="text152">struct</text> | ||
| 664 | <!-- Text --> | ||
| 665 | <text | ||
| 666 | xml:space="preserve" | ||
| 667 | x="5400" | ||
| 668 | y="8700" | ||
| 669 | fill="#000000" | ||
| 670 | font-family="Courier" | ||
| 671 | font-style="normal" | ||
| 672 | font-weight="bold" | ||
| 673 | font-size="192" | ||
| 674 | text-anchor="middle" | ||
| 675 | id="text154">rcu_dynticks</text> | ||
| 676 | <!-- Text --> | ||
| 677 | <text | ||
| 678 | xml:space="preserve" | ||
| 679 | x="6000" | ||
| 680 | y="750" | ||
| 681 | fill="#000000" | ||
| 682 | font-family="Helvetica" | ||
| 683 | font-style="normal" | ||
| 684 | font-weight="normal" | ||
| 685 | font-size="192" | ||
| 686 | text-anchor="end" | ||
| 687 | id="text156">rcu_sched</text> | ||
| 688 | <!-- Line --> | ||
| 689 | <polyline | ||
| 690 | points="5250,5400 5250,4414 " | ||
| 691 | style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 692 | id="polyline158" /> | ||
| 693 | <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290--> | ||
| 694 | </g> | ||
| 695 | </svg> | ||
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg deleted file mode 100644 index 15adcac036c7..000000000000 --- a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg +++ /dev/null | |||
| @@ -1,741 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Creator: fig2dev Version 3.2 Patchlevel 5e --> | ||
| 3 | |||
| 4 | <!-- CreationDate: Wed Dec 9 17:32:59 2015 --> | ||
| 5 | |||
| 6 | <!-- Magnification: 2.000 --> | ||
| 7 | |||
| 8 | <svg | ||
| 9 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 10 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 11 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 12 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 13 | xmlns="http://www.w3.org/2000/svg" | ||
| 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 16 | width="6.1in" | ||
| 17 | height="8.9in" | ||
| 18 | viewBox="-44 -44 7288 10738" | ||
| 19 | id="svg2" | ||
| 20 | version="1.1" | ||
| 21 | inkscape:version="0.48.4 r9939" | ||
| 22 | sodipodi:docname="BigTreePreemptRCUBHdyntick.fig"> | ||
| 23 | <metadata | ||
| 24 | id="metadata182"> | ||
| 25 | <rdf:RDF> | ||
| 26 | <cc:Work | ||
| 27 | rdf:about=""> | ||
| 28 | <dc:format>image/svg+xml</dc:format> | ||
| 29 | <dc:type | ||
| 30 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 31 | <dc:title></dc:title> | ||
| 32 | </cc:Work> | ||
| 33 | </rdf:RDF> | ||
| 34 | </metadata> | ||
| 35 | <defs | ||
| 36 | id="defs180"> | ||
| 37 | <marker | ||
| 38 | inkscape:stockid="Arrow1Mend" | ||
| 39 | orient="auto" | ||
| 40 | refY="0.0" | ||
| 41 | refX="0.0" | ||
| 42 | id="Arrow1Mend" | ||
| 43 | style="overflow:visible;"> | ||
| 44 | <path | ||
| 45 | id="path3940" | ||
| 46 | d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " | ||
| 47 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" | ||
| 48 | transform="scale(0.4) rotate(180) translate(10,0)" /> | ||
| 49 | </marker> | ||
| 50 | </defs> | ||
| 51 | <sodipodi:namedview | ||
| 52 | pagecolor="#ffffff" | ||
| 53 | bordercolor="#666666" | ||
| 54 | borderopacity="1" | ||
| 55 | objecttolerance="10" | ||
| 56 | gridtolerance="10" | ||
| 57 | guidetolerance="10" | ||
| 58 | inkscape:pageopacity="0" | ||
| 59 | inkscape:pageshadow="2" | ||
| 60 | inkscape:window-width="874" | ||
| 61 | inkscape:window-height="1148" | ||
| 62 | id="namedview178" | ||
| 63 | showgrid="false" | ||
| 64 | inkscape:zoom="1.2097379" | ||
| 65 | inkscape:cx="274.5" | ||
| 66 | inkscape:cy="400.49997" | ||
| 67 | inkscape:window-x="946" | ||
| 68 | inkscape:window-y="24" | ||
| 69 | inkscape:window-maximized="0" | ||
| 70 | inkscape:current-layer="g4" /> | ||
| 71 | <g | ||
| 72 | style="stroke-width:.025in; fill:none" | ||
| 73 | id="g4"> | ||
| 74 | <!-- Line: box --> | ||
| 75 | <rect | ||
| 76 | x="900" | ||
| 77 | y="0" | ||
| 78 | width="6300" | ||
| 79 | height="7350" | ||
| 80 | rx="0" | ||
| 81 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 82 | id="rect6" /> | ||
| 83 | <!-- Line: box --> | ||
| 84 | <rect | ||
| 85 | x="1200" | ||
| 86 | y="600" | ||
| 87 | width="5700" | ||
| 88 | height="3750" | ||
| 89 | rx="0" | ||
| 90 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 91 | id="rect8" /> | ||
| 92 | <!-- Line: box --> | ||
| 93 | <rect | ||
| 94 | x="5400" | ||
| 95 | y="4950" | ||
| 96 | width="1500" | ||
| 97 | height="900" | ||
| 98 | rx="0" | ||
| 99 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 100 | id="rect10" /> | ||
| 101 | <!-- Line: box --> | ||
| 102 | <rect | ||
| 103 | x="450" | ||
| 104 | y="450" | ||
| 105 | width="6300" | ||
| 106 | height="7350" | ||
| 107 | rx="0" | ||
| 108 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 109 | id="rect12" /> | ||
| 110 | <!-- Line: box --> | ||
| 111 | <rect | ||
| 112 | x="750" | ||
| 113 | y="1050" | ||
| 114 | width="5700" | ||
| 115 | height="3750" | ||
| 116 | rx="0" | ||
| 117 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 118 | id="rect14" /> | ||
| 119 | <!-- Line: box --> | ||
| 120 | <rect | ||
| 121 | x="4950" | ||
| 122 | y="5400" | ||
| 123 | width="1500" | ||
| 124 | height="900" | ||
| 125 | rx="0" | ||
| 126 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 127 | id="rect16" /> | ||
| 128 | <!-- Line --> | ||
| 129 | <polyline | ||
| 130 | points="5250,8550 5688,6362 " | ||
| 131 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 132 | id="polyline18" /> | ||
| 133 | <!-- Arrowhead on XXXpoint 5250 8550 - 5710 6240--> | ||
| 134 | <polyline | ||
| 135 | points="5714 6518 5704 6272 5598 6494 " | ||
| 136 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 137 | id="polyline20" /> | ||
| 138 | <!-- Line --> | ||
| 139 | <polyline | ||
| 140 | points="4050,9750 4486,7712 " | ||
| 141 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 142 | id="polyline22" /> | ||
| 143 | <!-- Arrowhead on XXXpoint 4050 9750 - 4512 7590--> | ||
| 144 | <polyline | ||
| 145 | points="4514 7868 4506 7622 4396 7844 " | ||
| 146 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 147 | id="polyline24" /> | ||
| 148 | <!-- Line --> | ||
| 149 | <polyline | ||
| 150 | points="1040,9750 1476,7712 " | ||
| 151 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 152 | id="polyline26" /> | ||
| 153 | <!-- Arrowhead on XXXpoint 1040 9750 - 1502 7590--> | ||
| 154 | <polyline | ||
| 155 | points="1504 7868 1496 7622 1386 7844 " | ||
| 156 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 157 | id="polyline28" /> | ||
| 158 | <!-- Line --> | ||
| 159 | <polyline | ||
| 160 | points="2240,8550 2676,6512 " | ||
| 161 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 162 | id="polyline30" /> | ||
| 163 | <!-- Arrowhead on XXXpoint 2240 8550 - 2702 6390--> | ||
| 164 | <polyline | ||
| 165 | points="2704 6668 2696 6422 2586 6644 " | ||
| 166 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 167 | id="polyline32" /> | ||
| 168 | <!-- Line --> | ||
| 169 | <polyline | ||
| 170 | points="4050,9750 5682,6360 " | ||
| 171 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 172 | id="polyline34" /> | ||
| 173 | <!-- Arrowhead on XXXpoint 4050 9750 - 5736 6246--> | ||
| 174 | <polyline | ||
| 175 | points="5672 6518 5722 6276 5562 6466 " | ||
| 176 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 177 | id="polyline36" /> | ||
| 178 | <!-- Line --> | ||
| 179 | <polyline | ||
| 180 | points="1010,9750 2642,6360 " | ||
| 181 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 182 | id="polyline38" /> | ||
| 183 | <!-- Arrowhead on XXXpoint 1010 9750 - 2696 6246--> | ||
| 184 | <polyline | ||
| 185 | points="2632 6518 2682 6276 2522 6466 " | ||
| 186 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | ||
| 187 | id="polyline40" /> | ||
| 188 | <!-- Line: box --> | ||
| 189 | <rect | ||
| 190 | x="0" | ||
| 191 | y="900" | ||
| 192 | width="6300" | ||
| 193 | height="7350" | ||
| 194 | rx="0" | ||
| 195 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 196 | id="rect42" /> | ||
| 197 | <!-- Line: box --> | ||
| 198 | <rect | ||
| 199 | x="300" | ||
| 200 | y="1500" | ||
| 201 | width="5700" | ||
| 202 | height="3750" | ||
| 203 | rx="0" | ||
| 204 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 205 | id="rect44" /> | ||
| 206 | <!-- Line --> | ||
| 207 | <polyline | ||
| 208 | points="1350,3900 2350,3040 " | ||
| 209 | style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 210 | id="polyline46" /> | ||
| 211 | <!-- Arrowhead on XXXpoint 1350 3900 - 2444 2960--> | ||
| 212 | <!-- Line --> | ||
| 213 | <polyline | ||
| 214 | points="4950,3900 3948,3040 " | ||
| 215 | style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 216 | id="polyline50" /> | ||
| 217 | <!-- Arrowhead on XXXpoint 4950 3900 - 3854 2960--> | ||
| 218 | <!-- Line --> | ||
| 219 | <polyline | ||
| 220 | points="4050,7050 4050,4864 " | ||
| 221 | style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 222 | id="polyline54" /> | ||
| 223 | <!-- Arrowhead on XXXpoint 4050 7050 - 4050 4740--> | ||
| 224 | <!-- Line --> | ||
| 225 | <polyline | ||
| 226 | points="1050,7050 1050,4864 " | ||
| 227 | style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 228 | id="polyline58" /> | ||
| 229 | <!-- Arrowhead on XXXpoint 1050 7050 - 1050 4740--> | ||
| 230 | <!-- Line --> | ||
| 231 | <polyline | ||
| 232 | points="2250,5850 2250,4864 " | ||
| 233 | style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 234 | id="polyline62" /> | ||
| 235 | <!-- Arrowhead on XXXpoint 2250 5850 - 2250 4740--> | ||
| 236 | <!-- Line --> | ||
| 237 | <polyline | ||
| 238 | points="2250,8550 2250,6814 " | ||
| 239 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 240 | id="polyline66" /> | ||
| 241 | <!-- Arrowhead on XXXpoint 2250 8550 - 2250 6690--> | ||
| 242 | <!-- Line --> | ||
| 243 | <polyline | ||
| 244 | points="1050,9750 1050,8014 " | ||
| 245 | style="stroke:#00ff00;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 246 | id="polyline70" /> | ||
| 247 | <!-- Arrowhead on XXXpoint 1050 9750 - 1050 7890--> | ||
| 248 | <!-- Line --> | ||
| 249 | <polyline | ||
| 250 | points="4050,9750 4050,8014 " | ||
| 251 | style="stroke:#00ff00;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 252 | id="polyline74" /> | ||
| 253 | <!-- Arrowhead on XXXpoint 4050 9750 - 4050 7890--> | ||
| 254 | <!-- Line --> | ||
| 255 | <polyline | ||
| 256 | points="5250,8550 5250,6814 " | ||
| 257 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 258 | id="polyline78" /> | ||
| 259 | <!-- Arrowhead on XXXpoint 5250 8550 - 5250 6690--> | ||
| 260 | <!-- Circle --> | ||
| 261 | <circle | ||
| 262 | cx="2850" | ||
| 263 | cy="4350" | ||
| 264 | r="76" | ||
| 265 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 266 | id="circle82" /> | ||
| 267 | <!-- Circle --> | ||
| 268 | <circle | ||
| 269 | cx="3150" | ||
| 270 | cy="4350" | ||
| 271 | r="76" | ||
| 272 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 273 | id="circle84" /> | ||
| 274 | <!-- Circle --> | ||
| 275 | <circle | ||
| 276 | cx="3450" | ||
| 277 | cy="4350" | ||
| 278 | r="76" | ||
| 279 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 280 | id="circle86" /> | ||
| 281 | <!-- Circle --> | ||
| 282 | <circle | ||
| 283 | cx="1350" | ||
| 284 | cy="5550" | ||
| 285 | r="76" | ||
| 286 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 287 | id="circle88" /> | ||
| 288 | <!-- Circle --> | ||
| 289 | <circle | ||
| 290 | cx="1650" | ||
| 291 | cy="5550" | ||
| 292 | r="76" | ||
| 293 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 294 | id="circle90" /> | ||
| 295 | <!-- Circle --> | ||
| 296 | <circle | ||
| 297 | cx="1950" | ||
| 298 | cy="5550" | ||
| 299 | r="76" | ||
| 300 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 301 | id="circle92" /> | ||
| 302 | <!-- Circle --> | ||
| 303 | <circle | ||
| 304 | cx="4350" | ||
| 305 | cy="5550" | ||
| 306 | r="76" | ||
| 307 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 308 | id="circle94" /> | ||
| 309 | <!-- Circle --> | ||
| 310 | <circle | ||
| 311 | cx="4650" | ||
| 312 | cy="5550" | ||
| 313 | r="76" | ||
| 314 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 315 | id="circle96" /> | ||
| 316 | <!-- Circle --> | ||
| 317 | <circle | ||
| 318 | cx="4950" | ||
| 319 | cy="5550" | ||
| 320 | r="76" | ||
| 321 | style="fill:#000000;stroke:#000000;stroke-width:14;" | ||
| 322 | id="circle98" /> | ||
| 323 | <!-- Line: box --> | ||
| 324 | <rect | ||
| 325 | x="750" | ||
| 326 | y="3900" | ||
| 327 | width="1800" | ||
| 328 | height="900" | ||
| 329 | rx="0" | ||
| 330 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 331 | id="rect100" /> | ||
| 332 | <!-- Line: box --> | ||
| 333 | <rect | ||
| 334 | x="300" | ||
| 335 | y="7050" | ||
| 336 | width="1500" | ||
| 337 | height="900" | ||
| 338 | rx="0" | ||
| 339 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 340 | id="rect102" /> | ||
| 341 | <!-- Line: box --> | ||
| 342 | <rect | ||
| 343 | x="3750" | ||
| 344 | y="3900" | ||
| 345 | width="1800" | ||
| 346 | height="900" | ||
| 347 | rx="0" | ||
| 348 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 349 | id="rect104" /> | ||
| 350 | <!-- Line: box --> | ||
| 351 | <rect | ||
| 352 | x="4500" | ||
| 353 | y="5850" | ||
| 354 | width="1500" | ||
| 355 | height="900" | ||
| 356 | rx="0" | ||
| 357 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 358 | id="rect106" /> | ||
| 359 | <!-- Line: box --> | ||
| 360 | <rect | ||
| 361 | x="3300" | ||
| 362 | y="7050" | ||
| 363 | width="1500" | ||
| 364 | height="900" | ||
| 365 | rx="0" | ||
| 366 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 367 | id="rect108" /> | ||
| 368 | <!-- Line: box --> | ||
| 369 | <rect | ||
| 370 | x="2250" | ||
| 371 | y="2100" | ||
| 372 | width="1800" | ||
| 373 | height="900" | ||
| 374 | rx="0" | ||
| 375 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | ||
| 376 | id="rect110" /> | ||
| 377 | <!-- Line: box --> | ||
| 378 | <rect | ||
| 379 | x="0" | ||
| 380 | y="9750" | ||
| 381 | width="2100" | ||
| 382 | height="900" | ||
| 383 | rx="0" | ||
| 384 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 385 | id="rect112" /> | ||
| 386 | <!-- Line: box --> | ||
| 387 | <rect | ||
| 388 | x="1350" | ||
| 389 | y="8550" | ||
| 390 | width="2100" | ||
| 391 | height="900" | ||
| 392 | rx="0" | ||
| 393 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 394 | id="rect114" /> | ||
| 395 | <!-- Line: box --> | ||
| 396 | <rect | ||
| 397 | x="3000" | ||
| 398 | y="9750" | ||
| 399 | width="2100" | ||
| 400 | height="900" | ||
| 401 | rx="0" | ||
| 402 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 403 | id="rect116" /> | ||
| 404 | <!-- Line: box --> | ||
| 405 | <rect | ||
| 406 | x="4350" | ||
| 407 | y="8550" | ||
| 408 | width="2100" | ||
| 409 | height="900" | ||
| 410 | rx="0" | ||
| 411 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 412 | id="rect118" /> | ||
| 413 | <!-- Line: box --> | ||
| 414 | <rect | ||
| 415 | x="1500" | ||
| 416 | y="5850" | ||
| 417 | width="1500" | ||
| 418 | height="900" | ||
| 419 | rx="0" | ||
| 420 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 421 | id="rect120" /> | ||
| 422 | <!-- Text --> | ||
| 423 | <text | ||
| 424 | xml:space="preserve" | ||
| 425 | x="6450" | ||
| 426 | y="750" | ||
| 427 | fill="#000000" | ||
| 428 | font-family="Helvetica" | ||
| 429 | font-style="normal" | ||
| 430 | font-weight="normal" | ||
| 431 | font-size="192" | ||
| 432 | text-anchor="end" | ||
| 433 | id="text122">rcu_bh</text> | ||
| 434 | <!-- Text --> | ||
| 435 | <text | ||
| 436 | xml:space="preserve" | ||
| 437 | x="3150" | ||
| 438 | y="2400" | ||
| 439 | fill="#000000" | ||
| 440 | font-family="Courier" | ||
| 441 | font-style="normal" | ||
| 442 | font-weight="bold" | ||
| 443 | font-size="192" | ||
| 444 | text-anchor="middle" | ||
| 445 | id="text124">struct</text> | ||
| 446 | <!-- Text --> | ||
| 447 | <text | ||
| 448 | xml:space="preserve" | ||
| 449 | x="3150" | ||
| 450 | y="2700" | ||
| 451 | fill="#000000" | ||
| 452 | font-family="Courier" | ||
| 453 | font-style="normal" | ||
| 454 | font-weight="bold" | ||
| 455 | font-size="192" | ||
| 456 | text-anchor="middle" | ||
| 457 | id="text126">rcu_node</text> | ||
| 458 | <!-- Text --> | ||
| 459 | <text | ||
| 460 | xml:space="preserve" | ||
| 461 | x="1650" | ||
| 462 | y="4200" | ||
| 463 | fill="#000000" | ||
| 464 | font-family="Courier" | ||
| 465 | font-style="normal" | ||
| 466 | font-weight="bold" | ||
| 467 | font-size="192" | ||
| 468 | text-anchor="middle" | ||
| 469 | id="text128">struct</text> | ||
| 470 | <!-- Text --> | ||
| 471 | <text | ||
| 472 | xml:space="preserve" | ||
| 473 | x="1650" | ||
| 474 | y="4500" | ||
| 475 | fill="#000000" | ||
| 476 | font-family="Courier" | ||
| 477 | font-style="normal" | ||
| 478 | font-weight="bold" | ||
| 479 | font-size="192" | ||
| 480 | text-anchor="middle" | ||
| 481 | id="text130">rcu_node</text> | ||
| 482 | <!-- Text --> | ||
| 483 | <text | ||
| 484 | xml:space="preserve" | ||
| 485 | x="4650" | ||
| 486 | y="4500" | ||
| 487 | fill="#000000" | ||
| 488 | font-family="Courier" | ||
| 489 | font-style="normal" | ||
| 490 | font-weight="bold" | ||
| 491 | font-size="192" | ||
| 492 | text-anchor="middle" | ||
| 493 | id="text132">rcu_node</text> | ||
| 494 | <!-- Text --> | ||
| 495 | <text | ||
| 496 | xml:space="preserve" | ||
| 497 | x="4650" | ||
| 498 | y="4200" | ||
| 499 | fill="#000000" | ||
| 500 | font-family="Courier" | ||
| 501 | font-style="normal" | ||
| 502 | font-weight="bold" | ||
| 503 | font-size="192" | ||
| 504 | text-anchor="middle" | ||
| 505 | id="text134">struct</text> | ||
| 506 | <!-- Text --> | ||
| 507 | <text | ||
| 508 | xml:space="preserve" | ||
| 509 | x="2250" | ||
| 510 | y="6150" | ||
| 511 | fill="#000000" | ||
| 512 | font-family="Courier" | ||
| 513 | font-style="normal" | ||
| 514 | font-weight="bold" | ||
| 515 | font-size="192" | ||
| 516 | text-anchor="middle" | ||
| 517 | id="text136">struct</text> | ||
| 518 | <!-- Text --> | ||
| 519 | <text | ||
| 520 | xml:space="preserve" | ||
| 521 | x="2250" | ||
| 522 | y="6450" | ||
| 523 | fill="#000000" | ||
| 524 | font-family="Courier" | ||
| 525 | font-style="normal" | ||
| 526 | font-weight="bold" | ||
| 527 | font-size="192" | ||
| 528 | text-anchor="middle" | ||
| 529 | id="text138">rcu_data</text> | ||
| 530 | <!-- Text --> | ||
| 531 | <text | ||
| 532 | xml:space="preserve" | ||
| 533 | x="1050" | ||
| 534 | y="7350" | ||
| 535 | fill="#000000" | ||
| 536 | font-family="Courier" | ||
| 537 | font-style="normal" | ||
| 538 | font-weight="bold" | ||
| 539 | font-size="192" | ||
| 540 | text-anchor="middle" | ||
| 541 | id="text140">struct</text> | ||
| 542 | <!-- Text --> | ||
| 543 | <text | ||
| 544 | xml:space="preserve" | ||
| 545 | x="1050" | ||
| 546 | y="7650" | ||
| 547 | fill="#000000" | ||
| 548 | font-family="Courier" | ||
| 549 | font-style="normal" | ||
| 550 | font-weight="bold" | ||
| 551 | font-size="192" | ||
| 552 | text-anchor="middle" | ||
| 553 | id="text142">rcu_data</text> | ||
| 554 | <!-- Text --> | ||
| 555 | <text | ||
| 556 | xml:space="preserve" | ||
| 557 | x="5250" | ||
| 558 | y="6150" | ||
| 559 | fill="#000000" | ||
| 560 | font-family="Courier" | ||
| 561 | font-style="normal" | ||
| 562 | font-weight="bold" | ||
| 563 | font-size="192" | ||
| 564 | text-anchor="middle" | ||
| 565 | id="text144">struct</text> | ||
| 566 | <!-- Text --> | ||
| 567 | <text | ||
| 568 | xml:space="preserve" | ||
| 569 | x="5250" | ||
| 570 | y="6450" | ||
| 571 | fill="#000000" | ||
| 572 | font-family="Courier" | ||
| 573 | font-style="normal" | ||
| 574 | font-weight="bold" | ||
| 575 | font-size="192" | ||
| 576 | text-anchor="middle" | ||
| 577 | id="text146">rcu_data</text> | ||
| 578 | <!-- Text --> | ||
| 579 | <text | ||
| 580 | xml:space="preserve" | ||
| 581 | x="4050" | ||
| 582 | y="7350" | ||
| 583 | fill="#000000" | ||
| 584 | font-family="Courier" | ||
| 585 | font-style="normal" | ||
| 586 | font-weight="bold" | ||
| 587 | font-size="192" | ||
| 588 | text-anchor="middle" | ||
| 589 | id="text148">struct</text> | ||
| 590 | <!-- Text --> | ||
| 591 | <text | ||
| 592 | xml:space="preserve" | ||
| 593 | x="4050" | ||
| 594 | y="7650" | ||
| 595 | fill="#000000" | ||
| 596 | font-family="Courier" | ||
| 597 | font-style="normal" | ||
| 598 | font-weight="bold" | ||
| 599 | font-size="192" | ||
| 600 | text-anchor="middle" | ||
| 601 | id="text150">rcu_data</text> | ||
| 602 | <!-- Text --> | ||
| 603 | <text | ||
| 604 | xml:space="preserve" | ||
| 605 | x="450" | ||
| 606 | y="1800" | ||
| 607 | fill="#000000" | ||
| 608 | font-family="Courier" | ||
| 609 | font-style="normal" | ||
| 610 | font-weight="bold" | ||
| 611 | font-size="192" | ||
| 612 | text-anchor="start" | ||
| 613 | id="text152">struct rcu_state</text> | ||
| 614 | <!-- Text --> | ||
| 615 | <text | ||
| 616 | xml:space="preserve" | ||
| 617 | x="1050" | ||
| 618 | y="10050" | ||
| 619 | fill="#000000" | ||
| 620 | font-family="Courier" | ||
| 621 | font-style="normal" | ||
| 622 | font-weight="bold" | ||
| 623 | font-size="192" | ||
| 624 | text-anchor="middle" | ||
| 625 | id="text154">struct</text> | ||
| 626 | <!-- Text --> | ||
| 627 | <text | ||
| 628 | xml:space="preserve" | ||
| 629 | x="1050" | ||
| 630 | y="10350" | ||
| 631 | fill="#000000" | ||
| 632 | font-family="Courier" | ||
| 633 | font-style="normal" | ||
| 634 | font-weight="bold" | ||
| 635 | font-size="192" | ||
| 636 | text-anchor="middle" | ||
| 637 | id="text156">rcu_dynticks</text> | ||
| 638 | <!-- Text --> | ||
| 639 | <text | ||
| 640 | xml:space="preserve" | ||
| 641 | x="4050" | ||
| 642 | y="10050" | ||
| 643 | fill="#000000" | ||
| 644 | font-family="Courier" | ||
| 645 | font-style="normal" | ||
| 646 | font-weight="bold" | ||
| 647 | font-size="192" | ||
| 648 | text-anchor="middle" | ||
| 649 | id="text158">struct</text> | ||
| 650 | <!-- Text --> | ||
| 651 | <text | ||
| 652 | xml:space="preserve" | ||
| 653 | x="4050" | ||
| 654 | y="10350" | ||
| 655 | fill="#000000" | ||
| 656 | font-family="Courier" | ||
| 657 | font-style="normal" | ||
| 658 | font-weight="bold" | ||
| 659 | font-size="192" | ||
| 660 | text-anchor="middle" | ||
| 661 | id="text160">rcu_dynticks</text> | ||
| 662 | <!-- Text --> | ||
| 663 | <text | ||
| 664 | xml:space="preserve" | ||
| 665 | x="2400" | ||
| 666 | y="8850" | ||
| 667 | fill="#000000" | ||
| 668 | font-family="Courier" | ||
| 669 | font-style="normal" | ||
| 670 | font-weight="bold" | ||
| 671 | font-size="192" | ||
| 672 | text-anchor="middle" | ||
| 673 | id="text162">struct</text> | ||
| 674 | <!-- Text --> | ||
| 675 | <text | ||
| 676 | xml:space="preserve" | ||
| 677 | x="2400" | ||
| 678 | y="9150" | ||
| 679 | fill="#000000" | ||
| 680 | font-family="Courier" | ||
| 681 | font-style="normal" | ||
| 682 | font-weight="bold" | ||
| 683 | font-size="192" | ||
| 684 | text-anchor="middle" | ||
| 685 | id="text164">rcu_dynticks</text> | ||
| 686 | <!-- Text --> | ||
| 687 | <text | ||
| 688 | xml:space="preserve" | ||
| 689 | x="5400" | ||
| 690 | y="8850" | ||
| 691 | fill="#000000" | ||
| 692 | font-family="Courier" | ||
| 693 | font-style="normal" | ||
| 694 | font-weight="bold" | ||
| 695 | font-size="192" | ||
| 696 | text-anchor="middle" | ||
| 697 | id="text166">struct</text> | ||
| 698 | <!-- Text --> | ||
| 699 | <text | ||
| 700 | xml:space="preserve" | ||
| 701 | x="5400" | ||
| 702 | y="9150" | ||
| 703 | fill="#000000" | ||
| 704 | font-family="Courier" | ||
| 705 | font-style="normal" | ||
| 706 | font-weight="bold" | ||
| 707 | font-size="192" | ||
| 708 | text-anchor="middle" | ||
| 709 | id="text168">rcu_dynticks</text> | ||
| 710 | <!-- Text --> | ||
| 711 | <text | ||
| 712 | xml:space="preserve" | ||
| 713 | x="6900" | ||
| 714 | y="300" | ||
| 715 | fill="#000000" | ||
| 716 | font-family="Helvetica" | ||
| 717 | font-style="normal" | ||
| 718 | font-weight="normal" | ||
| 719 | font-size="192" | ||
| 720 | text-anchor="end" | ||
| 721 | id="text170">rcu_preempt</text> | ||
| 722 | <!-- Text --> | ||
| 723 | <text | ||
| 724 | xml:space="preserve" | ||
| 725 | x="6000" | ||
| 726 | y="1200" | ||
| 727 | fill="#000000" | ||
| 728 | font-family="Helvetica" | ||
| 729 | font-style="normal" | ||
| 730 | font-weight="normal" | ||
| 731 | font-size="192" | ||
| 732 | text-anchor="end" | ||
| 733 | id="text172">rcu_sched</text> | ||
| 734 | <!-- Line --> | ||
| 735 | <polyline | ||
| 736 | points="5250,5850 5250,4864 " | ||
| 737 | style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 738 | id="polyline174" /> | ||
| 739 | <!-- Arrowhead on XXXpoint 5250 5850 - 5250 4740--> | ||
| 740 | </g> | ||
| 741 | </svg> | ||
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg index bbc3801470d0..3a1a4f85dc3a 100644 --- a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg +++ b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg | |||
| @@ -13,12 +13,12 @@ | |||
| 13 | xmlns="http://www.w3.org/2000/svg" | 13 | xmlns="http://www.w3.org/2000/svg" |
| 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
| 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
| 16 | width="7.4in" | 16 | width="7.4000001in" |
| 17 | height="9.9in" | 17 | height="7.9000001in" |
| 18 | viewBox="-44 -44 8938 11938" | 18 | viewBox="-44 -44 8938 9526.283" |
| 19 | id="svg2" | 19 | id="svg2" |
| 20 | version="1.1" | 20 | version="1.1" |
| 21 | inkscape:version="0.48.4 r9939" | 21 | inkscape:version="0.92.2pre0 (973e216, 2017-07-25)" |
| 22 | sodipodi:docname="BigTreePreemptRCUBHdyntickCB.svg"> | 22 | sodipodi:docname="BigTreePreemptRCUBHdyntickCB.svg"> |
| 23 | <metadata | 23 | <metadata |
| 24 | id="metadata212"> | 24 | id="metadata212"> |
| @@ -37,15 +37,46 @@ | |||
| 37 | <marker | 37 | <marker |
| 38 | inkscape:stockid="Arrow1Mend" | 38 | inkscape:stockid="Arrow1Mend" |
| 39 | orient="auto" | 39 | orient="auto" |
| 40 | refY="0.0" | 40 | refY="0" |
| 41 | refX="0.0" | 41 | refX="0" |
| 42 | id="marker1177" | ||
| 43 | style="overflow:visible" | ||
| 44 | inkscape:isstock="true"> | ||
| 45 | <path | ||
| 46 | id="path897" | ||
| 47 | d="M 0,0 5,-5 -12.5,0 5,5 Z" | ||
| 48 | style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | ||
| 49 | transform="matrix(-0.4,0,0,-0.4,-4,0)" | ||
| 50 | inkscape:connector-curvature="0" /> | ||
| 51 | </marker> | ||
| 52 | <marker | ||
| 53 | inkscape:stockid="Arrow1Lend" | ||
| 54 | orient="auto" | ||
| 55 | refY="0" | ||
| 56 | refX="0" | ||
| 57 | id="Arrow1Lend" | ||
| 58 | style="overflow:visible" | ||
| 59 | inkscape:isstock="true"> | ||
| 60 | <path | ||
| 61 | id="path891" | ||
| 62 | d="M 0,0 5,-5 -12.5,0 5,5 Z" | ||
| 63 | style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | ||
| 64 | transform="matrix(-0.8,0,0,-0.8,-10,0)" | ||
| 65 | inkscape:connector-curvature="0" /> | ||
| 66 | </marker> | ||
| 67 | <marker | ||
| 68 | inkscape:stockid="Arrow1Mend" | ||
| 69 | orient="auto" | ||
| 70 | refY="0" | ||
| 71 | refX="0" | ||
| 42 | id="Arrow1Mend" | 72 | id="Arrow1Mend" |
| 43 | style="overflow:visible;"> | 73 | style="overflow:visible"> |
| 44 | <path | 74 | <path |
| 45 | id="path3970" | 75 | id="path3970" |
| 46 | d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " | 76 | d="M 0,0 5,-5 -12.5,0 5,5 Z" |
| 47 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" | 77 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt" |
| 48 | transform="scale(0.4) rotate(180) translate(10,0)" /> | 78 | transform="matrix(-0.4,0,0,-0.4,-4,0)" |
| 79 | inkscape:connector-curvature="0" /> | ||
| 49 | </marker> | 80 | </marker> |
| 50 | </defs> | 81 | </defs> |
| 51 | <sodipodi:namedview | 82 | <sodipodi:namedview |
| @@ -57,802 +88,575 @@ | |||
| 57 | guidetolerance="10" | 88 | guidetolerance="10" |
| 58 | inkscape:pageopacity="0" | 89 | inkscape:pageopacity="0" |
| 59 | inkscape:pageshadow="2" | 90 | inkscape:pageshadow="2" |
| 60 | inkscape:window-width="881" | 91 | inkscape:window-width="1920" |
| 61 | inkscape:window-height="1128" | 92 | inkscape:window-height="1019" |
| 62 | id="namedview208" | 93 | id="namedview208" |
| 63 | showgrid="false" | 94 | showgrid="false" |
| 64 | inkscape:zoom="1.0195195" | 95 | inkscape:zoom="1.0195195" |
| 65 | inkscape:cx="333" | 96 | inkscape:cx="166.25478" |
| 66 | inkscape:cy="445.49997" | 97 | inkscape:cy="362.18693" |
| 67 | inkscape:window-x="936" | 98 | inkscape:window-x="0" |
| 68 | inkscape:window-y="24" | 99 | inkscape:window-y="0" |
| 69 | inkscape:window-maximized="0" | 100 | inkscape:window-maximized="1" |
| 70 | inkscape:current-layer="g4" /> | 101 | inkscape:current-layer="g4" /> |
| 71 | <g | 102 | <g |
| 72 | style="stroke-width:.025in; fill:none" | 103 | style="fill:none;stroke-width:0.025in" |
| 73 | id="g4"> | 104 | id="g4" |
| 105 | transform="translate(0,-2415.6743)"> | ||
| 74 | <!-- Line: box --> | 106 | <!-- Line: box --> |
| 75 | <rect | ||
| 76 | x="900" | ||
| 77 | y="0" | ||
| 78 | width="6300" | ||
| 79 | height="7350" | ||
| 80 | rx="0" | ||
| 81 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 82 | id="rect6" /> | ||
| 83 | <!-- Line: box --> | 107 | <!-- Line: box --> |
| 84 | <rect | ||
| 85 | x="1200" | ||
| 86 | y="600" | ||
| 87 | width="5700" | ||
| 88 | height="3750" | ||
| 89 | rx="0" | ||
| 90 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 91 | id="rect8" /> | ||
| 92 | <!-- Line: box --> | 108 | <!-- Line: box --> |
| 93 | <rect | ||
| 94 | x="5400" | ||
| 95 | y="4950" | ||
| 96 | width="1500" | ||
| 97 | height="900" | ||
| 98 | rx="0" | ||
| 99 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 100 | id="rect10" /> | ||
| 101 | <!-- Line: box --> | 109 | <!-- Line: box --> |
| 102 | <rect | ||
| 103 | x="450" | ||
| 104 | y="450" | ||
| 105 | width="6300" | ||
| 106 | height="7350" | ||
| 107 | rx="0" | ||
| 108 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 109 | id="rect12" /> | ||
| 110 | <!-- Line: box --> | 110 | <!-- Line: box --> |
| 111 | <rect | ||
| 112 | x="750" | ||
| 113 | y="1050" | ||
| 114 | width="5700" | ||
| 115 | height="3750" | ||
| 116 | rx="0" | ||
| 117 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 118 | id="rect14" /> | ||
| 119 | <!-- Line: box --> | 111 | <!-- Line: box --> |
| 120 | <rect | ||
| 121 | x="4950" | ||
| 122 | y="5400" | ||
| 123 | width="1500" | ||
| 124 | height="900" | ||
| 125 | rx="0" | ||
| 126 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 127 | id="rect16" /> | ||
| 128 | <!-- Line --> | 112 | <!-- Line --> |
| 129 | <polyline | ||
| 130 | points="5250,8550 5688,6362 " | ||
| 131 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 132 | id="polyline18" /> | ||
| 133 | <!-- Arrowhead on XXXpoint 5250 8550 - 5710 6240--> | 113 | <!-- Arrowhead on XXXpoint 5250 8550 - 5710 6240--> |
| 134 | <polyline | 114 | <polyline |
| 135 | points="5714 6518 5704 6272 5598 6494 " | 115 | points="5714 6518 5704 6272 5598 6494 " |
| 136 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 116 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 137 | id="polyline20" /> | 117 | id="polyline20" |
| 118 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 138 | <!-- Line --> | 119 | <!-- Line --> |
| 139 | <polyline | ||
| 140 | points="4050,9750 4486,7712 " | ||
| 141 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 142 | id="polyline22" /> | ||
| 143 | <!-- Arrowhead on XXXpoint 4050 9750 - 4512 7590--> | 120 | <!-- Arrowhead on XXXpoint 4050 9750 - 4512 7590--> |
| 144 | <polyline | 121 | <polyline |
| 145 | points="4514 7868 4506 7622 4396 7844 " | 122 | points="4514 7868 4506 7622 4396 7844 " |
| 146 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 123 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 147 | id="polyline24" /> | 124 | id="polyline24" |
| 125 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 148 | <!-- Line --> | 126 | <!-- Line --> |
| 149 | <polyline | ||
| 150 | points="1040,9750 1476,7712 " | ||
| 151 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 152 | id="polyline26" /> | ||
| 153 | <!-- Arrowhead on XXXpoint 1040 9750 - 1502 7590--> | 127 | <!-- Arrowhead on XXXpoint 1040 9750 - 1502 7590--> |
| 154 | <polyline | 128 | <polyline |
| 155 | points="1504 7868 1496 7622 1386 7844 " | 129 | points="1504 7868 1496 7622 1386 7844 " |
| 156 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 130 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 157 | id="polyline28" /> | 131 | id="polyline28" |
| 132 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 158 | <!-- Line --> | 133 | <!-- Line --> |
| 159 | <polyline | ||
| 160 | points="2240,8550 2676,6512 " | ||
| 161 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 162 | id="polyline30" /> | ||
| 163 | <!-- Arrowhead on XXXpoint 2240 8550 - 2702 6390--> | 134 | <!-- Arrowhead on XXXpoint 2240 8550 - 2702 6390--> |
| 164 | <polyline | 135 | <polyline |
| 165 | points="2704 6668 2696 6422 2586 6644 " | 136 | points="2704 6668 2696 6422 2586 6644 " |
| 166 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 137 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 167 | id="polyline32" /> | 138 | id="polyline32" |
| 139 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 168 | <!-- Line --> | 140 | <!-- Line --> |
| 169 | <polyline | ||
| 170 | points="4050,9600 5692,6062 " | ||
| 171 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 172 | id="polyline34" /> | ||
| 173 | <!-- Arrowhead on XXXpoint 4050 9600 - 5744 5948--> | 141 | <!-- Arrowhead on XXXpoint 4050 9600 - 5744 5948--> |
| 174 | <polyline | 142 | <polyline |
| 175 | points="5682 6220 5730 5978 5574 6170 " | 143 | points="5682 6220 5730 5978 5574 6170 " |
| 176 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 144 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 177 | id="polyline36" /> | 145 | id="polyline36" |
| 146 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 178 | <!-- Line --> | 147 | <!-- Line --> |
| 179 | <polyline | ||
| 180 | points="1086,9600 2728,6062 " | ||
| 181 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 182 | id="polyline38" /> | ||
| 183 | <!-- Arrowhead on XXXpoint 1086 9600 - 2780 5948--> | 148 | <!-- Arrowhead on XXXpoint 1086 9600 - 2780 5948--> |
| 184 | <polyline | 149 | <polyline |
| 185 | points="2718 6220 2766 5978 2610 6170 " | 150 | points="2718 6220 2766 5978 2610 6170 " |
| 186 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 151 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 187 | id="polyline40" /> | 152 | id="polyline40" |
| 153 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 188 | <!-- Line: box --> | 154 | <!-- Line: box --> |
| 189 | <rect | 155 | <rect |
| 190 | x="0" | 156 | x="12.340758" |
| 191 | y="900" | 157 | y="2442.5947" |
| 192 | width="6300" | 158 | width="6300" |
| 193 | height="7350" | 159 | height="7045.3135" |
| 194 | rx="0" | 160 | rx="0" |
| 195 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | 161 | style="fill:#ffffff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 196 | id="rect42" /> | 162 | id="rect42" /> |
| 197 | <!-- Line: box --> | 163 | <!-- Line: box --> |
| 198 | <rect | 164 | <rect |
| 199 | x="300" | 165 | x="312.34076" |
| 200 | y="1500" | 166 | y="3017.7224" |
| 201 | width="5700" | 167 | width="5700" |
| 202 | height="3750" | 168 | height="3594.5476" |
| 203 | rx="0" | 169 | rx="0" |
| 204 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | 170 | style="fill:#ffff00;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 205 | id="rect44" /> | 171 | id="rect44" /> |
| 206 | <!-- Line --> | 172 | <!-- Line --> |
| 207 | <polyline | 173 | <polyline |
| 208 | points="1350,3900 2350,3040 " | 174 | points="1350,3900 2350,3040 " |
| 209 | style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 175 | style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 210 | id="polyline46" /> | 176 | id="polyline46" |
| 177 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 211 | <!-- Arrowhead on XXXpoint 1350 3900 - 2444 2960--> | 178 | <!-- Arrowhead on XXXpoint 1350 3900 - 2444 2960--> |
| 212 | <!-- Line --> | 179 | <!-- Line --> |
| 213 | <polyline | 180 | <polyline |
| 214 | points="4950,3900 3948,3040 " | 181 | points="4950,3900 3948,3040 " |
| 215 | style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 182 | style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 216 | id="polyline50" /> | 183 | id="polyline50" |
| 184 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 217 | <!-- Arrowhead on XXXpoint 4950 3900 - 3854 2960--> | 185 | <!-- Arrowhead on XXXpoint 4950 3900 - 3854 2960--> |
| 218 | <!-- Line --> | 186 | <!-- Line --> |
| 219 | <polyline | 187 | <polyline |
| 220 | points="4050,7050 4050,4864 " | 188 | points="4050,7050 4050,4864 " |
| 221 | style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 189 | style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 222 | id="polyline54" /> | 190 | id="polyline54" |
| 191 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 223 | <!-- Arrowhead on XXXpoint 4050 7050 - 4050 4740--> | 192 | <!-- Arrowhead on XXXpoint 4050 7050 - 4050 4740--> |
| 224 | <!-- Line --> | 193 | <!-- Line --> |
| 225 | <polyline | 194 | <polyline |
| 226 | points="1050,7050 1050,4864 " | 195 | points="1050,7050 1050,4864 " |
| 227 | style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 196 | style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 228 | id="polyline58" /> | 197 | id="polyline58" |
| 198 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 229 | <!-- Arrowhead on XXXpoint 1050 7050 - 1050 4740--> | 199 | <!-- Arrowhead on XXXpoint 1050 7050 - 1050 4740--> |
| 230 | <!-- Line --> | 200 | <!-- Line --> |
| 231 | <polyline | 201 | <polyline |
| 232 | points="2250,5850 2250,4864 " | 202 | points="2250,5850 2250,4864 " |
| 233 | style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 203 | style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 234 | id="polyline62" /> | 204 | id="polyline62" |
| 205 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 235 | <!-- Arrowhead on XXXpoint 2250 5850 - 2250 4740--> | 206 | <!-- Arrowhead on XXXpoint 2250 5850 - 2250 4740--> |
| 236 | <!-- Line --> | 207 | <!-- Line --> |
| 237 | <polyline | ||
| 238 | points="2250,8550 2250,6814 " | ||
| 239 | style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 240 | id="polyline66" /> | ||
| 241 | <!-- Arrowhead on XXXpoint 2250 8550 - 2250 6690--> | 208 | <!-- Arrowhead on XXXpoint 2250 8550 - 2250 6690--> |
| 242 | <!-- Line --> | 209 | <!-- Line --> |
| 243 | <polyline | ||
| 244 | points="1050,9750 1050,8014 " | ||
| 245 | style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 246 | id="polyline70" /> | ||
| 247 | <!-- Arrowhead on XXXpoint 1050 9750 - 1050 7890--> | 210 | <!-- Arrowhead on XXXpoint 1050 9750 - 1050 7890--> |
| 248 | <!-- Line --> | 211 | <!-- Line --> |
| 249 | <polyline | ||
| 250 | points="4050,9750 4050,8014 " | ||
| 251 | style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 252 | id="polyline74" /> | ||
| 253 | <!-- Arrowhead on XXXpoint 4050 9750 - 4050 7890--> | 212 | <!-- Arrowhead on XXXpoint 4050 9750 - 4050 7890--> |
| 254 | <!-- Line --> | 213 | <!-- Line --> |
| 255 | <polyline | ||
| 256 | points="5250,8550 5250,6814 " | ||
| 257 | style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 258 | id="polyline78" /> | ||
| 259 | <!-- Arrowhead on XXXpoint 5250 8550 - 5250 6690--> | 214 | <!-- Arrowhead on XXXpoint 5250 8550 - 5250 6690--> |
| 260 | <!-- Line --> | 215 | <!-- Line --> |
| 261 | <polyline | ||
| 262 | points="6000,6300 8048,7910 " | ||
| 263 | style="stroke:#87cfff;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | ||
| 264 | id="polyline82" /> | ||
| 265 | <!-- Arrowhead on XXXpoint 6000 6300 - 8146 7986--> | 216 | <!-- Arrowhead on XXXpoint 6000 6300 - 8146 7986--> |
| 266 | <!-- Circle --> | 217 | <!-- Circle --> |
| 267 | <circle | 218 | <ellipse |
| 268 | cx="2850" | 219 | cx="2862.3408" |
| 269 | cy="4350" | 220 | cy="5749.5786" |
| 270 | r="76" | 221 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 271 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 222 | id="circle86" |
| 272 | id="circle86" /> | 223 | rx="76" |
| 224 | ry="72.849495" /> | ||
| 273 | <!-- Circle --> | 225 | <!-- Circle --> |
| 274 | <circle | 226 | <ellipse |
| 275 | cx="3150" | 227 | cx="3162.3408" |
| 276 | cy="4350" | 228 | cy="5749.5786" |
| 277 | r="76" | 229 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 278 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 230 | id="circle88" |
| 279 | id="circle88" /> | 231 | rx="76" |
| 232 | ry="72.849495" /> | ||
| 280 | <!-- Circle --> | 233 | <!-- Circle --> |
| 281 | <circle | 234 | <ellipse |
| 282 | cx="3450" | 235 | cx="3462.3408" |
| 283 | cy="4350" | 236 | cy="5749.5786" |
| 284 | r="76" | 237 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 285 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 238 | id="circle90" |
| 286 | id="circle90" /> | 239 | rx="76" |
| 240 | ry="72.849495" /> | ||
| 287 | <!-- Circle --> | 241 | <!-- Circle --> |
| 288 | <circle | 242 | <ellipse |
| 289 | cx="1350" | 243 | cx="1362.3407" |
| 290 | cy="5550" | 244 | cy="6899.834" |
| 291 | r="76" | 245 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 292 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 246 | id="circle92" |
| 293 | id="circle92" /> | 247 | rx="76" |
| 248 | ry="72.849495" /> | ||
| 294 | <!-- Circle --> | 249 | <!-- Circle --> |
| 295 | <circle | 250 | <ellipse |
| 296 | cx="1650" | 251 | cx="1662.3407" |
| 297 | cy="5550" | 252 | cy="6899.834" |
| 298 | r="76" | 253 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 299 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 254 | id="circle94" |
| 300 | id="circle94" /> | 255 | rx="76" |
| 256 | ry="72.849495" /> | ||
| 301 | <!-- Circle --> | 257 | <!-- Circle --> |
| 302 | <circle | 258 | <ellipse |
| 303 | cx="1950" | 259 | cx="1962.3407" |
| 304 | cy="5550" | 260 | cy="6899.834" |
| 305 | r="76" | 261 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 306 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 262 | id="circle96" |
| 307 | id="circle96" /> | 263 | rx="76" |
| 264 | ry="72.849495" /> | ||
| 308 | <!-- Circle --> | 265 | <!-- Circle --> |
| 309 | <circle | 266 | <ellipse |
| 310 | cx="4350" | 267 | cx="4362.3408" |
| 311 | cy="5550" | 268 | cy="6899.834" |
| 312 | r="76" | 269 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 313 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 270 | id="circle98" |
| 314 | id="circle98" /> | 271 | rx="76" |
| 272 | ry="72.849495" /> | ||
| 315 | <!-- Circle --> | 273 | <!-- Circle --> |
| 316 | <circle | 274 | <ellipse |
| 317 | cx="4650" | 275 | cx="4662.3408" |
| 318 | cy="5550" | 276 | cy="6899.834" |
| 319 | r="76" | 277 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 320 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 278 | id="circle100" |
| 321 | id="circle100" /> | 279 | rx="76" |
| 280 | ry="72.849495" /> | ||
| 322 | <!-- Circle --> | 281 | <!-- Circle --> |
| 323 | <circle | 282 | <ellipse |
| 324 | cx="4950" | 283 | cx="4962.3408" |
| 325 | cy="5550" | 284 | cy="6899.834" |
| 326 | r="76" | 285 | style="fill:#000000;stroke:#000000;stroke-width:13.70675087" |
| 327 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 286 | id="circle102" |
| 328 | id="circle102" /> | 287 | rx="76" |
| 288 | ry="72.849495" /> | ||
| 329 | <!-- Line: box --> | 289 | <!-- Line: box --> |
| 330 | <rect | 290 | <rect |
| 331 | x="7350" | 291 | x="6745.3027" |
| 332 | y="7950" | 292 | y="8146.0654" |
| 333 | width="1500" | 293 | width="1500" |
| 334 | height="900" | 294 | height="862.69141" |
| 335 | rx="0" | 295 | rx="0" |
| 336 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | 296 | style="stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 337 | id="rect104" /> | 297 | id="rect104" /> |
| 338 | <!-- Line: box --> | 298 | <!-- Line: box --> |
| 339 | <rect | 299 | <rect |
| 340 | x="7350" | 300 | x="6745.3027" |
| 341 | y="9450" | 301 | y="9583.8857" |
| 342 | width="1500" | 302 | width="1500" |
| 343 | height="900" | 303 | height="862.69141" |
| 344 | rx="0" | 304 | rx="0" |
| 345 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | 305 | style="stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 346 | id="rect106" /> | 306 | id="rect106" /> |
| 347 | <!-- Line --> | 307 | <!-- Line --> |
| 348 | <polyline | 308 | <polyline |
| 349 | points="8100,8850 8100,9384 " | 309 | points="8100,8850 8100,9384 " |
| 350 | style="stroke:#000000;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | 310 | style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend)" |
| 351 | id="polyline108" /> | 311 | id="polyline108" |
| 312 | transform="matrix(1,0,0,0.95854605,-604.69715,525.62477)" /> | ||
| 352 | <!-- Arrowhead on XXXpoint 8100 8850 - 8100 9510--> | 313 | <!-- Arrowhead on XXXpoint 8100 8850 - 8100 9510--> |
| 353 | <!-- Line: box --> | 314 | <!-- Line: box --> |
| 354 | <rect | 315 | <rect |
| 355 | x="7350" | 316 | x="6745.3027" |
| 356 | y="10950" | 317 | y="11021.704" |
| 357 | width="1500" | 318 | width="1500" |
| 358 | height="900" | 319 | height="862.69141" |
| 359 | rx="0" | 320 | rx="0" |
| 360 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | 321 | style="stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 361 | id="rect112" /> | 322 | id="rect112" /> |
| 362 | <!-- Line --> | 323 | <!-- Line --> |
| 363 | <polyline | 324 | <polyline |
| 364 | points="8100,10350 8100,10884 " | 325 | points="8100,10350 8100,10884 " |
| 365 | style="stroke:#000000;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" | 326 | style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend)" |
| 366 | id="polyline114" /> | 327 | id="polyline114" |
| 328 | transform="matrix(1,0,0,0.95854605,-604.69715,525.62477)" /> | ||
| 367 | <!-- Arrowhead on XXXpoint 8100 10350 - 8100 11010--> | 329 | <!-- Arrowhead on XXXpoint 8100 10350 - 8100 11010--> |
| 368 | <!-- Line: box --> | 330 | <!-- Line: box --> |
| 369 | <rect | 331 | <rect |
| 370 | x="750" | 332 | x="762.34076" |
| 371 | y="3900" | 333 | y="5318.2324" |
| 372 | width="1800" | 334 | width="1800" |
| 373 | height="900" | 335 | height="862.69141" |
| 374 | rx="0" | 336 | rx="0" |
| 375 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 337 | style="fill:#ffbfbf;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 376 | id="rect118" /> | 338 | id="rect118" /> |
| 377 | <!-- Line: box --> | 339 | <!-- Line: box --> |
| 378 | <rect | 340 | <rect |
| 379 | x="300" | 341 | x="312.34076" |
| 380 | y="7050" | 342 | y="8337.6533" |
| 381 | width="1500" | 343 | width="1500" |
| 382 | height="900" | 344 | height="862.69141" |
| 383 | rx="0" | 345 | rx="0" |
| 384 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 346 | style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 385 | id="rect120" /> | 347 | id="rect120" /> |
| 386 | <!-- Line: box --> | 348 | <!-- Line: box --> |
| 387 | <rect | 349 | <rect |
| 388 | x="3750" | 350 | x="3762.3408" |
| 389 | y="3900" | 351 | y="5318.2324" |
| 390 | width="1800" | 352 | width="1800" |
| 391 | height="900" | 353 | height="862.69141" |
| 392 | rx="0" | 354 | rx="0" |
| 393 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 355 | style="fill:#ffbfbf;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 394 | id="rect122" /> | 356 | id="rect122" /> |
| 395 | <!-- Line: box --> | 357 | <!-- Line: box --> |
| 396 | <rect | 358 | <rect |
| 397 | x="4500" | 359 | x="4512.3408" |
| 398 | y="5850" | 360 | y="7187.3975" |
| 399 | width="1500" | 361 | width="1500" |
| 400 | height="900" | 362 | height="862.69141" |
| 401 | rx="0" | 363 | rx="0" |
| 402 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 364 | style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 403 | id="rect124" /> | 365 | id="rect124" /> |
| 404 | <!-- Line: box --> | 366 | <!-- Line: box --> |
| 405 | <rect | 367 | <rect |
| 406 | x="3300" | 368 | x="3312.3408" |
| 407 | y="7050" | 369 | y="8337.6533" |
| 408 | width="1500" | 370 | width="1500" |
| 409 | height="900" | 371 | height="862.69141" |
| 410 | rx="0" | 372 | rx="0" |
| 411 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 373 | style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 412 | id="rect126" /> | 374 | id="rect126" /> |
| 413 | <!-- Line: box --> | 375 | <!-- Line: box --> |
| 414 | <rect | 376 | <rect |
| 415 | x="2250" | 377 | x="2262.3408" |
| 416 | y="2100" | 378 | y="3592.8503" |
| 417 | width="1800" | 379 | width="1800" |
| 418 | height="900" | 380 | height="862.69141" |
| 419 | rx="0" | 381 | rx="0" |
| 420 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 382 | style="fill:#ffbfbf;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 421 | id="rect128" /> | 383 | id="rect128" /> |
| 422 | <!-- Line: box --> | 384 | <!-- Line: box --> |
| 423 | <rect | ||
| 424 | x="0" | ||
| 425 | y="9750" | ||
| 426 | width="2100" | ||
| 427 | height="900" | ||
| 428 | rx="0" | ||
| 429 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 430 | id="rect130" /> | ||
| 431 | <!-- Line: box --> | 385 | <!-- Line: box --> |
| 432 | <rect | ||
| 433 | x="1350" | ||
| 434 | y="8550" | ||
| 435 | width="2100" | ||
| 436 | height="900" | ||
| 437 | rx="0" | ||
| 438 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 439 | id="rect132" /> | ||
| 440 | <!-- Line: box --> | 386 | <!-- Line: box --> |
| 441 | <rect | ||
| 442 | x="3000" | ||
| 443 | y="9750" | ||
| 444 | width="2100" | ||
| 445 | height="900" | ||
| 446 | rx="0" | ||
| 447 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 448 | id="rect134" /> | ||
| 449 | <!-- Line: box --> | 387 | <!-- Line: box --> |
| 450 | <rect | ||
| 451 | x="4350" | ||
| 452 | y="8550" | ||
| 453 | width="2100" | ||
| 454 | height="900" | ||
| 455 | rx="0" | ||
| 456 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 457 | id="rect136" /> | ||
| 458 | <!-- Line: box --> | 388 | <!-- Line: box --> |
| 459 | <rect | 389 | <rect |
| 460 | x="1500" | 390 | x="1512.3407" |
| 461 | y="5850" | 391 | y="7187.3975" |
| 462 | width="1500" | 392 | width="1500" |
| 463 | height="900" | 393 | height="862.69141" |
| 464 | rx="0" | 394 | rx="0" |
| 465 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 395 | style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter" |
| 466 | id="rect138" /> | 396 | id="rect138" /> |
| 467 | <!-- Text --> | 397 | <!-- Text --> |
| 468 | <text | 398 | <text |
| 469 | xml:space="preserve" | 399 | xml:space="preserve" |
| 470 | x="8100" | 400 | x="7338.3037" |
| 471 | y="8250" | 401 | y="8614.0625" |
| 472 | fill="#000000" | ||
| 473 | font-family="Courier" | ||
| 474 | font-style="normal" | 402 | font-style="normal" |
| 475 | font-weight="bold" | 403 | font-weight="bold" |
| 476 | font-size="192" | 404 | font-size="192" |
| 477 | text-anchor="middle" | 405 | id="text140" |
| 478 | id="text140">struct</text> | 406 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 407 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 479 | <!-- Text --> | 408 | <!-- Text --> |
| 480 | <text | 409 | <text |
| 481 | xml:space="preserve" | 410 | xml:space="preserve" |
| 482 | x="8100" | 411 | x="7338.3037" |
| 483 | y="8550" | 412 | y="8907.7783" |
| 484 | fill="#000000" | ||
| 485 | font-family="Courier" | ||
| 486 | font-style="normal" | 413 | font-style="normal" |
| 487 | font-weight="bold" | 414 | font-weight="bold" |
| 488 | font-size="192" | 415 | font-size="192" |
| 489 | text-anchor="middle" | 416 | id="text142" |
| 490 | id="text142">rcu_head</text> | 417 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 418 | transform="scale(1.0213945,0.97905363)">rcu_head</text> | ||
| 491 | <!-- Text --> | 419 | <!-- Text --> |
| 492 | <text | 420 | <text |
| 493 | xml:space="preserve" | 421 | xml:space="preserve" |
| 494 | x="8100" | 422 | x="7338.3037" |
| 495 | y="9750" | 423 | y="10082.644" |
| 496 | fill="#000000" | ||
| 497 | font-family="Courier" | ||
| 498 | font-style="normal" | 424 | font-style="normal" |
| 499 | font-weight="bold" | 425 | font-weight="bold" |
| 500 | font-size="192" | 426 | font-size="192" |
| 501 | text-anchor="middle" | 427 | id="text144" |
| 502 | id="text144">struct</text> | 428 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 429 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 503 | <!-- Text --> | 430 | <!-- Text --> |
| 504 | <text | 431 | <text |
| 505 | xml:space="preserve" | 432 | xml:space="preserve" |
| 506 | x="8100" | 433 | x="7338.3037" |
| 507 | y="10050" | 434 | y="10376.36" |
| 508 | fill="#000000" | ||
| 509 | font-family="Courier" | ||
| 510 | font-style="normal" | 435 | font-style="normal" |
| 511 | font-weight="bold" | 436 | font-weight="bold" |
| 512 | font-size="192" | 437 | font-size="192" |
| 513 | text-anchor="middle" | 438 | id="text146" |
| 514 | id="text146">rcu_head</text> | 439 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 440 | transform="scale(1.0213945,0.97905363)">rcu_head</text> | ||
| 515 | <!-- Text --> | 441 | <!-- Text --> |
| 516 | <text | 442 | <text |
| 517 | xml:space="preserve" | 443 | xml:space="preserve" |
| 518 | x="8100" | 444 | x="7338.3037" |
| 519 | y="11250" | 445 | y="11551.224" |
| 520 | fill="#000000" | ||
| 521 | font-family="Courier" | ||
| 522 | font-style="normal" | 446 | font-style="normal" |
| 523 | font-weight="bold" | 447 | font-weight="bold" |
| 524 | font-size="192" | 448 | font-size="192" |
| 525 | text-anchor="middle" | 449 | id="text148" |
| 526 | id="text148">struct</text> | 450 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 451 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 527 | <!-- Text --> | 452 | <!-- Text --> |
| 528 | <text | 453 | <text |
| 529 | xml:space="preserve" | 454 | xml:space="preserve" |
| 530 | x="8100" | 455 | x="7338.3037" |
| 531 | y="11550" | 456 | y="11844.94" |
| 532 | fill="#000000" | ||
| 533 | font-family="Courier" | ||
| 534 | font-style="normal" | 457 | font-style="normal" |
| 535 | font-weight="bold" | 458 | font-weight="bold" |
| 536 | font-size="192" | 459 | font-size="192" |
| 537 | text-anchor="middle" | 460 | id="text150" |
| 538 | id="text150">rcu_head</text> | 461 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 462 | transform="scale(1.0213945,0.97905363)">rcu_head</text> | ||
| 539 | <!-- Text --> | 463 | <!-- Text --> |
| 540 | <text | 464 | <text |
| 541 | xml:space="preserve" | 465 | xml:space="preserve" |
| 542 | x="6000" | 466 | x="5886.4043" |
| 543 | y="1200" | 467 | y="2788.5688" |
| 544 | fill="#000000" | ||
| 545 | font-family="Helvetica" | ||
| 546 | font-style="normal" | 468 | font-style="normal" |
| 547 | font-weight="normal" | 469 | font-weight="normal" |
| 548 | font-size="192" | 470 | font-size="192" |
| 549 | text-anchor="end" | 471 | id="text152" |
| 550 | id="text152">rcu_sched</text> | 472 | style="font-style:normal;font-weight:normal;font-size:187.978302px;font-family:Helvetica;text-anchor:end;fill:#000000;stroke-width:0.02447634in" |
| 473 | transform="scale(1.0213945,0.97905363)">rcu_state</text> | ||
| 551 | <!-- Text --> | 474 | <!-- Text --> |
| 552 | <text | ||
| 553 | xml:space="preserve" | ||
| 554 | x="6450" | ||
| 555 | y="750" | ||
| 556 | fill="#000000" | ||
| 557 | font-family="Helvetica" | ||
| 558 | font-style="normal" | ||
| 559 | font-weight="normal" | ||
| 560 | font-size="192" | ||
| 561 | text-anchor="end" | ||
| 562 | id="text154">rcu_bh</text> | ||
| 563 | <!-- Text --> | 475 | <!-- Text --> |
| 564 | <text | 476 | <text |
| 565 | xml:space="preserve" | 477 | xml:space="preserve" |
| 566 | x="3150" | 478 | x="3096.1016" |
| 567 | y="2400" | 479 | y="3963.4336" |
| 568 | fill="#000000" | ||
| 569 | font-family="Courier" | ||
| 570 | font-style="normal" | 480 | font-style="normal" |
| 571 | font-weight="bold" | 481 | font-weight="bold" |
| 572 | font-size="192" | 482 | font-size="192" |
| 573 | text-anchor="middle" | 483 | id="text156" |
| 574 | id="text156">struct</text> | 484 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 485 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 575 | <!-- Text --> | 486 | <!-- Text --> |
| 576 | <text | 487 | <text |
| 577 | xml:space="preserve" | 488 | xml:space="preserve" |
| 578 | x="3150" | 489 | x="3096.1016" |
| 579 | y="2700" | 490 | y="4257.1494" |
| 580 | fill="#000000" | ||
| 581 | font-family="Courier" | ||
| 582 | font-style="normal" | 491 | font-style="normal" |
| 583 | font-weight="bold" | 492 | font-weight="bold" |
| 584 | font-size="192" | 493 | font-size="192" |
| 585 | text-anchor="middle" | 494 | id="text158" |
| 586 | id="text158">rcu_node</text> | 495 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 496 | transform="scale(1.0213945,0.97905363)">rcu_node</text> | ||
| 587 | <!-- Text --> | 497 | <!-- Text --> |
| 588 | <text | 498 | <text |
| 589 | xml:space="preserve" | 499 | xml:space="preserve" |
| 590 | x="1650" | 500 | x="1627.5209" |
| 591 | y="4200" | 501 | y="5725.7305" |
| 592 | fill="#000000" | ||
| 593 | font-family="Courier" | ||
| 594 | font-style="normal" | 502 | font-style="normal" |
| 595 | font-weight="bold" | 503 | font-weight="bold" |
| 596 | font-size="192" | 504 | font-size="192" |
| 597 | text-anchor="middle" | 505 | id="text160" |
| 598 | id="text160">struct</text> | 506 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 507 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 599 | <!-- Text --> | 508 | <!-- Text --> |
| 600 | <text | 509 | <text |
| 601 | xml:space="preserve" | 510 | xml:space="preserve" |
| 602 | x="1650" | 511 | x="1627.5209" |
| 603 | y="4500" | 512 | y="6019.4463" |
| 604 | fill="#000000" | ||
| 605 | font-family="Courier" | ||
| 606 | font-style="normal" | 513 | font-style="normal" |
| 607 | font-weight="bold" | 514 | font-weight="bold" |
| 608 | font-size="192" | 515 | font-size="192" |
| 609 | text-anchor="middle" | 516 | id="text162" |
| 610 | id="text162">rcu_node</text> | 517 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 518 | transform="scale(1.0213945,0.97905363)">rcu_node</text> | ||
| 611 | <!-- Text --> | 519 | <!-- Text --> |
| 612 | <text | 520 | <text |
| 613 | xml:space="preserve" | 521 | xml:space="preserve" |
| 614 | x="4650" | 522 | x="4564.6821" |
| 615 | y="4500" | 523 | y="6019.4463" |
| 616 | fill="#000000" | ||
| 617 | font-family="Courier" | ||
| 618 | font-style="normal" | 524 | font-style="normal" |
| 619 | font-weight="bold" | 525 | font-weight="bold" |
| 620 | font-size="192" | 526 | font-size="192" |
| 621 | text-anchor="middle" | 527 | id="text164" |
| 622 | id="text164">rcu_node</text> | 528 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 529 | transform="scale(1.0213945,0.97905363)">rcu_node</text> | ||
| 623 | <!-- Text --> | 530 | <!-- Text --> |
| 624 | <text | 531 | <text |
| 625 | xml:space="preserve" | 532 | xml:space="preserve" |
| 626 | x="4650" | 533 | x="4564.6821" |
| 627 | y="4200" | 534 | y="5725.7305" |
| 628 | fill="#000000" | ||
| 629 | font-family="Courier" | ||
| 630 | font-style="normal" | 535 | font-style="normal" |
| 631 | font-weight="bold" | 536 | font-weight="bold" |
| 632 | font-size="192" | 537 | font-size="192" |
| 633 | text-anchor="middle" | 538 | id="text166" |
| 634 | id="text166">struct</text> | 539 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 540 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 635 | <!-- Text --> | 541 | <!-- Text --> |
| 636 | <text | 542 | <text |
| 637 | xml:space="preserve" | 543 | xml:space="preserve" |
| 638 | x="2250" | 544 | x="2214.9531" |
| 639 | y="6150" | 545 | y="7634.8848" |
| 640 | fill="#000000" | ||
| 641 | font-family="Courier" | ||
| 642 | font-style="normal" | 546 | font-style="normal" |
| 643 | font-weight="bold" | 547 | font-weight="bold" |
| 644 | font-size="192" | 548 | font-size="192" |
| 645 | text-anchor="middle" | 549 | id="text168" |
| 646 | id="text168">struct</text> | 550 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 551 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 647 | <!-- Text --> | 552 | <!-- Text --> |
| 648 | <text | 553 | <text |
| 649 | xml:space="preserve" | 554 | xml:space="preserve" |
| 650 | x="2250" | 555 | x="2214.9531" |
| 651 | y="6450" | 556 | y="7928.6011" |
| 652 | fill="#000000" | ||
| 653 | font-family="Courier" | ||
| 654 | font-style="normal" | 557 | font-style="normal" |
| 655 | font-weight="bold" | 558 | font-weight="bold" |
| 656 | font-size="192" | 559 | font-size="192" |
| 657 | text-anchor="middle" | 560 | id="text170" |
| 658 | id="text170">rcu_data</text> | 561 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 562 | transform="scale(1.0213945,0.97905363)">rcu_data</text> | ||
| 659 | <!-- Text --> | 563 | <!-- Text --> |
| 660 | <text | 564 | <text |
| 661 | xml:space="preserve" | 565 | xml:space="preserve" |
| 662 | x="1050" | 566 | x="1040.0886" |
| 663 | y="7350" | 567 | y="8809.749" |
| 664 | fill="#000000" | ||
| 665 | font-family="Courier" | ||
| 666 | font-style="normal" | 568 | font-style="normal" |
| 667 | font-weight="bold" | 569 | font-weight="bold" |
| 668 | font-size="192" | 570 | font-size="192" |
| 669 | text-anchor="middle" | 571 | id="text172" |
| 670 | id="text172">struct</text> | 572 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 573 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 671 | <!-- Text --> | 574 | <!-- Text --> |
| 672 | <text | 575 | <text |
| 673 | xml:space="preserve" | 576 | xml:space="preserve" |
| 674 | x="1050" | 577 | x="1040.0886" |
| 675 | y="7650" | 578 | y="9103.4648" |
| 676 | fill="#000000" | ||
| 677 | font-family="Courier" | ||
| 678 | font-style="normal" | 579 | font-style="normal" |
| 679 | font-weight="bold" | 580 | font-weight="bold" |
| 680 | font-size="192" | 581 | font-size="192" |
| 681 | text-anchor="middle" | 582 | id="text174" |
| 682 | id="text174">rcu_data</text> | 583 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 584 | transform="scale(1.0213945,0.97905363)">rcu_data</text> | ||
| 683 | <!-- Text --> | 585 | <!-- Text --> |
| 684 | <text | 586 | <text |
| 685 | xml:space="preserve" | 587 | xml:space="preserve" |
| 686 | x="5250" | 588 | x="5152.1138" |
| 687 | y="6150" | 589 | y="7634.8848" |
| 688 | fill="#000000" | ||
| 689 | font-family="Courier" | ||
| 690 | font-style="normal" | 590 | font-style="normal" |
| 691 | font-weight="bold" | 591 | font-weight="bold" |
| 692 | font-size="192" | 592 | font-size="192" |
| 693 | text-anchor="middle" | 593 | id="text176" |
| 694 | id="text176">struct</text> | 594 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 595 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 695 | <!-- Text --> | 596 | <!-- Text --> |
| 696 | <text | 597 | <text |
| 697 | xml:space="preserve" | 598 | xml:space="preserve" |
| 698 | x="5250" | 599 | x="5152.1138" |
| 699 | y="6450" | 600 | y="7928.6011" |
| 700 | fill="#000000" | ||
| 701 | font-family="Courier" | ||
| 702 | font-style="normal" | 601 | font-style="normal" |
| 703 | font-weight="bold" | 602 | font-weight="bold" |
| 704 | font-size="192" | 603 | font-size="192" |
| 705 | text-anchor="middle" | 604 | id="text178" |
| 706 | id="text178">rcu_data</text> | 605 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 606 | transform="scale(1.0213945,0.97905363)">rcu_data</text> | ||
| 707 | <!-- Text --> | 607 | <!-- Text --> |
| 708 | <text | 608 | <text |
| 709 | xml:space="preserve" | 609 | xml:space="preserve" |
| 710 | x="4050" | 610 | x="3977.2495" |
| 711 | y="7350" | 611 | y="8809.749" |
| 712 | fill="#000000" | ||
| 713 | font-family="Courier" | ||
| 714 | font-style="normal" | 612 | font-style="normal" |
| 715 | font-weight="bold" | 613 | font-weight="bold" |
| 716 | font-size="192" | 614 | font-size="192" |
| 717 | text-anchor="middle" | 615 | id="text180" |
| 718 | id="text180">struct</text> | 616 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 617 | transform="scale(1.0213945,0.97905363)">struct</text> | ||
| 719 | <!-- Text --> | 618 | <!-- Text --> |
| 720 | <text | 619 | <text |
| 721 | xml:space="preserve" | 620 | xml:space="preserve" |
| 722 | x="4050" | 621 | x="3977.2495" |
| 723 | y="7650" | 622 | y="9103.4648" |
| 724 | fill="#000000" | ||
| 725 | font-family="Courier" | ||
| 726 | font-style="normal" | 623 | font-style="normal" |
| 727 | font-weight="bold" | 624 | font-weight="bold" |
| 728 | font-size="192" | 625 | font-size="192" |
| 729 | text-anchor="middle" | 626 | id="text182" |
| 730 | id="text182">rcu_data</text> | 627 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in" |
| 628 | transform="scale(1.0213945,0.97905363)">rcu_data</text> | ||
| 731 | <!-- Text --> | 629 | <!-- Text --> |
| 732 | <text | 630 | <text |
| 733 | xml:space="preserve" | 631 | xml:space="preserve" |
| 734 | x="450" | 632 | x="452.6564" |
| 735 | y="1800" | 633 | y="3376.0012" |
| 736 | fill="#000000" | ||
| 737 | font-family="Courier" | ||
| 738 | font-style="normal" | 634 | font-style="normal" |
| 739 | font-weight="bold" | 635 | font-weight="bold" |
| 740 | font-size="192" | 636 | font-size="192" |
| 741 | text-anchor="start" | 637 | id="text184" |
| 742 | id="text184">struct rcu_state</text> | 638 | style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:start;fill:#000000;stroke-width:0.02447634in" |
| 639 | transform="scale(1.0213945,0.97905363)">struct rcu_state</text> | ||
| 743 | <!-- Text --> | 640 | <!-- Text --> |
| 744 | <text | ||
| 745 | xml:space="preserve" | ||
| 746 | x="1050" | ||
| 747 | y="10050" | ||
| 748 | fill="#000000" | ||
| 749 | font-family="Courier" | ||
| 750 | font-style="normal" | ||
| 751 | font-weight="bold" | ||
| 752 | font-size="192" | ||
| 753 | text-anchor="middle" | ||
| 754 | id="text186">struct</text> | ||
| 755 | <!-- Text --> | 641 | <!-- Text --> |
| 756 | <text | ||
| 757 | xml:space="preserve" | ||
| 758 | x="1050" | ||
| 759 | y="10350" | ||
| 760 | fill="#000000" | ||
| 761 | font-family="Courier" | ||
| 762 | font-style="normal" | ||
| 763 | font-weight="bold" | ||
| 764 | font-size="192" | ||
| 765 | text-anchor="middle" | ||
| 766 | id="text188">rcu_dynticks</text> | ||
| 767 | <!-- Text --> | 642 | <!-- Text --> |
| 768 | <text | ||
| 769 | xml:space="preserve" | ||
| 770 | x="4050" | ||
| 771 | y="10050" | ||
| 772 | fill="#000000" | ||
| 773 | font-family="Courier" | ||
| 774 | font-style="normal" | ||
| 775 | font-weight="bold" | ||
| 776 | font-size="192" | ||
| 777 | text-anchor="middle" | ||
| 778 | id="text190">struct</text> | ||
| 779 | <!-- Text --> | 643 | <!-- Text --> |
| 780 | <text | ||
| 781 | xml:space="preserve" | ||
| 782 | x="4050" | ||
| 783 | y="10350" | ||
| 784 | fill="#000000" | ||
| 785 | font-family="Courier" | ||
| 786 | font-style="normal" | ||
| 787 | font-weight="bold" | ||
| 788 | font-size="192" | ||
| 789 | text-anchor="middle" | ||
| 790 | id="text192">rcu_dynticks</text> | ||
| 791 | <!-- Text --> | 644 | <!-- Text --> |
| 792 | <text | ||
| 793 | xml:space="preserve" | ||
| 794 | x="2400" | ||
| 795 | y="8850" | ||
| 796 | fill="#000000" | ||
| 797 | font-family="Courier" | ||
| 798 | font-style="normal" | ||
| 799 | font-weight="bold" | ||
| 800 | font-size="192" | ||
| 801 | text-anchor="middle" | ||
| 802 | id="text194">struct</text> | ||
| 803 | <!-- Text --> | 645 | <!-- Text --> |
| 804 | <text | ||
| 805 | xml:space="preserve" | ||
| 806 | x="2400" | ||
| 807 | y="9150" | ||
| 808 | fill="#000000" | ||
| 809 | font-family="Courier" | ||
| 810 | font-style="normal" | ||
| 811 | font-weight="bold" | ||
| 812 | font-size="192" | ||
| 813 | text-anchor="middle" | ||
| 814 | id="text196">rcu_dynticks</text> | ||
| 815 | <!-- Text --> | 646 | <!-- Text --> |
| 816 | <text | ||
| 817 | xml:space="preserve" | ||
| 818 | x="5400" | ||
| 819 | y="8850" | ||
| 820 | fill="#000000" | ||
| 821 | font-family="Courier" | ||
| 822 | font-style="normal" | ||
| 823 | font-weight="bold" | ||
| 824 | font-size="192" | ||
| 825 | text-anchor="middle" | ||
| 826 | id="text198">struct</text> | ||
| 827 | <!-- Text --> | 647 | <!-- Text --> |
| 828 | <text | ||
| 829 | xml:space="preserve" | ||
| 830 | x="5400" | ||
| 831 | y="9150" | ||
| 832 | fill="#000000" | ||
| 833 | font-family="Courier" | ||
| 834 | font-style="normal" | ||
| 835 | font-weight="bold" | ||
| 836 | font-size="192" | ||
| 837 | text-anchor="middle" | ||
| 838 | id="text200">rcu_dynticks</text> | ||
| 839 | <!-- Text --> | 648 | <!-- Text --> |
| 840 | <text | ||
| 841 | xml:space="preserve" | ||
| 842 | x="6900" | ||
| 843 | y="300" | ||
| 844 | fill="#000000" | ||
| 845 | font-family="Helvetica" | ||
| 846 | font-style="normal" | ||
| 847 | font-weight="normal" | ||
| 848 | font-size="192" | ||
| 849 | text-anchor="end" | ||
| 850 | id="text202">rcu_preempt</text> | ||
| 851 | <!-- Line --> | 649 | <!-- Line --> |
| 852 | <polyline | 650 | <polyline |
| 853 | points="5250,5850 5250,4864 " | 651 | points="5250,5850 5250,4864 " |
| 854 | style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 652 | style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 855 | id="polyline204" /> | 653 | id="polyline204" |
| 654 | transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" /> | ||
| 856 | <!-- Arrowhead on XXXpoint 5250 5850 - 5250 4740--> | 655 | <!-- Arrowhead on XXXpoint 5250 5850 - 5250 4740--> |
| 656 | <path | ||
| 657 | style="fill:none;stroke:#000000;stroke-width:34.24744034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1177)" | ||
| 658 | d="m 6000.1472,7564.2558 c 1498.5508,0 1498.5508,0 1498.5508,0 v 520.0252" | ||
| 659 | id="path886" | ||
| 660 | inkscape:connector-curvature="0" /> | ||
| 857 | </g> | 661 | </g> |
| 858 | </svg> | 662 | </svg> |
diff --git a/Documentation/RCU/Design/Data-Structures/Data-Structures.html b/Documentation/RCU/Design/Data-Structures/Data-Structures.html index 1d2051c0c3fc..18f179807563 100644 --- a/Documentation/RCU/Design/Data-Structures/Data-Structures.html +++ b/Documentation/RCU/Design/Data-Structures/Data-Structures.html | |||
| @@ -23,8 +23,6 @@ to each other. | |||
| 23 | The <tt>rcu_segcblist</tt> Structure</a> | 23 | The <tt>rcu_segcblist</tt> Structure</a> |
| 24 | <li> <a href="#The rcu_data Structure"> | 24 | <li> <a href="#The rcu_data Structure"> |
| 25 | The <tt>rcu_data</tt> Structure</a> | 25 | The <tt>rcu_data</tt> Structure</a> |
| 26 | <li> <a href="#The rcu_dynticks Structure"> | ||
| 27 | The <tt>rcu_dynticks</tt> Structure</a> | ||
| 28 | <li> <a href="#The rcu_head Structure"> | 26 | <li> <a href="#The rcu_head Structure"> |
| 29 | The <tt>rcu_head</tt> Structure</a> | 27 | The <tt>rcu_head</tt> Structure</a> |
| 30 | <li> <a href="#RCU-Specific Fields in the task_struct Structure"> | 28 | <li> <a href="#RCU-Specific Fields in the task_struct Structure"> |
| @@ -127,9 +125,11 @@ CPUs, RCU would configure the <tt>rcu_node</tt> tree as follows: | |||
| 127 | </p><p>RCU currently permits up to a four-level tree, which on a 64-bit system | 125 | </p><p>RCU currently permits up to a four-level tree, which on a 64-bit system |
| 128 | accommodates up to 4,194,304 CPUs, though only a mere 524,288 CPUs for | 126 | accommodates up to 4,194,304 CPUs, though only a mere 524,288 CPUs for |
| 129 | 32-bit systems. | 127 | 32-bit systems. |
| 130 | On the other hand, you can set <tt>CONFIG_RCU_FANOUT</tt> to be | 128 | On the other hand, you can set both <tt>CONFIG_RCU_FANOUT</tt> and |
| 131 | as small as 2 if you wish, which would permit only 16 CPUs, which | 129 | <tt>CONFIG_RCU_FANOUT_LEAF</tt> to be as small as 2, which would result |
| 132 | is useful for testing. | 130 | in a 16-CPU test using a 4-level tree. |
| 131 | This can be useful for testing large-system capabilities on small test | ||
| 132 | machines. | ||
| 133 | 133 | ||
| 134 | </p><p>This multi-level combining tree allows us to get most of the | 134 | </p><p>This multi-level combining tree allows us to get most of the |
| 135 | performance and scalability | 135 | performance and scalability |
| @@ -154,44 +154,9 @@ on that root <tt>rcu_node</tt> structure remains acceptably low. | |||
| 154 | keeping lock contention under control at all tree levels regardless | 154 | keeping lock contention under control at all tree levels regardless |
| 155 | of the level of loading on the system. | 155 | of the level of loading on the system. |
| 156 | 156 | ||
| 157 | </p><p>The Linux kernel actually supports multiple flavors of RCU | ||
| 158 | running concurrently, so RCU builds separate data structures for each | ||
| 159 | flavor. | ||
| 160 | For example, for <tt>CONFIG_TREE_RCU=y</tt> kernels, RCU provides | ||
| 161 | rcu_sched and rcu_bh, as shown below: | ||
| 162 | |||
| 163 | </p><p><img src="BigTreeClassicRCUBH.svg" alt="BigTreeClassicRCUBH.svg" width="33%"> | ||
| 164 | |||
| 165 | </p><p>Energy efficiency is increasingly important, and for that | ||
| 166 | reason the Linux kernel provides <tt>CONFIG_NO_HZ_IDLE</tt>, which | ||
| 167 | turns off the scheduling-clock interrupts on idle CPUs, which in | ||
| 168 | turn allows those CPUs to attain deeper sleep states and to consume | ||
| 169 | less energy. | ||
| 170 | CPUs whose scheduling-clock interrupts have been turned off are | ||
| 171 | said to be in <i>dyntick-idle mode</i>. | ||
| 172 | RCU must handle dyntick-idle CPUs specially | ||
| 173 | because RCU would otherwise wake up each CPU on every grace period, | ||
| 174 | which would defeat the whole purpose of <tt>CONFIG_NO_HZ_IDLE</tt>. | ||
| 175 | RCU uses the <tt>rcu_dynticks</tt> structure to track | ||
| 176 | which CPUs are in dyntick idle mode, as shown below: | ||
| 177 | |||
| 178 | </p><p><img src="BigTreeClassicRCUBHdyntick.svg" alt="BigTreeClassicRCUBHdyntick.svg" width="33%"> | ||
| 179 | |||
| 180 | </p><p>However, if a CPU is in dyntick-idle mode, it is in that mode | ||
| 181 | for all flavors of RCU. | ||
| 182 | Therefore, a single <tt>rcu_dynticks</tt> structure is allocated per | ||
| 183 | CPU, and all of a given CPU's <tt>rcu_data</tt> structures share | ||
| 184 | that <tt>rcu_dynticks</tt>, as shown in the figure. | ||
| 185 | |||
| 186 | </p><p>Kernels built with <tt>CONFIG_PREEMPT_RCU</tt> support | ||
| 187 | rcu_preempt in addition to rcu_sched and rcu_bh, as shown below: | ||
| 188 | |||
| 189 | </p><p><img src="BigTreePreemptRCUBHdyntick.svg" alt="BigTreePreemptRCUBHdyntick.svg" width="35%"> | ||
| 190 | |||
| 191 | </p><p>RCU updaters wait for normal grace periods by registering | 157 | </p><p>RCU updaters wait for normal grace periods by registering |
| 192 | RCU callbacks, either directly via <tt>call_rcu()</tt> and | 158 | RCU callbacks, either directly via <tt>call_rcu()</tt> and |
| 193 | friends (namely <tt>call_rcu_bh()</tt> and <tt>call_rcu_sched()</tt>), | 159 | friends (namely <tt>call_rcu_bh()</tt> and <tt>call_rcu_sched()</tt>), |
| 194 | there being a separate interface per flavor of RCU) | ||
| 195 | or indirectly via <tt>synchronize_rcu()</tt> and friends. | 160 | or indirectly via <tt>synchronize_rcu()</tt> and friends. |
| 196 | RCU callbacks are represented by <tt>rcu_head</tt> structures, | 161 | RCU callbacks are represented by <tt>rcu_head</tt> structures, |
| 197 | which are queued on <tt>rcu_data</tt> structures while they are | 162 | which are queued on <tt>rcu_data</tt> structures while they are |
| @@ -214,9 +179,6 @@ its own synchronization: | |||
| 214 | <li> Each <tt>rcu_node</tt> structure has a spinlock. | 179 | <li> Each <tt>rcu_node</tt> structure has a spinlock. |
| 215 | <li> The fields in <tt>rcu_data</tt> are private to the corresponding | 180 | <li> The fields in <tt>rcu_data</tt> are private to the corresponding |
| 216 | CPU, although a few can be read and written by other CPUs. | 181 | CPU, although a few can be read and written by other CPUs. |
| 217 | <li> Similarly, the fields in <tt>rcu_dynticks</tt> are private | ||
| 218 | to the corresponding CPU, although a few can be read by | ||
| 219 | other CPUs. | ||
| 220 | </ol> | 182 | </ol> |
| 221 | 183 | ||
| 222 | <p>It is important to note that different data structures can have | 184 | <p>It is important to note that different data structures can have |
| @@ -272,11 +234,6 @@ follows: | |||
| 272 | access to this information from the corresponding CPU. | 234 | access to this information from the corresponding CPU. |
| 273 | Finally, this structure records past dyntick-idle state | 235 | Finally, this structure records past dyntick-idle state |
| 274 | for the corresponding CPU and also tracks statistics. | 236 | for the corresponding CPU and also tracks statistics. |
| 275 | <li> <tt>rcu_dynticks</tt>: | ||
| 276 | This per-CPU structure tracks the current dyntick-idle | ||
| 277 | state for the corresponding CPU. | ||
| 278 | Unlike the other three structures, the <tt>rcu_dynticks</tt> | ||
| 279 | structure is not replicated per RCU flavor. | ||
| 280 | <li> <tt>rcu_head</tt>: | 237 | <li> <tt>rcu_head</tt>: |
| 281 | This structure represents RCU callbacks, and is the | 238 | This structure represents RCU callbacks, and is the |
| 282 | only structure allocated and managed by RCU users. | 239 | only structure allocated and managed by RCU users. |
| @@ -287,14 +244,14 @@ follows: | |||
| 287 | <p>If all you wanted from this article was a general notion of how | 244 | <p>If all you wanted from this article was a general notion of how |
| 288 | RCU's data structures are related, you are done. | 245 | RCU's data structures are related, you are done. |
| 289 | Otherwise, each of the following sections give more details on | 246 | Otherwise, each of the following sections give more details on |
| 290 | the <tt>rcu_state</tt>, <tt>rcu_node</tt>, <tt>rcu_data</tt>, | 247 | the <tt>rcu_state</tt>, <tt>rcu_node</tt> and <tt>rcu_data</tt> data |
| 291 | and <tt>rcu_dynticks</tt> data structures. | 248 | structures. |
| 292 | 249 | ||
| 293 | <h3><a name="The rcu_state Structure"> | 250 | <h3><a name="The rcu_state Structure"> |
| 294 | The <tt>rcu_state</tt> Structure</a></h3> | 251 | The <tt>rcu_state</tt> Structure</a></h3> |
| 295 | 252 | ||
| 296 | <p>The <tt>rcu_state</tt> structure is the base structure that | 253 | <p>The <tt>rcu_state</tt> structure is the base structure that |
| 297 | represents a flavor of RCU. | 254 | represents the state of RCU in the system. |
| 298 | This structure forms the interconnection between the | 255 | This structure forms the interconnection between the |
| 299 | <tt>rcu_node</tt> and <tt>rcu_data</tt> structures, | 256 | <tt>rcu_node</tt> and <tt>rcu_data</tt> structures, |
| 300 | tracks grace periods, contains the lock used to | 257 | tracks grace periods, contains the lock used to |
| @@ -389,7 +346,7 @@ sequence number. | |||
| 389 | The bottom two bits are the state of the current grace period, | 346 | The bottom two bits are the state of the current grace period, |
| 390 | which can be zero for not yet started or one for in progress. | 347 | which can be zero for not yet started or one for in progress. |
| 391 | In other words, if the bottom two bits of <tt>->gp_seq</tt> are | 348 | In other words, if the bottom two bits of <tt>->gp_seq</tt> are |
| 392 | zero, the corresponding flavor of RCU is idle. | 349 | zero, then RCU is idle. |
| 393 | Any other value in the bottom two bits indicates that something is broken. | 350 | Any other value in the bottom two bits indicates that something is broken. |
| 394 | This field is protected by the root <tt>rcu_node</tt> structure's | 351 | This field is protected by the root <tt>rcu_node</tt> structure's |
| 395 | <tt>->lock</tt> field. | 352 | <tt>->lock</tt> field. |
| @@ -419,10 +376,10 @@ as follows: | |||
| 419 | grace period in jiffies. | 376 | grace period in jiffies. |
| 420 | It is protected by the root <tt>rcu_node</tt>'s <tt>->lock</tt>. | 377 | It is protected by the root <tt>rcu_node</tt>'s <tt>->lock</tt>. |
| 421 | 378 | ||
| 422 | <p>The <tt>->name</tt> field points to the name of the RCU flavor | 379 | <p>The <tt>->name</tt> and <tt>->abbr</tt> fields distinguish |
| 423 | (for example, “rcu_sched”), and is constant. | 380 | between preemptible RCU (“rcu_preempt” and “p”) |
| 424 | The <tt>->abbr</tt> field contains a one-character abbreviation, | 381 | and non-preemptible RCU (“rcu_sched” and “s”). |
| 425 | for example, “s” for RCU-sched. | 382 | These fields are used for diagnostic and tracing purposes. |
| 426 | 383 | ||
| 427 | <h3><a name="The rcu_node Structure"> | 384 | <h3><a name="The rcu_node Structure"> |
| 428 | The <tt>rcu_node</tt> Structure</a></h3> | 385 | The <tt>rcu_node</tt> Structure</a></h3> |
| @@ -971,25 +928,31 @@ this <tt>rcu_segcblist</tt> structure, <i>not</i> the <tt>->head</tt> | |||
| 971 | pointer. | 928 | pointer. |
| 972 | The reason for this is that all the ready-to-invoke callbacks | 929 | The reason for this is that all the ready-to-invoke callbacks |
| 973 | (that is, those in the <tt>RCU_DONE_TAIL</tt> segment) are extracted | 930 | (that is, those in the <tt>RCU_DONE_TAIL</tt> segment) are extracted |
| 974 | all at once at callback-invocation time. | 931 | all at once at callback-invocation time (<tt>rcu_do_batch</tt>), due |
| 932 | to which <tt>->head</tt> may be set to NULL if there are no not-done | ||
| 933 | callbacks remaining in the <tt>rcu_segcblist</tt>. | ||
| 975 | If callback invocation must be postponed, for example, because a | 934 | If callback invocation must be postponed, for example, because a |
| 976 | high-priority process just woke up on this CPU, then the remaining | 935 | high-priority process just woke up on this CPU, then the remaining |
| 977 | callbacks are placed back on the <tt>RCU_DONE_TAIL</tt> segment. | 936 | callbacks are placed back on the <tt>RCU_DONE_TAIL</tt> segment and |
| 978 | Either way, the <tt>->len</tt> and <tt>->len_lazy</tt> counts | 937 | <tt>->head</tt> once again points to the start of the segment. |
| 979 | are adjusted after the corresponding callbacks have been invoked, and so | 938 | In short, the head field can briefly be <tt>NULL</tt> even though the |
| 980 | again it is the <tt>->len</tt> count that accurately reflects whether | 939 | CPU has callbacks present the entire time. |
| 981 | or not there are callbacks associated with this <tt>rcu_segcblist</tt> | 940 | Therefore, it is not appropriate to test the <tt>->head</tt> pointer |
| 982 | structure. | 941 | for <tt>NULL</tt>. |
| 942 | |||
| 943 | <p>In contrast, the <tt>->len</tt> and <tt>->len_lazy</tt> counts | ||
| 944 | are adjusted only after the corresponding callbacks have been invoked. | ||
| 945 | This means that the <tt>->len</tt> count is zero only if | ||
| 946 | the <tt>rcu_segcblist</tt> structure really is devoid of callbacks. | ||
| 983 | Of course, off-CPU sampling of the <tt>->len</tt> count requires | 947 | Of course, off-CPU sampling of the <tt>->len</tt> count requires |
| 984 | the use of appropriate synchronization, for example, memory barriers. | 948 | careful use of appropriate synchronization, for example, memory barriers. |
| 985 | This synchronization can be a bit subtle, particularly in the case | 949 | This synchronization can be a bit subtle, particularly in the case |
| 986 | of <tt>rcu_barrier()</tt>. | 950 | of <tt>rcu_barrier()</tt>. |
| 987 | 951 | ||
| 988 | <h3><a name="The rcu_data Structure"> | 952 | <h3><a name="The rcu_data Structure"> |
| 989 | The <tt>rcu_data</tt> Structure</a></h3> | 953 | The <tt>rcu_data</tt> Structure</a></h3> |
| 990 | 954 | ||
| 991 | <p>The <tt>rcu_data</tt> maintains the per-CPU state for the | 955 | <p>The <tt>rcu_data</tt> maintains the per-CPU state for the RCU subsystem. |
| 992 | corresponding flavor of RCU. | ||
| 993 | The fields in this structure may be accessed only from the corresponding | 956 | The fields in this structure may be accessed only from the corresponding |
| 994 | CPU (and from tracing) unless otherwise stated. | 957 | CPU (and from tracing) unless otherwise stated. |
| 995 | This structure is the | 958 | This structure is the |
| @@ -1015,30 +978,19 @@ as follows: | |||
| 1015 | 978 | ||
| 1016 | <pre> | 979 | <pre> |
| 1017 | 1 int cpu; | 980 | 1 int cpu; |
| 1018 | 2 struct rcu_state *rsp; | 981 | 2 struct rcu_node *mynode; |
| 1019 | 3 struct rcu_node *mynode; | 982 | 3 unsigned long grpmask; |
| 1020 | 4 struct rcu_dynticks *dynticks; | 983 | 4 bool beenonline; |
| 1021 | 5 unsigned long grpmask; | ||
| 1022 | 6 bool beenonline; | ||
| 1023 | </pre> | 984 | </pre> |
| 1024 | 985 | ||
| 1025 | <p>The <tt>->cpu</tt> field contains the number of the | 986 | <p>The <tt>->cpu</tt> field contains the number of the |
| 1026 | corresponding CPU, the <tt>->rsp</tt> pointer references | 987 | corresponding CPU and the <tt>->mynode</tt> field references the |
| 1027 | the corresponding <tt>rcu_state</tt> structure (and is most frequently | 988 | corresponding <tt>rcu_node</tt> structure. |
| 1028 | used to locate the name of the corresponding flavor of RCU for tracing), | ||
| 1029 | and the <tt>->mynode</tt> field references the corresponding | ||
| 1030 | <tt>rcu_node</tt> structure. | ||
| 1031 | The <tt>->mynode</tt> is used to propagate quiescent states | 989 | The <tt>->mynode</tt> is used to propagate quiescent states |
| 1032 | up the combining tree. | 990 | up the combining tree. |
| 1033 | <p>The <tt>->dynticks</tt> pointer references the | 991 | These two fields are constant and therefore do not require synchronization. |
| 1034 | <tt>rcu_dynticks</tt> structure corresponding to this | ||
| 1035 | CPU. | ||
| 1036 | Recall that a single per-CPU instance of the <tt>rcu_dynticks</tt> | ||
| 1037 | structure is shared among all flavors of RCU. | ||
| 1038 | These first four fields are constant and therefore require not | ||
| 1039 | synchronization. | ||
| 1040 | 992 | ||
| 1041 | </p><p>The <tt>->grpmask</tt> field indicates the bit in | 993 | <p>The <tt>->grpmask</tt> field indicates the bit in |
| 1042 | the <tt>->mynode->qsmask</tt> corresponding to this | 994 | the <tt>->mynode->qsmask</tt> corresponding to this |
| 1043 | <tt>rcu_data</tt> structure, and is also used when propagating | 995 | <tt>rcu_data</tt> structure, and is also used when propagating |
| 1044 | quiescent states. | 996 | quiescent states. |
| @@ -1057,12 +1009,12 @@ as follows: | |||
| 1057 | 3 bool cpu_no_qs; | 1009 | 3 bool cpu_no_qs; |
| 1058 | 4 bool core_needs_qs; | 1010 | 4 bool core_needs_qs; |
| 1059 | 5 bool gpwrap; | 1011 | 5 bool gpwrap; |
| 1060 | 6 unsigned long rcu_qs_ctr_snap; | ||
| 1061 | </pre> | 1012 | </pre> |
| 1062 | 1013 | ||
| 1063 | <p>The <tt>->gp_seq</tt> and <tt>->gp_seq_needed</tt> | 1014 | <p>The <tt>->gp_seq</tt> field is the counterpart of the field of the same |
| 1064 | fields are the counterparts of the fields of the same name | 1015 | name in the <tt>rcu_state</tt> and <tt>rcu_node</tt> structures. The |
| 1065 | in the <tt>rcu_state</tt> and <tt>rcu_node</tt> structures. | 1016 | <tt>->gp_seq_needed</tt> field is the counterpart of the field of the same |
| 1017 | name in the rcu_node</tt> structure. | ||
| 1066 | They may each lag up to one behind their <tt>rcu_node</tt> | 1018 | They may each lag up to one behind their <tt>rcu_node</tt> |
| 1067 | counterparts, but in <tt>CONFIG_NO_HZ_IDLE</tt> and | 1019 | counterparts, but in <tt>CONFIG_NO_HZ_IDLE</tt> and |
| 1068 | <tt>CONFIG_NO_HZ_FULL</tt> kernels can lag | 1020 | <tt>CONFIG_NO_HZ_FULL</tt> kernels can lag |
| @@ -1103,10 +1055,6 @@ CPU has remained idle for so long that the | |||
| 1103 | <tt>gp_seq</tt> counter is in danger of overflow, which | 1055 | <tt>gp_seq</tt> counter is in danger of overflow, which |
| 1104 | will cause the CPU to disregard the values of its counters on | 1056 | will cause the CPU to disregard the values of its counters on |
| 1105 | its next exit from idle. | 1057 | its next exit from idle. |
| 1106 | Finally, the <tt>rcu_qs_ctr_snap</tt> field is used to detect | ||
| 1107 | cases where a given operation has resulted in a quiescent state | ||
| 1108 | for all flavors of RCU, for example, <tt>cond_resched()</tt> | ||
| 1109 | when RCU has indicated a need for quiescent states. | ||
| 1110 | 1058 | ||
| 1111 | <h5>RCU Callback Handling</h5> | 1059 | <h5>RCU Callback Handling</h5> |
| 1112 | 1060 | ||
| @@ -1179,26 +1127,22 @@ Finally, the <tt>->dynticks_fqs</tt> field is used to | |||
| 1179 | count the number of times this CPU is determined to be in | 1127 | count the number of times this CPU is determined to be in |
| 1180 | dyntick-idle state, and is used for tracing and debugging purposes. | 1128 | dyntick-idle state, and is used for tracing and debugging purposes. |
| 1181 | 1129 | ||
| 1182 | <h3><a name="The rcu_dynticks Structure"> | 1130 | <p> |
| 1183 | The <tt>rcu_dynticks</tt> Structure</a></h3> | 1131 | This portion of the rcu_data structure is declared as follows: |
| 1184 | |||
| 1185 | <p>The <tt>rcu_dynticks</tt> maintains the per-CPU dyntick-idle state | ||
| 1186 | for the corresponding CPU. | ||
| 1187 | Unlike the other structures, <tt>rcu_dynticks</tt> is not | ||
| 1188 | replicated over the different flavors of RCU. | ||
| 1189 | The fields in this structure may be accessed only from the corresponding | ||
| 1190 | CPU (and from tracing) unless otherwise stated. | ||
| 1191 | Its fields are as follows: | ||
| 1192 | 1132 | ||
| 1193 | <pre> | 1133 | <pre> |
| 1194 | 1 long dynticks_nesting; | 1134 | 1 long dynticks_nesting; |
| 1195 | 2 long dynticks_nmi_nesting; | 1135 | 2 long dynticks_nmi_nesting; |
| 1196 | 3 atomic_t dynticks; | 1136 | 3 atomic_t dynticks; |
| 1197 | 4 bool rcu_need_heavy_qs; | 1137 | 4 bool rcu_need_heavy_qs; |
| 1198 | 5 unsigned long rcu_qs_ctr; | 1138 | 5 bool rcu_urgent_qs; |
| 1199 | 6 bool rcu_urgent_qs; | ||
| 1200 | </pre> | 1139 | </pre> |
| 1201 | 1140 | ||
| 1141 | <p>These fields in the rcu_data structure maintain the per-CPU dyntick-idle | ||
| 1142 | state for the corresponding CPU. | ||
| 1143 | The fields may be accessed only from the corresponding CPU (and from tracing) | ||
| 1144 | unless otherwise stated. | ||
| 1145 | |||
| 1202 | <p>The <tt>->dynticks_nesting</tt> field counts the | 1146 | <p>The <tt>->dynticks_nesting</tt> field counts the |
| 1203 | nesting depth of process execution, so that in normal circumstances | 1147 | nesting depth of process execution, so that in normal circumstances |
| 1204 | this counter has value zero or one. | 1148 | this counter has value zero or one. |
| @@ -1240,19 +1184,12 @@ it is willing to call for heavy-weight dyntick-counter operations. | |||
| 1240 | This flag is checked by RCU's context-switch and <tt>cond_resched()</tt> | 1184 | This flag is checked by RCU's context-switch and <tt>cond_resched()</tt> |
| 1241 | code, which provide a momentary idle sojourn in response. | 1185 | code, which provide a momentary idle sojourn in response. |
| 1242 | 1186 | ||
| 1243 | </p><p>The <tt>->rcu_qs_ctr</tt> field is used to record | ||
| 1244 | quiescent states from <tt>cond_resched()</tt>. | ||
| 1245 | Because <tt>cond_resched()</tt> can execute quite frequently, this | ||
| 1246 | must be quite lightweight, as in a non-atomic increment of this | ||
| 1247 | per-CPU field. | ||
| 1248 | |||
| 1249 | </p><p>Finally, the <tt>->rcu_urgent_qs</tt> field is used to record | 1187 | </p><p>Finally, the <tt>->rcu_urgent_qs</tt> field is used to record |
| 1250 | the fact that the RCU core code would really like to see a quiescent | 1188 | the fact that the RCU core code would really like to see a quiescent state from |
| 1251 | state from the corresponding CPU, with the various other fields indicating | 1189 | the corresponding CPU, with the various other fields indicating just how badly |
| 1252 | just how badly RCU wants this quiescent state. | 1190 | RCU wants this quiescent state. |
| 1253 | This flag is checked by RCU's context-switch and <tt>cond_resched()</tt> | 1191 | This flag is checked by RCU's context-switch path |
| 1254 | code, which, if nothing else, non-atomically increment <tt>->rcu_qs_ctr</tt> | 1192 | (<tt>rcu_note_context_switch</tt>) and the cond_resched code. |
| 1255 | in response. | ||
| 1256 | 1193 | ||
| 1257 | <table> | 1194 | <table> |
| 1258 | <tr><th> </th></tr> | 1195 | <tr><th> </th></tr> |
| @@ -1425,11 +1362,11 @@ the last part of the array, thus traversing only the leaf | |||
| 1425 | <h3><a name="Summary"> | 1362 | <h3><a name="Summary"> |
| 1426 | Summary</a></h3> | 1363 | Summary</a></h3> |
| 1427 | 1364 | ||
| 1428 | So each flavor of RCU is represented by an <tt>rcu_state</tt> structure, | 1365 | So the state of RCU is represented by an <tt>rcu_state</tt> structure, |
| 1429 | which contains a combining tree of <tt>rcu_node</tt> and | 1366 | which contains a combining tree of <tt>rcu_node</tt> and |
| 1430 | <tt>rcu_data</tt> structures. | 1367 | <tt>rcu_data</tt> structures. |
| 1431 | Finally, in <tt>CONFIG_NO_HZ_IDLE</tt> kernels, each CPU's dyntick-idle | 1368 | Finally, in <tt>CONFIG_NO_HZ_IDLE</tt> kernels, each CPU's dyntick-idle |
| 1432 | state is tracked by an <tt>rcu_dynticks</tt> structure. | 1369 | state is tracked by dynticks-related fields in the <tt>rcu_data</tt> structure. |
| 1433 | 1370 | ||
| 1434 | If you made it this far, you are well prepared to read the code | 1371 | If you made it this far, you are well prepared to read the code |
| 1435 | walkthroughs in the other articles in this series. | 1372 | walkthroughs in the other articles in this series. |
diff --git a/Documentation/RCU/Design/Data-Structures/blkd_task.svg b/Documentation/RCU/Design/Data-Structures/blkd_task.svg index 00e810bb8419..bed13e9ecab8 100644 --- a/Documentation/RCU/Design/Data-Structures/blkd_task.svg +++ b/Documentation/RCU/Design/Data-Structures/blkd_task.svg | |||
| @@ -14,12 +14,12 @@ | |||
| 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | 14 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
| 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
| 16 | width="10.1in" | 16 | width="10.1in" |
| 17 | height="8.6in" | 17 | height="6.5999999in" |
| 18 | viewBox="-44 -44 12088 10288" | 18 | viewBox="-44 -44 12088 7895.4414" |
| 19 | id="svg2" | 19 | id="svg2" |
| 20 | version="1.1" | 20 | version="1.1" |
| 21 | inkscape:version="0.48.4 r9939" | 21 | inkscape:version="0.92.2pre0 (973e216, 2017-07-25)" |
| 22 | sodipodi:docname="blkd_task.fig"> | 22 | sodipodi:docname="blkd_task.svg"> |
| 23 | <metadata | 23 | <metadata |
| 24 | id="metadata212"> | 24 | id="metadata212"> |
| 25 | <rdf:RDF> | 25 | <rdf:RDF> |
| @@ -37,15 +37,16 @@ | |||
| 37 | <marker | 37 | <marker |
| 38 | inkscape:stockid="Arrow1Mend" | 38 | inkscape:stockid="Arrow1Mend" |
| 39 | orient="auto" | 39 | orient="auto" |
| 40 | refY="0.0" | 40 | refY="0" |
| 41 | refX="0.0" | 41 | refX="0" |
| 42 | id="Arrow1Mend" | 42 | id="Arrow1Mend" |
| 43 | style="overflow:visible;"> | 43 | style="overflow:visible"> |
| 44 | <path | 44 | <path |
| 45 | id="path3970" | 45 | id="path3970" |
| 46 | d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " | 46 | d="M 0,0 5,-5 -12.5,0 5,5 Z" |
| 47 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" | 47 | style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt" |
| 48 | transform="scale(0.4) rotate(180) translate(10,0)" /> | 48 | transform="matrix(-0.4,0,0,-0.4,-4,0)" |
| 49 | inkscape:connector-curvature="0" /> | ||
| 49 | </marker> | 50 | </marker> |
| 50 | </defs> | 51 | </defs> |
| 51 | <sodipodi:namedview | 52 | <sodipodi:namedview |
| @@ -57,787 +58,574 @@ | |||
| 57 | guidetolerance="10" | 58 | guidetolerance="10" |
| 58 | inkscape:pageopacity="0" | 59 | inkscape:pageopacity="0" |
| 59 | inkscape:pageshadow="2" | 60 | inkscape:pageshadow="2" |
| 60 | inkscape:window-width="1087" | 61 | inkscape:window-width="1920" |
| 61 | inkscape:window-height="1144" | 62 | inkscape:window-height="1019" |
| 62 | id="namedview208" | 63 | id="namedview208" |
| 63 | showgrid="false" | 64 | showgrid="false" |
| 64 | inkscape:zoom="1.0495049" | 65 | inkscape:zoom="1.0495049" |
| 65 | inkscape:cx="454.50003" | 66 | inkscape:cx="456.40569" |
| 66 | inkscape:cy="387.00003" | 67 | inkscape:cy="348.88682" |
| 67 | inkscape:window-x="833" | 68 | inkscape:window-x="0" |
| 68 | inkscape:window-y="28" | 69 | inkscape:window-y="0" |
| 69 | inkscape:window-maximized="0" | 70 | inkscape:window-maximized="1" |
| 70 | inkscape:current-layer="g4" /> | 71 | inkscape:current-layer="g4" |
| 72 | showguides="false" /> | ||
| 71 | <g | 73 | <g |
| 72 | style="stroke-width:.025in; fill:none" | 74 | style="fill:none;stroke-width:0.025in" |
| 73 | id="g4"> | 75 | id="g4" |
| 76 | transform="translate(0,-2393.6637)"> | ||
| 74 | <!-- Line: box --> | 77 | <!-- Line: box --> |
| 75 | <rect | ||
| 76 | x="450" | ||
| 77 | y="0" | ||
| 78 | width="6300" | ||
| 79 | height="7350" | ||
| 80 | rx="0" | ||
| 81 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | ||
| 82 | id="rect6" /> | ||
| 83 | <!-- Line: box --> | 78 | <!-- Line: box --> |
| 84 | <rect | ||
| 85 | x="4950" | ||
| 86 | y="4950" | ||
| 87 | width="1500" | ||
| 88 | height="900" | ||
| 89 | rx="0" | ||
| 90 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | ||
| 91 | id="rect8" /> | ||
| 92 | <!-- Line: box --> | 79 | <!-- Line: box --> |
| 93 | <rect | ||
| 94 | x="750" | ||
| 95 | y="600" | ||
| 96 | width="5700" | ||
| 97 | height="3750" | ||
| 98 | rx="0" | ||
| 99 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | ||
| 100 | id="rect10" /> | ||
| 101 | <!-- Line --> | 80 | <!-- Line --> |
| 102 | <polyline | ||
| 103 | points="5250,8100 5688,5912 " | ||
| 104 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 105 | id="polyline12" /> | ||
| 106 | <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790--> | 81 | <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790--> |
| 107 | <polyline | 82 | <polyline |
| 108 | points="5714 6068 5704 5822 5598 6044 " | 83 | points="5714 6068 5704 5822 5598 6044 " |
| 109 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 84 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 110 | id="polyline14" /> | 85 | id="polyline14" |
| 86 | transform="translate(23.757862,2185.7233)" /> | ||
| 111 | <!-- Line --> | 87 | <!-- Line --> |
| 112 | <polyline | ||
| 113 | points="4050,9300 4486,7262 " | ||
| 114 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 115 | id="polyline16" /> | ||
| 116 | <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140--> | 88 | <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140--> |
| 117 | <polyline | 89 | <polyline |
| 118 | points="4514 7418 4506 7172 4396 7394 " | 90 | points="4514 7418 4506 7172 4396 7394 " |
| 119 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 91 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 120 | id="polyline18" /> | 92 | id="polyline18" |
| 93 | transform="translate(23.757862,2185.7233)" /> | ||
| 121 | <!-- Line --> | 94 | <!-- Line --> |
| 122 | <polyline | ||
| 123 | points="1040,9300 1476,7262 " | ||
| 124 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 125 | id="polyline20" /> | ||
| 126 | <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140--> | 95 | <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140--> |
| 127 | <polyline | 96 | <polyline |
| 128 | points="1504 7418 1496 7172 1386 7394 " | 97 | points="1504 7418 1496 7172 1386 7394 " |
| 129 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 98 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 130 | id="polyline22" /> | 99 | id="polyline22" |
| 100 | transform="translate(23.757862,2185.7233)" /> | ||
| 131 | <!-- Line --> | 101 | <!-- Line --> |
| 132 | <polyline | ||
| 133 | points="2240,8100 2676,6062 " | ||
| 134 | style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | ||
| 135 | id="polyline24" /> | ||
| 136 | <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940--> | 102 | <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940--> |
| 137 | <polyline | 103 | <polyline |
| 138 | points="2704 6218 2696 5972 2586 6194 " | 104 | points="2704 6218 2696 5972 2586 6194 " |
| 139 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " | 105 | style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8" |
| 140 | id="polyline26" /> | 106 | id="polyline26" |
| 107 | transform="translate(23.757862,2185.7233)" /> | ||
| 141 | <!-- Line: box --> | 108 | <!-- Line: box --> |
| 142 | <rect | 109 | <rect |
| 143 | x="0" | 110 | x="23.757858" |
| 144 | y="450" | 111 | y="2635.7231" |
| 145 | width="6300" | 112 | width="6300" |
| 146 | height="7350" | 113 | height="7350" |
| 147 | rx="0" | 114 | rx="0" |
| 148 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " | 115 | style="fill:#ffffff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 149 | id="rect28" /> | 116 | id="rect28" /> |
| 150 | <!-- Line: box --> | 117 | <!-- Line: box --> |
| 151 | <rect | 118 | <rect |
| 152 | x="300" | 119 | x="323.75787" |
| 153 | y="1050" | 120 | y="3235.7231" |
| 154 | width="5700" | 121 | width="5700" |
| 155 | height="3750" | 122 | height="3750" |
| 156 | rx="0" | 123 | rx="0" |
| 157 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " | 124 | style="fill:#ffff00;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 158 | id="rect30" /> | 125 | id="rect30" /> |
| 159 | <!-- Line --> | 126 | <!-- Line --> |
| 160 | <polyline | 127 | <polyline |
| 161 | points="1350,3450 2350,2590 " | 128 | points="1350,3450 2350,2590 " |
| 162 | style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 129 | style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 163 | id="polyline32" /> | 130 | id="polyline32" |
| 131 | transform="translate(23.757862,2185.7233)" /> | ||
| 164 | <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510--> | 132 | <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510--> |
| 165 | <!-- Line --> | 133 | <!-- Line --> |
| 166 | <polyline | 134 | <polyline |
| 167 | points="4950,3450 3948,2590 " | 135 | points="4950,3450 3948,2590 " |
| 168 | style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 136 | style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 169 | id="polyline36" /> | 137 | id="polyline36" |
| 138 | transform="translate(23.757862,2185.7233)" /> | ||
| 170 | <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510--> | 139 | <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510--> |
| 171 | <!-- Line --> | 140 | <!-- Line --> |
| 172 | <polyline | 141 | <polyline |
| 173 | points="4050,6600 4050,4414 " | 142 | points="4050,6600 4050,4414 " |
| 174 | style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 143 | style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 175 | id="polyline40" /> | 144 | id="polyline40" |
| 145 | transform="translate(23.757862,2185.7233)" /> | ||
| 176 | <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290--> | 146 | <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290--> |
| 177 | <!-- Line --> | 147 | <!-- Line --> |
| 178 | <polyline | 148 | <polyline |
| 179 | points="1050,6600 1050,4414 " | 149 | points="1050,6600 1050,4414 " |
| 180 | style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 150 | style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 181 | id="polyline44" /> | 151 | id="polyline44" |
| 152 | transform="translate(23.757862,2185.7233)" /> | ||
| 182 | <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290--> | 153 | <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290--> |
| 183 | <!-- Line --> | 154 | <!-- Line --> |
| 184 | <polyline | 155 | <polyline |
| 185 | points="2250,5400 2250,4414 " | 156 | points="2250,5400 2250,4414 " |
| 186 | style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 157 | style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 187 | id="polyline48" /> | 158 | id="polyline48" |
| 159 | transform="translate(23.757862,2185.7233)" /> | ||
| 188 | <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290--> | 160 | <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290--> |
| 189 | <!-- Line --> | 161 | <!-- Line --> |
| 190 | <polyline | ||
| 191 | points="2250,8100 2250,6364 " | ||
| 192 | style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 193 | id="polyline52" /> | ||
| 194 | <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240--> | 162 | <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240--> |
| 195 | <!-- Line --> | 163 | <!-- Line --> |
| 196 | <polyline | ||
| 197 | points="1050,9300 1050,7564 " | ||
| 198 | style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 199 | id="polyline56" /> | ||
| 200 | <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440--> | 164 | <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440--> |
| 201 | <!-- Line --> | 165 | <!-- Line --> |
| 202 | <polyline | ||
| 203 | points="4050,9300 4050,7564 " | ||
| 204 | style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 205 | id="polyline60" /> | ||
| 206 | <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440--> | 166 | <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440--> |
| 207 | <!-- Line --> | 167 | <!-- Line --> |
| 208 | <polyline | ||
| 209 | points="5250,8100 5250,6364 " | ||
| 210 | style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | ||
| 211 | id="polyline64" /> | ||
| 212 | <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240--> | 168 | <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240--> |
| 213 | <!-- Circle --> | 169 | <!-- Circle --> |
| 214 | <circle | 170 | <circle |
| 215 | cx="2850" | 171 | cx="2873.7581" |
| 216 | cy="3900" | 172 | cy="6085.7236" |
| 217 | r="76" | 173 | r="76" |
| 218 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 174 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 219 | id="circle68" /> | 175 | id="circle68" /> |
| 220 | <!-- Circle --> | 176 | <!-- Circle --> |
| 221 | <circle | 177 | <circle |
| 222 | cx="3150" | 178 | cx="3173.7581" |
| 223 | cy="3900" | 179 | cy="6085.7236" |
| 224 | r="76" | 180 | r="76" |
| 225 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 181 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 226 | id="circle70" /> | 182 | id="circle70" /> |
| 227 | <!-- Circle --> | 183 | <!-- Circle --> |
| 228 | <circle | 184 | <circle |
| 229 | cx="3450" | 185 | cx="3473.7581" |
| 230 | cy="3900" | 186 | cy="6085.7236" |
| 231 | r="76" | 187 | r="76" |
| 232 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 188 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 233 | id="circle72" /> | 189 | id="circle72" /> |
| 234 | <!-- Circle --> | 190 | <!-- Circle --> |
| 235 | <circle | 191 | <circle |
| 236 | cx="1350" | 192 | cx="1373.7578" |
| 237 | cy="5100" | 193 | cy="7285.7236" |
| 238 | r="76" | 194 | r="76" |
| 239 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 195 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 240 | id="circle74" /> | 196 | id="circle74" /> |
| 241 | <!-- Circle --> | 197 | <!-- Circle --> |
| 242 | <circle | 198 | <circle |
| 243 | cx="1650" | 199 | cx="1673.7578" |
| 244 | cy="5100" | 200 | cy="7285.7236" |
| 245 | r="76" | 201 | r="76" |
| 246 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 202 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 247 | id="circle76" /> | 203 | id="circle76" /> |
| 248 | <!-- Circle --> | 204 | <!-- Circle --> |
| 249 | <circle | 205 | <circle |
| 250 | cx="1950" | 206 | cx="1973.7578" |
| 251 | cy="5100" | 207 | cy="7285.7236" |
| 252 | r="76" | 208 | r="76" |
| 253 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 209 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 254 | id="circle78" /> | 210 | id="circle78" /> |
| 255 | <!-- Circle --> | 211 | <!-- Circle --> |
| 256 | <circle | 212 | <circle |
| 257 | cx="4350" | 213 | cx="4373.7578" |
| 258 | cy="5100" | 214 | cy="7285.7236" |
| 259 | r="76" | 215 | r="76" |
| 260 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 216 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 261 | id="circle80" /> | 217 | id="circle80" /> |
| 262 | <!-- Circle --> | 218 | <!-- Circle --> |
| 263 | <circle | 219 | <circle |
| 264 | cx="4650" | 220 | cx="4673.7578" |
| 265 | cy="5100" | 221 | cy="7285.7236" |
| 266 | r="76" | 222 | r="76" |
| 267 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 223 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 268 | id="circle82" /> | 224 | id="circle82" /> |
| 269 | <!-- Circle --> | 225 | <!-- Circle --> |
| 270 | <circle | 226 | <circle |
| 271 | cx="4950" | 227 | cx="4973.7578" |
| 272 | cy="5100" | 228 | cy="7285.7236" |
| 273 | r="76" | 229 | r="76" |
| 274 | style="fill:#000000;stroke:#000000;stroke-width:14;" | 230 | style="fill:#000000;stroke:#000000;stroke-width:14" |
| 275 | id="circle84" /> | 231 | id="circle84" /> |
| 276 | <!-- Line: box --> | 232 | <!-- Line: box --> |
| 277 | <rect | 233 | <rect |
| 278 | x="750" | 234 | x="773.75781" |
| 279 | y="3450" | 235 | y="5635.7236" |
| 280 | width="1800" | 236 | width="1800" |
| 281 | height="900" | 237 | height="900" |
| 282 | rx="0" | 238 | rx="0" |
| 283 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 239 | style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 284 | id="rect86" /> | 240 | id="rect86" /> |
| 285 | <!-- Line: box --> | 241 | <!-- Line: box --> |
| 286 | <rect | 242 | <rect |
| 287 | x="300" | 243 | x="323.75787" |
| 288 | y="6600" | 244 | y="8785.7227" |
| 289 | width="1500" | 245 | width="1500" |
| 290 | height="900" | 246 | height="900" |
| 291 | rx="0" | 247 | rx="0" |
| 292 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 248 | style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 293 | id="rect88" /> | 249 | id="rect88" /> |
| 294 | <!-- Line: box --> | 250 | <!-- Line: box --> |
| 295 | <rect | 251 | <rect |
| 296 | x="4500" | 252 | x="4523.7578" |
| 297 | y="5400" | 253 | y="7585.7236" |
| 298 | width="1500" | 254 | width="1500" |
| 299 | height="900" | 255 | height="900" |
| 300 | rx="0" | 256 | rx="0" |
| 301 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 257 | style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 302 | id="rect90" /> | 258 | id="rect90" /> |
| 303 | <!-- Line: box --> | 259 | <!-- Line: box --> |
| 304 | <rect | 260 | <rect |
| 305 | x="3300" | 261 | x="3323.7581" |
| 306 | y="6600" | 262 | y="8785.7227" |
| 307 | width="1500" | 263 | width="1500" |
| 308 | height="900" | 264 | height="900" |
| 309 | rx="0" | 265 | rx="0" |
| 310 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 266 | style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 311 | id="rect92" /> | 267 | id="rect92" /> |
| 312 | <!-- Line: box --> | 268 | <!-- Line: box --> |
| 313 | <rect | 269 | <rect |
| 314 | x="2250" | 270 | x="2273.7581" |
| 315 | y="1650" | 271 | y="3835.7231" |
| 316 | width="1800" | 272 | width="1800" |
| 317 | height="900" | 273 | height="900" |
| 318 | rx="0" | 274 | rx="0" |
| 319 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 275 | style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 320 | id="rect94" /> | 276 | id="rect94" /> |
| 321 | <!-- Line: box --> | 277 | <!-- Line: box --> |
| 322 | <rect | ||
| 323 | x="0" | ||
| 324 | y="9300" | ||
| 325 | width="2100" | ||
| 326 | height="900" | ||
| 327 | rx="0" | ||
| 328 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 329 | id="rect96" /> | ||
| 330 | <!-- Line: box --> | 278 | <!-- Line: box --> |
| 331 | <rect | ||
| 332 | x="1350" | ||
| 333 | y="8100" | ||
| 334 | width="2100" | ||
| 335 | height="900" | ||
| 336 | rx="0" | ||
| 337 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 338 | id="rect98" /> | ||
| 339 | <!-- Line: box --> | 279 | <!-- Line: box --> |
| 340 | <rect | ||
| 341 | x="3000" | ||
| 342 | y="9300" | ||
| 343 | width="2100" | ||
| 344 | height="900" | ||
| 345 | rx="0" | ||
| 346 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 347 | id="rect100" /> | ||
| 348 | <!-- Line: box --> | 280 | <!-- Line: box --> |
| 349 | <rect | ||
| 350 | x="4350" | ||
| 351 | y="8100" | ||
| 352 | width="2100" | ||
| 353 | height="900" | ||
| 354 | rx="0" | ||
| 355 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; " | ||
| 356 | id="rect102" /> | ||
| 357 | <!-- Line: box --> | 281 | <!-- Line: box --> |
| 358 | <rect | 282 | <rect |
| 359 | x="1500" | 283 | x="1523.7578" |
| 360 | y="5400" | 284 | y="7585.7236" |
| 361 | width="1500" | 285 | width="1500" |
| 362 | height="900" | 286 | height="900" |
| 363 | rx="0" | 287 | rx="0" |
| 364 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " | 288 | style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 365 | id="rect104" /> | 289 | id="rect104" /> |
| 366 | <!-- Line --> | 290 | <!-- Line --> |
| 367 | <polygon | 291 | <polygon |
| 368 | points="5550,3450 7350,2850 7350,5100 5550,4350 5550,3450 " | 292 | points="7350,2850 7350,5100 5550,4350 5550,3450 " |
| 369 | style="stroke:#000000;stroke-width:14; stroke-linejoin:miter; stroke-linecap:butt; stroke-dasharray:120 120;fill:#ffbfbf; " | 293 | style="fill:#ffbfbf;stroke:#000000;stroke-width:14;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:120, 120" |
| 370 | id="polygon106" /> | 294 | id="polygon106" |
| 295 | transform="translate(23.757862,2185.7233)" /> | ||
| 371 | <!-- Line --> | 296 | <!-- Line --> |
| 372 | <polyline | 297 | <polyline |
| 373 | points="9300,3150 10734,3150 " | 298 | points="9300,3150 10734,3150 " |
| 374 | style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 299 | style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 375 | id="polyline108" /> | 300 | id="polyline108" |
| 301 | transform="translate(23.757862,2185.7233)" /> | ||
| 376 | <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150--> | 302 | <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150--> |
| 377 | <!-- Line: box --> | 303 | <!-- Line: box --> |
| 378 | <rect | 304 | <rect |
| 379 | x="10800" | 305 | x="10823.758" |
| 380 | y="2850" | 306 | y="5035.7236" |
| 381 | width="1200" | 307 | width="1200" |
| 382 | height="750" | 308 | height="750" |
| 383 | rx="0" | 309 | rx="0" |
| 384 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | 310 | style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 385 | id="rect112" /> | 311 | id="rect112" /> |
| 386 | <!-- Line --> | 312 | <!-- Line --> |
| 387 | <polyline | 313 | <polyline |
| 388 | points="11400,3600 11400,4284 " | 314 | points="11400,3600 11400,4284 " |
| 389 | style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 315 | style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 390 | id="polyline114" /> | 316 | id="polyline114" |
| 317 | transform="translate(23.757862,2185.7233)" /> | ||
| 391 | <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410--> | 318 | <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410--> |
| 392 | <!-- Line: box --> | 319 | <!-- Line: box --> |
| 393 | <rect | 320 | <rect |
| 394 | x="10800" | 321 | x="10823.758" |
| 395 | y="4350" | 322 | y="6535.7236" |
| 396 | width="1200" | 323 | width="1200" |
| 397 | height="750" | 324 | height="750" |
| 398 | rx="0" | 325 | rx="0" |
| 399 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | 326 | style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 400 | id="rect118" /> | 327 | id="rect118" /> |
| 401 | <!-- Line --> | 328 | <!-- Line --> |
| 402 | <polyline | 329 | <polyline |
| 403 | points="11400,5100 11400,5784 " | 330 | points="11400,5100 11400,5784 " |
| 404 | style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 331 | style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 405 | id="polyline120" /> | 332 | id="polyline120" |
| 333 | transform="translate(23.757862,2185.7233)" /> | ||
| 406 | <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910--> | 334 | <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910--> |
| 407 | <!-- Line: box --> | 335 | <!-- Line: box --> |
| 408 | <rect | 336 | <rect |
| 409 | x="10800" | 337 | x="10823.758" |
| 410 | y="5850" | 338 | y="8035.7236" |
| 411 | width="1200" | 339 | width="1200" |
| 412 | height="750" | 340 | height="750" |
| 413 | rx="0" | 341 | rx="0" |
| 414 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " | 342 | style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 415 | id="rect124" /> | 343 | id="rect124" /> |
| 416 | <!-- Line --> | 344 | <!-- Line --> |
| 417 | <polyline | 345 | <polyline |
| 418 | points="9300,3900 9900,3900 9900,4650 10734,4650 " | 346 | points="9300,3900 9900,3900 9900,4650 10734,4650 " |
| 419 | style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 347 | style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 420 | id="polyline126" /> | 348 | id="polyline126" |
| 349 | transform="translate(23.757862,2185.7233)" /> | ||
| 421 | <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650--> | 350 | <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650--> |
| 422 | <!-- Line --> | 351 | <!-- Line --> |
| 423 | <polyline | 352 | <polyline |
| 424 | points="9300,4650 9600,4650 9600,6150 10734,6150 " | 353 | points="9300,4650 9600,4650 9600,6150 10734,6150 " |
| 425 | style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 354 | style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 426 | id="polyline130" /> | 355 | id="polyline130" |
| 356 | transform="translate(23.757862,2185.7233)" /> | ||
| 427 | <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150--> | 357 | <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150--> |
| 428 | <!-- Text --> | 358 | <!-- Text --> |
| 429 | <text | ||
| 430 | xml:space="preserve" | ||
| 431 | x="6450" | ||
| 432 | y="300" | ||
| 433 | fill="#000000" | ||
| 434 | font-family="Helvetica" | ||
| 435 | font-style="normal" | ||
| 436 | font-weight="normal" | ||
| 437 | font-size="192" | ||
| 438 | text-anchor="end" | ||
| 439 | id="text134">rcu_bh</text> | ||
| 440 | <!-- Text --> | 359 | <!-- Text --> |
| 441 | <text | 360 | <text |
| 442 | xml:space="preserve" | 361 | xml:space="preserve" |
| 443 | x="3150" | 362 | x="3173.7581" |
| 444 | y="1950" | 363 | y="4135.7231" |
| 445 | fill="#000000" | ||
| 446 | font-family="Courier" | ||
| 447 | font-style="normal" | 364 | font-style="normal" |
| 448 | font-weight="bold" | 365 | font-weight="bold" |
| 449 | font-size="192" | 366 | font-size="192" |
| 450 | text-anchor="middle" | 367 | id="text136" |
| 451 | id="text136">struct</text> | 368 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 452 | <!-- Text --> | 369 | <!-- Text --> |
| 453 | <text | 370 | <text |
| 454 | xml:space="preserve" | 371 | xml:space="preserve" |
| 455 | x="3150" | 372 | x="3173.7581" |
| 456 | y="2250" | 373 | y="4435.7236" |
| 457 | fill="#000000" | ||
| 458 | font-family="Courier" | ||
| 459 | font-style="normal" | 374 | font-style="normal" |
| 460 | font-weight="bold" | 375 | font-weight="bold" |
| 461 | font-size="192" | 376 | font-size="192" |
| 462 | text-anchor="middle" | 377 | id="text138" |
| 463 | id="text138">rcu_node</text> | 378 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_node</text> |
| 464 | <!-- Text --> | 379 | <!-- Text --> |
| 465 | <text | 380 | <text |
| 466 | xml:space="preserve" | 381 | xml:space="preserve" |
| 467 | x="1650" | 382 | x="1673.7578" |
| 468 | y="3750" | 383 | y="5935.7236" |
| 469 | fill="#000000" | ||
| 470 | font-family="Courier" | ||
| 471 | font-style="normal" | 384 | font-style="normal" |
| 472 | font-weight="bold" | 385 | font-weight="bold" |
| 473 | font-size="192" | 386 | font-size="192" |
| 474 | text-anchor="middle" | 387 | id="text140" |
| 475 | id="text140">struct</text> | 388 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 476 | <!-- Text --> | 389 | <!-- Text --> |
| 477 | <text | 390 | <text |
| 478 | xml:space="preserve" | 391 | xml:space="preserve" |
| 479 | x="1650" | 392 | x="1673.7578" |
| 480 | y="4050" | 393 | y="6235.7236" |
| 481 | fill="#000000" | ||
| 482 | font-family="Courier" | ||
| 483 | font-style="normal" | 394 | font-style="normal" |
| 484 | font-weight="bold" | 395 | font-weight="bold" |
| 485 | font-size="192" | 396 | font-size="192" |
| 486 | text-anchor="middle" | 397 | id="text142" |
| 487 | id="text142">rcu_node</text> | 398 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_node</text> |
| 488 | <!-- Text --> | 399 | <!-- Text --> |
| 489 | <text | 400 | <text |
| 490 | xml:space="preserve" | 401 | xml:space="preserve" |
| 491 | x="2250" | 402 | x="2273.7581" |
| 492 | y="5700" | 403 | y="7885.7236" |
| 493 | fill="#000000" | ||
| 494 | font-family="Courier" | ||
| 495 | font-style="normal" | 404 | font-style="normal" |
| 496 | font-weight="bold" | 405 | font-weight="bold" |
| 497 | font-size="192" | 406 | font-size="192" |
| 498 | text-anchor="middle" | 407 | id="text144" |
| 499 | id="text144">struct</text> | 408 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 500 | <!-- Text --> | 409 | <!-- Text --> |
| 501 | <text | 410 | <text |
| 502 | xml:space="preserve" | 411 | xml:space="preserve" |
| 503 | x="2250" | 412 | x="2273.7581" |
| 504 | y="6000" | 413 | y="8185.7236" |
| 505 | fill="#000000" | ||
| 506 | font-family="Courier" | ||
| 507 | font-style="normal" | 414 | font-style="normal" |
| 508 | font-weight="bold" | 415 | font-weight="bold" |
| 509 | font-size="192" | 416 | font-size="192" |
| 510 | text-anchor="middle" | 417 | id="text146" |
| 511 | id="text146">rcu_data</text> | 418 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text> |
| 512 | <!-- Text --> | 419 | <!-- Text --> |
| 513 | <text | 420 | <text |
| 514 | xml:space="preserve" | 421 | xml:space="preserve" |
| 515 | x="1050" | 422 | x="1073.7578" |
| 516 | y="6900" | 423 | y="9085.7227" |
| 517 | fill="#000000" | ||
| 518 | font-family="Courier" | ||
| 519 | font-style="normal" | 424 | font-style="normal" |
| 520 | font-weight="bold" | 425 | font-weight="bold" |
| 521 | font-size="192" | 426 | font-size="192" |
| 522 | text-anchor="middle" | 427 | id="text148" |
| 523 | id="text148">struct</text> | 428 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 524 | <!-- Text --> | 429 | <!-- Text --> |
| 525 | <text | 430 | <text |
| 526 | xml:space="preserve" | 431 | xml:space="preserve" |
| 527 | x="1050" | 432 | x="1073.7578" |
| 528 | y="7200" | 433 | y="9385.7227" |
| 529 | fill="#000000" | ||
| 530 | font-family="Courier" | ||
| 531 | font-style="normal" | 434 | font-style="normal" |
| 532 | font-weight="bold" | 435 | font-weight="bold" |
| 533 | font-size="192" | 436 | font-size="192" |
| 534 | text-anchor="middle" | 437 | id="text150" |
| 535 | id="text150">rcu_data</text> | 438 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text> |
| 536 | <!-- Text --> | 439 | <!-- Text --> |
| 537 | <text | 440 | <text |
| 538 | xml:space="preserve" | 441 | xml:space="preserve" |
| 539 | x="5250" | 442 | x="5273.7578" |
| 540 | y="5700" | 443 | y="7885.7236" |
| 541 | fill="#000000" | ||
| 542 | font-family="Courier" | ||
| 543 | font-style="normal" | 444 | font-style="normal" |
| 544 | font-weight="bold" | 445 | font-weight="bold" |
| 545 | font-size="192" | 446 | font-size="192" |
| 546 | text-anchor="middle" | 447 | id="text152" |
| 547 | id="text152">struct</text> | 448 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 548 | <!-- Text --> | 449 | <!-- Text --> |
| 549 | <text | 450 | <text |
| 550 | xml:space="preserve" | 451 | xml:space="preserve" |
| 551 | x="5250" | 452 | x="5273.7578" |
| 552 | y="6000" | 453 | y="8185.7236" |
| 553 | fill="#000000" | ||
| 554 | font-family="Courier" | ||
| 555 | font-style="normal" | 454 | font-style="normal" |
| 556 | font-weight="bold" | 455 | font-weight="bold" |
| 557 | font-size="192" | 456 | font-size="192" |
| 558 | text-anchor="middle" | 457 | id="text154" |
| 559 | id="text154">rcu_data</text> | 458 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text> |
| 560 | <!-- Text --> | 459 | <!-- Text --> |
| 561 | <text | 460 | <text |
| 562 | xml:space="preserve" | 461 | xml:space="preserve" |
| 563 | x="4050" | 462 | x="4073.7578" |
| 564 | y="6900" | 463 | y="9085.7227" |
| 565 | fill="#000000" | ||
| 566 | font-family="Courier" | ||
| 567 | font-style="normal" | 464 | font-style="normal" |
| 568 | font-weight="bold" | 465 | font-weight="bold" |
| 569 | font-size="192" | 466 | font-size="192" |
| 570 | text-anchor="middle" | 467 | id="text156" |
| 571 | id="text156">struct</text> | 468 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 572 | <!-- Text --> | 469 | <!-- Text --> |
| 573 | <text | 470 | <text |
| 574 | xml:space="preserve" | 471 | xml:space="preserve" |
| 575 | x="4050" | 472 | x="4073.7578" |
| 576 | y="7200" | 473 | y="9385.7227" |
| 577 | fill="#000000" | ||
| 578 | font-family="Courier" | ||
| 579 | font-style="normal" | 474 | font-style="normal" |
| 580 | font-weight="bold" | 475 | font-weight="bold" |
| 581 | font-size="192" | 476 | font-size="192" |
| 582 | text-anchor="middle" | 477 | id="text158" |
| 583 | id="text158">rcu_data</text> | 478 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text> |
| 584 | <!-- Text --> | 479 | <!-- Text --> |
| 585 | <text | 480 | <text |
| 586 | xml:space="preserve" | 481 | xml:space="preserve" |
| 587 | x="450" | 482 | x="473.75784" |
| 588 | y="1350" | 483 | y="3535.7231" |
| 589 | fill="#000000" | ||
| 590 | font-family="Courier" | ||
| 591 | font-style="normal" | 484 | font-style="normal" |
| 592 | font-weight="bold" | 485 | font-weight="bold" |
| 593 | font-size="192" | 486 | font-size="192" |
| 594 | text-anchor="start" | 487 | id="text160" |
| 595 | id="text160">struct rcu_state</text> | 488 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">struct rcu_state</text> |
| 596 | <!-- Text --> | 489 | <!-- Text --> |
| 597 | <text | ||
| 598 | xml:space="preserve" | ||
| 599 | x="1050" | ||
| 600 | y="9600" | ||
| 601 | fill="#000000" | ||
| 602 | font-family="Courier" | ||
| 603 | font-style="normal" | ||
| 604 | font-weight="bold" | ||
| 605 | font-size="192" | ||
| 606 | text-anchor="middle" | ||
| 607 | id="text162">struct</text> | ||
| 608 | <!-- Text --> | 490 | <!-- Text --> |
| 609 | <text | ||
| 610 | xml:space="preserve" | ||
| 611 | x="1050" | ||
| 612 | y="9900" | ||
| 613 | fill="#000000" | ||
| 614 | font-family="Courier" | ||
| 615 | font-style="normal" | ||
| 616 | font-weight="bold" | ||
| 617 | font-size="192" | ||
| 618 | text-anchor="middle" | ||
| 619 | id="text164">rcu_dynticks</text> | ||
| 620 | <!-- Text --> | 491 | <!-- Text --> |
| 621 | <text | ||
| 622 | xml:space="preserve" | ||
| 623 | x="4050" | ||
| 624 | y="9600" | ||
| 625 | fill="#000000" | ||
| 626 | font-family="Courier" | ||
| 627 | font-style="normal" | ||
| 628 | font-weight="bold" | ||
| 629 | font-size="192" | ||
| 630 | text-anchor="middle" | ||
| 631 | id="text166">struct</text> | ||
| 632 | <!-- Text --> | 492 | <!-- Text --> |
| 633 | <text | ||
| 634 | xml:space="preserve" | ||
| 635 | x="4050" | ||
| 636 | y="9900" | ||
| 637 | fill="#000000" | ||
| 638 | font-family="Courier" | ||
| 639 | font-style="normal" | ||
| 640 | font-weight="bold" | ||
| 641 | font-size="192" | ||
| 642 | text-anchor="middle" | ||
| 643 | id="text168">rcu_dynticks</text> | ||
| 644 | <!-- Text --> | 493 | <!-- Text --> |
| 645 | <text | ||
| 646 | xml:space="preserve" | ||
| 647 | x="2400" | ||
| 648 | y="8400" | ||
| 649 | fill="#000000" | ||
| 650 | font-family="Courier" | ||
| 651 | font-style="normal" | ||
| 652 | font-weight="bold" | ||
| 653 | font-size="192" | ||
| 654 | text-anchor="middle" | ||
| 655 | id="text170">struct</text> | ||
| 656 | <!-- Text --> | 494 | <!-- Text --> |
| 657 | <text | ||
| 658 | xml:space="preserve" | ||
| 659 | x="2400" | ||
| 660 | y="8700" | ||
| 661 | fill="#000000" | ||
| 662 | font-family="Courier" | ||
| 663 | font-style="normal" | ||
| 664 | font-weight="bold" | ||
| 665 | font-size="192" | ||
| 666 | text-anchor="middle" | ||
| 667 | id="text172">rcu_dynticks</text> | ||
| 668 | <!-- Text --> | 495 | <!-- Text --> |
| 669 | <text | ||
| 670 | xml:space="preserve" | ||
| 671 | x="5400" | ||
| 672 | y="8400" | ||
| 673 | fill="#000000" | ||
| 674 | font-family="Courier" | ||
| 675 | font-style="normal" | ||
| 676 | font-weight="bold" | ||
| 677 | font-size="192" | ||
| 678 | text-anchor="middle" | ||
| 679 | id="text174">struct</text> | ||
| 680 | <!-- Text --> | 496 | <!-- Text --> |
| 681 | <text | ||
| 682 | xml:space="preserve" | ||
| 683 | x="5400" | ||
| 684 | y="8700" | ||
| 685 | fill="#000000" | ||
| 686 | font-family="Courier" | ||
| 687 | font-style="normal" | ||
| 688 | font-weight="bold" | ||
| 689 | font-size="192" | ||
| 690 | text-anchor="middle" | ||
| 691 | id="text176">rcu_dynticks</text> | ||
| 692 | <!-- Text --> | 497 | <!-- Text --> |
| 693 | <text | 498 | <text |
| 694 | xml:space="preserve" | 499 | xml:space="preserve" |
| 695 | x="6000" | 500 | x="6023.7578" |
| 696 | y="750" | 501 | y="2935.7231" |
| 697 | fill="#000000" | ||
| 698 | font-family="Helvetica" | ||
| 699 | font-style="normal" | 502 | font-style="normal" |
| 700 | font-weight="normal" | 503 | font-weight="normal" |
| 701 | font-size="192" | 504 | font-size="192" |
| 702 | text-anchor="end" | 505 | id="text178" |
| 703 | id="text178">rcu_sched</text> | 506 | style="font-style:normal;font-weight:normal;font-size:192px;font-family:Helvetica;text-anchor:end;fill:#000000">rcu_state</text> |
| 704 | <!-- Text --> | 507 | <!-- Text --> |
| 705 | <text | 508 | <text |
| 706 | xml:space="preserve" | 509 | xml:space="preserve" |
| 707 | x="11400" | 510 | x="11423.758" |
| 708 | y="3300" | 511 | y="5485.7236" |
| 709 | fill="#000000" | ||
| 710 | font-family="Helvetica" | ||
| 711 | font-style="normal" | 512 | font-style="normal" |
| 712 | font-weight="normal" | 513 | font-weight="normal" |
| 713 | font-size="216" | 514 | font-size="216" |
| 714 | text-anchor="middle" | 515 | id="text180" |
| 715 | id="text180">T3</text> | 516 | style="font-style:normal;font-weight:normal;font-size:216px;font-family:Helvetica;text-anchor:middle;fill:#000000">T3</text> |
| 716 | <!-- Text --> | 517 | <!-- Text --> |
| 717 | <text | 518 | <text |
| 718 | xml:space="preserve" | 519 | xml:space="preserve" |
| 719 | x="11400" | 520 | x="11423.758" |
| 720 | y="4800" | 521 | y="6985.7236" |
| 721 | fill="#000000" | ||
| 722 | font-family="Helvetica" | ||
| 723 | font-style="normal" | 522 | font-style="normal" |
| 724 | font-weight="normal" | 523 | font-weight="normal" |
| 725 | font-size="216" | 524 | font-size="216" |
| 726 | text-anchor="middle" | 525 | id="text182" |
| 727 | id="text182">T2</text> | 526 | style="font-style:normal;font-weight:normal;font-size:216px;font-family:Helvetica;text-anchor:middle;fill:#000000">T2</text> |
| 728 | <!-- Text --> | 527 | <!-- Text --> |
| 729 | <text | 528 | <text |
| 730 | xml:space="preserve" | 529 | xml:space="preserve" |
| 731 | x="11400" | 530 | x="11423.758" |
| 732 | y="6300" | 531 | y="8485.7227" |
| 733 | fill="#000000" | ||
| 734 | font-family="Helvetica" | ||
| 735 | font-style="normal" | 532 | font-style="normal" |
| 736 | font-weight="normal" | 533 | font-weight="normal" |
| 737 | font-size="216" | 534 | font-size="216" |
| 738 | text-anchor="middle" | 535 | id="text184" |
| 739 | id="text184">T1</text> | 536 | style="font-style:normal;font-weight:normal;font-size:216px;font-family:Helvetica;text-anchor:middle;fill:#000000">T1</text> |
| 740 | <!-- Line --> | 537 | <!-- Line --> |
| 741 | <polyline | 538 | <polyline |
| 742 | points="5250,5400 5250,4414 " | 539 | points="5250,5400 5250,4414 " |
| 743 | style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" | 540 | style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" |
| 744 | id="polyline186" /> | 541 | id="polyline186" |
| 542 | transform="translate(23.757862,2185.7233)" /> | ||
| 745 | <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290--> | 543 | <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290--> |
| 746 | <!-- Line: box --> | 544 | <!-- Line: box --> |
| 747 | <rect | 545 | <rect |
| 748 | x="3750" | 546 | x="3773.7581" |
| 749 | y="3450" | 547 | y="5635.7236" |
| 750 | width="1800" | 548 | width="1800" |
| 751 | height="900" | 549 | height="900" |
| 752 | rx="0" | 550 | rx="0" |
| 753 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 551 | style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 754 | id="rect190" /> | 552 | id="rect190" /> |
| 755 | <!-- Line: box --> | 553 | <!-- Line: box --> |
| 756 | <rect | 554 | <rect |
| 757 | x="7350" | 555 | x="7373.7578" |
| 758 | y="2850" | 556 | y="5035.7236" |
| 759 | width="1950" | 557 | width="1950" |
| 760 | height="750" | 558 | height="750" |
| 761 | rx="0" | 559 | rx="0" |
| 762 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 560 | style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 763 | id="rect192" /> | 561 | id="rect192" /> |
| 764 | <!-- Line: box --> | 562 | <!-- Line: box --> |
| 765 | <rect | 563 | <rect |
| 766 | x="7350" | 564 | x="7373.7578" |
| 767 | y="3600" | 565 | y="5785.7236" |
| 768 | width="1950" | 566 | width="1950" |
| 769 | height="750" | 567 | height="750" |
| 770 | rx="0" | 568 | rx="0" |
| 771 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 569 | style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 772 | id="rect194" /> | 570 | id="rect194" /> |
| 773 | <!-- Line: box --> | 571 | <!-- Line: box --> |
| 774 | <rect | 572 | <rect |
| 775 | x="7350" | 573 | x="7373.7578" |
| 776 | y="4350" | 574 | y="6535.7236" |
| 777 | width="1950" | 575 | width="1950" |
| 778 | height="750" | 576 | height="750" |
| 779 | rx="0" | 577 | rx="0" |
| 780 | style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " | 578 | style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" |
| 781 | id="rect196" /> | 579 | id="rect196" /> |
| 782 | <!-- Text --> | 580 | <!-- Text --> |
| 783 | <text | 581 | <text |
| 784 | xml:space="preserve" | 582 | xml:space="preserve" |
| 785 | x="4650" | 583 | x="4673.7578" |
| 786 | y="4050" | 584 | y="6235.7236" |
| 787 | fill="#000000" | ||
| 788 | font-family="Courier" | ||
| 789 | font-style="normal" | 585 | font-style="normal" |
| 790 | font-weight="bold" | 586 | font-weight="bold" |
| 791 | font-size="192" | 587 | font-size="192" |
| 792 | text-anchor="middle" | 588 | id="text198" |
| 793 | id="text198">rcu_node</text> | 589 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_node</text> |
| 794 | <!-- Text --> | 590 | <!-- Text --> |
| 795 | <text | 591 | <text |
| 796 | xml:space="preserve" | 592 | xml:space="preserve" |
| 797 | x="4650" | 593 | x="4673.7578" |
| 798 | y="3750" | 594 | y="5935.7236" |
| 799 | fill="#000000" | ||
| 800 | font-family="Courier" | ||
| 801 | font-style="normal" | 595 | font-style="normal" |
| 802 | font-weight="bold" | 596 | font-weight="bold" |
| 803 | font-size="192" | 597 | font-size="192" |
| 804 | text-anchor="middle" | 598 | id="text200" |
| 805 | id="text200">struct</text> | 599 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text> |
| 806 | <!-- Text --> | 600 | <!-- Text --> |
| 807 | <text | 601 | <text |
| 808 | xml:space="preserve" | 602 | xml:space="preserve" |
| 809 | x="7500" | 603 | x="7523.7578" |
| 810 | y="3300" | 604 | y="5485.7236" |
| 811 | fill="#000000" | ||
| 812 | font-family="Courier" | ||
| 813 | font-style="normal" | 605 | font-style="normal" |
| 814 | font-weight="bold" | 606 | font-weight="bold" |
| 815 | font-size="192" | 607 | font-size="192" |
| 816 | text-anchor="start" | 608 | id="text202" |
| 817 | id="text202">blkd_tasks</text> | 609 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">blkd_tasks</text> |
| 818 | <!-- Text --> | 610 | <!-- Text --> |
| 819 | <text | 611 | <text |
| 820 | xml:space="preserve" | 612 | xml:space="preserve" |
| 821 | x="7500" | 613 | x="7523.7578" |
| 822 | y="4050" | 614 | y="6235.7236" |
| 823 | fill="#000000" | ||
| 824 | font-family="Courier" | ||
| 825 | font-style="normal" | 615 | font-style="normal" |
| 826 | font-weight="bold" | 616 | font-weight="bold" |
| 827 | font-size="192" | 617 | font-size="192" |
| 828 | text-anchor="start" | 618 | id="text204" |
| 829 | id="text204">gp_tasks</text> | 619 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">gp_tasks</text> |
| 830 | <!-- Text --> | 620 | <!-- Text --> |
| 831 | <text | 621 | <text |
| 832 | xml:space="preserve" | 622 | xml:space="preserve" |
| 833 | x="7500" | 623 | x="7523.7578" |
| 834 | y="4800" | 624 | y="6985.7236" |
| 835 | fill="#000000" | ||
| 836 | font-family="Courier" | ||
| 837 | font-style="normal" | 625 | font-style="normal" |
| 838 | font-weight="bold" | 626 | font-weight="bold" |
| 839 | font-size="192" | 627 | font-size="192" |
| 840 | text-anchor="start" | 628 | id="text206" |
| 841 | id="text206">exp_tasks</text> | 629 | style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">exp_tasks</text> |
| 842 | </g> | 630 | </g> |
| 843 | </svg> | 631 | </svg> |
diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html index e62c7c34a369..8e4f873b979f 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html | |||
| @@ -160,9 +160,9 @@ was in flight. | |||
| 160 | If the CPU is idle, then <tt>sync_sched_exp_handler()</tt> reports | 160 | If the CPU is idle, then <tt>sync_sched_exp_handler()</tt> reports |
| 161 | the quiescent state. | 161 | the quiescent state. |
| 162 | 162 | ||
| 163 | <p> | 163 | <p> Otherwise, the handler forces a future context switch by setting the |
| 164 | Otherwise, the handler invokes <tt>resched_cpu()</tt>, which forces | 164 | NEED_RESCHED flag of the current task's thread flag and the CPU preempt |
| 165 | a future context switch. | 165 | counter. |
| 166 | At the time of the context switch, the CPU reports the quiescent state. | 166 | At the time of the context switch, the CPU reports the quiescent state. |
| 167 | Should the CPU go offline first, it will report the quiescent state | 167 | Should the CPU go offline first, it will report the quiescent state |
| 168 | at that time. | 168 | at that time. |
diff --git a/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html index a346ce0116eb..e4d94fba6c89 100644 --- a/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html +++ b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html | |||
| @@ -77,7 +77,7 @@ The key point is that the lock-acquisition functions, including | |||
| 77 | <tt>smp_mb__after_unlock_lock()</tt> immediately after successful | 77 | <tt>smp_mb__after_unlock_lock()</tt> immediately after successful |
| 78 | acquisition of the lock. | 78 | acquisition of the lock. |
| 79 | 79 | ||
| 80 | <p>Therefore, for any given <tt>rcu_node</tt> struction, any access | 80 | <p>Therefore, for any given <tt>rcu_node</tt> structure, any access |
| 81 | happening before one of the above lock-release functions will be seen | 81 | happening before one of the above lock-release functions will be seen |
| 82 | by all CPUs as happening before any access happening after a later | 82 | by all CPUs as happening before any access happening after a later |
| 83 | one of the above lock-acquisition functions. | 83 | one of the above lock-acquisition functions. |
diff --git a/Documentation/RCU/Design/Requirements/Requirements.html b/Documentation/RCU/Design/Requirements/Requirements.html index 43c4e2f05f40..9fca73e03a98 100644 --- a/Documentation/RCU/Design/Requirements/Requirements.html +++ b/Documentation/RCU/Design/Requirements/Requirements.html | |||
| @@ -900,8 +900,6 @@ Except where otherwise noted, these non-guarantees were premeditated. | |||
| 900 | Grace Periods Don't Partition Read-Side Critical Sections</a> | 900 | Grace Periods Don't Partition Read-Side Critical Sections</a> |
| 901 | <li> <a href="#Read-Side Critical Sections Don't Partition Grace Periods"> | 901 | <li> <a href="#Read-Side Critical Sections Don't Partition Grace Periods"> |
| 902 | Read-Side Critical Sections Don't Partition Grace Periods</a> | 902 | Read-Side Critical Sections Don't Partition Grace Periods</a> |
| 903 | <li> <a href="#Disabling Preemption Does Not Block Grace Periods"> | ||
| 904 | Disabling Preemption Does Not Block Grace Periods</a> | ||
| 905 | </ol> | 903 | </ol> |
| 906 | 904 | ||
| 907 | <h3><a name="Readers Impose Minimal Ordering">Readers Impose Minimal Ordering</a></h3> | 905 | <h3><a name="Readers Impose Minimal Ordering">Readers Impose Minimal Ordering</a></h3> |
| @@ -1259,54 +1257,6 @@ of RCU grace periods. | |||
| 1259 | <tr><td> </td></tr> | 1257 | <tr><td> </td></tr> |
| 1260 | </table> | 1258 | </table> |
| 1261 | 1259 | ||
| 1262 | <h3><a name="Disabling Preemption Does Not Block Grace Periods"> | ||
| 1263 | Disabling Preemption Does Not Block Grace Periods</a></h3> | ||
| 1264 | |||
| 1265 | <p> | ||
| 1266 | There was a time when disabling preemption on any given CPU would block | ||
| 1267 | subsequent grace periods. | ||
| 1268 | However, this was an accident of implementation and is not a requirement. | ||
| 1269 | And in the current Linux-kernel implementation, disabling preemption | ||
| 1270 | on a given CPU in fact does not block grace periods, as Oleg Nesterov | ||
| 1271 | <a href="https://lkml.kernel.org/g/20150614193825.GA19582@redhat.com">demonstrated</a>. | ||
| 1272 | |||
| 1273 | <p> | ||
| 1274 | If you need a preempt-disable region to block grace periods, you need to add | ||
| 1275 | <tt>rcu_read_lock()</tt> and <tt>rcu_read_unlock()</tt>, for example | ||
| 1276 | as follows: | ||
| 1277 | |||
| 1278 | <blockquote> | ||
| 1279 | <pre> | ||
| 1280 | 1 preempt_disable(); | ||
| 1281 | 2 rcu_read_lock(); | ||
| 1282 | 3 do_something(); | ||
| 1283 | 4 rcu_read_unlock(); | ||
| 1284 | 5 preempt_enable(); | ||
| 1285 | 6 | ||
| 1286 | 7 /* Spinlocks implicitly disable preemption. */ | ||
| 1287 | 8 spin_lock(&mylock); | ||
| 1288 | 9 rcu_read_lock(); | ||
| 1289 | 10 do_something(); | ||
| 1290 | 11 rcu_read_unlock(); | ||
| 1291 | 12 spin_unlock(&mylock); | ||
| 1292 | </pre> | ||
| 1293 | </blockquote> | ||
| 1294 | |||
| 1295 | <p> | ||
| 1296 | In theory, you could enter the RCU read-side critical section first, | ||
| 1297 | but it is more efficient to keep the entire RCU read-side critical | ||
| 1298 | section contained in the preempt-disable region as shown above. | ||
| 1299 | Of course, RCU read-side critical sections that extend outside of | ||
| 1300 | preempt-disable regions will work correctly, but such critical sections | ||
| 1301 | can be preempted, which forces <tt>rcu_read_unlock()</tt> to do | ||
| 1302 | more work. | ||
| 1303 | And no, this is <i>not</i> an invitation to enclose all of your RCU | ||
| 1304 | read-side critical sections within preempt-disable regions, because | ||
| 1305 | doing so would degrade real-time response. | ||
| 1306 | |||
| 1307 | <p> | ||
| 1308 | This non-requirement appeared with preemptible RCU. | ||
| 1309 | |||
| 1310 | <h2><a name="Parallelism Facts of Life">Parallelism Facts of Life</a></h2> | 1260 | <h2><a name="Parallelism Facts of Life">Parallelism Facts of Life</a></h2> |
| 1311 | 1261 | ||
| 1312 | <p> | 1262 | <p> |
| @@ -1381,6 +1331,7 @@ Classes of quality-of-implementation requirements are as follows: | |||
| 1381 | <ol> | 1331 | <ol> |
| 1382 | <li> <a href="#Specialization">Specialization</a> | 1332 | <li> <a href="#Specialization">Specialization</a> |
| 1383 | <li> <a href="#Performance and Scalability">Performance and Scalability</a> | 1333 | <li> <a href="#Performance and Scalability">Performance and Scalability</a> |
| 1334 | <li> <a href="#Forward Progress">Forward Progress</a> | ||
| 1384 | <li> <a href="#Composability">Composability</a> | 1335 | <li> <a href="#Composability">Composability</a> |
| 1385 | <li> <a href="#Corner Cases">Corner Cases</a> | 1336 | <li> <a href="#Corner Cases">Corner Cases</a> |
| 1386 | </ol> | 1337 | </ol> |
| @@ -1645,7 +1596,7 @@ used in place of <tt>synchronize_rcu()</tt> as follows: | |||
| 1645 | 16 struct foo *p; | 1596 | 16 struct foo *p; |
| 1646 | 17 | 1597 | 17 |
| 1647 | 18 spin_lock(&gp_lock); | 1598 | 18 spin_lock(&gp_lock); |
| 1648 | 19 p = rcu_dereference(gp); | 1599 | 19 p = rcu_access_pointer(gp); |
| 1649 | 20 if (!p) { | 1600 | 20 if (!p) { |
| 1650 | 21 spin_unlock(&gp_lock); | 1601 | 21 spin_unlock(&gp_lock); |
| 1651 | 22 return false; | 1602 | 22 return false; |
| @@ -1822,6 +1773,106 @@ so it is too early to tell whether they will stand the test of time. | |||
| 1822 | RCU thus provides a range of tools to allow updaters to strike the | 1773 | RCU thus provides a range of tools to allow updaters to strike the |
| 1823 | required tradeoff between latency, flexibility and CPU overhead. | 1774 | required tradeoff between latency, flexibility and CPU overhead. |
| 1824 | 1775 | ||
| 1776 | <h3><a name="Forward Progress">Forward Progress</a></h3> | ||
| 1777 | |||
| 1778 | <p> | ||
| 1779 | In theory, delaying grace-period completion and callback invocation | ||
| 1780 | is harmless. | ||
| 1781 | In practice, not only are memory sizes finite but also callbacks sometimes | ||
| 1782 | do wakeups, and sufficiently deferred wakeups can be difficult | ||
| 1783 | to distinguish from system hangs. | ||
| 1784 | Therefore, RCU must provide a number of mechanisms to promote forward | ||
| 1785 | progress. | ||
| 1786 | |||
| 1787 | <p> | ||
| 1788 | These mechanisms are not foolproof, nor can they be. | ||
| 1789 | For one simple example, an infinite loop in an RCU read-side critical | ||
| 1790 | section must by definition prevent later grace periods from ever completing. | ||
| 1791 | For a more involved example, consider a 64-CPU system built with | ||
| 1792 | <tt>CONFIG_RCU_NOCB_CPU=y</tt> and booted with <tt>rcu_nocbs=1-63</tt>, | ||
| 1793 | where CPUs 1 through 63 spin in tight loops that invoke | ||
| 1794 | <tt>call_rcu()</tt>. | ||
| 1795 | Even if these tight loops also contain calls to <tt>cond_resched()</tt> | ||
| 1796 | (thus allowing grace periods to complete), CPU 0 simply will | ||
| 1797 | not be able to invoke callbacks as fast as the other 63 CPUs can | ||
| 1798 | register them, at least not until the system runs out of memory. | ||
| 1799 | In both of these examples, the Spiderman principle applies: With great | ||
| 1800 | power comes great responsibility. | ||
| 1801 | However, short of this level of abuse, RCU is required to | ||
| 1802 | ensure timely completion of grace periods and timely invocation of | ||
| 1803 | callbacks. | ||
| 1804 | |||
| 1805 | <p> | ||
| 1806 | RCU takes the following steps to encourage timely completion of | ||
| 1807 | grace periods: | ||
| 1808 | |||
| 1809 | <ol> | ||
| 1810 | <li> If a grace period fails to complete within 100 milliseconds, | ||
| 1811 | RCU causes future invocations of <tt>cond_resched()</tt> on | ||
| 1812 | the holdout CPUs to provide an RCU quiescent state. | ||
| 1813 | RCU also causes those CPUs' <tt>need_resched()</tt> invocations | ||
| 1814 | to return <tt>true</tt>, but only after the corresponding CPU's | ||
| 1815 | next scheduling-clock. | ||
| 1816 | <li> CPUs mentioned in the <tt>nohz_full</tt> kernel boot parameter | ||
| 1817 | can run indefinitely in the kernel without scheduling-clock | ||
| 1818 | interrupts, which defeats the above <tt>need_resched()</tt> | ||
| 1819 | strategem. | ||
| 1820 | RCU will therefore invoke <tt>resched_cpu()</tt> on any | ||
| 1821 | <tt>nohz_full</tt> CPUs still holding out after | ||
| 1822 | 109 milliseconds. | ||
| 1823 | <li> In kernels built with <tt>CONFIG_RCU_BOOST=y</tt>, if a given | ||
| 1824 | task that has been preempted within an RCU read-side critical | ||
| 1825 | section is holding out for more than 500 milliseconds, | ||
| 1826 | RCU will resort to priority boosting. | ||
| 1827 | <li> If a CPU is still holding out 10 seconds into the grace | ||
| 1828 | period, RCU will invoke <tt>resched_cpu()</tt> on it regardless | ||
| 1829 | of its <tt>nohz_full</tt> state. | ||
| 1830 | </ol> | ||
| 1831 | |||
| 1832 | <p> | ||
| 1833 | The above values are defaults for systems running with <tt>HZ=1000</tt>. | ||
| 1834 | They will vary as the value of <tt>HZ</tt> varies, and can also be | ||
| 1835 | changed using the relevant Kconfig options and kernel boot parameters. | ||
| 1836 | RCU currently does not do much sanity checking of these | ||
| 1837 | parameters, so please use caution when changing them. | ||
| 1838 | Note that these forward-progress measures are provided only for RCU, | ||
| 1839 | not for | ||
| 1840 | <a href="#Sleepable RCU">SRCU</a> or | ||
| 1841 | <a href="#Tasks RCU">Tasks RCU</a>. | ||
| 1842 | |||
| 1843 | <p> | ||
| 1844 | RCU takes the following steps in <tt>call_rcu()</tt> to encourage timely | ||
| 1845 | invocation of callbacks when any given non-<tt>rcu_nocbs</tt> CPU has | ||
| 1846 | 10,000 callbacks, or has 10,000 more callbacks than it had the last time | ||
| 1847 | encouragement was provided: | ||
| 1848 | |||
| 1849 | <ol> | ||
| 1850 | <li> Starts a grace period, if one is not already in progress. | ||
| 1851 | <li> Forces immediate checking for quiescent states, rather than | ||
| 1852 | waiting for three milliseconds to have elapsed since the | ||
| 1853 | beginning of the grace period. | ||
| 1854 | <li> Immediately tags the CPU's callbacks with their grace period | ||
| 1855 | completion numbers, rather than waiting for the <tt>RCU_SOFTIRQ</tt> | ||
| 1856 | handler to get around to it. | ||
| 1857 | <li> Lifts callback-execution batch limits, which speeds up callback | ||
| 1858 | invocation at the expense of degrading realtime response. | ||
| 1859 | </ol> | ||
| 1860 | |||
| 1861 | <p> | ||
| 1862 | Again, these are default values when running at <tt>HZ=1000</tt>, | ||
| 1863 | and can be overridden. | ||
| 1864 | Again, these forward-progress measures are provided only for RCU, | ||
| 1865 | not for | ||
| 1866 | <a href="#Sleepable RCU">SRCU</a> or | ||
| 1867 | <a href="#Tasks RCU">Tasks RCU</a>. | ||
| 1868 | Even for RCU, callback-invocation forward progress for <tt>rcu_nocbs</tt> | ||
| 1869 | CPUs is much less well-developed, in part because workloads benefiting | ||
| 1870 | from <tt>rcu_nocbs</tt> CPUs tend to invoke <tt>call_rcu()</tt> | ||
| 1871 | relatively infrequently. | ||
| 1872 | If workloads emerge that need both <tt>rcu_nocbs</tt> CPUs and high | ||
| 1873 | <tt>call_rcu()</tt> invocation rates, then additional forward-progress | ||
| 1874 | work will be required. | ||
| 1875 | |||
| 1825 | <h3><a name="Composability">Composability</a></h3> | 1876 | <h3><a name="Composability">Composability</a></h3> |
| 1826 | 1877 | ||
| 1827 | <p> | 1878 | <p> |
| @@ -2272,7 +2323,7 @@ that meets this requirement. | |||
| 2272 | Furthermore, NMI handlers can be interrupted by what appear to RCU | 2323 | Furthermore, NMI handlers can be interrupted by what appear to RCU |
| 2273 | to be normal interrupts. | 2324 | to be normal interrupts. |
| 2274 | One way that this can happen is for code that directly invokes | 2325 | One way that this can happen is for code that directly invokes |
| 2275 | <tt>rcu_irq_enter()</tt> and </tt>rcu_irq_exit()</tt> to be called | 2326 | <tt>rcu_irq_enter()</tt> and <tt>rcu_irq_exit()</tt> to be called |
| 2276 | from an NMI handler. | 2327 | from an NMI handler. |
| 2277 | This astonishing fact of life prompted the current code structure, | 2328 | This astonishing fact of life prompted the current code structure, |
| 2278 | which has <tt>rcu_irq_enter()</tt> invoking <tt>rcu_nmi_enter()</tt> | 2329 | which has <tt>rcu_irq_enter()</tt> invoking <tt>rcu_nmi_enter()</tt> |
| @@ -2294,7 +2345,7 @@ via <tt>del_timer_sync()</tt> or similar. | |||
| 2294 | <p> | 2345 | <p> |
| 2295 | Unfortunately, there is no way to cancel an RCU callback; | 2346 | Unfortunately, there is no way to cancel an RCU callback; |
| 2296 | once you invoke <tt>call_rcu()</tt>, the callback function is | 2347 | once you invoke <tt>call_rcu()</tt>, the callback function is |
| 2297 | going to eventually be invoked, unless the system goes down first. | 2348 | eventually going to be invoked, unless the system goes down first. |
| 2298 | Because it is normally considered socially irresponsible to crash the system | 2349 | Because it is normally considered socially irresponsible to crash the system |
| 2299 | in response to a module unload request, we need some other way | 2350 | in response to a module unload request, we need some other way |
| 2300 | to deal with in-flight RCU callbacks. | 2351 | to deal with in-flight RCU callbacks. |
| @@ -2424,23 +2475,37 @@ for context-switch-heavy <tt>CONFIG_NO_HZ_FULL=y</tt> workloads, | |||
| 2424 | but there is room for further improvement. | 2475 | but there is room for further improvement. |
| 2425 | 2476 | ||
| 2426 | <p> | 2477 | <p> |
| 2427 | In the past, it was forbidden to disable interrupts across an | 2478 | It is forbidden to hold any of scheduler's runqueue or priority-inheritance |
| 2428 | <tt>rcu_read_unlock()</tt> unless that interrupt-disabled region | 2479 | spinlocks across an <tt>rcu_read_unlock()</tt> unless interrupts have been |
| 2429 | of code also included the matching <tt>rcu_read_lock()</tt>. | 2480 | disabled across the entire RCU read-side critical section, that is, |
| 2430 | Violating this restriction could result in deadlocks involving the | 2481 | up to and including the matching <tt>rcu_read_lock()</tt>. |
| 2431 | scheduler's runqueue and priority-inheritance spinlocks. | 2482 | Violating this restriction can result in deadlocks involving these |
| 2432 | This restriction was lifted when interrupt-disabled calls to | 2483 | scheduler spinlocks. |
| 2433 | <tt>rcu_read_unlock()</tt> started deferring the reporting of | 2484 | There was hope that this restriction might be lifted when interrupt-disabled |
| 2434 | the resulting RCU-preempt quiescent state until the end of that | 2485 | calls to <tt>rcu_read_unlock()</tt> started deferring the reporting of |
| 2486 | the resulting RCU-preempt quiescent state until the end of the corresponding | ||
| 2435 | interrupts-disabled region. | 2487 | interrupts-disabled region. |
| 2436 | This deferred reporting means that the scheduler's runqueue and | 2488 | Unfortunately, timely reporting of the corresponding quiescent state |
| 2437 | priority-inheritance locks cannot be held while reporting an RCU-preempt | 2489 | to expedited grace periods requires a call to <tt>raise_softirq()</tt>, |
| 2438 | quiescent state, which lifts the earlier restriction, at least from | 2490 | which can acquire these scheduler spinlocks. |
| 2439 | a deadlock perspective. | 2491 | In addition, real-time systems using RCU priority boosting |
| 2440 | Unfortunately, real-time systems using RCU priority boosting may | ||
| 2441 | need this restriction to remain in effect because deferred | 2492 | need this restriction to remain in effect because deferred |
| 2442 | quiescent-state reporting also defers deboosting, which in turn | 2493 | quiescent-state reporting would also defer deboosting, which in turn |
| 2443 | degrades real-time latencies. | 2494 | would degrade real-time latencies. |
| 2495 | |||
| 2496 | <p> | ||
| 2497 | In theory, if a given RCU read-side critical section could be | ||
| 2498 | guaranteed to be less than one second in duration, holding a scheduler | ||
| 2499 | spinlock across that critical section's <tt>rcu_read_unlock()</tt> | ||
| 2500 | would require only that preemption be disabled across the entire | ||
| 2501 | RCU read-side critical section, not interrupts. | ||
| 2502 | Unfortunately, given the possibility of vCPU preemption, long-running | ||
| 2503 | interrupts, and so on, it is not possible in practice to guarantee | ||
| 2504 | that a given RCU read-side critical section will complete in less than | ||
| 2505 | one second. | ||
| 2506 | Therefore, as noted above, if scheduler spinlocks are held across | ||
| 2507 | a given call to <tt>rcu_read_unlock()</tt>, interrupts must be | ||
| 2508 | disabled across the entire RCU read-side critical section. | ||
| 2444 | 2509 | ||
| 2445 | <h3><a name="Tracing and RCU">Tracing and RCU</a></h3> | 2510 | <h3><a name="Tracing and RCU">Tracing and RCU</a></h3> |
| 2446 | 2511 | ||
| @@ -3233,6 +3298,11 @@ For example, RCU callback overhead might be charged back to the | |||
| 3233 | originating <tt>call_rcu()</tt> instance, though probably not | 3298 | originating <tt>call_rcu()</tt> instance, though probably not |
| 3234 | in production kernels. | 3299 | in production kernels. |
| 3235 | 3300 | ||
| 3301 | <p> | ||
| 3302 | Additional work may be required to provide reasonable forward-progress | ||
| 3303 | guarantees under heavy load for grace periods and for callback | ||
| 3304 | invocation. | ||
| 3305 | |||
| 3236 | <h2><a name="Summary">Summary</a></h2> | 3306 | <h2><a name="Summary">Summary</a></h2> |
| 3237 | 3307 | ||
| 3238 | <p> | 3308 | <p> |
