xref: /dpdk/drivers/common/sfc_efx/base/efx_annote.h (revision 672386c1e9e1f64f7aa3b1360ad22dc737ea8d72)
15e111ed8SAndrew Rybchenko /* SPDX-License-Identifier: BSD-3-Clause
25e111ed8SAndrew Rybchenko  *
3*672386c1SAndrew Rybchenko  * Copyright(c) 2019-2021 Xilinx, Inc.
45e111ed8SAndrew Rybchenko  * Copyright(c) 2018-2019 Solarflare Communications Inc.
55e111ed8SAndrew Rybchenko  */
65e111ed8SAndrew Rybchenko 
75e111ed8SAndrew Rybchenko #ifndef	_SYS_EFX_ANNOTE_H
85e111ed8SAndrew Rybchenko #define	_SYS_EFX_ANNOTE_H
95e111ed8SAndrew Rybchenko 
105e111ed8SAndrew Rybchenko #if defined(_WIN32) || defined(_WIN64)
115e111ed8SAndrew Rybchenko #define	EFX_HAVE_WINDOWS_ANNOTATIONS 1
125e111ed8SAndrew Rybchenko #else
135e111ed8SAndrew Rybchenko #define	EFX_HAVE_WINDOWS_ANNOTATIONS 0
145e111ed8SAndrew Rybchenko #endif	/* defined(_WIN32) || defined(_WIN64) */
155e111ed8SAndrew Rybchenko 
165e111ed8SAndrew Rybchenko #if defined(__sun)
175e111ed8SAndrew Rybchenko #define	EFX_HAVE_SOLARIS_ANNOTATIONS 1
185e111ed8SAndrew Rybchenko #else
195e111ed8SAndrew Rybchenko #define	EFX_HAVE_SOLARIS_ANNOTATIONS 0
205e111ed8SAndrew Rybchenko #endif	/* defined(__sun) */
215e111ed8SAndrew Rybchenko 
225e111ed8SAndrew Rybchenko #if !EFX_HAVE_WINDOWS_ANNOTATIONS
235e111ed8SAndrew Rybchenko 
245e111ed8SAndrew Rybchenko /* Ignore Windows SAL annotations on other platforms */
255e111ed8SAndrew Rybchenko #define	__in
265e111ed8SAndrew Rybchenko #define	__in_opt
275e111ed8SAndrew Rybchenko #define	__in_ecount(_n)
285e111ed8SAndrew Rybchenko #define	__in_ecount_opt(_n)
295e111ed8SAndrew Rybchenko #define	__in_bcount(_n)
305e111ed8SAndrew Rybchenko #define	__in_bcount_opt(_n)
315e111ed8SAndrew Rybchenko 
325e111ed8SAndrew Rybchenko #define	__out
335e111ed8SAndrew Rybchenko #define	__out_opt
345e111ed8SAndrew Rybchenko #define	__out_ecount(_n)
355e111ed8SAndrew Rybchenko #define	__out_ecount_opt(_n)
365e111ed8SAndrew Rybchenko #define	__out_ecount_part(_n, _l)
375e111ed8SAndrew Rybchenko #define	__out_bcount(_n)
385e111ed8SAndrew Rybchenko #define	__out_bcount_opt(_n)
395e111ed8SAndrew Rybchenko #define	__out_bcount_part(_n, _l)
405e111ed8SAndrew Rybchenko #define	__out_bcount_part_opt(_n, _l)
415e111ed8SAndrew Rybchenko 
425e111ed8SAndrew Rybchenko #define	__deref_out
435e111ed8SAndrew Rybchenko #define	__deref_inout
445e111ed8SAndrew Rybchenko 
455e111ed8SAndrew Rybchenko #define	__inout
465e111ed8SAndrew Rybchenko #define	__inout_opt
475e111ed8SAndrew Rybchenko #define	__inout_ecount(_n)
485e111ed8SAndrew Rybchenko #define	__inout_ecount_opt(_n)
495e111ed8SAndrew Rybchenko #define	__inout_bcount(_n)
505e111ed8SAndrew Rybchenko #define	__inout_bcount_opt(_n)
515e111ed8SAndrew Rybchenko #define	__inout_bcount_full_opt(_n)
525e111ed8SAndrew Rybchenko 
535e111ed8SAndrew Rybchenko #define	__deref_out_bcount_opt(n)
545e111ed8SAndrew Rybchenko 
555e111ed8SAndrew Rybchenko #define	__checkReturn
565e111ed8SAndrew Rybchenko #define	__success(_x)
575e111ed8SAndrew Rybchenko 
585e111ed8SAndrew Rybchenko #define	__drv_when(_p, _c)
595e111ed8SAndrew Rybchenko 
605e111ed8SAndrew Rybchenko #endif	/* !EFX_HAVE_WINDOWS_ANNOTATIONS */
615e111ed8SAndrew Rybchenko 
625e111ed8SAndrew Rybchenko #if !EFX_HAVE_SOLARIS_ANNOTATIONS
635e111ed8SAndrew Rybchenko 
645e111ed8SAndrew Rybchenko #if EFX_HAVE_WINDOWS_ANNOTATIONS
655e111ed8SAndrew Rybchenko 
665e111ed8SAndrew Rybchenko /*
675e111ed8SAndrew Rybchenko  * Support some SunOS/Solaris style _NOTE() annotations
685e111ed8SAndrew Rybchenko  *
695e111ed8SAndrew Rybchenko  * At present with the facilities provided in the WDL and the SAL we can only
705e111ed8SAndrew Rybchenko  * easily act upon _NOTE(ARGUNUSED(arglist)) annotations.
715e111ed8SAndrew Rybchenko  *
725e111ed8SAndrew Rybchenko  * Intermediate macros to expand individual _NOTE annotation types into
735e111ed8SAndrew Rybchenko  * something the WDK or SAL can understand.  They shouldn't be used directly,
745e111ed8SAndrew Rybchenko  * for example EFX_NOTE_ARGUNUSED() is only used as an intermediate step on the
755e111ed8SAndrew Rybchenko  * transformation of _NOTE(ARGUNSED(arg1, arg2)) into
765e111ed8SAndrew Rybchenko  * UNREFERENCED_PARAMETER((arg1, arg2));
775e111ed8SAndrew Rybchenko  */
785e111ed8SAndrew Rybchenko #define	EFX_NOTE_ALIGNMENT(_fname, _n)
795e111ed8SAndrew Rybchenko #define	EFX_NOTE_ARGUNUSED(...)		UNREFERENCED_PARAMETER((__VA_ARGS__));
805e111ed8SAndrew Rybchenko #define	EFX_NOTE_CONSTANTCONDITION
815e111ed8SAndrew Rybchenko #define	EFX_NOTE_CONSTCOND
825e111ed8SAndrew Rybchenko #define	EFX_NOTE_EMPTY
835e111ed8SAndrew Rybchenko #define	EFX_NOTE_FALLTHROUGH
845e111ed8SAndrew Rybchenko #define	EFX_NOTE_FALLTHRU
855e111ed8SAndrew Rybchenko #define	EFX_NOTE_LINTED(_msg)
865e111ed8SAndrew Rybchenko #define	EFX_NOTE_NOTREACHED
875e111ed8SAndrew Rybchenko #define	EFX_NOTE_PRINTFLIKE(_n)
885e111ed8SAndrew Rybchenko #define	EFX_NOTE_SCANFLIKE(_n)
895e111ed8SAndrew Rybchenko #define	EFX_NOTE_VARARGS(_n)
905e111ed8SAndrew Rybchenko 
915e111ed8SAndrew Rybchenko #define	_NOTE(_annotation)		EFX_NOTE_ ## _annotation
925e111ed8SAndrew Rybchenko 
935e111ed8SAndrew Rybchenko #else
945e111ed8SAndrew Rybchenko 
955e111ed8SAndrew Rybchenko /* Ignore Solaris annotations on other platforms */
965e111ed8SAndrew Rybchenko 
975e111ed8SAndrew Rybchenko #define	_NOTE(_annotation)
985e111ed8SAndrew Rybchenko 
995e111ed8SAndrew Rybchenko #endif	/* EFX_HAVE_WINDOWS_ANNOTATIONS */
1005e111ed8SAndrew Rybchenko 
1015e111ed8SAndrew Rybchenko #endif	/* !EFX_HAVE_SOLARIS_ANNOTATIONS */
1025e111ed8SAndrew Rybchenko 
1035e111ed8SAndrew Rybchenko #endif	/* _SYS_EFX_ANNOTE_H */
104