xref: /aosp_15_r20/external/armnn/shim/shimservice.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #define LOG_TAG "ArmnnDriver"
7 
8 #include <android-base/logging.h>
9 #include <android-base/scopeguard.h>
10 #include <dlfcn.h>
11 
12 #include "NeuralNetworksShim.h"
13 #include "SupportLibrarySymbols.h"
14 
15 #include <string>
16 
17 using namespace std;
18 
main()19 int main()
20 {
21     /// The platform shim allows use of the armnn support library driver (arm-armnn-sl) to create a
22     /// binderized vendor service (arm-armnn-shim) that is started at device startup
23 
24     NnApiSLDriverImpl* impl = ANeuralNetworks_getSLDriverImpl();
25     if (impl == nullptr)
26     {
27         LOG(ERROR) << "ArmnnDriver: ANeuralNetworks_getSLDriverImpl returned nullptr!!!";
28         return EXIT_FAILURE;
29     }
30 
31     ANeuralNetworksShimDeviceInfo* deviceInfo;
32     ANeuralNetworksShimDeviceInfo_create(&deviceInfo,
33                                          /*deviceName=*/"arm-armnn-sl",
34                                          /*serviceName=*/"google-armnn");
35     const auto guardDeviceInfo = android::base::make_scope_guard(
36             [deviceInfo] { ANeuralNetworksShimDeviceInfo_free(deviceInfo); });
37 
38     ANeuralNetworksShimRegistrationParams* params;
39     ANeuralNetworksShimRegistrationParams_create(impl, &params);
40     const auto guardParams = android::base::make_scope_guard(
41             [params] { ANeuralNetworksShimRegistrationParams_free(params); });
42     ANeuralNetworksShimRegistrationParams_addDeviceInfo(params, deviceInfo);
43     ANeuralNetworksShimRegistrationParams_setNumberOfListenerThreads(params, 15);
44     ANeuralNetworksShimRegistrationParams_registerAsLazyService(params, false);
45     ANeuralNetworksShimRegistrationParams_fallbackToMinimumSupportDevice(params, false);
46 
47     auto result = ANeuralNetworksShim_registerSupportLibraryService(params);
48     LOG(ERROR) << "ArmnnDriver: ANeuralNetworksShim_registerSupportLibraryService returned error status: " << result;
49 
50     return EXIT_FAILURE;
51 }
52