Revert "l0_feature: Use L0 Loader teardown callback"
This reverts commit d31b950b9a
.
Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
This commit is contained in:
parent
f0f0f0b1b5
commit
41ad05eb52
|
@ -8,8 +8,6 @@ target_sources(${L0_STATIC_LIB_NAME}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/get_extension_function_lookup_map.h
|
${CMAKE_CURRENT_SOURCE_DIR}/get_extension_function_lookup_map.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/global_teardown.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/global_teardown.h
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}get_extension_function_lookup_map.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}get_extension_function_lookup_map.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "level_zero/core/source/global_teardown.h"
|
|
||||||
|
|
||||||
#include "shared/source/os_interface/os_library.h"
|
|
||||||
|
|
||||||
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
|
||||||
#include "level_zero/sysman/source/sysman_driver_handle_imp.h"
|
|
||||||
|
|
||||||
namespace L0 {
|
|
||||||
|
|
||||||
ze_result_t loaderDriverTeardown(std::string loaderLibraryName) {
|
|
||||||
std::unique_ptr<NEO::OsLibrary> loaderLibrary = std::unique_ptr<NEO::OsLibrary>{NEO::OsLibrary::load(loaderLibraryName.c_str())};
|
|
||||||
if (loaderLibrary) {
|
|
||||||
zelSetDriverTeardown_fn setDriverTeardown = reinterpret_cast<zelSetDriverTeardown_fn>(loaderLibrary->getProcAddress("zelSetDriverTeardown"));
|
|
||||||
if (setDriverTeardown) {
|
|
||||||
return setDriverTeardown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void globalDriverTeardown() {
|
|
||||||
if (GlobalDriver != nullptr) {
|
|
||||||
delete GlobalDriver;
|
|
||||||
GlobalDriver = nullptr;
|
|
||||||
}
|
|
||||||
if (Sysman::GlobalSysmanDriver != nullptr) {
|
|
||||||
delete Sysman::GlobalSysmanDriver;
|
|
||||||
Sysman::GlobalSysmanDriver = nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // namespace L0
|
|
|
@ -1,19 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#include <level_zero/ze_api.h>
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace L0 {
|
|
||||||
using zelSetDriverTeardown_fn = ze_result_t (*)();
|
|
||||||
static const std::string loaderLibraryFilename = "ze_loader";
|
|
||||||
|
|
||||||
void globalDriverTeardown();
|
|
||||||
ze_result_t loaderDriverTeardown(std::string loaderLibraryName);
|
|
||||||
} // namespace L0
|
|
|
@ -5,12 +5,18 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "level_zero/core/source/global_teardown.h"
|
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
||||||
|
#include "level_zero/sysman/source/sysman_driver_handle_imp.h"
|
||||||
|
|
||||||
using namespace L0;
|
using namespace L0;
|
||||||
|
|
||||||
void __attribute__((destructor)) driverHandleDestructor() {
|
void __attribute__((destructor)) driverHandleDestructor() {
|
||||||
std::string loaderLibraryName = "lib" + L0::loaderLibraryFilename + ".so.1";
|
if (GlobalDriver != nullptr) {
|
||||||
loaderDriverTeardown(loaderLibraryName);
|
delete GlobalDriver;
|
||||||
globalDriverTeardown();
|
GlobalDriver = nullptr;
|
||||||
|
}
|
||||||
|
if (Sysman::GlobalSysmanDriver != nullptr) {
|
||||||
|
delete Sysman::GlobalSysmanDriver;
|
||||||
|
Sysman::GlobalSysmanDriver = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -5,7 +5,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "level_zero/core/source/global_teardown.h"
|
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
||||||
|
#include "level_zero/sysman/source/sysman_driver_handle_imp.h"
|
||||||
#include "level_zero/tools/source/sysman/os_sysman_driver.h"
|
#include "level_zero/tools/source/sysman/os_sysman_driver.h"
|
||||||
#include "level_zero/tools/source/sysman/sysman.h"
|
#include "level_zero/tools/source/sysman/sysman.h"
|
||||||
|
|
||||||
|
@ -15,9 +16,14 @@ using namespace L0;
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
|
BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
|
||||||
if (fdwReason == DLL_PROCESS_DETACH) {
|
if (fdwReason == DLL_PROCESS_DETACH) {
|
||||||
std::string loaderLibraryName = L0::loaderLibraryFilename + ".dll";
|
if (GlobalDriver != nullptr) {
|
||||||
loaderDriverTeardown(loaderLibraryName);
|
delete GlobalDriver;
|
||||||
globalDriverTeardown();
|
GlobalDriver = nullptr;
|
||||||
|
}
|
||||||
|
if (Sysman::GlobalSysmanDriver != nullptr) {
|
||||||
|
delete Sysman::GlobalSysmanDriver;
|
||||||
|
Sysman::GlobalSysmanDriver = nullptr;
|
||||||
|
}
|
||||||
if (GlobalOsSysmanDriver != nullptr) {
|
if (GlobalOsSysmanDriver != nullptr) {
|
||||||
delete GlobalOsSysmanDriver;
|
delete GlobalOsSysmanDriver;
|
||||||
GlobalOsSysmanDriver = nullptr;
|
GlobalOsSysmanDriver = nullptr;
|
||||||
|
|
|
@ -40,4 +40,3 @@ apply_macro_for_each_core_type("TESTED")
|
||||||
add_custom_target(l0_common_test_kernels DEPENDS ${l0_test_kernel_outputs} ${l0_bindless_test_kernel_outputs} copy_compiler_files)
|
add_custom_target(l0_common_test_kernels DEPENDS ${l0_test_kernel_outputs} ${l0_bindless_test_kernel_outputs} copy_compiler_files)
|
||||||
set_target_properties(l0_common_test_kernels PROPERTIES FOLDER ${TARGET_NAME_L0})
|
set_target_properties(l0_common_test_kernels PROPERTIES FOLDER ${TARGET_NAME_L0})
|
||||||
add_dependencies(prepare_test_kernels_for_l0 l0_common_test_kernels)
|
add_dependencies(prepare_test_kernels_for_l0 l0_common_test_kernels)
|
||||||
add_subdirectories()
|
|
|
@ -1,21 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2023 Intel Corporation
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
#
|
|
||||||
|
|
||||||
project(test_l0_loader_lib)
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
set(OS_SUFFIX win)
|
|
||||||
else()
|
|
||||||
set(OS_SUFFIX lin)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(test_l0_loader_lib SHARED test_l0_loader_lib_${OS_SUFFIX}.cpp)
|
|
||||||
|
|
||||||
create_project_source_tree(test_l0_loader_lib)
|
|
||||||
|
|
||||||
set_target_properties(test_l0_loader_lib PROPERTIES FOLDER "test mocks")
|
|
||||||
set_property(TARGET test_l0_loader_lib APPEND_STRING PROPERTY COMPILE_FLAGS ${ASAN_FLAGS})
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <level_zero/ze_api.h>
|
|
||||||
|
|
||||||
extern "C" __attribute__((visibility("default"))) ze_result_t zelSetDriverTeardown() {
|
|
||||||
return ZE_RESULT_SUCCESS;
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <level_zero/ze_api.h>
|
|
||||||
|
|
||||||
extern "C" __declspec(dllexport) ze_result_t zelSetDriverTeardown() {
|
|
||||||
return ZE_RESULT_SUCCESS;
|
|
||||||
}
|
|
|
@ -102,6 +102,6 @@ if(MSVC)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_dependencies(unit_tests ${TARGET_NAME} prepare_test_kernels_for_l0 test_l0_loader_lib)
|
add_dependencies(unit_tests ${TARGET_NAME} prepare_test_kernels_for_l0)
|
||||||
|
|
||||||
create_source_tree(${TARGET_NAME} ${L0_ROOT_DIR}/..)
|
create_source_tree(${TARGET_NAME} ${L0_ROOT_DIR}/..)
|
||||||
|
|
|
@ -173,25 +173,6 @@ int main(int argc, char **argv) {
|
||||||
sysmanUltsEnable = (strcmp(sysmanUltsEnableEnv, "1") == 0);
|
sysmanUltsEnable = (strcmp(sysmanUltsEnableEnv, "1") == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
if (getenv("NEO_L0_TEST_SELF_EXEC") == nullptr) {
|
|
||||||
std::string wd = getRunPath(argv[0]);
|
|
||||||
char *ldLibraryPath = getenv("LD_LIBRARY_PATH");
|
|
||||||
|
|
||||||
if (ldLibraryPath == nullptr) {
|
|
||||||
setenv("LD_LIBRARY_PATH", wd.c_str(), 1);
|
|
||||||
} else {
|
|
||||||
std::string ldLibraryPathConcat = wd + ":" + std::string(ldLibraryPath);
|
|
||||||
setenv("LD_LIBRARY_PATH", ldLibraryPathConcat.c_str(), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
setenv("NEO_L0_TEST_SELF_EXEC", wd.c_str(), 1);
|
|
||||||
execv(argv[0], argv);
|
|
||||||
printf("FATAL ERROR: cannot self-exec test: %s!, errno: %d\n", argv[0], errno);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
applyWorkarounds();
|
applyWorkarounds();
|
||||||
|
|
||||||
testing::InitGoogleMock(&argc, argv);
|
testing::InitGoogleMock(&argc, argv);
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
set(NEO_L0_OS_INTERFACE_TESTS
|
set(NEO_L0_OS_INTERFACE_TESTS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/os_context_l0_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/os_context_l0_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/global_teardown_tests.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/global_teardown_tests.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectories()
|
add_subdirectories()
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "level_zero/core/test/unit_tests/os_interface/global_teardown_tests.h"
|
|
||||||
|
|
||||||
#include "shared/test/common/test_macros/test.h"
|
|
||||||
|
|
||||||
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
|
||||||
#include "level_zero/core/source/global_teardown.h"
|
|
||||||
#include "level_zero/sysman/source/sysman_driver_handle_imp.h"
|
|
||||||
|
|
||||||
namespace L0 {
|
|
||||||
namespace ult {
|
|
||||||
|
|
||||||
TEST(GlobalTearDownCallbackTests, givenL0LoaderThenGlobalTeardownCallbackIsCalled) {
|
|
||||||
EXPECT_EQ(ZE_RESULT_SUCCESS, loaderDriverTeardown(L0::ult::testLoaderDllName));
|
|
||||||
}
|
|
||||||
TEST(GlobalTearDownCallbackTests, givenL0LoaderIsMissingThenGlobalTeardownCallbackIsNotCalled) {
|
|
||||||
EXPECT_EQ(ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE, loaderDriverTeardown("invalid.so"));
|
|
||||||
}
|
|
||||||
TEST(GlobalTearDownCallbackTests, givenL0LoaderWithoutGlobalTeardownCallbackThenGlobalTeardownCallbackIsNotCalled) {
|
|
||||||
EXPECT_EQ(ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE, loaderDriverTeardown(L0::ult::testDllName));
|
|
||||||
}
|
|
||||||
TEST(GlobalTearDownTests, givenCallToGlobalTearDownFunctionThenGlobalDriversAreNull) {
|
|
||||||
globalDriverTeardown();
|
|
||||||
EXPECT_EQ(GlobalDriver, nullptr);
|
|
||||||
EXPECT_EQ(Sysman::GlobalSysmanDriver, nullptr);
|
|
||||||
}
|
|
||||||
} // namespace ult
|
|
||||||
} // namespace L0
|
|
|
@ -1,15 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
namespace L0 {
|
|
||||||
namespace ult {
|
|
||||||
extern const char *testLoaderDllName;
|
|
||||||
extern const char *testDllName;
|
|
||||||
} // namespace ult
|
|
||||||
} // namespace L0
|
|
|
@ -8,6 +8,5 @@ if(UNIX)
|
||||||
target_sources(${TARGET_NAME} PRIVATE
|
target_sources(${TARGET_NAME} PRIVATE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmdqueue_linux_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/cmdqueue_linux_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/global_teardown_test_values.cpp
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace L0 {
|
|
||||||
namespace ult {
|
|
||||||
const char *testLoaderDllName = "libtest_l0_loader_lib.so";
|
|
||||||
const char *testDllName = "libtest_dynamic_lib.so";
|
|
||||||
} // namespace ult
|
|
||||||
} // namespace L0
|
|
|
@ -8,6 +8,5 @@ if(WIN32)
|
||||||
target_sources(${TARGET_NAME} PRIVATE
|
target_sources(${TARGET_NAME} PRIVATE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/wddm_l0_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/wddm_l0_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/global_teardown_test_values.cpp
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2023 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace L0 {
|
|
||||||
namespace ult {
|
|
||||||
const char *testLoaderDllName = "test_l0_loader_lib.dll";
|
|
||||||
const char *testDllName = "test_dynamic_lib.dll";
|
|
||||||
} // namespace ult
|
|
||||||
} // namespace L0
|
|
|
@ -25,8 +25,7 @@ void *dlopen(const char *filename, int flags) {
|
||||||
|
|
||||||
dlopenError = -1;
|
dlopenError = -1;
|
||||||
if (filename == nullptr ||
|
if (filename == nullptr ||
|
||||||
(strcmp(filename, "libtest_dynamic_lib.so") == 0) ||
|
strcmp(filename, "libtest_dynamic_lib.so") == 0) {
|
||||||
(strcmp(filename, "libtest_l0_loader_lib.so") == 0)) {
|
|
||||||
return dlopenFunc(filename, flags);
|
return dlopenFunc(filename, flags);
|
||||||
}
|
}
|
||||||
if (filename[0] == '_') {
|
if (filename[0] == '_') {
|
||||||
|
|
Loading…
Reference in New Issue