mirror of
https://github.com/reactos/reactos.git
synced 2025-01-03 21:09:19 +00:00
[SAL]
- kernelspecs.h: Add IRQL level defines, remove a duplicate annotation and make some definitions more consistent - concurrencysal.h: Add missing annotations (only dummies so far) - driverspecs.h: Add some missing annotations - sal_old.h: remove __inner_callback, which is in sal.h svn path=/trunk/; revision=66654
This commit is contained in:
parent
ba96aa436b
commit
bb60692b92
4 changed files with 159 additions and 22 deletions
|
@ -27,6 +27,20 @@
|
|||
|
||||
#ifdef _PREFAST_
|
||||
|
||||
/* Make sure we have IRQL level definitions early */
|
||||
#define DISPATCH_LEVEL 2
|
||||
#define APC_LEVEL 1
|
||||
#define PASSIVE_LEVEL 0
|
||||
#if defined(_X86_)
|
||||
#define HIGH_LEVEL 31
|
||||
#elif defined(_AMD64_)
|
||||
#define HIGH_LEVEL 15
|
||||
#elif defined(_ARM_)
|
||||
#define HIGH_LEVEL 15
|
||||
#elif defined(_IA64_)
|
||||
#define HIGH_LEVEL 15
|
||||
#endif
|
||||
|
||||
#undef _IRQL_always_function_max_
|
||||
#undef _IRQL_always_function_min_
|
||||
#undef _IRQL_raises_
|
||||
|
@ -68,18 +82,18 @@
|
|||
#define _IRQL_saves_global_(kind,param) _Post_ _SA_annotes2(SAL_saveIRQLGlobal,#kind, param\t)
|
||||
#define _IRQL_uses_cancel_ _Post_ _SA_annotes0(SAL_UseCancelIrql)
|
||||
#define _IRQL_is_cancel_ _IRQL_uses_cancel_ _Releases_nonreentrant_lock_(_Global_cancel_spin_lock_) \
|
||||
_At_(return, _IRQL_always_function_min_(2 /*DISPATCH_LEVEL*/) _IRQL_requires_(2 /*DISPATCH_LEVEL*/))
|
||||
_At_(return, _IRQL_always_function_min_(DISPATCH_LEVEL) _IRQL_requires_(DISPATCH_LEVEL))
|
||||
#define __drv_setsIRQL(irql) _Post_ _SA_annotes1(SAL_IRQL,irql)
|
||||
#define __drv_raisesIRQL _IRQL_raises_
|
||||
#define __drv_requiresIRQL _IRQL_requires_
|
||||
#define __drv_maxIRQL _IRQL_requires_max_
|
||||
#define __drv_minIRQL _IRQL_requires_min_
|
||||
#define __drv_raisesIRQL(irql) _IRQL_raises_(irql)
|
||||
#define __drv_requiresIRQL(irql) _IRQL_requires_(irql)
|
||||
#define __drv_maxIRQL(irql) _IRQL_requires_max_(irql)
|
||||
#define __drv_minIRQL(irql) _IRQL_requires_min_(irql)
|
||||
#define __drv_savesIRQL _IRQL_saves_
|
||||
#define __drv_savesIRQLGlobal _IRQL_saves_global_
|
||||
#define __drv_savesIRQLGlobal(kind,param) _IRQL_saves_global_(kind,param)
|
||||
#define __drv_restoresIRQL _IRQL_restores_
|
||||
#define __drv_restoresIRQLGlobal _IRQL_restores_global_
|
||||
#define __drv_minFunctionIRQL _IRQL_always_function_min_
|
||||
#define __drv_maxFunctionIRQL _IRQL_always_function_max_
|
||||
#define __drv_restoresIRQLGlobal(kind,param) _IRQL_restores_global_(kind,param)
|
||||
#define __drv_minFunctionIRQL(irql) _IRQL_always_function_min_(irql)
|
||||
#define __drv_maxFunctionIRQL(irql) _IRQL_always_function_max_(irql)
|
||||
#define __drv_sameIRQL _IRQL_requires_same_
|
||||
#define __drv_useCancelIRQL _IRQL_uses_cancel_
|
||||
#define __drv_isCancelIRQL _IRQL_is_cancel_
|
||||
|
@ -90,7 +104,6 @@ extern "C" {
|
|||
|
||||
__ANNOTATION(SAL_IRQL(__int64);)
|
||||
__ANNOTATION(SAL_raiseIRQL(__int64);)
|
||||
__ANNOTATION(SAL_IRQL(__int64);)
|
||||
__ANNOTATION(SAL_maxIRQL(__int64);)
|
||||
__ANNOTATION(SAL_minIRQL(__int64);)
|
||||
__ANNOTATION(SAL_saveIRQL(void);)
|
||||
|
|
|
@ -20,13 +20,98 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#if defined(_PREFAST_)
|
||||
|
||||
#define _Benign_race_begin_ __pragma(warning(push)) __pragma(warning(disable:26100 26101 26150 26130 26180 26131 26181 28112))
|
||||
#define _Benign_race_end_ __pragma(warning(pop))
|
||||
#define _No_competing_thread_begin_ __pragma(warning(push)) __pragma(warning(disable:26100 26101 26150 26101 26151 26110 26160 26130 26180 26131 26181 28112))
|
||||
#define _No_competing_thread_end_ __pragma(warning(pop))
|
||||
|
||||
#define _Acquires_exclusive_lock_(lock)
|
||||
#define _Acquires_lock_(lock)
|
||||
#define _Acquires_nonreentrant_lock_(lock)
|
||||
#define _Acquires_shared_lock_(lock)
|
||||
#define _Analysis_assume_lock_acquired_(lock)
|
||||
#define _Analysis_assume_lock_released_(lock)
|
||||
#define _Analysis_assume_lock_held_(lock)
|
||||
#define _Analysis_assume_lock_not_held_(lock)
|
||||
#define _Analysis_assume_same_lock_(lock1, lock2)
|
||||
#define _Analysis_suppress_lock_checking_(lock)
|
||||
#define _Create_lock_level_(level)
|
||||
#define _Csalcat1_(x,y)
|
||||
#define _Csalcat2_(x,y)
|
||||
#define _Function_ignore_lock_checking_(lock)
|
||||
#define _Guarded_by_(lock)
|
||||
#define _Has_lock_kind_(kind)
|
||||
#define _Has_lock_level_(level)
|
||||
#define _Interlocked_
|
||||
#define _Internal_lock_level_order_(a,b)
|
||||
#define _Lock_level_order_(a,b)
|
||||
#define _No_competing_thread_
|
||||
#define _Post_same_lock_(lock1,lock2)
|
||||
#define _Releases_exclusive_lock_(lock)
|
||||
#define _Releases_lock_(lock)
|
||||
#define _Releases_nonreentrant_lock_(lock)
|
||||
#define _Releases_shared_lock_(lock)
|
||||
#define _Requires_exclusive_lock_held_(lock)
|
||||
#define _Requires_shared_lock_held_(lock)
|
||||
#define _Requires_lock_held_(lock)
|
||||
#define _Requires_lock_not_held_(lock)
|
||||
#define _Acquires_lock_(lock)
|
||||
#define _Acquires_shared_lock_(lock)
|
||||
#define _Acquires_exclusive_lock_(lock)
|
||||
#define _Releases_lock_(lock)
|
||||
#define _Post_same_lock_(lock1,lock2)
|
||||
#define _Requires_no_locks_held_
|
||||
#define _Write_guarded_by_(lock)
|
||||
|
||||
|
||||
const char _Lock_kind_mutex_[] = "";
|
||||
const char _Lock_kind_event_[] = "";
|
||||
const char _Lock_kind_semaphore_[] = "";
|
||||
const char _Lock_kind_spin_lock_[] = "";
|
||||
const char _Lock_kind_critical_section_[] = "";
|
||||
|
||||
#else /* _PREFAST_ */
|
||||
|
||||
#define _Benign_race_begin_ __pragma(warning(push))
|
||||
#define _Benign_race_end_ __pragma(warning(pop))
|
||||
#define _No_competing_thread_begin_ __pragma(warning(push))
|
||||
#define _No_competing_thread_end_ __pragma(warning(pop))
|
||||
|
||||
#define _Acquires_exclusive_lock_(lock)
|
||||
#define _Acquires_lock_(lock)
|
||||
#define _Acquires_nonreentrant_lock_(lock)
|
||||
#define _Acquires_shared_lock_(lock)
|
||||
#define _Analysis_assume_lock_acquired_(lock)
|
||||
#define _Analysis_assume_lock_released_(lock)
|
||||
#define _Analysis_assume_lock_held_(lock)
|
||||
#define _Analysis_assume_lock_not_held_(lock)
|
||||
#define _Analysis_assume_same_lock_(lock1, lock2)
|
||||
#define _Analysis_suppress_lock_checking_(lock)
|
||||
#define _Create_lock_level_(level)
|
||||
#define _Csalcat1_(x,y)
|
||||
#define _Csalcat2_(x,y)
|
||||
#define _Function_ignore_lock_checking_(lock)
|
||||
#define _Guarded_by_(lock)
|
||||
#define _Has_lock_kind_(kind)
|
||||
#define _Has_lock_level_(level)
|
||||
#define _Interlocked_
|
||||
#define _Internal_lock_level_order_(a,b)
|
||||
#define _Lock_level_order_(a,b)
|
||||
#define _No_competing_thread_
|
||||
#define _Post_same_lock_(lock1,lock2)
|
||||
#define _Releases_exclusive_lock_(lock)
|
||||
#define _Releases_lock_(lock)
|
||||
#define _Releases_nonreentrant_lock_(lock)
|
||||
#define _Releases_shared_lock_(lock)
|
||||
#define _Requires_exclusive_lock_held_(lock)
|
||||
#define _Requires_shared_lock_held_(lock)
|
||||
#define _Requires_lock_held_(lock)
|
||||
#define _Requires_lock_not_held_(lock)
|
||||
#define _Requires_no_locks_held_
|
||||
#define _Write_guarded_by_(lock)
|
||||
|
||||
#endif /* _PREFAST_ */
|
||||
|
||||
#if 0 /* Check these */
|
||||
#define _Internal_set_lock_count_(lock, count)
|
||||
#define _Internal_set_lock_count_to_zero_(lock)
|
||||
#define _Internal_set_lock_count_to_one_(lock)
|
||||
#endif // 0
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <specstrings.h>
|
||||
#endif
|
||||
|
||||
//#include "sdv_driverspecs.h"
|
||||
#include <concurrencysal.h>
|
||||
|
||||
#ifdef _PREFAST_
|
||||
|
@ -34,7 +35,7 @@
|
|||
#define _IRQL_uses_cancel_
|
||||
#define __drv_setsIRQL(irql)
|
||||
|
||||
#define _Dispatch_type_ _Function_class_
|
||||
#define _Dispatch_type_(x) _Function_class_(x)
|
||||
#define _Kernel_clear_do_init_(yesNo) _Post_ _SA_annotes1(SAL_clearDoInit,yesNo)
|
||||
#define _Kernel_float_restored_ _Post_ _SA_annotes0(SAL_floatRestored)
|
||||
#define _Kernel_float_saved_ _Post_ _SA_annotes0(SAL_floatSaved)
|
||||
|
@ -44,7 +45,7 @@
|
|||
#define _Kernel_requires_resource_held_(kind) _Pre_ _SA_annotes1(SAL_mustHold, #kind)
|
||||
#define _Kernel_requires_resource_not_held_(kind) _Pre_ _SA_annotes1(SAL_neverHold, #kind)
|
||||
#define _Kernel_acquires_resource_(kind) _Post_ _SA_annotes1(SAL_acquire, #kind)
|
||||
|
||||
#define _Landmark_(name)
|
||||
#define __drv_acquiresCancelSpinLock _Acquires_nonreentrant_lock_(_Global_cancel_spin_lock_)
|
||||
#define __drv_acquiresCriticalRegion _Acquires_lock_(_Global_critical_region_)
|
||||
#define __drv_acquiresExclusiveResource(kind) _Acquires_nonreentrant_lock_(_Curr_)
|
||||
|
@ -70,7 +71,7 @@
|
|||
#define __drv_formatString(kind) _SA_annotes1(SAL_IsFormatString, #kind)
|
||||
#define __drv_freesMem(kind) _Post_ _SA_annotes1(SAL_NeedsRelease,__no)
|
||||
#define __drv_fun(annotes) _At_(return, annotes)
|
||||
#define __drv_functionClass _Function_class_
|
||||
#define __drv_functionClass(x) _Function_class_(x)
|
||||
#define __drv_holdsCancelSpinLock() _Holds_resource_global_("CancelSpinLock",)
|
||||
#define __drv_holdsCriticalRegion() _Holds_resource_global_("CriticalRegion",)
|
||||
#define __drv_holdsPriorityRegion() _Holds_resource_global_("PriorityRegion",)
|
||||
|
@ -81,6 +82,7 @@
|
|||
#define __drv_innerNeverHoldGlobal(kind,param)
|
||||
#define __drv_innerReleasesGlobal(kind,param)
|
||||
#define __drv_interlocked
|
||||
#define __drv_inTry
|
||||
#define __drv_IoGetDmaAdapter
|
||||
#define __drv_isCancelIRQL _IRQL_is_cancel_
|
||||
#define __drv_isObjectPointer
|
||||
|
@ -118,7 +120,7 @@
|
|||
#define __drv_reportError(why)
|
||||
#define __drv_requiresIRQL(irql)
|
||||
#define __drv_restoresIRQL
|
||||
#define __drv_restoresIRQLGlobal
|
||||
#define __drv_restoresIRQLGlobal(kind,param)
|
||||
#define __drv_ret(annotes)
|
||||
#define __drv_sameIRQL
|
||||
#define __drv_savesIRQL
|
||||
|
@ -143,8 +145,19 @@
|
|||
#define ___drv_unit_user_code
|
||||
#define ___drv_unit_user_driver
|
||||
|
||||
#define __drv_typeConst 0
|
||||
#define __drv_typeCond 1
|
||||
#define __drv_typeBitset 2
|
||||
#define __drv_typeExpr 3
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
__ANNOTATION(SAL_neverHold(_In_ char *);)
|
||||
__ANNOTATION(SAL_neverHoldGlobal(__In_impl_ char *, ...);)
|
||||
__ANNOTATION(SAL_acquire(_In_ char *);)
|
||||
__ANNOTATION(SAL_acquireGlobal(__In_impl_ char *, ...);)
|
||||
__ANNOTATION(SAL_floatUsed(void);)
|
||||
__ANNOTATION(SAL_floatSaved(void);)
|
||||
__ANNOTATION(SAL_floatRestored(void);)
|
||||
|
@ -153,8 +166,34 @@ __ANNOTATION(SAL_maxIRQL(__int64);)
|
|||
__ANNOTATION(SAL_IsAliased(void);)
|
||||
__ANNOTATION(SAL_NeedsRelease(enum __SAL_YesNo);)
|
||||
__ANNOTATION(SAL_mustHold(_In_ char *);)
|
||||
__ANNOTATION(SAL_mustHoldGlobal(__In_impl_ char *, ...);)
|
||||
__ANNOTATION(SAL_release(_In_ char *);)
|
||||
__ANNOTATION(SAL_releaseGlobal(__In_impl_ char *, ...);)
|
||||
__ANNOTATION(SAL_IoGetDmaAdapter(void);)
|
||||
__ANNOTATION(SAL_kernel();)
|
||||
__ANNOTATION(SAL_nokernel();)
|
||||
__ANNOTATION(SAL_driver();)
|
||||
__ANNOTATION(SAL_nodriver();)
|
||||
__ANNOTATION(SAL_internal_kernel_driver();)
|
||||
__ANNOTATION(SAL_landmark(__In_impl_ char *);)
|
||||
__ANNOTATION(SAL_return(__In_impl_ __AuToQuOtE char *);)
|
||||
__ANNOTATION(SAL_strictType(__In_impl_ __AuToQuOtE char *);)
|
||||
__ANNOTATION(SAL_strictTypeMatch(__int64);)
|
||||
__ANNOTATION(SAL_preferredFunction(__In_impl_ __AuToQuOtE char *, __In_impl_ __AuToQuOtE char *);)
|
||||
__ANNOTATION(SAL_preferredFunction3(__In_impl_ __AuToQuOtE char *, __In_impl_ __AuToQuOtE char *, __In_impl_ __int64);)
|
||||
__ANNOTATION(SAL_error(__In_impl_ __AuToQuOtE char *);)
|
||||
__ANNOTATION(SAL_error2(__In_impl_ __AuToQuOtE char *, __In_impl_ __int64);)
|
||||
__ANNOTATION(SAL_IsFormatString(__In_impl_ char *);)
|
||||
__ANNOTATION(SAL_completionType(__In_impl_ __AuToQuOtE char *);)
|
||||
__ANNOTATION(SAL_callbackType(__In_impl_ __AuToQuOtE char *);)
|
||||
//__PRIMOP(int, _Holds_resource_(__In_impl_ __deferTypecheck char *,__In_impl_ char *);)
|
||||
//__PRIMOP(int, _Holds_resource_global_(__In_impl_ char *, ...);)
|
||||
//__PRIMOP(int, _Is_kernel_(void);)
|
||||
//__PRIMOP(int, _Is_driver_(void);)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
|
@ -182,6 +221,7 @@ __ANNOTATION(SAL_IoGetDmaAdapter(void);)
|
|||
#define _Kernel_requires_resource_held_(kind)
|
||||
#define _Kernel_requires_resource_not_held_(kind)
|
||||
#define _Kernel_acquires_resource_(kind)
|
||||
#define _Landmark_(name)
|
||||
#define __drv_acquiresCancelSpinLock
|
||||
#define __drv_acquiresCriticalRegion
|
||||
#define __drv_acquiresExclusiveResource(kind)
|
||||
|
@ -218,6 +258,7 @@ __ANNOTATION(SAL_IoGetDmaAdapter(void);)
|
|||
#define __drv_innerNeverHoldGlobal(kind,param)
|
||||
#define __drv_innerReleasesGlobal(kind,param)
|
||||
#define __drv_interlocked
|
||||
#define __drv_inTry
|
||||
#define __drv_IoGetDmaAdapter
|
||||
#define __drv_isCancelIRQL
|
||||
#define __drv_isObjectPointer
|
||||
|
@ -255,7 +296,7 @@ __ANNOTATION(SAL_IoGetDmaAdapter(void);)
|
|||
#define __drv_reportError(why)
|
||||
#define __drv_requiresIRQL(irql)
|
||||
#define __drv_restoresIRQL
|
||||
#define __drv_restoresIRQLGlobal
|
||||
#define __drv_restoresIRQLGlobal(kind,param)
|
||||
#define __drv_ret(annotes)
|
||||
#define __drv_sameIRQL
|
||||
#define __drv_savesIRQL
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#define __exceptthat __declspec("SAL_except")
|
||||
#define __execeptthat __exceptthat
|
||||
#define __inner_blocksOn(resource) __declspec("SAL_blocksOn("SPECSTRINGIZE(resource)")")
|
||||
#define __inner_callback __declspec("__callback")
|
||||
#define __inner_checkReturn __declspec("SAL_checkReturn")
|
||||
#define __inner_control_entrypoint(category) __declspec("SAL_entrypoint(controlEntry, "SPECSTRINGIZE(category)")")
|
||||
#define __inner_data_entrypoint(category) __declspec("SAL_entrypoint(dataEntry, "SPECSTRINGIZE(category)")")
|
||||
|
@ -80,7 +79,6 @@
|
|||
#define __exceptthat
|
||||
#define __execeptthat
|
||||
#define __inner_blocksOn(resource)
|
||||
#define __inner_callback
|
||||
#define __inner_checkReturn
|
||||
#define __inner_control_entrypoint(category)
|
||||
#define __inner_data_entrypoint(category)
|
||||
|
|
Loading…
Reference in a new issue