|
|
1.1 root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects
2:
3: Copyright (c) 1989 Microsoft Corporation
4:
5: Module Name:
6:
7: exlevels.h
8:
9: Abstract:
10:
11: This file contains all of the MUTEX level numbers used by the NT
12: executive. A thread is only allowed to acquire mutexes with levels
13: numerically higher than the highest mutex level already owned.
14:
15: Author:
16:
17: Steve Wood (stevewo) 08-May-1989
18:
19: Revision History:
20:
21: --*/
22:
23: //
24: // Kernel Mutex Level Numbers (must be globallly assigned within executive)
25: // The third token in the name is the sub-component name that defines and
26: // uses the level number.
27: //
28:
29: //
30: // Used by Vdm for protecting io simulation structures
31: //
32:
33: #define MUTEX_LEVEL_VDM_IO (ULONG)0x00000001
34:
35: //
36: // CM mutex levels, one for each level of hive allowed, fixed at two
37: // for current system.
38: //
39:
40: #define MUTEX_LEVEL_CM_COMMUNICATION (ULONG)0x00000009
41: #define MUTEX_LEVEL_CM_REGISTRY_OPERATION (ULONG)0x00000010
42:
43: #define MUTEX_LEVEL_PS_MODULE (ULONG)0x00000020
44:
45: #define MUTEX_LEVEL_EX_PROFILE (ULONG)0x00000040
46:
47: #define MUTEX_LEVEL_MM_PAGEFILE (ULONG)0x00000050
48: #define MUTEX_LEVEL_MM_ADDRESS_CREATION (ULONG)0x00000100
49:
50: #define MUTEX_LEVEL_SE_TOKEN (ULONG)0x00000800
51:
52: #define MUTEX_LEVEL_PS_CID_TABLE (ULONG)0x00000F00
53:
54: #define MUTEX_LEVEL_OB_TABLE (ULONG)0x00001000
55: #define MUTEX_LEVEL_OB_DIRECTORY (ULONG)0x00002000
56: #define MUTEX_LEVEL_OB_TYPE (ULONG)0x00003000
57:
58: #define MUTEX_LEVEL_PS_ACTIVE_PROCESS (ULONG)0x00004000
59: #define MUTEX_LEVEL_PS_THREAD_TOKEN (ULONG)0x0000E000
60: #define MUTEX_LEVEL_PS_PROCESS_TOKEN (ULONG)0x0000F000
61:
62: #define MUTEX_LEVEL_PS_REAPER_LOCK (ULONG)0x00010000
63:
64: #define MUTEX_LEVEL_SE_LSA_QUEUE (ULONG)0x00020000
65:
66:
67: #define MUTEX_LEVEL_MM_SECTION_BASED (ULONG)0x10001000
68: #define MUTEX_LEVEL_MM_SECTION_COMMIT (ULONG)0x10001001
69:
70:
71: #define MUTEX_LEVEL_EX_LUID (ULONG)0x10001FFF
72:
73: //
74: // The LANMAN Redirector uses the file system major function, but defines
75: // it's own mutex levels. We can do this safely because we know that the
76: // local filesystem will never call the remote filesystem and vice versa.
77: //
78:
79: #define MUTEX_LEVEL_RDR_FILESYS_DATABASE (ULONG)0x10100000
80: #define MUTEX_LEVEL_RDR_FILESYS_SECURITY (ULONG)0x10100001
81:
82: //
83: // The LANMAN Browser also uses the file system major functions to protect
84: // the browser database.
85: //
86:
87: #define MUTEX_LEVEL_BOWSER_TRANSPORT_LOCK (ULONG)0x10200000
88: #define MUTEX_LEVEL_BOWSER_ANNOUNCE (ULONG)0x10200001
89:
90: //
91: // File System levels.
92: //
93:
94: #define MUTEX_LEVEL_FILESYSTEM_WORKQUE (ULONG)0x11000000
95: #define MUTEX_LEVEL_FILESYSTEM_VMCB (ULONG)0x11000001
96: #define MUTEX_LEVEL_FILESYSTEM_FCBM (ULONG)0x11000002
97: #define MUTEX_LEVEL_FILESYSTEM_MCB (ULONG)0x11000003
98: #define MUTEX_LEVEL_FILESYSTEM_CD_STREAM (ULONG)0x11000004
99: #define MUTEX_LEVEL_FILESYSTEM_NOTIFY (ULONG)0x11000005
100: #define MUTEX_LEVEL_FILESYSTEM_RAW_VCB (ULONG)0x11000006
101:
102: //
103: // In the NT STREAMS environment, a mutex is used to serialize open, close
104: // and Scheduler threads executing in a subsystem-parallelized stack.
105: //
106:
107: #define MUTEX_LEVEL_STREAMS_DEVTAB (ULONG)0x11001000
108: #define MUTEX_LEVEL_STREAMS_SUBSYS (ULONG)0x11001001
109:
110: //
111: // The FsRtl mutex levels used to protect queues used to store IRPs from
112: // being cancelled
113: //
114:
115: #define MUTEX_LEVEL_FSRTL_FILELOCK_QUEUE (ULONG)0x12000000
116: #define MUTEX_LEVEL_FSRTL_OPLOCK (ULONG)0x12000001
117:
118: //
119: // Mutex level used by LDT support on x86
120: //
121:
122: #define MUTEX_LEVEL_PS_LDT (ULONG)0x1F000000
123:
124: //
125: // No Paged Pool Allocation or Deallocation is allowed if a numerically
126: // higher-level mutex (defined lower on the page) is already owned.
127: //
128:
129: #define MUTEX_LEVEL_EX_PAGED_POOL (ULONG)0x20000000
130:
131: //
132: // Paging File Mcb levels. Known not to allocate paged pool.
133: //
134:
135: #define MUTEX_LEVEL_FILESYSTEM_NONPAGEDMCB (ULONG)0x21000000
136:
137:
138: //
139: // No Page Faults are allowed if a numerically higher-level mutex (defined
140: // lower on this page) is already owned.
141: //
142:
143: #define MUTEX_LEVEL_MM_WORKING_SET (ULONG)0x40000000
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.