1*1cddb830SAndroid Build Coastguard Worker #include<sys/stat.h>
2*1cddb830SAndroid Build Coastguard Worker #include<stdlib.h>
3*1cddb830SAndroid Build Coastguard Worker #include<stdio.h>
4*1cddb830SAndroid Build Coastguard Worker #include<stdarg.h>
5*1cddb830SAndroid Build Coastguard Worker #include<CL/cl.h>
6*1cddb830SAndroid Build Coastguard Worker #include<platform/icd_test_log.h>
7*1cddb830SAndroid Build Coastguard Worker
8*1cddb830SAndroid Build Coastguard Worker #define APP_LOG_FILE "icd_test_app_log.txt"
9*1cddb830SAndroid Build Coastguard Worker #define STUB_LOG_FILE "icd_test_stub_log.txt"
10*1cddb830SAndroid Build Coastguard Worker
11*1cddb830SAndroid Build Coastguard Worker static FILE *app_log_file;
12*1cddb830SAndroid Build Coastguard Worker static FILE *stub_log_file;
13*1cddb830SAndroid Build Coastguard Worker
test_icd_initialize_app_log(void)14*1cddb830SAndroid Build Coastguard Worker int test_icd_initialize_app_log(void)
15*1cddb830SAndroid Build Coastguard Worker {
16*1cddb830SAndroid Build Coastguard Worker app_log_file = fopen(APP_LOG_FILE, "w");
17*1cddb830SAndroid Build Coastguard Worker if (!app_log_file) {
18*1cddb830SAndroid Build Coastguard Worker printf("Unable to open file %s\n", APP_LOG_FILE);
19*1cddb830SAndroid Build Coastguard Worker return -1;
20*1cddb830SAndroid Build Coastguard Worker }
21*1cddb830SAndroid Build Coastguard Worker
22*1cddb830SAndroid Build Coastguard Worker return 0;
23*1cddb830SAndroid Build Coastguard Worker }
24*1cddb830SAndroid Build Coastguard Worker
test_icd_close_app_log(void)25*1cddb830SAndroid Build Coastguard Worker void test_icd_close_app_log(void)
26*1cddb830SAndroid Build Coastguard Worker {
27*1cddb830SAndroid Build Coastguard Worker fclose(app_log_file);
28*1cddb830SAndroid Build Coastguard Worker }
29*1cddb830SAndroid Build Coastguard Worker
test_icd_app_log(const char * format,...)30*1cddb830SAndroid Build Coastguard Worker void test_icd_app_log(const char *format, ...)
31*1cddb830SAndroid Build Coastguard Worker {
32*1cddb830SAndroid Build Coastguard Worker va_list args;
33*1cddb830SAndroid Build Coastguard Worker va_start(args, format);
34*1cddb830SAndroid Build Coastguard Worker vfprintf(app_log_file, format, args);
35*1cddb830SAndroid Build Coastguard Worker va_end(args);
36*1cddb830SAndroid Build Coastguard Worker }
37*1cddb830SAndroid Build Coastguard Worker
test_icd_initialize_stub_log(void)38*1cddb830SAndroid Build Coastguard Worker int test_icd_initialize_stub_log(void)
39*1cddb830SAndroid Build Coastguard Worker {
40*1cddb830SAndroid Build Coastguard Worker stub_log_file = fopen(STUB_LOG_FILE, "w");
41*1cddb830SAndroid Build Coastguard Worker if (!stub_log_file) {
42*1cddb830SAndroid Build Coastguard Worker printf("Unable to open file %s\n", STUB_LOG_FILE);
43*1cddb830SAndroid Build Coastguard Worker return -1;
44*1cddb830SAndroid Build Coastguard Worker }
45*1cddb830SAndroid Build Coastguard Worker
46*1cddb830SAndroid Build Coastguard Worker return 0;
47*1cddb830SAndroid Build Coastguard Worker
48*1cddb830SAndroid Build Coastguard Worker }
49*1cddb830SAndroid Build Coastguard Worker
test_icd_close_stub_log(void)50*1cddb830SAndroid Build Coastguard Worker void test_icd_close_stub_log(void)
51*1cddb830SAndroid Build Coastguard Worker {
52*1cddb830SAndroid Build Coastguard Worker fclose(stub_log_file);
53*1cddb830SAndroid Build Coastguard Worker }
54*1cddb830SAndroid Build Coastguard Worker
test_icd_stub_log(const char * format,...)55*1cddb830SAndroid Build Coastguard Worker void test_icd_stub_log(const char *format, ...)
56*1cddb830SAndroid Build Coastguard Worker {
57*1cddb830SAndroid Build Coastguard Worker va_list args;
58*1cddb830SAndroid Build Coastguard Worker va_start(args, format);
59*1cddb830SAndroid Build Coastguard Worker vfprintf(stub_log_file, format, args);
60*1cddb830SAndroid Build Coastguard Worker va_end(args);
61*1cddb830SAndroid Build Coastguard Worker }
62*1cddb830SAndroid Build Coastguard Worker
test_icd_get_log(const char * filename)63*1cddb830SAndroid Build Coastguard Worker static char *test_icd_get_log(const char *filename)
64*1cddb830SAndroid Build Coastguard Worker {
65*1cddb830SAndroid Build Coastguard Worker struct stat statbuf;
66*1cddb830SAndroid Build Coastguard Worker FILE *fp;
67*1cddb830SAndroid Build Coastguard Worker char *source = NULL;
68*1cddb830SAndroid Build Coastguard Worker
69*1cddb830SAndroid Build Coastguard Worker fp = fopen(filename, "rb");
70*1cddb830SAndroid Build Coastguard Worker
71*1cddb830SAndroid Build Coastguard Worker if (fp) {
72*1cddb830SAndroid Build Coastguard Worker size_t fsize = 0;
73*1cddb830SAndroid Build Coastguard Worker stat(filename, &statbuf);
74*1cddb830SAndroid Build Coastguard Worker fsize = statbuf.st_size;
75*1cddb830SAndroid Build Coastguard Worker source = (char *)malloc(fsize+1); // +1 for NULL terminator
76*1cddb830SAndroid Build Coastguard Worker if (source) {
77*1cddb830SAndroid Build Coastguard Worker if (fsize) {
78*1cddb830SAndroid Build Coastguard Worker if (fread(source, fsize, 1, fp) != 1) {
79*1cddb830SAndroid Build Coastguard Worker free(source);
80*1cddb830SAndroid Build Coastguard Worker source = NULL;
81*1cddb830SAndroid Build Coastguard Worker } else {
82*1cddb830SAndroid Build Coastguard Worker source[fsize] = '\0';
83*1cddb830SAndroid Build Coastguard Worker }
84*1cddb830SAndroid Build Coastguard Worker } else {
85*1cddb830SAndroid Build Coastguard Worker // Don't fail when fsize = 0, just return empty string
86*1cddb830SAndroid Build Coastguard Worker source[fsize] = '\0';
87*1cddb830SAndroid Build Coastguard Worker }
88*1cddb830SAndroid Build Coastguard Worker }
89*1cddb830SAndroid Build Coastguard Worker fclose(fp);
90*1cddb830SAndroid Build Coastguard Worker }
91*1cddb830SAndroid Build Coastguard Worker
92*1cddb830SAndroid Build Coastguard Worker return source;
93*1cddb830SAndroid Build Coastguard Worker }
94*1cddb830SAndroid Build Coastguard Worker
test_icd_get_app_log(void)95*1cddb830SAndroid Build Coastguard Worker char *test_icd_get_app_log(void)
96*1cddb830SAndroid Build Coastguard Worker {
97*1cddb830SAndroid Build Coastguard Worker return test_icd_get_log(APP_LOG_FILE);
98*1cddb830SAndroid Build Coastguard Worker }
99*1cddb830SAndroid Build Coastguard Worker
test_icd_get_stub_log(void)100*1cddb830SAndroid Build Coastguard Worker char *test_icd_get_stub_log(void)
101*1cddb830SAndroid Build Coastguard Worker {
102*1cddb830SAndroid Build Coastguard Worker return test_icd_get_log(STUB_LOG_FILE);
103*1cddb830SAndroid Build Coastguard Worker }
104