blob: 89004e786c1c2ed83d11388895abf541629eb267 [file] [log] [blame]
George Gao04baa122020-03-17 10:22:21 -07001/*
2 * Copyright (c) 2013-2016, 2020, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#ifndef VERIFY_PRINT_ERROR
31#define VERIFY_PRINT_ERROR
32#endif
33
LuK133738a18832020-10-09 18:34:38 +020034#define VERIFY_EPRINTF ALOGE
35#define VERIFY_IPRINTF ALOGI
36
George Gao04baa122020-03-17 10:22:21 -070037#include <stdio.h>
38#include <dlfcn.h>
39#include <unistd.h>
George Gao04baa122020-03-17 10:22:21 -070040
LuK133738a18832020-10-09 18:34:38 +020041#include <log/log.h>
George Gao04baa122020-03-17 10:22:21 -070042
43#ifndef ADSP_DEFAULT_LISTENER_NAME
44#define ADSP_DEFAULT_LISTENER_NAME "libadsp_default_listener.so"
45#endif
46
LuK133738a18832020-10-09 18:34:38 +020047#define AEE_ECONNREFUSED 0x72
48
George Gao04baa122020-03-17 10:22:21 -070049typedef int (*adsp_default_listener_start_t)(int argc, char *argv[]);
50
51int main(int argc, char *argv[]) {
52
53 int nErr = 0;
54 void *adsphandler = NULL;
55 adsp_default_listener_start_t listener_start;
56
57 VERIFY_EPRINTF("audio adsp daemon starting");
58 while (1) {
59 if(NULL != (adsphandler = dlopen(ADSP_DEFAULT_LISTENER_NAME, RTLD_NOW))) {
60 if(NULL != (listener_start =
61 (adsp_default_listener_start_t)dlsym(adsphandler, "adsp_default_listener_start"))) {
62 VERIFY_IPRINTF("adsp_default_listener_start called");
63 nErr = listener_start(argc, argv);
64 }
65 if(0 != dlclose(adsphandler)) {
66 VERIFY_EPRINTF("dlclose failed");
67 }
68 } else {
69 VERIFY_EPRINTF("audio adsp daemon error %s", dlerror());
70 }
71 if (nErr == AEE_ECONNREFUSED) {
Harshal Ahiree8530e62020-11-24 12:35:41 +053072 VERIFY_EPRINTF("fastRPC device driver is disabled, retrying...");
George Gao04baa122020-03-17 10:22:21 -070073 }
74 VERIFY_EPRINTF("audio adsp daemon will restart after 25ms...");
75 usleep(25000);
76 }
77 VERIFY_EPRINTF("audio adsp daemon exiting %x", nErr);
George Gao04baa122020-03-17 10:22:21 -070078 return nErr;
79}