diff --git a/inc/external/acl/acl_base.h b/inc/external/acl/acl_base.h index c96626909e1852d7e029adef1638a5b5b9d3863a..2ff0da039b30d8fd2f1ed6e84a3b54e84d2c0111 100755 --- a/inc/external/acl/acl_base.h +++ b/inc/external/acl/acl_base.h @@ -208,7 +208,8 @@ typedef enum { typedef enum { ACL_OPT_DETERMINISTIC = 0, - ACL_OPT_ENABLE_DEBUG_KERNEL = 1 + ACL_OPT_ENABLE_DEBUG_KERNEL = 1, + ACL_OPT_EARLY_START = 2 } aclSysParamOpt; typedef enum { diff --git a/runtime/context.cpp b/runtime/context.cpp index 92a035582af37b9b69d0a21fe847a4f7553a0775..6266a0667d8077d0dab5213ea9669e5fff2f87bc 100755 --- a/runtime/context.cpp +++ b/runtime/context.cpp @@ -88,13 +88,14 @@ aclError aclrtGetCurrentContextImpl(aclrtContext *context) static aclError GetSysParamOpt(aclSysParamOpt opt, int64_t *value, bool isCtx) { ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(value); - if (opt != ACL_OPT_DETERMINISTIC && opt != ACL_OPT_ENABLE_DEBUG_KERNEL) { - ACL_LOG_INNER_ERROR("[Check][SysParamOpt]opt = %d is invalid, it should be %d or %d ", + if (opt != ACL_OPT_DETERMINISTIC && opt != ACL_OPT_ENABLE_DEBUG_KERNEL && opt != ACL_OPT_EARLY_START) { + ACL_LOG_INNER_ERROR("[Check][SysParamOpt]opt = %d is invalid, it should be %d, %d or %d ", static_cast(opt), static_cast(ACL_OPT_DETERMINISTIC), - static_cast(ACL_OPT_ENABLE_DEBUG_KERNEL)); + static_cast(ACL_OPT_ENABLE_DEBUG_KERNEL), + static_cast(ACL_OPT_EARLY_START)); acl::AclErrorLogManager::ReportInputError(acl::INVALID_PARAM_MSG, std::vector({"param", "value", "reason"}), - std::vector({"aclSysParamOpt", std::to_string(opt), "must be 0 or 1"})); + std::vector({"aclSysParamOpt", std::to_string(opt), "must be 0, 1 or 2"})); return ACL_ERROR_INVALID_PARAM; } rtError_t rtErr = RT_ERROR_NONE; @@ -121,13 +122,14 @@ static aclError GetSysParamOpt(aclSysParamOpt opt, int64_t *value, bool isCtx) static aclError SetSysParamOpt(aclSysParamOpt opt, int64_t value, bool isCtx) { - if (opt != ACL_OPT_DETERMINISTIC && opt != ACL_OPT_ENABLE_DEBUG_KERNEL) { - ACL_LOG_INNER_ERROR("[Check][SysParamOpt]opt = %d is invalid, it should be %d or %d ", + if (opt != ACL_OPT_DETERMINISTIC && opt != ACL_OPT_ENABLE_DEBUG_KERNEL && opt != ACL_OPT_EARLY_START) { + ACL_LOG_INNER_ERROR("[Check][SysParamOpt]opt = %d is invalid, it should be %d, %d or %d ", static_cast(opt), static_cast(ACL_OPT_DETERMINISTIC), - static_cast(ACL_OPT_ENABLE_DEBUG_KERNEL)); + static_cast(ACL_OPT_ENABLE_DEBUG_KERNEL), + static_cast(ACL_OPT_EARLY_START)); acl::AclErrorLogManager::ReportInputError(acl::INVALID_PARAM_MSG, std::vector({"param", "value", "reason"}), - std::vector({"aclSysParamOpt", std::to_string(opt), "should be 0 or 1"})); + std::vector({"aclSysParamOpt", std::to_string(opt), "should be 0, 1 or 2"})); return ACL_ERROR_INVALID_PARAM; } rtError_t rtErr = RT_ERROR_NONE; diff --git a/tests/ut/acl/testcase/acl_common_unittest.cpp b/tests/ut/acl/testcase/acl_common_unittest.cpp index ab884d8b565126cd568e1e9e3fac12c6ae0a6b4a..2f9506e778b654b2dc7d2c2f9fcd17cb1ab485f5 100755 --- a/tests/ut/acl/testcase/acl_common_unittest.cpp +++ b/tests/ut/acl/testcase/acl_common_unittest.cpp @@ -1881,11 +1881,20 @@ TEST_F(UTEST_ACL_Common, AclrtCtxSetSysParamOpt) { aclError ret = aclrtCtxSetSysParamOpt(static_cast(99), 1); EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); + EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtCtxSetSysParamOpt(_, _)) + .WillOnce(Return(ACL_SUCCESS)) + .WillOnce(Return(ACL_ERROR_RT_INTERNAL_ERROR)); ret = aclrtCtxSetSysParamOpt(ACL_OPT_DETERMINISTIC, 1); EXPECT_EQ(ret, ACL_SUCCESS); + ret = aclrtCtxSetSysParamOpt(ACL_OPT_DETERMINISTIC, 1); + EXPECT_EQ(ret, ACL_ERROR_RT_INTERNAL_ERROR); + EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtCtxSetSysParamOpt(_, _)) + .WillOnce(Return(ACL_SUCCESS)) .WillOnce(Return(ACL_ERROR_RT_INTERNAL_ERROR)); - ret = aclrtCtxSetSysParamOpt(ACL_OPT_DETERMINISTIC, 1); + ret = aclrtCtxSetSysParamOpt(ACL_OPT_EARLY_START, 0); + EXPECT_EQ(ret, ACL_SUCCESS); + ret = aclrtCtxSetSysParamOpt(ACL_OPT_EARLY_START, 0); EXPECT_EQ(ret, ACL_ERROR_RT_INTERNAL_ERROR); } @@ -1896,17 +1905,28 @@ TEST_F(UTEST_ACL_Common, AclrtCtxGetSysParamOptTest) int64_t val = 0; ret = aclrtCtxGetSysParamOpt(static_cast(99), &val); EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); + EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtCtxGetSysParamOpt(_, _)) + .WillOnce(Return(ACL_SUCCESS)) + .WillOnce(Return(ACL_ERROR_RT_INTERNAL_ERROR)) + .WillOnce(Return(ACL_ERROR_RT_SYSPARAMOPT_NOT_SET)); ret = aclrtCtxGetSysParamOpt(ACL_OPT_DETERMINISTIC, &val); EXPECT_EQ(ret, ACL_SUCCESS); - EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtCtxGetSysParamOpt(_, _)) - .WillOnce(Return(ACL_ERROR_RT_INTERNAL_ERROR)); ret = aclrtCtxGetSysParamOpt(ACL_OPT_DETERMINISTIC, &val); EXPECT_EQ(ret, ACL_ERROR_RT_INTERNAL_ERROR); // not set + ret = aclrtCtxGetSysParamOpt(ACL_OPT_DETERMINISTIC, &val); + EXPECT_EQ(ret, ACL_ERROR_RT_SYSPARAMOPT_NOT_SET); + EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtCtxGetSysParamOpt(_, _)) + .WillOnce(Return(ACL_SUCCESS)) + .WillOnce(Return(ACL_ERROR_RT_INTERNAL_ERROR)) .WillOnce(Return(ACL_ERROR_RT_SYSPARAMOPT_NOT_SET)); - ret = aclrtCtxGetSysParamOpt(ACL_OPT_DETERMINISTIC, &val); + ret = aclrtCtxGetSysParamOpt(ACL_OPT_EARLY_START, &val); + EXPECT_EQ(ret, ACL_SUCCESS); + ret = aclrtCtxGetSysParamOpt(ACL_OPT_EARLY_START, &val); + EXPECT_EQ(ret, ACL_ERROR_RT_INTERNAL_ERROR); + ret = aclrtCtxGetSysParamOpt(ACL_OPT_EARLY_START, &val); EXPECT_EQ(ret, ACL_ERROR_RT_SYSPARAMOPT_NOT_SET); } diff --git a/tests/ut/acl/testcase/compatibility/enum_check.cpp b/tests/ut/acl/testcase/compatibility/enum_check.cpp index a0156ee2a35ebacfb86b0319628e34fecd9ff47d..fc056629cdb62ed9af1586e66e6b5eff91fbcbde 100644 --- a/tests/ut/acl/testcase/compatibility/enum_check.cpp +++ b/tests/ut/acl/testcase/compatibility/enum_check.cpp @@ -566,6 +566,9 @@ TEST_F(UTEST_ACL_compatibility_enum_check, aclSysParamOpt) sysParamOpt = (aclSysParamOpt)1; EXPECT_EQ(sysParamOpt, ACL_OPT_ENABLE_DEBUG_KERNEL); + + sysParamOpt = (aclSysParamOpt)2; + EXPECT_EQ(sysParamOpt, ACL_OPT_EARLY_START); } TEST_F(UTEST_ACL_compatibility_enum_check, aclrtMemMallocPolicy)