1 /* 2 * concurrencysal.h 3 * 4 * Standard Annotation Language (SAL) definitions for synchronisation 5 * 6 * This file is part of the ReactOS PSDK package. 7 * 8 * Contributors: 9 * Timo Kreuzer (timo.kreuzer@reactos.org) 10 * 11 * THIS SOFTWARE IS NOT COPYRIGHTED 12 * 13 * This source code is offered for use in the public domain. You may 14 * use, modify or distribute it freely. 15 * 16 * This code is distributed in the hope that it will be useful but 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 18 * DISCLAIMED. This includes but is not limited to warranties of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 20 * 21 */ 22 23 #if defined(_PREFAST_) 24 25 #define _Benign_race_begin_ __pragma(warning(push)) __pragma(warning(disable:26100 26101 26150 26130 26180 26131 26181 28112)) 26 #define _Benign_race_end_ __pragma(warning(pop)) 27 #define _No_competing_thread_begin_ __pragma(warning(push)) __pragma(warning(disable:26100 26101 26150 26101 26151 26110 26160 26130 26180 26131 26181 28112)) 28 #define _No_competing_thread_end_ __pragma(warning(pop)) 29 30 #define _Acquires_exclusive_lock_(lock) 31 #define _Acquires_lock_(lock) 32 #define _Acquires_nonreentrant_lock_(lock) 33 #define _Acquires_shared_lock_(lock) 34 #define _Analysis_assume_lock_acquired_(lock) 35 #define _Analysis_assume_lock_released_(lock) 36 #define _Analysis_assume_lock_held_(lock) 37 #define _Analysis_assume_lock_not_held_(lock) 38 #define _Analysis_assume_same_lock_(lock1, lock2) 39 #define _Analysis_suppress_lock_checking_(lock) 40 #define _Create_lock_level_(level) 41 #define _Csalcat1_(x,y) 42 #define _Csalcat2_(x,y) 43 #define _Function_ignore_lock_checking_(lock) 44 #define _Guarded_by_(lock) 45 #define _Has_lock_kind_(kind) 46 #define _Has_lock_level_(level) 47 #define _Interlocked_ 48 #define _Internal_lock_level_order_(a,b) 49 #define _Lock_level_order_(a,b) 50 #define _No_competing_thread_ 51 #define _Post_same_lock_(lock1,lock2) 52 #define _Releases_exclusive_lock_(lock) 53 #define _Releases_lock_(lock) 54 #define _Releases_nonreentrant_lock_(lock) 55 #define _Releases_shared_lock_(lock) 56 #define _Requires_exclusive_lock_held_(lock) 57 #define _Requires_shared_lock_held_(lock) 58 #define _Requires_lock_held_(lock) 59 #define _Requires_lock_not_held_(lock) 60 #define _Requires_no_locks_held_ 61 #define _Write_guarded_by_(lock) 62 63 64 const char _Lock_kind_mutex_[] = ""; 65 const char _Lock_kind_event_[] = ""; 66 const char _Lock_kind_semaphore_[] = ""; 67 const char _Lock_kind_spin_lock_[] = ""; 68 const char _Lock_kind_critical_section_[] = ""; 69 70 #else /* _PREFAST_ */ 71 72 #define _Benign_race_begin_ __pragma(warning(push)) 73 #define _Benign_race_end_ __pragma(warning(pop)) 74 #define _No_competing_thread_begin_ __pragma(warning(push)) 75 #define _No_competing_thread_end_ __pragma(warning(pop)) 76 77 #define _Acquires_exclusive_lock_(lock) 78 #define _Acquires_lock_(lock) 79 #define _Acquires_nonreentrant_lock_(lock) 80 #define _Acquires_shared_lock_(lock) 81 #define _Analysis_assume_lock_acquired_(lock) 82 #define _Analysis_assume_lock_released_(lock) 83 #define _Analysis_assume_lock_held_(lock) 84 #define _Analysis_assume_lock_not_held_(lock) 85 #define _Analysis_assume_same_lock_(lock1, lock2) 86 #define _Analysis_suppress_lock_checking_(lock) 87 #define _Create_lock_level_(level) 88 #define _Csalcat1_(x,y) 89 #define _Csalcat2_(x,y) 90 #define _Function_ignore_lock_checking_(lock) 91 #define _Guarded_by_(lock) 92 #define _Has_lock_kind_(kind) 93 #define _Has_lock_level_(level) 94 #define _Interlocked_ 95 #define _Internal_lock_level_order_(a,b) 96 #define _Lock_level_order_(a,b) 97 #define _No_competing_thread_ 98 #define _Post_same_lock_(lock1,lock2) 99 #define _Releases_exclusive_lock_(lock) 100 #define _Releases_lock_(lock) 101 #define _Releases_nonreentrant_lock_(lock) 102 #define _Releases_shared_lock_(lock) 103 #define _Requires_exclusive_lock_held_(lock) 104 #define _Requires_shared_lock_held_(lock) 105 #define _Requires_lock_held_(lock) 106 #define _Requires_lock_not_held_(lock) 107 #define _Requires_no_locks_held_ 108 #define _Write_guarded_by_(lock) 109 110 #endif /* _PREFAST_ */ 111 112 #if 0 /* Check these */ 113 #define _Internal_set_lock_count_(lock, count) 114 #define _Internal_set_lock_count_to_zero_(lock) 115 #define _Internal_set_lock_count_to_one_(lock) 116 #endif // 0 117 118