Annotation of ntddk/inc/exlevels.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.