mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge "Search for subhal .so files in additional directories" into rvc-dev am: 358db3b106
Change-Id: Id04399150e05bcc198ed8f9ccee9448e4a4a1581
This commit is contained in:
@@ -426,7 +426,7 @@ void HalProxy::initializeSubHalListFromConfigFile(const char* configFileName) {
|
||||
} else {
|
||||
std::string subHalLibraryFile;
|
||||
while (subHalConfigStream >> subHalLibraryFile) {
|
||||
void* handle = dlopen(subHalLibraryFile.c_str(), RTLD_NOW);
|
||||
void* handle = getHandleForSubHalSharedObject(subHalLibraryFile);
|
||||
if (handle == nullptr) {
|
||||
ALOGE("dlopen failed for library: %s", subHalLibraryFile.c_str());
|
||||
} else {
|
||||
@@ -491,6 +491,25 @@ void HalProxy::initializeSensorList() {
|
||||
}
|
||||
}
|
||||
|
||||
void* HalProxy::getHandleForSubHalSharedObject(const std::string& filename) {
|
||||
static const std::string kSubHalShareObjectLocations[] = {
|
||||
"", // Default locations will be searched
|
||||
#ifdef __LP64__
|
||||
"/vendor/lib64/hw/", "/odm/lib64/hw/"
|
||||
#else
|
||||
"/vendor/lib/hw/", "/odm/lib/hw/"
|
||||
#endif
|
||||
};
|
||||
|
||||
for (const std::string& dir : kSubHalShareObjectLocations) {
|
||||
void* handle = dlopen((dir + filename).c_str(), RTLD_NOW);
|
||||
if (handle != nullptr) {
|
||||
return handle;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void HalProxy::init() {
|
||||
initializeSensorList();
|
||||
}
|
||||
|
||||
@@ -266,6 +266,16 @@ class HalProxy : public V2_0::implementation::IScopedWakelockRefCounter,
|
||||
*/
|
||||
void initializeSensorList();
|
||||
|
||||
/**
|
||||
* Try using the default include directories as well as the directories defined in
|
||||
* kSubHalShareObjectLocations to get a handle for dlsym for a subhal.
|
||||
*
|
||||
* @param filename The file name to search for.
|
||||
*
|
||||
* @return The handle or nullptr if search failed.
|
||||
*/
|
||||
void* getHandleForSubHalSharedObject(const std::string& filename);
|
||||
|
||||
/**
|
||||
* Calls the helper methods that all ctors use.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user