blob: fc15f8b00efdaa14255a6a114b00fa5ebd6d1c38 [file] [log] [blame]
Jim Cownie33f7b242014-04-09 15:40:23 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.txt for details.
7//
8//===----------------------------------------------------------------------===//
9
10
11#include <stdio.h>
12#include <stdarg.h>
13#ifndef va_copy
14#define va_copy(dst, src) ((dst) = (src))
15#endif
16
17#include "liboffload_msg.h"
18
19#include "liboffload_error_codes.h"
20
21/***********************************************/
22/* error-handling function, liboffload_error_support */
23/***********************************************/
24
25void __liboffload_error_support(error_types input_tag, ...)
26{
27 va_list args;
28 va_start(args, input_tag);
29
30 switch (input_tag) {
31 case c_device_is_not_available:
32 write_message(stderr, msg_c_device_is_not_available, args);
33 break;
34 case c_invalid_device_number:
35 write_message(stderr, msg_c_invalid_device_number, args);
36 break;
37 case c_send_func_ptr:
38 write_message(stderr, msg_c_send_func_ptr, args);
39 break;
40 case c_receive_func_ptr:
41 write_message(stderr, msg_c_receive_func_ptr, args);
42 break;
43 case c_offload_malloc:
44 write_message(stderr, msg_c_offload_malloc, args);
45 break;
46 case c_offload1:
47 write_message(stderr, msg_c_offload1, args);
48 break;
49 case c_unknown_var_type:
50 write_message(stderr, c_unknown_var_type, args);
51 break;
52 case c_invalid_env_var_value:
53 write_message(stderr, msg_c_invalid_env_var_value, args);
54 break;
55 case c_invalid_env_var_int_value:
56 write_message(stderr, msg_c_invalid_env_var_int_value, args);
57 break;
58 case c_invalid_env_report_value:
59 write_message(stderr, msg_c_invalid_env_report_value, args);
60 break;
61 case c_offload_signaled1:
62 write_message(stderr, msg_c_offload_signaled1, args);
63 break;
64 case c_offload_signaled2:
65 write_message(stderr, msg_c_offload_signaled2, args);
66 break;
67 case c_myowrapper_checkresult:
68 write_message(stderr, msg_c_myowrapper_checkresult, args);
69 break;
70 case c_myotarget_checkresult:
71 write_message(stderr, msg_c_myotarget_checkresult, args);
72 break;
73 case c_offload_descriptor_offload:
74 write_message(stderr, msg_c_offload_descriptor_offload, args);
75 break;
76 case c_merge_var_descs1:
77 write_message(stderr, msg_c_merge_var_descs1, args);
78 break;
79 case c_merge_var_descs2:
80 write_message(stderr, msg_c_merge_var_descs2, args);
81 break;
82 case c_mic_parse_env_var_list1:
83 write_message(stderr, msg_c_mic_parse_env_var_list1, args);
84 break;
85 case c_mic_parse_env_var_list2:
86 write_message(stderr, msg_c_mic_parse_env_var_list2, args);
87 break;
88 case c_mic_process_exit_ret:
89 write_message(stderr, msg_c_mic_process_exit_ret, args);
90 break;
91 case c_mic_process_exit_sig:
92 write_message(stderr, msg_c_mic_process_exit_sig, args);
93 break;
94 case c_mic_process_exit:
95 write_message(stderr, msg_c_mic_process_exit, args);
96 break;
97 case c_mic_init3:
98 write_message(stderr, msg_c_mic_init3, args);
99 break;
100 case c_mic_init4:
101 write_message(stderr, msg_c_mic_init4, args);
102 break;
103 case c_mic_init5:
104 write_message(stderr, msg_c_mic_init5, args);
105 break;
106 case c_mic_init6:
107 write_message(stderr, msg_c_mic_init6, args);
108 break;
109 case c_no_static_var_data:
110 write_message(stderr, msg_c_no_static_var_data, args);
111 break;
112 case c_no_ptr_data:
113 write_message(stderr, msg_c_no_ptr_data, args);
114 break;
115 case c_get_engine_handle:
116 write_message(stderr, msg_c_get_engine_handle, args);
117 break;
118 case c_get_engine_index:
119 write_message(stderr, msg_c_get_engine_index, args);
120 break;
121 case c_process_create:
122 write_message(stderr, msg_c_process_create, args);
123 break;
124 case c_process_wait_shutdown:
125 write_message(stderr, msg_c_process_wait_shutdown, args);
126 break;
127 case c_process_proxy_flush:
128 write_message(stderr, msg_c_process_proxy_flush, args);
129 break;
130 case c_process_get_func_handles:
131 write_message(stderr, msg_c_process_get_func_handles, args);
132 break;
133 case c_load_library:
134 write_message(stderr, msg_c_load_library, args);
135 break;
136 case c_coipipe_max_number:
137 write_message(stderr, msg_c_coi_pipeline_max_number, args);
138 break;
139 case c_pipeline_create:
140 write_message(stderr, msg_c_pipeline_create, args);
141 break;
142 case c_pipeline_run_func:
143 write_message(stderr, msg_c_pipeline_run_func, args);
144 break;
145 case c_pipeline_start_run_funcs:
146 write_message(stderr, msg_c_pipeline_start_run_funcs, args);
147 break;
148 case c_buf_create:
149 write_message(stderr, msg_c_buf_create, args);
150 break;
151 case c_buf_create_out_of_mem:
152 write_message(stderr, msg_c_buf_create_out_of_mem, args);
153 break;
154 case c_buf_create_from_mem:
155 write_message(stderr, msg_c_buf_create_from_mem, args);
156 break;
157 case c_buf_destroy:
158 write_message(stderr, msg_c_buf_destroy, args);
159 break;
160 case c_buf_map:
161 write_message(stderr, msg_c_buf_map, args);
162 break;
163 case c_buf_unmap:
164 write_message(stderr, msg_c_buf_unmap, args);
165 break;
166 case c_buf_read:
167 write_message(stderr, msg_c_buf_read, args);
168 break;
169 case c_buf_write:
170 write_message(stderr, msg_c_buf_write, args);
171 break;
172 case c_buf_copy:
173 write_message(stderr, msg_c_buf_copy, args);
174 break;
175 case c_buf_get_address:
176 write_message(stderr, msg_c_buf_get_address, args);
177 break;
178 case c_buf_add_ref:
179 write_message(stderr, msg_c_buf_add_ref, args);
180 break;
181 case c_buf_release_ref:
182 write_message(stderr, msg_c_buf_release_ref, args);
183 break;
184 case c_buf_set_state:
185 write_message(stderr, msg_c_buf_set_state, args);
186 break;
187 case c_event_wait:
188 write_message(stderr, msg_c_event_wait, args);
189 break;
190 case c_zero_or_neg_ptr_len:
191 write_message(stderr, msg_c_zero_or_neg_ptr_len, args);
192 break;
193 case c_zero_or_neg_transfer_size:
194 write_message(stderr, msg_c_zero_or_neg_transfer_size, args);
195 break;
196 case c_bad_ptr_mem_range:
197 write_message(stderr, msg_c_bad_ptr_mem_range, args);
198 break;
199 case c_different_src_and_dstn_sizes:
200 write_message(stderr, msg_c_different_src_and_dstn_sizes, args);
201 break;
202 case c_ranges_dont_match:
203 write_message(stderr, msg_c_ranges_dont_match, args);
204 break;
205 case c_destination_is_over:
206 write_message(stderr, msg_c_destination_is_over, args);
207 break;
208 case c_slice_of_noncont_array:
209 write_message(stderr, msg_c_slice_of_noncont_array, args);
210 break;
211 case c_non_contiguous_dope_vector:
212 write_message(stderr, msg_c_non_contiguous_dope_vector, args);
213 break;
214 case c_pointer_array_mismatch:
215 write_message(stderr, msg_c_pointer_array_mismatch, args);
216 break;
217 case c_omp_invalid_device_num_env:
218 write_message(stderr, msg_c_omp_invalid_device_num_env, args);
219 break;
220 case c_omp_invalid_device_num:
221 write_message(stderr, msg_c_omp_invalid_device_num, args);
222 break;
223 case c_unknown_binary_type:
224 write_message(stderr, msg_c_unknown_binary_type, args);
225 break;
226 case c_multiple_target_exes:
227 write_message(stderr, msg_c_multiple_target_exes, args);
228 break;
229 case c_no_target_exe:
230 write_message(stderr, msg_c_no_target_exe, args);
231 break;
232 case c_report_unknown_timer_node:
233 write_message(stderr, msg_c_report_unknown_timer_node, args);
234 break;
235 case c_report_unknown_trace_node:
236 write_message(stderr, msg_c_report_unknown_trace_node, args);
237 break;
238 }
239 va_end(args);
240}
241
242char const * report_get_message_str(error_types input_tag)
243{
244 switch (input_tag) {
245 case c_report_title:
246 return (offload_get_message_str(msg_c_report_title));
247 case c_report_from_file:
248 return (offload_get_message_str(msg_c_report_from_file));
249 case c_report_offload:
250 return (offload_get_message_str(msg_c_report_offload));
251 case c_report_mic:
252 return (offload_get_message_str(msg_c_report_mic));
253 case c_report_file:
254 return (offload_get_message_str(msg_c_report_file));
255 case c_report_line:
256 return (offload_get_message_str(msg_c_report_line));
257 case c_report_host:
258 return (offload_get_message_str(msg_c_report_host));
259 case c_report_tag:
260 return (offload_get_message_str(msg_c_report_tag));
261 case c_report_cpu_time:
262 return (offload_get_message_str(msg_c_report_cpu_time));
263 case c_report_seconds:
264 return (offload_get_message_str(msg_c_report_seconds));
265 case c_report_cpu_to_mic_data:
266 return (offload_get_message_str(msg_c_report_cpu_to_mic_data));
267 case c_report_bytes:
268 return (offload_get_message_str(msg_c_report_bytes));
269 case c_report_mic_time:
270 return (offload_get_message_str(msg_c_report_mic_time));
271 case c_report_mic_to_cpu_data:
272 return (offload_get_message_str(msg_c_report_mic_to_cpu_data));
273 case c_report_compute:
274 return (offload_get_message_str(msg_c_report_compute));
275 case c_report_copyin_data:
276 return (offload_get_message_str(msg_c_report_copyin_data));
277 case c_report_copyout_data:
278 return (offload_get_message_str(msg_c_report_copyout_data));
279 case c_report_create_buf_host:
280 return (offload_get_message_str(c_report_create_buf_host));
281 case c_report_create_buf_mic:
282 return (offload_get_message_str(msg_c_report_create_buf_mic));
283 case c_report_destroy:
284 return (offload_get_message_str(msg_c_report_destroy));
285 case c_report_gather_copyin_data:
286 return (offload_get_message_str(msg_c_report_gather_copyin_data));
287 case c_report_gather_copyout_data:
288 return (offload_get_message_str(msg_c_report_gather_copyout_data));
289 case c_report_state_signal:
290 return (offload_get_message_str(msg_c_report_state_signal));
291 case c_report_signal:
292 return (offload_get_message_str(msg_c_report_signal));
293 case c_report_wait:
294 return (offload_get_message_str(msg_c_report_wait));
295 case c_report_init:
296 return (offload_get_message_str(msg_c_report_init));
297 case c_report_init_func:
298 return (offload_get_message_str(msg_c_report_init_func));
299 case c_report_logical_card:
300 return (offload_get_message_str(msg_c_report_logical_card));
301 case c_report_mic_myo_fptr:
302 return (offload_get_message_str(msg_c_report_mic_myo_fptr));
303 case c_report_mic_myo_shared:
304 return (offload_get_message_str(msg_c_report_mic_myo_shared));
305 case c_report_myoacquire:
306 return (offload_get_message_str(msg_c_report_myoacquire));
307 case c_report_myofini:
308 return (offload_get_message_str(msg_c_report_myofini));
309 case c_report_myoinit:
310 return (offload_get_message_str(msg_c_report_myoinit));
311 case c_report_myoregister:
312 return (offload_get_message_str(msg_c_report_myoregister));
313 case c_report_myorelease:
314 return (offload_get_message_str(msg_c_report_myorelease));
315 case c_report_myosharedalignedfree:
316 return (
317 offload_get_message_str(msg_c_report_myosharedalignedfree));
318 case c_report_myosharedalignedmalloc:
319 return (
320 offload_get_message_str(msg_c_report_myosharedalignedmalloc));
321 case c_report_myosharedfree:
322 return (offload_get_message_str(msg_c_report_myosharedfree));
323 case c_report_myosharedmalloc:
324 return (offload_get_message_str(msg_c_report_myosharedmalloc));
325 case c_report_physical_card:
326 return (offload_get_message_str(msg_c_report_physical_card));
327 case c_report_receive_pointer_data:
328 return (
329 offload_get_message_str(msg_c_report_receive_pointer_data));
330 case c_report_received_pointer_data:
331 return (
332 offload_get_message_str(msg_c_report_received_pointer_data));
333 case c_report_register:
334 return (offload_get_message_str(msg_c_report_register));
335 case c_report_scatter_copyin_data:
336 return (offload_get_message_str(msg_c_report_scatter_copyin_data));
337 case c_report_scatter_copyout_data:
338 return (
339 offload_get_message_str(msg_c_report_scatter_copyout_data));
340 case c_report_send_pointer_data:
341 return (offload_get_message_str(msg_c_report_send_pointer_data));
342 case c_report_sent_pointer_data:
343 return (offload_get_message_str(msg_c_report_sent_pointer_data));
344 case c_report_start:
345 return (offload_get_message_str(msg_c_report_start));
346 case c_report_start_target_func:
347 return (offload_get_message_str(msg_c_report_start_target_func));
348 case c_report_state:
349 return (offload_get_message_str(msg_c_report_state));
350 case c_report_unregister:
351 return (offload_get_message_str(msg_c_report_unregister));
352 case c_report_var:
353 return (offload_get_message_str(msg_c_report_var));
354
355 default:
356 LIBOFFLOAD_ERROR(c_report_unknown_trace_node);
357 abort();
358 }
359}
360
361char const * report_get_host_stage_str(int i)
362{
363 switch (i) {
364 case c_offload_host_total_offload:
365 return (
366 offload_get_message_str(msg_c_report_host_total_offload_time));
367 case c_offload_host_initialize:
368 return (offload_get_message_str(msg_c_report_host_initialize));
369 case c_offload_host_target_acquire:
370 return (
371 offload_get_message_str(msg_c_report_host_target_acquire));
372 case c_offload_host_wait_deps:
373 return (offload_get_message_str(msg_c_report_host_wait_deps));
374 case c_offload_host_setup_buffers:
375 return (offload_get_message_str(msg_c_report_host_setup_buffers));
376 case c_offload_host_alloc_buffers:
377 return (offload_get_message_str(msg_c_report_host_alloc_buffers));
378 case c_offload_host_setup_misc_data:
379 return (
380 offload_get_message_str(msg_c_report_host_setup_misc_data));
381 case c_offload_host_alloc_data_buffer:
382 return (
383 offload_get_message_str(msg_c_report_host_alloc_data_buffer));
384 case c_offload_host_send_pointers:
385 return (offload_get_message_str(msg_c_report_host_send_pointers));
386 case c_offload_host_gather_inputs:
387 return (offload_get_message_str(msg_c_report_host_gather_inputs));
388 case c_offload_host_map_in_data_buffer:
389 return (
390 offload_get_message_str(msg_c_report_host_map_in_data_buffer));
391 case c_offload_host_unmap_in_data_buffer:
392 return (offload_get_message_str(
393 msg_c_report_host_unmap_in_data_buffer));
394 case c_offload_host_start_compute:
395 return (offload_get_message_str(msg_c_report_host_start_compute));
396 case c_offload_host_wait_compute:
397 return (offload_get_message_str(msg_c_report_host_wait_compute));
398 case c_offload_host_start_buffers_reads:
399 return (offload_get_message_str(
400 msg_c_report_host_start_buffers_reads));
401 case c_offload_host_scatter_outputs:
402 return (
403 offload_get_message_str(msg_c_report_host_scatter_outputs));
404 case c_offload_host_map_out_data_buffer:
405 return (offload_get_message_str(
406 msg_c_report_host_map_out_data_buffer));
407 case c_offload_host_unmap_out_data_buffer:
408 return (offload_get_message_str(
409 msg_c_report_host_unmap_out_data_buffer));
410 case c_offload_host_wait_buffers_reads:
411 return (
412 offload_get_message_str(msg_c_report_host_wait_buffers_reads));
413 case c_offload_host_destroy_buffers:
414 return (
415 offload_get_message_str(msg_c_report_host_destroy_buffers));
416 default:
417 LIBOFFLOAD_ERROR(c_report_unknown_timer_node);
418 abort();
419 }
420}
421
422char const * report_get_target_stage_str(int i)
423{
424 switch (i) {
425 case c_offload_target_total_time:
426 return (offload_get_message_str(msg_c_report_target_total_time));
427 case c_offload_target_descriptor_setup:
428 return (
429 offload_get_message_str(msg_c_report_target_descriptor_setup));
430 case c_offload_target_func_lookup:
431 return (offload_get_message_str(msg_c_report_target_func_lookup));
432 case c_offload_target_func_time:
433 return (offload_get_message_str(msg_c_report_target_func_time));
434 case c_offload_target_scatter_inputs:
435 return (
436 offload_get_message_str(msg_c_report_target_scatter_inputs));
437 case c_offload_target_add_buffer_refs:
438 return (
439 offload_get_message_str(msg_c_report_target_add_buffer_refs));
440 case c_offload_target_compute:
441 return (offload_get_message_str(msg_c_report_target_compute));
442 case c_offload_target_gather_outputs:
443 return (offload_get_message_str
444 (msg_c_report_target_gather_outputs));
445 case c_offload_target_release_buffer_refs:
446 return (offload_get_message_str(
447 msg_c_report_target_release_buffer_refs));
448 default:
449 LIBOFFLOAD_ERROR(c_report_unknown_timer_node);
450 abort();
451 }
452}