1 | // |
2 | // Licensed to the .NET Foundation under one or more agreements. |
3 | // The .NET Foundation licenses this file to you under the MIT license. |
4 | // See the LICENSE file in the project root for more information. |
5 | // |
6 | |
7 | #ifndef __CRST_TYPES_INCLUDED |
8 | #define __CRST_TYPES_INCLUDED |
9 | |
10 | // **** THIS IS AN AUTOMATICALLY GENERATED HEADER FILE -- DO NOT EDIT!!! **** |
11 | |
12 | // This file describes the range of Crst types available and their mapping to a numeric level (used by the |
13 | // runtime in debug mode to validate we're deadlock free). To modify these settings edit the |
14 | // file:CrstTypes.def file and run the clr\bin\CrstTypeTool utility to generate a new version of this file. |
15 | |
16 | // Each Crst type is declared as a value in the following CrstType enum. |
17 | enum CrstType |
18 | { |
19 | CrstAllowedFiles = 0, |
20 | CrstAppDomainCache = 1, |
21 | CrstAppDomainHandleTable = 2, |
22 | CrstArgBasedStubCache = 3, |
23 | CrstAssemblyDependencyGraph = 4, |
24 | CrstAssemblyIdentityCache = 5, |
25 | CrstAssemblyList = 6, |
26 | CrstAssemblyLoader = 7, |
27 | CrstAvailableClass = 8, |
28 | CrstAvailableParamTypes = 9, |
29 | CrstBaseDomain = 10, |
30 | CrstCCompRC = 11, |
31 | CrstCer = 12, |
32 | CrstClassFactInfoHash = 13, |
33 | CrstClassInit = 14, |
34 | CrstClrNotification = 15, |
35 | CrstCLRPrivBinderMaps = 16, |
36 | CrstCLRPrivBinderMapsAdd = 17, |
37 | CrstCodeFragmentHeap = 18, |
38 | CrstCOMCallWrapper = 19, |
39 | CrstCOMWrapperCache = 20, |
40 | CrstConnectionNameTable = 21, |
41 | CrstContexts = 22, |
42 | CrstCoreCLRBinderLog = 23, |
43 | CrstCrstCLRPrivBinderLocalWinMDPath = 24, |
44 | CrstCSPCache = 25, |
45 | CrstDataTest1 = 26, |
46 | CrstDataTest2 = 27, |
47 | CrstDbgTransport = 28, |
48 | CrstDeadlockDetection = 29, |
49 | CrstDebuggerController = 30, |
50 | CrstDebuggerFavorLock = 31, |
51 | CrstDebuggerHeapExecMemLock = 32, |
52 | CrstDebuggerHeapLock = 33, |
53 | CrstDebuggerJitInfo = 34, |
54 | CrstDebuggerMutex = 35, |
55 | CrstDelegateToFPtrHash = 36, |
56 | CrstDomainLocalBlock = 37, |
57 | CrstDynamicIL = 38, |
58 | CrstDynamicMT = 39, |
59 | CrstDynLinkZapItems = 40, |
60 | CrstEtwTypeLogHash = 41, |
61 | CrstEventPipe = 42, |
62 | CrstEventStore = 43, |
63 | CrstException = 44, |
64 | CrstExecuteManLock = 45, |
65 | CrstExecuteManRangeLock = 46, |
66 | CrstFCall = 47, |
67 | CrstFriendAccessCache = 48, |
68 | CrstFuncPtrStubs = 49, |
69 | CrstFusionAppCtx = 50, |
70 | CrstGCCover = 51, |
71 | CrstGCMemoryPressure = 52, |
72 | CrstGlobalStrLiteralMap = 53, |
73 | CrstHandleTable = 54, |
74 | CrstHostAssemblyMap = 55, |
75 | CrstHostAssemblyMapAdd = 56, |
76 | CrstIbcProfile = 57, |
77 | CrstIJWFixupData = 58, |
78 | CrstIJWHash = 59, |
79 | CrstILStubGen = 60, |
80 | CrstInlineTrackingMap = 61, |
81 | CrstInstMethodHashTable = 62, |
82 | CrstInterfaceVTableMap = 63, |
83 | CrstInterop = 64, |
84 | CrstInteropData = 65, |
85 | CrstIOThreadpoolWorker = 66, |
86 | CrstIsJMCMethod = 67, |
87 | CrstISymUnmanagedReader = 68, |
88 | CrstJit = 69, |
89 | CrstJitGenericHandleCache = 70, |
90 | CrstJitPerf = 71, |
91 | CrstJumpStubCache = 72, |
92 | CrstLeafLock = 73, |
93 | CrstListLock = 74, |
94 | CrstLoaderAllocator = 75, |
95 | CrstLoaderAllocatorReferences = 76, |
96 | CrstLoaderHeap = 77, |
97 | CrstMda = 78, |
98 | CrstMetadataTracker = 79, |
99 | CrstModIntPairList = 80, |
100 | CrstModule = 81, |
101 | CrstModuleFixup = 82, |
102 | CrstModuleLookupTable = 83, |
103 | CrstMulticoreJitHash = 84, |
104 | CrstMulticoreJitManager = 85, |
105 | CrstMUThunkHash = 86, |
106 | CrstNativeBinderInit = 87, |
107 | CrstNativeImageCache = 88, |
108 | CrstNls = 89, |
109 | CrstNotifyGdb = 90, |
110 | CrstObjectList = 91, |
111 | CrstOnEventManager = 92, |
112 | CrstPatchEntryPoint = 93, |
113 | CrstPEImage = 94, |
114 | CrstPEImagePDBStream = 95, |
115 | CrstPendingTypeLoadEntry = 96, |
116 | CrstPinHandle = 97, |
117 | CrstPinnedByrefValidation = 98, |
118 | CrstProfilerGCRefDataFreeList = 99, |
119 | CrstProfilingAPIStatus = 100, |
120 | CrstPublisherCertificate = 101, |
121 | CrstRCWCache = 102, |
122 | CrstRCWCleanupList = 103, |
123 | CrstRCWRefCache = 104, |
124 | CrstReadyToRunEntryPointToMethodDescMap = 105, |
125 | CrstReDacl = 106, |
126 | CrstReflection = 107, |
127 | CrstReJITDomainTable = 108, |
128 | CrstReJITGlobalRequest = 109, |
129 | CrstRemoting = 110, |
130 | CrstRetThunkCache = 111, |
131 | CrstRWLock = 112, |
132 | CrstSavedExceptionInfo = 113, |
133 | CrstSaveModuleProfileData = 114, |
134 | CrstSecurityStackwalkCache = 115, |
135 | CrstSharedAssemblyCreate = 116, |
136 | CrstSigConvert = 117, |
137 | CrstSingleUseLock = 118, |
138 | CrstSpecialStatics = 119, |
139 | CrstSqmManager = 120, |
140 | CrstStackSampler = 121, |
141 | CrstStressLog = 122, |
142 | CrstStrongName = 123, |
143 | CrstStubCache = 124, |
144 | CrstStubDispatchCache = 125, |
145 | CrstStubUnwindInfoHeapSegments = 126, |
146 | CrstSyncBlockCache = 127, |
147 | CrstSyncHashLock = 128, |
148 | CrstSystemBaseDomain = 129, |
149 | CrstSystemDomain = 130, |
150 | CrstSystemDomainDelayedUnloadList = 131, |
151 | CrstThreadIdDispenser = 132, |
152 | CrstThreadpoolEventCache = 133, |
153 | CrstThreadpoolTimerQueue = 134, |
154 | CrstThreadpoolWaitThreads = 135, |
155 | CrstThreadpoolWorker = 136, |
156 | CrstThreadStaticDataHashTable = 137, |
157 | CrstThreadStore = 138, |
158 | CrstTieredCompilation = 139, |
159 | CrstTPMethodTable = 140, |
160 | CrstTypeEquivalenceMap = 141, |
161 | CrstTypeIDMap = 142, |
162 | CrstUMEntryThunkCache = 143, |
163 | CrstUMThunkHash = 144, |
164 | CrstUniqueStack = 145, |
165 | CrstUnresolvedClassLock = 146, |
166 | CrstUnwindInfoTableLock = 147, |
167 | CrstVSDIndirectionCellLock = 148, |
168 | CrstWinRTFactoryCache = 149, |
169 | CrstWrapperTemplate = 150, |
170 | kNumberOfCrstTypes = 151 |
171 | }; |
172 | |
173 | #endif // __CRST_TYPES_INCLUDED |
174 | |
175 | // Define some debug data in one module only -- vm\crst.cpp. |
176 | #if defined(__IN_CRST_CPP) && defined(_DEBUG) |
177 | |
178 | // An array mapping CrstType to level. |
179 | int g_rgCrstLevelMap[] = |
180 | { |
181 | 9, // CrstAllowedFiles |
182 | 9, // CrstAppDomainCache |
183 | 12, // CrstAppDomainHandleTable |
184 | 0, // CrstArgBasedStubCache |
185 | 0, // CrstAssemblyDependencyGraph |
186 | 0, // CrstAssemblyIdentityCache |
187 | 0, // CrstAssemblyList |
188 | 7, // CrstAssemblyLoader |
189 | 3, // CrstAvailableClass |
190 | 3, // CrstAvailableParamTypes |
191 | 7, // CrstBaseDomain |
192 | -1, // CrstCCompRC |
193 | 9, // CrstCer |
194 | 11, // CrstClassFactInfoHash |
195 | 8, // CrstClassInit |
196 | -1, // CrstClrNotification |
197 | 0, // CrstCLRPrivBinderMaps |
198 | 3, // CrstCLRPrivBinderMapsAdd |
199 | 6, // CrstCodeFragmentHeap |
200 | 0, // CrstCOMCallWrapper |
201 | 4, // CrstCOMWrapperCache |
202 | 0, // CrstConnectionNameTable |
203 | 15, // CrstContexts |
204 | -1, // CrstCoreCLRBinderLog |
205 | 0, // CrstCrstCLRPrivBinderLocalWinMDPath |
206 | 7, // CrstCSPCache |
207 | 3, // CrstDataTest1 |
208 | 0, // CrstDataTest2 |
209 | 0, // CrstDbgTransport |
210 | 0, // CrstDeadlockDetection |
211 | -1, // CrstDebuggerController |
212 | 3, // CrstDebuggerFavorLock |
213 | 0, // CrstDebuggerHeapExecMemLock |
214 | 0, // CrstDebuggerHeapLock |
215 | 4, // CrstDebuggerJitInfo |
216 | 9, // CrstDebuggerMutex |
217 | 0, // CrstDelegateToFPtrHash |
218 | 14, // CrstDomainLocalBlock |
219 | 0, // CrstDynamicIL |
220 | 3, // CrstDynamicMT |
221 | 3, // CrstDynLinkZapItems |
222 | 7, // CrstEtwTypeLogHash |
223 | 17, // CrstEventPipe |
224 | 0, // CrstEventStore |
225 | 0, // CrstException |
226 | 7, // CrstExecuteManLock |
227 | 0, // CrstExecuteManRangeLock |
228 | 3, // CrstFCall |
229 | 7, // CrstFriendAccessCache |
230 | 7, // CrstFuncPtrStubs |
231 | 5, // CrstFusionAppCtx |
232 | 9, // CrstGCCover |
233 | 0, // CrstGCMemoryPressure |
234 | 11, // CrstGlobalStrLiteralMap |
235 | 1, // CrstHandleTable |
236 | 0, // CrstHostAssemblyMap |
237 | 3, // CrstHostAssemblyMapAdd |
238 | 0, // CrstIbcProfile |
239 | 9, // CrstIJWFixupData |
240 | 0, // CrstIJWHash |
241 | 7, // CrstILStubGen |
242 | 3, // CrstInlineTrackingMap |
243 | 15, // CrstInstMethodHashTable |
244 | 0, // CrstInterfaceVTableMap |
245 | 17, // CrstInterop |
246 | 4, // CrstInteropData |
247 | 11, // CrstIOThreadpoolWorker |
248 | 0, // CrstIsJMCMethod |
249 | 7, // CrstISymUnmanagedReader |
250 | 8, // CrstJit |
251 | 0, // CrstJitGenericHandleCache |
252 | -1, // CrstJitPerf |
253 | 6, // CrstJumpStubCache |
254 | 0, // CrstLeafLock |
255 | -1, // CrstListLock |
256 | 13, // CrstLoaderAllocator |
257 | 14, // CrstLoaderAllocatorReferences |
258 | 0, // CrstLoaderHeap |
259 | 0, // CrstMda |
260 | -1, // CrstMetadataTracker |
261 | 0, // CrstModIntPairList |
262 | 4, // CrstModule |
263 | 13, // CrstModuleFixup |
264 | 3, // CrstModuleLookupTable |
265 | 0, // CrstMulticoreJitHash |
266 | 11, // CrstMulticoreJitManager |
267 | 0, // CrstMUThunkHash |
268 | -1, // CrstNativeBinderInit |
269 | -1, // CrstNativeImageCache |
270 | 0, // CrstNls |
271 | 0, // CrstNotifyGdb |
272 | 2, // CrstObjectList |
273 | 0, // CrstOnEventManager |
274 | 0, // CrstPatchEntryPoint |
275 | 4, // CrstPEImage |
276 | 0, // CrstPEImagePDBStream |
277 | 16, // CrstPendingTypeLoadEntry |
278 | 0, // CrstPinHandle |
279 | 0, // CrstPinnedByrefValidation |
280 | 0, // CrstProfilerGCRefDataFreeList |
281 | 0, // CrstProfilingAPIStatus |
282 | 0, // CrstPublisherCertificate |
283 | 3, // CrstRCWCache |
284 | 0, // CrstRCWCleanupList |
285 | 3, // CrstRCWRefCache |
286 | 4, // CrstReadyToRunEntryPointToMethodDescMap |
287 | 0, // CrstReDacl |
288 | 9, // CrstReflection |
289 | 7, // CrstReJITDomainTable |
290 | 12, // CrstReJITGlobalRequest |
291 | 17, // CrstRemoting |
292 | 3, // CrstRetThunkCache |
293 | 0, // CrstRWLock |
294 | 3, // CrstSavedExceptionInfo |
295 | 0, // CrstSaveModuleProfileData |
296 | 0, // CrstSecurityStackwalkCache |
297 | 4, // CrstSharedAssemblyCreate |
298 | 3, // CrstSigConvert |
299 | 5, // CrstSingleUseLock |
300 | 0, // CrstSpecialStatics |
301 | 0, // CrstSqmManager |
302 | 0, // CrstStackSampler |
303 | -1, // CrstStressLog |
304 | 0, // CrstStrongName |
305 | 5, // CrstStubCache |
306 | 0, // CrstStubDispatchCache |
307 | 4, // CrstStubUnwindInfoHeapSegments |
308 | 3, // CrstSyncBlockCache |
309 | 0, // CrstSyncHashLock |
310 | 4, // CrstSystemBaseDomain |
311 | 11, // CrstSystemDomain |
312 | 0, // CrstSystemDomainDelayedUnloadList |
313 | 0, // CrstThreadIdDispenser |
314 | 0, // CrstThreadpoolEventCache |
315 | 7, // CrstThreadpoolTimerQueue |
316 | 7, // CrstThreadpoolWaitThreads |
317 | 11, // CrstThreadpoolWorker |
318 | 4, // CrstThreadStaticDataHashTable |
319 | 10, // CrstThreadStore |
320 | 9, // CrstTieredCompilation |
321 | 9, // CrstTPMethodTable |
322 | 3, // CrstTypeEquivalenceMap |
323 | 7, // CrstTypeIDMap |
324 | 3, // CrstUMEntryThunkCache |
325 | 0, // CrstUMThunkHash |
326 | 3, // CrstUniqueStack |
327 | 7, // CrstUnresolvedClassLock |
328 | 3, // CrstUnwindInfoTableLock |
329 | 3, // CrstVSDIndirectionCellLock |
330 | 3, // CrstWinRTFactoryCache |
331 | 3, // CrstWrapperTemplate |
332 | }; |
333 | |
334 | // An array mapping CrstType to a stringized name. |
335 | LPCSTR g_rgCrstNameMap[] = |
336 | { |
337 | "CrstAllowedFiles" , |
338 | "CrstAppDomainCache" , |
339 | "CrstAppDomainHandleTable" , |
340 | "CrstArgBasedStubCache" , |
341 | "CrstAssemblyDependencyGraph" , |
342 | "CrstAssemblyIdentityCache" , |
343 | "CrstAssemblyList" , |
344 | "CrstAssemblyLoader" , |
345 | "CrstAvailableClass" , |
346 | "CrstAvailableParamTypes" , |
347 | "CrstBaseDomain" , |
348 | "CrstCCompRC" , |
349 | "CrstCer" , |
350 | "CrstClassFactInfoHash" , |
351 | "CrstClassInit" , |
352 | "CrstClrNotification" , |
353 | "CrstCLRPrivBinderMaps" , |
354 | "CrstCLRPrivBinderMapsAdd" , |
355 | "CrstCodeFragmentHeap" , |
356 | "CrstCOMCallWrapper" , |
357 | "CrstCOMWrapperCache" , |
358 | "CrstConnectionNameTable" , |
359 | "CrstContexts" , |
360 | "CrstCoreCLRBinderLog" , |
361 | "CrstCrstCLRPrivBinderLocalWinMDPath" , |
362 | "CrstCSPCache" , |
363 | "CrstDataTest1" , |
364 | "CrstDataTest2" , |
365 | "CrstDbgTransport" , |
366 | "CrstDeadlockDetection" , |
367 | "CrstDebuggerController" , |
368 | "CrstDebuggerFavorLock" , |
369 | "CrstDebuggerHeapExecMemLock" , |
370 | "CrstDebuggerHeapLock" , |
371 | "CrstDebuggerJitInfo" , |
372 | "CrstDebuggerMutex" , |
373 | "CrstDelegateToFPtrHash" , |
374 | "CrstDomainLocalBlock" , |
375 | "CrstDynamicIL" , |
376 | "CrstDynamicMT" , |
377 | "CrstDynLinkZapItems" , |
378 | "CrstEtwTypeLogHash" , |
379 | "CrstEventPipe" , |
380 | "CrstEventStore" , |
381 | "CrstException" , |
382 | "CrstExecuteManLock" , |
383 | "CrstExecuteManRangeLock" , |
384 | "CrstFCall" , |
385 | "CrstFriendAccessCache" , |
386 | "CrstFuncPtrStubs" , |
387 | "CrstFusionAppCtx" , |
388 | "CrstGCCover" , |
389 | "CrstGCMemoryPressure" , |
390 | "CrstGlobalStrLiteralMap" , |
391 | "CrstHandleTable" , |
392 | "CrstHostAssemblyMap" , |
393 | "CrstHostAssemblyMapAdd" , |
394 | "CrstIbcProfile" , |
395 | "CrstIJWFixupData" , |
396 | "CrstIJWHash" , |
397 | "CrstILStubGen" , |
398 | "CrstInlineTrackingMap" , |
399 | "CrstInstMethodHashTable" , |
400 | "CrstInterfaceVTableMap" , |
401 | "CrstInterop" , |
402 | "CrstInteropData" , |
403 | "CrstIOThreadpoolWorker" , |
404 | "CrstIsJMCMethod" , |
405 | "CrstISymUnmanagedReader" , |
406 | "CrstJit" , |
407 | "CrstJitGenericHandleCache" , |
408 | "CrstJitPerf" , |
409 | "CrstJumpStubCache" , |
410 | "CrstLeafLock" , |
411 | "CrstListLock" , |
412 | "CrstLoaderAllocator" , |
413 | "CrstLoaderAllocatorReferences" , |
414 | "CrstLoaderHeap" , |
415 | "CrstMda" , |
416 | "CrstMetadataTracker" , |
417 | "CrstModIntPairList" , |
418 | "CrstModule" , |
419 | "CrstModuleFixup" , |
420 | "CrstModuleLookupTable" , |
421 | "CrstMulticoreJitHash" , |
422 | "CrstMulticoreJitManager" , |
423 | "CrstMUThunkHash" , |
424 | "CrstNativeBinderInit" , |
425 | "CrstNativeImageCache" , |
426 | "CrstNls" , |
427 | "CrstNotifyGdb" , |
428 | "CrstObjectList" , |
429 | "CrstOnEventManager" , |
430 | "CrstPatchEntryPoint" , |
431 | "CrstPEImage" , |
432 | "CrstPEImagePDBStream" , |
433 | "CrstPendingTypeLoadEntry" , |
434 | "CrstPinHandle" , |
435 | "CrstPinnedByrefValidation" , |
436 | "CrstProfilerGCRefDataFreeList" , |
437 | "CrstProfilingAPIStatus" , |
438 | "CrstPublisherCertificate" , |
439 | "CrstRCWCache" , |
440 | "CrstRCWCleanupList" , |
441 | "CrstRCWRefCache" , |
442 | "CrstReadyToRunEntryPointToMethodDescMap" , |
443 | "CrstReDacl" , |
444 | "CrstReflection" , |
445 | "CrstReJITDomainTable" , |
446 | "CrstReJITGlobalRequest" , |
447 | "CrstRemoting" , |
448 | "CrstRetThunkCache" , |
449 | "CrstRWLock" , |
450 | "CrstSavedExceptionInfo" , |
451 | "CrstSaveModuleProfileData" , |
452 | "CrstSecurityStackwalkCache" , |
453 | "CrstSharedAssemblyCreate" , |
454 | "CrstSigConvert" , |
455 | "CrstSingleUseLock" , |
456 | "CrstSpecialStatics" , |
457 | "CrstSqmManager" , |
458 | "CrstStackSampler" , |
459 | "CrstStressLog" , |
460 | "CrstStrongName" , |
461 | "CrstStubCache" , |
462 | "CrstStubDispatchCache" , |
463 | "CrstStubUnwindInfoHeapSegments" , |
464 | "CrstSyncBlockCache" , |
465 | "CrstSyncHashLock" , |
466 | "CrstSystemBaseDomain" , |
467 | "CrstSystemDomain" , |
468 | "CrstSystemDomainDelayedUnloadList" , |
469 | "CrstThreadIdDispenser" , |
470 | "CrstThreadpoolEventCache" , |
471 | "CrstThreadpoolTimerQueue" , |
472 | "CrstThreadpoolWaitThreads" , |
473 | "CrstThreadpoolWorker" , |
474 | "CrstThreadStaticDataHashTable" , |
475 | "CrstThreadStore" , |
476 | "CrstTieredCompilation" , |
477 | "CrstTPMethodTable" , |
478 | "CrstTypeEquivalenceMap" , |
479 | "CrstTypeIDMap" , |
480 | "CrstUMEntryThunkCache" , |
481 | "CrstUMThunkHash" , |
482 | "CrstUniqueStack" , |
483 | "CrstUnresolvedClassLock" , |
484 | "CrstUnwindInfoTableLock" , |
485 | "CrstVSDIndirectionCellLock" , |
486 | "CrstWinRTFactoryCache" , |
487 | "CrstWrapperTemplate" , |
488 | }; |
489 | |
490 | // Define a special level constant for unordered locks. |
491 | #define CRSTUNORDERED (-1) |
492 | |
493 | // Define inline helpers to map Crst types to names and levels. |
494 | inline static int GetCrstLevel(CrstType crstType) |
495 | { |
496 | LIMITED_METHOD_CONTRACT; |
497 | _ASSERTE(crstType >= 0 && crstType < kNumberOfCrstTypes); |
498 | return g_rgCrstLevelMap[crstType]; |
499 | } |
500 | inline static LPCSTR GetCrstName(CrstType crstType) |
501 | { |
502 | LIMITED_METHOD_CONTRACT; |
503 | _ASSERTE(crstType >= 0 && crstType < kNumberOfCrstTypes); |
504 | return g_rgCrstNameMap[crstType]; |
505 | } |
506 | |
507 | #endif // defined(__IN_CRST_CPP) && defined(_DEBUG) |
508 | |