19 #ifndef MCUX_CSSL_FLOW_PROTECTION_H_ 20 #define MCUX_CSSL_FLOW_PROTECTION_H_ 59 #pragma coverity compliance block deviate MISRA_C_2012_Rule_3_1 "Comments outline example sequences. For more readability, additional inner comments might be added." 81 #define MCUX_CSSL_FP_PROTECTED_TYPE(resultType) \ 82 MCUX_CSSL_FP_PROTECTED_TYPE_IMPL(resultType) 96 #define MCUX_CSSL_FP_COUNTER_STMT(statement) \ 97 MCUX_CSSL_FP_COUNTER_STMT_IMPL(statement) 125 #define MCUX_CSSL_FP_FUNCTION_DECL(...) \ 126 MCUX_CSSL_FP_FUNCTION_DECL_IMPL(__VA_ARGS__) 159 #define MCUX_CSSL_FP_FUNCTION_DEF(...) \ 160 MCUX_CSSL_FP_FUNCTION_DEF_IMPL(__VA_ARGS__) 195 #define MCUX_CSSL_FP_FUNCTION_POINTER(type, definition) \ 196 MCUX_CSSL_FP_FUNCTION_POINTER_IMPL(type, definition) 244 #define MCUX_CSSL_FP_FUNCTION_ENTRY(...) \ 245 MCUX_CSSL_FP_FUNCTION_ENTRY_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 286 #define MCUX_CSSL_FP_FUNCTION_EXIT(...) \ 287 MCUX_CSSL_FP_FUNCTION_EXIT_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 325 #define MCUX_CSSL_FP_FUNCTION_EXIT_WITH_CHECK(...) \ 326 MCUX_CSSL_FP_FUNCTION_EXIT_WITH_CHECK_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 365 #define MCUX_CSSL_FP_FUNCTION_EXIT_VOID(...) \ 366 MCUX_CSSL_FP_FUNCTION_EXIT_VOID_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 375 #define MCUX_CSSL_FP_RESULT(return) \ 376 MCUX_CSSL_FP_RESULT_IMPL(return) 388 #define MCUX_CSSL_FP_PROTECTION_TOKEN(return) \ 389 MCUX_CSSL_FP_PROTECTION_TOKEN_IMPL(return) 427 #define MCUX_CSSL_FP_FUNCTION_CALL(...) \ 428 MCUX_CSSL_FP_FUNCTION_CALL_IMPL(__VA_ARGS__) 462 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID(...) \ 463 MCUX_CSSL_FP_FUNCTION_CALL_VOID_IMPL(__VA_ARGS__) 500 #define MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED(...) \ 501 MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED_IMPL(__VA_ARGS__) 536 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED(...) \ 537 MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED_IMPL(__VA_ARGS__) 576 #define MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(...) \ 577 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN_IMPL(__VA_ARGS__) 611 #define MCUX_CSSL_FP_FUNCTION_CALL_END(...) \ 612 MCUX_CSSL_FP_FUNCTION_CALL_END_IMPL(__VA_ARGS__) 647 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID_BEGIN(...) \ 648 MCUX_CSSL_FP_FUNCTION_CALL_VOID_BEGIN_IMPL(__VA_ARGS__) 678 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID_END(...) \ 679 MCUX_CSSL_FP_FUNCTION_CALL_VOID_END_IMPL(__VA_ARGS__) 730 #define MCUX_CSSL_FP_FUNCTION_CALLED(...) \ 731 MCUX_CSSL_FP_FUNCTION_CALLED_IMPL(__VA_ARGS__) 765 #define MCUX_CSSL_FP_FUNCTION_ENTERED(id) \ 766 MCUX_CSSL_FP_FUNCTION_ENTERED_IMPL(id) 805 #define MCUX_CSSL_FP_LOOP_DECL(id) \ 806 MCUX_CSSL_FP_LOOP_DECL_IMPL(id) 833 #define MCUX_CSSL_FP_LOOP_ITERATION(...) \ 834 MCUX_CSSL_FP_LOOP_ITERATION_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 868 #define MCUX_CSSL_FP_LOOP_ITERATIONS(id, count) \ 869 MCUX_CSSL_FP_LOOP_ITERATIONS_IMPL(id, count) 914 #define MCUX_CSSL_FP_BRANCH_DECL(id) \ 915 MCUX_CSSL_FP_BRANCH_DECL_IMPL(id) 953 #define MCUX_CSSL_FP_BRANCH_POSITIVE(...) \ 954 MCUX_CSSL_FP_BRANCH_POSITIVE_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 992 #define MCUX_CSSL_FP_BRANCH_NEGATIVE(...) \ 993 MCUX_CSSL_FP_BRANCH_NEGATIVE_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 1035 #define MCUX_CSSL_FP_BRANCH_TAKEN_POSITIVE(...) \ 1036 MCUX_CSSL_FP_BRANCH_TAKEN_POSITIVE_IMPL(__VA_ARGS__) 1080 #define MCUX_CSSL_FP_BRANCH_TAKEN_NEGATIVE(...) \ 1081 MCUX_CSSL_FP_BRANCH_TAKEN_NEGATIVE_IMPL(__VA_ARGS__) 1137 #define MCUX_CSSL_FP_SWITCH_DECL(id) \ 1138 MCUX_CSSL_FP_SWITCH_DECL_IMPL(id) 1186 #define MCUX_CSSL_FP_SWITCH_CASE(...) \ 1187 MCUX_CSSL_FP_SWITCH_CASE_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 1234 #define MCUX_CSSL_FP_SWITCH_DEFAULT(...) \ 1235 MCUX_CSSL_FP_SWITCH_DEFAULT_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 1288 #define MCUX_CSSL_FP_SWITCH_TAKEN(...) \ 1289 MCUX_CSSL_FP_SWITCH_TAKEN_IMPL(__VA_ARGS__) 1340 #define MCUX_CSSL_FP_SWITCH_TAKEN_DEFAULT(...) \ 1341 MCUX_CSSL_FP_SWITCH_TAKEN_DEFAULT_IMPL(__VA_ARGS__) 1377 #define MCUX_CSSL_FP_EXPECT(...) \ 1378 MCUX_CSSL_FP_EXPECT_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 1400 #define MCUX_CSSL_FP_CONDITIONAL(condition, ...) \ 1401 MCUX_CSSL_FP_CONDITIONAL_IMPL((condition), __VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL()) 1404 #pragma coverity compliance end_block MISRA_C_2012_Rule_3_1 1432 #define MCUX_CSSL_FP_ASSERT(...) \ 1433 MCUX_CSSL_FP_ASSERT_IMPL(__VA_ARGS__) Selection of the implementation for the flow protection mechanism.