xref: /aosp_15_r20/external/OpenCL-ICD-Loader/test/log/icd_test_log.c (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
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