-
Notifications
You must be signed in to change notification settings - Fork 0
/
Untitled Diagram.drawio
283 lines (283 loc) · 36 KB
/
Untitled Diagram.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
<mxfile host="app.diagrams.net" modified="2021-05-29T12:17:56.035Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36" etag="aa7BNFThw2F3IqvCRfDN" version="14.6.6" type="github">
<diagram id="IhDVK5kIIlVH_irtN-wy" name="Page-1">
<mxGraphModel dx="3113" dy="2711" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#EEEEEE" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="dhijnRjkVFzv72ZYH4DM-177" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;sketch=1;fontSize=25;align=left;fillStyle=cross-hatch;gradientColor=#ffd966;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-200" y="-8.430000000000064" width="2500" height="1546.87" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-175" value="" style="shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;rounded=1;shadow=1;fontSize=25;fontColor=#1A1A1A;align=left;strokeColor=none;fillColor=#33FFFF;gradientColor=#ffffff;sketch=1;fillStyle=zigzag;" vertex="1" parent="1">
<mxGeometry x="855.5" y="553.63" width="96.5" height="103.75" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-174" value="" style="shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;rounded=1;shadow=1;fontSize=25;fontColor=#1A1A1A;align=left;strokeColor=none;fillColor=#33FFFF;gradientColor=#ffffff;sketch=1;fillStyle=zigzag;" vertex="1" parent="1">
<mxGeometry x="489.25" y="279.25" width="105.75" height="410" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-172" value="" style="shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;rounded=1;shadow=1;fontSize=25;fontColor=#1A1A1A;align=left;strokeColor=none;fillColor=#33FFFF;gradientColor=#ffffff;sketch=1;fillStyle=zigzag;" vertex="1" parent="1">
<mxGeometry x="153.25" y="276.25" width="93.5" height="140" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-1" value="" style="shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;fontColor=#1A1A1A;strokeColor=#909090;strokeWidth=5;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="143" y="276.25" width="120" height="140" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-3" value="读临界区" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="151.5" y="316.25" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-6" value="" style="endArrow=none;dashed=1;html=1;fontSize=19;fontColor=#1A1A1A;labelBackgroundColor=#EEEEEE;sketch=1;curved=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="54" y="360" as="sourcePoint" />
<mxPoint x="2010" y="361" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-7" value="call_rcu()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1611" y="220" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-8" value="rcu_read_lock()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="116.5" y="226.25" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-9" value="rcu_read_unlock()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="106.5" y="416.25" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-12" value="" style="endArrow=classic;html=1;fontSize=13;fontColor=#1A1A1A;strokeWidth=10;strokeColor=#182E3E;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-2" y="210.5" as="sourcePoint" />
<mxPoint x="-2" y="1460.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-13" value="时间轴" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=34;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="-50" y="150" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-17" value="发生tick中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="41.5" y="470" width="98.5" height="60" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-20" value="rcu_sched_clock_irq()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="147" y="446.25" width="230" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-25" value="进入rcu软中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=17;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="33.75" y="590" width="114" height="59.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-26" value="rcu_check_quiescent_state()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="147.75" y="577.5" width="300" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-32" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/technology-and-hardware-2/200/vector_66_06-128.png;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;labelBackgroundColor=#EEEEEE;sketch=1;rounded=1;direction=south;" vertex="1" parent="1">
<mxGeometry x="166" y="104.25" width="68" height="68" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-33" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/technology-and-hardware-2/200/vector_66_06-128.png;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;labelBackgroundColor=#EEEEEE;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="508.12" y="104.25" width="68" height="68" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-34" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/technology-and-hardware-2/200/vector_66_06-128.png;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;labelBackgroundColor=#EEEEEE;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1257" y="100" width="68" height="68" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-36" value="" style="shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;fontColor=#1A1A1A;strokeColor=#909090;strokeWidth=5;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="485" y="277.5" width="120" height="420" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-37" value="读临界区" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="495" y="440" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-38" value="rcu_read_lock()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="450" y="240" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-39" value="rcu_read_unlock()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="450" y="700" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-42" value="" style="endArrow=classic;startArrow=classic;html=1;fontColor=#1A1A1A;strokeColor=#182E3E;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="484.65999999999997" y="687.8496551724138" as="sourcePoint" />
<mxPoint x="485" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-44" value="" style="endArrow=classic;startArrow=classic;html=1;fontColor=#1A1A1A;strokeColor=#182E3E;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="599.9999999999999" y="687.8496551724138" as="sourcePoint" />
<mxPoint x="600" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-45" value="" style="endArrow=classic;startArrow=classic;html=1;fontColor=#1A1A1A;strokeColor=#182E3E;exitX=0.174;exitY=0.018;exitDx=0;exitDy=0;exitPerimeter=0;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="257.41" y="396.25" as="sourcePoint" />
<mxPoint x="257.83" y="295.71" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-46" value="" style="endArrow=classic;startArrow=classic;html=1;fontColor=#1A1A1A;strokeColor=#182E3E;exitX=0.174;exitY=0.018;exitDx=0;exitDy=0;exitPerimeter=0;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="143.00000000000003" y="396.52" as="sourcePoint" />
<mxPoint x="143.42" y="295.98" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-47" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/technology-and-hardware-2/200/vector_66_06-128.png;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;labelBackgroundColor=#EEEEEE;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="880" y="100" width="68" height="68" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-54" value="" style="shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;fontColor=#1A1A1A;strokeColor=#909090;strokeWidth=5;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="850.5" y="545.5" width="120" height="120" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-55" value="读临界区" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=23;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="855.5" y="593" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-56" value="rcu_read_lock()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="834.5" y="508" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-57" value="rcu_read_unlock()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="820.5" y="665.5" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-58" value="" style="endArrow=classic;startArrow=classic;html=1;fontColor=#1A1A1A;strokeColor=#182E3E;exitX=0.174;exitY=0.018;exitDx=0;exitDy=0;exitPerimeter=0;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="960.5" y="655.77" as="sourcePoint" />
<mxPoint x="960.9200000000001" y="555.23" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-59" value="" style="endArrow=classic;startArrow=classic;html=1;fontColor=#1A1A1A;strokeColor=#182E3E;exitX=0.174;exitY=0.018;exitDx=0;exitDy=0;exitPerimeter=0;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="855.1600000000001" y="655.77" as="sourcePoint" />
<mxPoint x="855.5799999999997" y="555.23" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-62" value="<span style="font-size: 22px;">rcu_qs()标记本cpu已经历QS<br style="font-size: 22px;">rcu_pending()返回true触发rcu软中断<br style="font-size: 22px;"></span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="145" y="482.37" width="295" height="87.63" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-68" value="<font style="font-size: 20px;">更新rdp和rnp中的gp内容使保持一致。将rdp的qs状态更新入node,并从leaf node从下向上report。</font>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=20;" vertex="1" parent="1">
<mxGeometry x="145" y="607.5" width="273.5" height="112.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-70" value="发生tick中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="330" y="763.75" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-71" value="rcu_sched_clock_irq()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="447.75" y="735.5" width="230" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-72" value="进入rcu软中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=16;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="320" y="890" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-73" value="rcu_check_quiescent_state()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="439" y="870" width="300" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-75" value="<font style="font-size: 21px;">1. 更新rdp和rnp中的gp内容使保持一致。<br style="font-size: 21px;">2. 将rdp的qs状态更新入node,并从leaf node开始从下向上report。<br style="font-size: 21px;">3. 此cpu是最后一个report QS的cpu,故会传到root rcu node标志着GP结束。<br style="font-size: 21px;">4. 设置RCU_GP_FLAG_FQS并唤醒rcu_gp_kthread线程结束当前GP<br style="font-size: 21px;"></font>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=21;" vertex="1" parent="1">
<mxGeometry x="430" y="900" width="380" height="190" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-77" value="发生进程切换" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=22;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="718" y="374.75" width="102" height="64.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-78" value="rcu_note_context_switch()<br style="font-size: 22px;">" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="832" y="365.5" width="270" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-84" value="<span style="font-size: 23px;">rcu_qs()标记本cpu已经历QS<br style="font-size: 23px;"></span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;fontSize=23;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="827" y="395.5" width="301" height="44.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-85" value="发生tick中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="750" y="705.5" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-86" value="rcu_sched_clock_irq()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="852" y="695.5" width="230" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-87" value="进入rcu软中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="730" y="810.5" width="120.5" height="50" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-88" value="rcu_check_quiescent_state()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="847" y="798.13" width="300" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-90" value="<span style="font-size: 22px;">由于之前进程切换已经标记过QS了,这里只触发rcu软中断<br style="font-size: 22px;"></span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="847" y="735.5" width="293" height="54.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-91" value="<font style="font-size: 22px;">更新rdp和rnp中的gp内容使保持一致。<br style="font-size: 22px;">将rdp的qs状态更新入node,并从leaf node从下向上report。</font>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="850" y="835.5" width="300" height="154.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-95" value="<font color="#000000" style="font-size: 22px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rcu_gp_kthread线程被唤醒并检测到CPU1设置的RCU_GP_FLAG_FQS标志位,最终调用rcu_gp_cleanup()进行收尾工作并结束当前的GP<br style="font-size: 22px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1. 判断刚结束的gp时间是否是最长的并记录在rsp中。<br style="font-size: 22px"><div style="font-size: 22px"><span style="font-size: 22px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.生成新的gp_seq(即在老gp_seq基础上屏蔽低两bit,并加1)</span></div><div style="font-size: 22px"><span style="font-size: 22px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.以广度优先的方式初始化所有node,同时会将新的gp_seq赋给它们。</span></div><div style="font-size: 22px"><span style="font-size: 22px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4. 调用__note_gp_changes把当前把cpu对应的leaf node中的内容同步到rcu_data中(其余的cpu在自己的软中断中做这步),同时推进rcu_data中的callback链表。</span></div><div style="font-size: 22px"><span style="font-size: 22px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5.将rcu_state标记为RCU_GP_FLAG_INIT等待新的gp的开启。</span></div></font>" style="whiteSpace=wrap;html=1;fontSize=22;strokeColor=#909090;align=left;fillColor=#F5AB50;fontColor=#1A1A1A;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="32" y="1170" width="1808" height="200" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-96" value="<font color="#000000" style="font-size: 25px;">rcu_gp_kthread线程</font>" style="whiteSpace=wrap;html=1;fontSize=25;strokeColor=#909090;align=center;fontColor=#1A1A1A;fillColor=#F5AB50;sketch=1;rounded=1;fontStyle=0" vertex="1" parent="1">
<mxGeometry x="41.5" y="1230" width="188.5" height="100" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-99" value="发生tick中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1485" y="462.5" width="110" height="53.75" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-102" value="进入rcu软中断" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1490" y="596.25" width="105.5" height="60" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-103" value="rcu_check_quiescent_state()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1595.5" y="577.5" width="300" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-104" value="<font style="font-size: 22px;">更新rdp和rnp中的gp内容使保持一致。<br style="font-size: 22px;">将rdp的qs状态更新入node,并从leaf node从下向上report。</font>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="1595.5" y="613.75" width="364.5" height="116.25" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-107" value="rcu_sched_clock_irq()" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1595" y="446.25" width="230" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-108" value="" style="endArrow=classic;html=1;fontSize=16;fontColor=#1A1A1A;strokeColor=#182E3E;strokeWidth=7;labelBackgroundColor=#EEEEEE;sketch=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="365.5" y="1085" as="sourcePoint" />
<mxPoint x="410" y="1035" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-109" value="cpu1为最后一个上报QS的cpu" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="147.25" y="1105" width="310" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-111" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/technology-and-hardware-2/200/vector_66_06-128.png;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;labelBackgroundColor=#EEEEEE;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1721" y="90" width="68" height="68" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-112" value="do_idle()-&gt;rcu_eqs_enter" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;fontColor=#1A1A1A;fontSize=22;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1192" y="432.5" width="260" height="30" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-114" value="cpu空闲" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1102" y="459.25" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-116" value="<span style="font-size: 22px;">cpu运行idle进程,表示进入extened qs状态。(通过中断进入eqs同理)</span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="1192" y="471.25" width="258" height="88.75" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-134" value="<span style="font-size: 22px;">rcu_qs()标记本cpu已经历QS<br style="font-size: 22px;">rcu_pending()返回true触发rcu软中断<br style="font-size: 22px;"></span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="430" y="765.5" width="288" height="80" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-136" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.smiley;rounded=1;sketch=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;shadow=1;gradientColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="167.25" y="730" width="68.5" height="70" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-137" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.smiley;rounded=1;sketch=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;shadow=1;gradientColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="536.5" y="1090" width="68.5" height="70" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-138" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.smiley;rounded=1;sketch=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;shadow=1;gradientColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="882.5" y="439.25" width="68.5" height="70" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-139" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.smiley;rounded=1;sketch=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;shadow=1;gradientColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="1256.5" y="743.75" width="68.5" height="70" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-140" value="<span style="font-size: 22px;">rcu_gp_kthread线程等待fqs事件超时超时醒来,检测eqs的cpu并上报qs到对应的rcu_node中</span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="1200" y="621.75" width="268" height="120" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-141" value="gp线程fqs超时唤醒" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=7.8;dy=13;size=5;boundedLbl=1;fontColor=#1A1A1A;strokeColor=#909090;fontSize=18;fillColor=#F5AB50;sketch=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1092" y="607.5" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-144" value="<span style="font-size: 22px;">call_rcu将回调函数插入cpu的回调链表中,并设置RCU_GP_FLAG_INIT来唤醒gp线程开启一个新的宽限期</span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="1580" y="262.5" width="390" height="97.5" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-147" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.smiley;rounded=1;sketch=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;shadow=1;gradientColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="1700" y="735.5" width="68.5" height="70" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-148" value="<span style="font-size: 22px;">rcu_qs()标记本cpu已经历QS<br style="font-size: 22px;">rcu_pending()返回true触发rcu软中断<br style="font-size: 22px;"></span>" style="shape=ext;double=1;whiteSpace=wrap;html=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;align=left;sketch=1;rounded=1;fontSize=22;" vertex="1" parent="1">
<mxGeometry x="1590" y="476.25" width="320" height="93.75" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-149" value="" style="endArrow=none;dashed=1;html=1;fontSize=19;fontColor=#1A1A1A;labelBackgroundColor=#EEEEEE;sketch=1;curved=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="51" y="1380" as="sourcePoint" />
<mxPoint x="2020" y="1381" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-150" value="" style="shape=doubleArrow;direction=south;whiteSpace=wrap;html=1;rounded=1;shadow=1;sketch=1;fontColor=#1A1A1A;strokeColor=#909090;fillColor=#F5AB50;gradientColor=#ffffff;align=left;arrowWidth=0.3333384195963542;arrowSize=0.060181516231240975;" vertex="1" parent="1">
<mxGeometry x="1960" y="390" width="60" height="960" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-151" value="宽限期持续时间" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;sketch=1;fontColor=#1A1A1A;fontSize=41;" vertex="1" parent="1">
<mxGeometry x="2010" y="736" width="40" height="254" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-152" value="CPU0" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;sketch=1;fontColor=#1A1A1A;fontSize=30;" vertex="1" parent="1">
<mxGeometry x="131.5" y="50" width="130" height="64.25" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-153" value="CPU1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;sketch=1;fontColor=#1A1A1A;fontSize=30;" vertex="1" parent="1">
<mxGeometry x="480" y="50" width="130" height="64.25" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-154" value="CPU2" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;sketch=1;fontColor=#1A1A1A;fontSize=30;" vertex="1" parent="1">
<mxGeometry x="850.5" y="50" width="130" height="64.25" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-155" value="CPU3" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;sketch=1;fontColor=#1A1A1A;fontSize=30;" vertex="1" parent="1">
<mxGeometry x="1226" y="50" width="130" height="64.25" as="geometry" />
</mxCell>
<mxCell id="dhijnRjkVFzv72ZYH4DM-156" value="CPU4" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;sketch=1;fontColor=#1A1A1A;fontSize=30;" vertex="1" parent="1">
<mxGeometry x="1690" y="40" width="130" height="64.25" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>