blob: 1f2052a9dadd57e7d4d844c5b8bcd0ffe1c76280 [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 <omp.h>
12#include "offload.h"
13#include "compiler_if_target.h"
14
15// OpenMP API
16
17void omp_set_default_device(int num)
18{
19}
20
21int omp_get_default_device(void)
22{
23 return mic_index;
24}
25
26int omp_get_num_devices()
27{
28 return mic_engines_total;
29}
30
31// OpenMP API wrappers
32
33static void omp_send_int_to_host(
34 void *ofld_,
35 int setting
36)
37{
38 OFFLOAD ofld = (OFFLOAD) ofld_;
39 VarDesc vars[1] = {0};
40
41 vars[0].type.src = c_data;
42 vars[0].type.dst = c_data;
43 vars[0].direction.bits = c_parameter_out;
44 vars[0].ptr = &setting;
45
46 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
47 OFFLOAD_TARGET_LEAVE(ofld);
48}
49
50static int omp_get_int_from_host(
51 void *ofld_
52)
53{
54 OFFLOAD ofld = (OFFLOAD) ofld_;
55 VarDesc vars[1] = {0};
56 int setting;
57
58 vars[0].type.src = c_data;
59 vars[0].type.dst = c_data;
60 vars[0].direction.bits = c_parameter_in;
61 vars[0].ptr = &setting;
62
63 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
64 OFFLOAD_TARGET_LEAVE(ofld);
65
66 return setting;
67}
68
69void omp_set_num_threads_lrb(
70 void *ofld
71)
72{
73 int num_threads;
74
75 num_threads = omp_get_int_from_host(ofld);
76 omp_set_num_threads(num_threads);
77}
78
79void omp_get_max_threads_lrb(
80 void *ofld
81)
82{
83 int num_threads;
84
85 num_threads = omp_get_max_threads();
86 omp_send_int_to_host(ofld, num_threads);
87}
88
89void omp_get_num_procs_lrb(
90 void *ofld
91)
92{
93 int num_procs;
94
95 num_procs = omp_get_num_procs();
96 omp_send_int_to_host(ofld, num_procs);
97}
98
99void omp_set_dynamic_lrb(
100 void *ofld
101)
102{
103 int dynamic;
104
105 dynamic = omp_get_int_from_host(ofld);
106 omp_set_dynamic(dynamic);
107}
108
109void omp_get_dynamic_lrb(
110 void *ofld
111)
112{
113 int dynamic;
114
115 dynamic = omp_get_dynamic();
116 omp_send_int_to_host(ofld, dynamic);
117}
118
119void omp_set_nested_lrb(
120 void *ofld
121)
122{
123 int nested;
124
125 nested = omp_get_int_from_host(ofld);
126 omp_set_nested(nested);
127}
128
129void omp_get_nested_lrb(
130 void *ofld
131)
132{
133 int nested;
134
135 nested = omp_get_nested();
136 omp_send_int_to_host(ofld, nested);
137}
138
139void omp_set_schedule_lrb(
140 void *ofld_
141)
142{
143 OFFLOAD ofld = (OFFLOAD) ofld_;
144 VarDesc vars[2] = {0};
145 omp_sched_t kind;
146 int modifier;
147
148 vars[0].type.src = c_data;
149 vars[0].type.dst = c_data;
150 vars[0].direction.bits = c_parameter_in;
151 vars[0].ptr = &kind;
152
153 vars[1].type.src = c_data;
154 vars[1].type.dst = c_data;
155 vars[1].direction.bits = c_parameter_in;
156 vars[1].ptr = &modifier;
157
158 OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL);
159 omp_set_schedule(kind, modifier);
160 OFFLOAD_TARGET_LEAVE(ofld);
161}
162
163void omp_get_schedule_lrb(
164 void *ofld_
165)
166{
167 OFFLOAD ofld = (OFFLOAD) ofld_;
168 VarDesc vars[2] = {0};
169 omp_sched_t kind;
170 int modifier;
171
172 vars[0].type.src = c_data;
173 vars[0].type.dst = c_data;
174 vars[0].direction.bits = c_parameter_out;
175 vars[0].ptr = &kind;
176
177 vars[1].type.src = c_data;
178 vars[1].type.dst = c_data;
179 vars[1].direction.bits = c_parameter_out;
180 vars[1].ptr = &modifier;
181
182 OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL);
183 omp_get_schedule(&kind, &modifier);
184 OFFLOAD_TARGET_LEAVE(ofld);
185}
186
187// lock API functions
188
189void omp_init_lock_lrb(
190 void *ofld_
191)
192{
193 OFFLOAD ofld = (OFFLOAD) ofld_;
194 VarDesc vars[1] = {0};
195 omp_lock_target_t lock;
196
197 vars[0].type.src = c_data;
198 vars[0].type.dst = c_data;
199 vars[0].direction.bits = c_parameter_out;
200 vars[0].ptr = &lock;
201
202 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
203 omp_init_lock(&lock.lock);
204 OFFLOAD_TARGET_LEAVE(ofld);
205}
206
207void omp_destroy_lock_lrb(
208 void *ofld_
209)
210{
211 OFFLOAD ofld = (OFFLOAD) ofld_;
212 VarDesc vars[1] = {0};
213 omp_lock_target_t lock;
214
215 vars[0].type.src = c_data;
216 vars[0].type.dst = c_data;
217 vars[0].direction.bits = c_parameter_in;
218 vars[0].ptr = &lock;
219
220 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
221 omp_destroy_lock(&lock.lock);
222 OFFLOAD_TARGET_LEAVE(ofld);
223}
224
225void omp_set_lock_lrb(
226 void *ofld_
227)
228{
229 OFFLOAD ofld = (OFFLOAD) ofld_;
230 VarDesc vars[1] = {0};
231 omp_lock_target_t lock;
232
233 vars[0].type.src = c_data;
234 vars[0].type.dst = c_data;
235 vars[0].direction.bits = c_parameter_inout;
236 vars[0].ptr = &lock;
237
238 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
239 omp_set_lock(&lock.lock);
240 OFFLOAD_TARGET_LEAVE(ofld);
241}
242
243void omp_unset_lock_lrb(
244 void *ofld_
245)
246{
247 OFFLOAD ofld = (OFFLOAD) ofld_;
248 VarDesc vars[1] = {0};
249 omp_lock_target_t lock;
250
251 vars[0].type.src = c_data;
252 vars[0].type.dst = c_data;
253 vars[0].direction.bits = c_parameter_inout;
254 vars[0].ptr = &lock;
255
256 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
257 omp_unset_lock(&lock.lock);
258 OFFLOAD_TARGET_LEAVE(ofld);
259}
260
261void omp_test_lock_lrb(
262 void *ofld_
263)
264{
265 OFFLOAD ofld = (OFFLOAD) ofld_;
266 VarDesc vars[2] = {0};
267 omp_lock_target_t lock;
268 int result;
269
270 vars[0].type.src = c_data;
271 vars[0].type.dst = c_data;
272 vars[0].direction.bits = c_parameter_inout;
273 vars[0].ptr = &lock;
274
275 vars[1].type.src = c_data;
276 vars[1].type.dst = c_data;
277 vars[1].direction.bits = c_parameter_out;
278 vars[1].ptr = &result;
279
280 OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL);
281 result = omp_test_lock(&lock.lock);
282 OFFLOAD_TARGET_LEAVE(ofld);
283}
284
285// nested lock API functions
286
287void omp_init_nest_lock_lrb(
288 void *ofld_
289)
290{
291 OFFLOAD ofld = (OFFLOAD) ofld_;
292 VarDesc vars[1] = {0};
293 omp_nest_lock_target_t lock;
294
295 vars[0].type.src = c_data;
296 vars[0].type.dst = c_data;
297 vars[0].direction.bits = c_parameter_out;
298 vars[0].ptr = &lock;
299
300 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
301 omp_init_nest_lock(&lock.lock);
302 OFFLOAD_TARGET_LEAVE(ofld);
303}
304
305void omp_destroy_nest_lock_lrb(
306 void *ofld_
307)
308{
309 OFFLOAD ofld = (OFFLOAD) ofld_;
310 VarDesc vars[1] = {0};
311 omp_nest_lock_target_t lock;
312
313 vars[0].type.src = c_data;
314 vars[0].type.dst = c_data;
315 vars[0].direction.bits = c_parameter_in;
316 vars[0].ptr = &lock;
317
318 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
319 omp_destroy_nest_lock(&lock.lock);
320 OFFLOAD_TARGET_LEAVE(ofld);
321}
322
323void omp_set_nest_lock_lrb(
324 void *ofld_
325)
326{
327 OFFLOAD ofld = (OFFLOAD) ofld_;
328 VarDesc vars[1] = {0};
329 omp_nest_lock_target_t lock;
330
331 vars[0].type.src = c_data;
332 vars[0].type.dst = c_data;
333 vars[0].direction.bits = c_parameter_inout;
334 vars[0].ptr = &lock;
335
336 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
337 omp_set_nest_lock(&lock.lock);
338 OFFLOAD_TARGET_LEAVE(ofld);
339}
340
341void omp_unset_nest_lock_lrb(
342 void *ofld_
343)
344{
345 OFFLOAD ofld = (OFFLOAD) ofld_;
346 VarDesc vars[1] = {0};
347 omp_nest_lock_target_t lock;
348
349 vars[0].type.src = c_data;
350 vars[0].type.dst = c_data;
351 vars[0].direction.bits = c_parameter_inout;
352 vars[0].ptr = &lock;
353
354 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
355 omp_unset_nest_lock(&lock.lock);
356 OFFLOAD_TARGET_LEAVE(ofld);
357}
358
359void omp_test_nest_lock_lrb(
360 void *ofld_
361)
362{
363 OFFLOAD ofld = (OFFLOAD) ofld_;
364 VarDesc vars[2] = {0};
365 omp_nest_lock_target_t lock;
366 int result;
367
368 vars[0].type.src = c_data;
369 vars[0].type.dst = c_data;
370 vars[0].direction.bits = c_parameter_inout;
371 vars[0].ptr = &lock;
372
373 vars[1].type.src = c_data;
374 vars[1].type.dst = c_data;
375 vars[1].direction.bits = c_parameter_out;
376 vars[1].ptr = &result;
377
378 OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL);
379 result = omp_test_nest_lock(&lock.lock);
380 OFFLOAD_TARGET_LEAVE(ofld);
381}
382
383// kmp API functions
384
385void kmp_set_stacksize_lrb(
386 void *ofld
387)
388{
389 int size;
390
391 size = omp_get_int_from_host(ofld);
392 kmp_set_stacksize(size);
393}
394
395void kmp_get_stacksize_lrb(
396 void *ofld
397)
398{
399 int size;
400
401 size = kmp_get_stacksize();
402 omp_send_int_to_host(ofld, size);
403}
404
405void kmp_set_stacksize_s_lrb(
406 void *ofld
407)
408{
409 int size;
410
411 size = omp_get_int_from_host(ofld);
412 kmp_set_stacksize_s(size);
413}
414
415void kmp_get_stacksize_s_lrb(
416 void *ofld
417)
418{
419 int size;
420
421 size = kmp_get_stacksize_s();
422 omp_send_int_to_host(ofld, size);
423}
424
425void kmp_set_blocktime_lrb(
426 void *ofld
427)
428{
429 int time;
430
431 time = omp_get_int_from_host(ofld);
432 kmp_set_blocktime(time);
433}
434
435void kmp_get_blocktime_lrb(
436 void *ofld
437)
438{
439 int time;
440
441 time = kmp_get_blocktime();
442 omp_send_int_to_host(ofld, time);
443}
444
445void kmp_set_library_serial_lrb(
446 void *ofld_
447)
448{
449 OFFLOAD ofld = (OFFLOAD) ofld_;
450
451 OFFLOAD_TARGET_ENTER(ofld, 0, 0, 0);
452 kmp_set_library_serial();
453 OFFLOAD_TARGET_LEAVE(ofld);
454}
455
456void kmp_set_library_turnaround_lrb(
457 void *ofld_
458)
459{
460 OFFLOAD ofld = (OFFLOAD) ofld_;
461
462 OFFLOAD_TARGET_ENTER(ofld, 0, 0, 0);
463 kmp_set_library_turnaround();
464 OFFLOAD_TARGET_LEAVE(ofld);
465}
466
467void kmp_set_library_throughput_lrb(
468 void *ofld_
469)
470{
471 OFFLOAD ofld = (OFFLOAD) ofld_;
472
473 OFFLOAD_TARGET_ENTER(ofld, 0, 0, 0);
474 kmp_set_library_throughput();
475 OFFLOAD_TARGET_LEAVE(ofld);
476}
477
478void kmp_set_library_lrb(
479 void *ofld
480)
481{
482 int mode;
483
484 mode = omp_get_int_from_host(ofld);
485 kmp_set_library(mode);
486}
487
488void kmp_get_library_lrb(
489 void *ofld
490)
491{
492 int mode;
493
494 mode = kmp_get_library();
495 omp_send_int_to_host(ofld, mode);
496}
497
498void kmp_set_defaults_lrb(
499 void *ofld_
500)
501{
502 OFFLOAD ofld = (OFFLOAD) ofld_;
503 VarDesc vars[1] = {0};
504 char *defaults = 0;
505
506 vars[0].type.src = c_string_ptr;
507 vars[0].type.dst = c_string_ptr;
508 vars[0].direction.bits = c_parameter_in;
509 vars[0].ptr = &defaults;
510
511 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
512 kmp_set_defaults(defaults);
513 OFFLOAD_TARGET_LEAVE(ofld);
514}
515
516// affinity API functions
517
518void kmp_create_affinity_mask_lrb(
519 void *ofld_
520)
521{
522 OFFLOAD ofld = (OFFLOAD) ofld_;
523 VarDesc vars[1] = {0};
524 kmp_affinity_mask_target_t mask;
525
526 vars[0].type.src = c_data;
527 vars[0].type.dst = c_data;
528 vars[0].direction.bits = c_parameter_out;
529 vars[0].ptr = &mask;
530
531 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
532 kmp_create_affinity_mask(&mask.mask);
533 OFFLOAD_TARGET_LEAVE(ofld);
534}
535
536void kmp_destroy_affinity_mask_lrb(
537 void *ofld_
538)
539{
540 OFFLOAD ofld = (OFFLOAD) ofld_;
541 VarDesc vars[1] = {0};
542 kmp_affinity_mask_target_t mask;
543
544 vars[0].type.src = c_data;
545 vars[0].type.dst = c_data;
546 vars[0].direction.bits = c_parameter_in;
547 vars[0].ptr = &mask;
548
549 OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL);
550 kmp_destroy_affinity_mask(&mask.mask);
551 OFFLOAD_TARGET_LEAVE(ofld);
552}
553
554void kmp_set_affinity_lrb(
555 void *ofld_
556)
557{
558 OFFLOAD ofld = (OFFLOAD) ofld_;
559 VarDesc vars[2] = {0};
560 kmp_affinity_mask_target_t mask;
561 int result;
562
563 vars[0].type.src = c_data;
564 vars[0].type.dst = c_data;
565 vars[0].direction.bits = c_parameter_in;
566 vars[0].ptr = &mask;
567
568 vars[1].type.src = c_data;
569 vars[1].type.dst = c_data;
570 vars[1].direction.bits = c_parameter_out;
571 vars[1].ptr = &result;
572
573 OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL);
574 result = kmp_set_affinity(&mask.mask);
575 OFFLOAD_TARGET_LEAVE(ofld);
576}
577
578void kmp_get_affinity_lrb(
579 void *ofld_
580)
581{
582 OFFLOAD ofld = (OFFLOAD) ofld_;
583 VarDesc vars[2] = {0};
584 kmp_affinity_mask_target_t mask;
585 int result;
586
587 vars[0].type.src = c_data;
588 vars[0].type.dst = c_data;
589 vars[0].direction.bits = c_parameter_inout;
590 vars[0].ptr = &mask;
591
592 vars[1].type.src = c_data;
593 vars[1].type.dst = c_data;
594 vars[1].direction.bits = c_parameter_out;
595 vars[1].ptr = &result;
596
597 OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL);
598 result = kmp_get_affinity(&mask.mask);
599 OFFLOAD_TARGET_LEAVE(ofld);
600}
601
602void kmp_get_affinity_max_proc_lrb(
603 void *ofld
604)
605{
606 int max_proc;
607
608 max_proc = kmp_get_affinity_max_proc();
609 omp_send_int_to_host(ofld, max_proc);
610}
611
612void kmp_set_affinity_mask_proc_lrb(
613 void *ofld_
614)
615{
616 OFFLOAD ofld = (OFFLOAD) ofld_;
617 VarDesc vars[3] = {0};
618 kmp_affinity_mask_target_t mask;
619 int proc, result;
620
621 vars[0].type.src = c_data;
622 vars[0].type.dst = c_data;
623 vars[0].direction.bits = c_parameter_in;
624 vars[0].ptr = &proc;
625
626 vars[1].type.src = c_data;
627 vars[1].type.dst = c_data;
628 vars[1].direction.bits = c_parameter_inout;
629 vars[1].ptr = &mask;
630
631 vars[2].type.src = c_data;
632 vars[2].type.dst = c_data;
633 vars[2].direction.bits = c_parameter_out;
634 vars[2].ptr = &result;
635
636 OFFLOAD_TARGET_ENTER(ofld, 3, vars, NULL);
637 result = kmp_set_affinity_mask_proc(proc, &mask.mask);
638 OFFLOAD_TARGET_LEAVE(ofld);
639}
640
641void kmp_unset_affinity_mask_proc_lrb(
642 void *ofld_
643)
644{
645 OFFLOAD ofld = (OFFLOAD) ofld_;
646 VarDesc vars[3] = {0};
647 kmp_affinity_mask_target_t mask;
648 int proc, result;
649
650 vars[0].type.src = c_data;
651 vars[0].type.dst = c_data;
652 vars[0].direction.bits = c_parameter_in;
653 vars[0].ptr = &proc;
654
655 vars[1].type.src = c_data;
656 vars[1].type.dst = c_data;
657 vars[1].direction.bits = c_parameter_inout;
658 vars[1].ptr = &mask;
659
660 vars[2].type.src = c_data;
661 vars[2].type.dst = c_data;
662 vars[2].direction.bits = c_parameter_out;
663 vars[2].ptr = &result;
664
665 OFFLOAD_TARGET_ENTER(ofld, 3, vars, NULL);
666 result = kmp_unset_affinity_mask_proc(proc, &mask.mask);
667 OFFLOAD_TARGET_LEAVE(ofld);
668}
669
670void kmp_get_affinity_mask_proc_lrb(
671 void *ofld_
672)
673{
674 OFFLOAD ofld = (OFFLOAD) ofld_;
675 VarDesc vars[3] = {0};
676 kmp_affinity_mask_target_t mask;
677 int proc, result;
678
679 vars[0].type.src = c_data;
680 vars[0].type.dst = c_data;
681 vars[0].direction.bits = c_parameter_in;
682 vars[0].ptr = &proc;
683
684 vars[1].type.src = c_data;
685 vars[1].type.dst = c_data;
686 vars[1].direction.bits = c_parameter_in;
687 vars[1].ptr = &mask;
688
689 vars[2].type.src = c_data;
690 vars[2].type.dst = c_data;
691 vars[2].direction.bits = c_parameter_out;
692 vars[2].ptr = &result;
693
694 OFFLOAD_TARGET_ENTER(ofld, 3, vars, NULL);
695 result = kmp_get_affinity_mask_proc(proc, &mask.mask);
696 OFFLOAD_TARGET_LEAVE(ofld);
697}
698
699// Target-side stubs for the host functions (to avoid unresolveds)
700// These are needed for the offloadm table
701
702void omp_set_num_threads_target(
703 TARGET_TYPE target_type,
704 int target_number,
705 int num_threads
706)
707{
708}
709
710int omp_get_max_threads_target(
711 TARGET_TYPE target_type,
712 int target_number
713)
714{
715 return 0;
716}
717
718int omp_get_num_procs_target(
719 TARGET_TYPE target_type,
720 int target_number
721)
722{
723 return 0;
724}
725
726void omp_set_dynamic_target(
727 TARGET_TYPE target_type,
728 int target_number,
729 int num_threads
730)
731{
732}
733
734int omp_get_dynamic_target(
735 TARGET_TYPE target_type,
736 int target_number
737)
738{
739 return 0;
740}
741
742void omp_set_nested_target(
743 TARGET_TYPE target_type,
744 int target_number,
745 int num_threads
746)
747{
748}
749
750int omp_get_nested_target(
751 TARGET_TYPE target_type,
752 int target_number
753)
754{
755 return 0;
756}
757
758void omp_set_schedule_target(
759 TARGET_TYPE target_type,
760 int target_number,
761 omp_sched_t kind,
762 int modifier
763)
764{
765}
766
767void omp_get_schedule_target(
768 TARGET_TYPE target_type,
769 int target_number,
770 omp_sched_t *kind,
771 int *modifier
772)
773{
774}
775
776void omp_init_lock_target(
777 TARGET_TYPE target_type,
778 int target_number,
779 omp_lock_target_t *lock
780)
781{
782}
783
784void omp_destroy_lock_target(
785 TARGET_TYPE target_type,
786 int target_number,
787 omp_lock_target_t *lock
788)
789{
790}
791
792void omp_set_lock_target(
793 TARGET_TYPE target_type,
794 int target_number,
795 omp_lock_target_t *lock
796)
797{
798}
799
800void omp_unset_lock_target(
801 TARGET_TYPE target_type,
802 int target_number,
803 omp_lock_target_t *lock
804)
805{
806}
807
808int omp_test_lock_target(
809 TARGET_TYPE target_type,
810 int target_number,
811 omp_lock_target_t *lock
812)
813{
814 return 0;
815}
816
817void omp_init_nest_lock_target(
818 TARGET_TYPE target_type,
819 int target_number,
820 omp_nest_lock_target_t *lock
821)
822{
823}
824
825void omp_destroy_nest_lock_target(
826 TARGET_TYPE target_type,
827 int target_number,
828 omp_nest_lock_target_t *lock
829)
830{
831}
832
833void omp_set_nest_lock_target(
834 TARGET_TYPE target_type,
835 int target_number,
836 omp_nest_lock_target_t *lock
837)
838{
839}
840
841void omp_unset_nest_lock_target(
842 TARGET_TYPE target_type,
843 int target_number,
844 omp_nest_lock_target_t *lock
845)
846{
847}
848
849int omp_test_nest_lock_target(
850 TARGET_TYPE target_type,
851 int target_number,
852 omp_nest_lock_target_t *lock
853)
854{
855 return 0;
856}
857
858void kmp_set_stacksize_target(
859 TARGET_TYPE target_type,
860 int target_number,
861 int size
862)
863{
864}
865
866int kmp_get_stacksize_target(
867 TARGET_TYPE target_type,
868 int target_number
869)
870{
871 return 0;
872}
873
874void kmp_set_stacksize_s_target(
875 TARGET_TYPE target_type,
876 int target_number,
877 size_t size
878)
879{
880}
881
882size_t kmp_get_stacksize_s_target(
883 TARGET_TYPE target_type,
884 int target_number
885)
886{
887 return 0;
888}
889
890void kmp_set_blocktime_target(
891 TARGET_TYPE target_type,
892 int target_number,
893 int time
894)
895{
896}
897
898int kmp_get_blocktime_target(
899 TARGET_TYPE target_type,
900 int target_number
901)
902{
903 return 0;
904}
905
906void kmp_set_library_serial_target(
907 TARGET_TYPE target_type,
908 int target_number
909)
910{
911}
912
913void kmp_set_library_turnaround_target(
914 TARGET_TYPE target_type,
915 int target_number
916)
917{
918}
919
920void kmp_set_library_throughput_target(
921 TARGET_TYPE target_type,
922 int target_number
923)
924{
925}
926
927void kmp_set_library_target(
928 TARGET_TYPE target_type,
929 int target_number,
930 int mode
931)
932{
933}
934
935int kmp_get_library_target(
936 TARGET_TYPE target_type,
937 int target_number
938)
939{
940 return 0;
941}
942
943void kmp_set_defaults_target(
944 TARGET_TYPE target_type,
945 int target_number,
946 char const *defaults
947)
948{
949}
950
951void kmp_create_affinity_mask_target(
952 TARGET_TYPE target_type,
953 int target_number,
954 kmp_affinity_mask_target_t *mask
955)
956{
957}
958
959void kmp_destroy_affinity_mask_target(
960 TARGET_TYPE target_type,
961 int target_number,
962 kmp_affinity_mask_target_t *mask
963)
964{
965}
966
967int kmp_set_affinity_target(
968 TARGET_TYPE target_type,
969 int target_number,
970 kmp_affinity_mask_target_t *mask
971)
972{
973 return 0;
974}
975
976int kmp_get_affinity_target(
977 TARGET_TYPE target_type,
978 int target_number,
979 kmp_affinity_mask_target_t *mask
980)
981{
982 return 0;
983}
984
985int kmp_get_affinity_max_proc_target(
986 TARGET_TYPE target_type,
987 int target_number
988)
989{
990 return 0;
991}
992
993int kmp_set_affinity_mask_proc_target(
994 TARGET_TYPE target_type,
995 int target_number,
996 int proc,
997 kmp_affinity_mask_target_t *mask
998)
999{
1000 return 0;
1001}
1002
1003int kmp_unset_affinity_mask_proc_target(
1004 TARGET_TYPE target_type,
1005 int target_number,
1006 int proc,
1007 kmp_affinity_mask_target_t *mask
1008)
1009{
1010 return 0;
1011}
1012
1013int kmp_get_affinity_mask_proc_target(
1014 TARGET_TYPE target_type,
1015 int target_number,
1016 int proc,
1017 kmp_affinity_mask_target_t *mask
1018)
1019{
1020 return 0;
1021}