blob: a44c0133c72c58cab65f0df8efba07e25f0e50ad [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
34#include <stdio.h>
35#include <dlfcn.h>
36#include <unistd.h>
37#include "verify.h"
38#include "AEEStdErr.h"
39
40
41#ifndef ADSP_DEFAULT_LISTENER_NAME
42#define ADSP_DEFAULT_LISTENER_NAME "libadsp_default_listener.so"
43#endif
44
45typedef int (*adsp_default_listener_start_t)(int argc, char *argv[]);
46
47int main(int argc, char *argv[]) {
48
49 int nErr = 0;
50 void *adsphandler = NULL;
51 adsp_default_listener_start_t listener_start;
52
53 VERIFY_EPRINTF("audio adsp daemon starting");
54 while (1) {
55 if(NULL != (adsphandler = dlopen(ADSP_DEFAULT_LISTENER_NAME, RTLD_NOW))) {
56 if(NULL != (listener_start =
57 (adsp_default_listener_start_t)dlsym(adsphandler, "adsp_default_listener_start"))) {
58 VERIFY_IPRINTF("adsp_default_listener_start called");
59 nErr = listener_start(argc, argv);
60 }
61 if(0 != dlclose(adsphandler)) {
62 VERIFY_EPRINTF("dlclose failed");
63 }
64 } else {
65 VERIFY_EPRINTF("audio adsp daemon error %s", dlerror());
66 }
67 if (nErr == AEE_ECONNREFUSED) {
Harshal Ahire28059422020-11-24 12:35:41 +053068 VERIFY_EPRINTF("fastRPC device driver is disabled, retrying...");
George Gao04baa122020-03-17 10:22:21 -070069 }
70 VERIFY_EPRINTF("audio adsp daemon will restart after 25ms...");
71 usleep(25000);
72 }
73 VERIFY_EPRINTF("audio adsp daemon exiting %x", nErr);
74bail:
75 return nErr;
76}