1*fe6060f1SDimitry Andric /* 2*fe6060f1SDimitry Andric * ompd-specific.h -- OpenMP debug support 3*fe6060f1SDimitry Andric */ 4*fe6060f1SDimitry Andric 5*fe6060f1SDimitry Andric //===----------------------------------------------------------------------===// 6*fe6060f1SDimitry Andric // 7*fe6060f1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 8*fe6060f1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 9*fe6060f1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 10*fe6060f1SDimitry Andric // 11*fe6060f1SDimitry Andric //===----------------------------------------------------------------------===// 12*fe6060f1SDimitry Andric 13*fe6060f1SDimitry Andric #include "kmp.h" 14*fe6060f1SDimitry Andric #include "omp-tools.h" 15*fe6060f1SDimitry Andric #include <stdint.h> 16*fe6060f1SDimitry Andric 17*fe6060f1SDimitry Andric #ifndef __OMPD_SPECIFIC_H__ 18*fe6060f1SDimitry Andric #define __OMPD_SPECIFIC_H__ 19*fe6060f1SDimitry Andric 20*fe6060f1SDimitry Andric #if OMPD_SUPPORT 21*fe6060f1SDimitry Andric 22*fe6060f1SDimitry Andric void ompd_init(); 23*fe6060f1SDimitry Andric 24*fe6060f1SDimitry Andric #ifdef __cplusplus 25*fe6060f1SDimitry Andric extern "C" { 26*fe6060f1SDimitry Andric #endif 27*fe6060f1SDimitry Andric extern char *ompd_env_block; 28*fe6060f1SDimitry Andric extern ompd_size_t ompd_env_block_size; 29*fe6060f1SDimitry Andric extern char *__kmp_tool_verbose_init; 30*fe6060f1SDimitry Andric #ifdef __cplusplus 31*fe6060f1SDimitry Andric } /* extern "C" */ 32*fe6060f1SDimitry Andric #endif 33*fe6060f1SDimitry Andric 34*fe6060f1SDimitry Andric extern uint64_t ompd_state; 35*fe6060f1SDimitry Andric #define OMPD_ENABLE_BP 0x1 36*fe6060f1SDimitry Andric 37*fe6060f1SDimitry Andric #define OMPD_FOREACH_ACCESS(OMPD_ACCESS) \ 38*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_info_t, th_current_task) \ 39*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_info_t, th_team) \ 40*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_info_t, th_info) \ 41*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_info_t, ompt_thread_info) \ 42*fe6060f1SDimitry Andric \ 43*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_root_t, r_in_parallel) \ 44*fe6060f1SDimitry Andric \ 45*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, ompt_team_info) \ 46*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, ompt_serialized_team_info) \ 47*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_active_level) \ 48*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_implicit_task_taskdata) \ 49*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_master_tid) \ 50*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_nproc) \ 51*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_level) \ 52*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_parent) \ 53*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_pkfn) \ 54*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_base_team_t, t_threads) \ 55*fe6060f1SDimitry Andric \ 56*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_desc_t, ds) \ 57*fe6060f1SDimitry Andric \ 58*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_desc_base_t, ds_thread) \ 59*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_desc_base_t, ds_tid) \ 60*fe6060f1SDimitry Andric \ 61*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_info_t, th) \ 62*fe6060f1SDimitry Andric \ 63*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_r_sched_t, r_sched_type) \ 64*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_r_sched_t, chunk) \ 65*fe6060f1SDimitry Andric \ 66*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_root_t, r) \ 67*fe6060f1SDimitry Andric \ 68*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, dynamic) \ 69*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, max_active_levels) \ 70*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, nproc) \ 71*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, proc_bind) \ 72*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, sched) \ 73*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, default_device) \ 74*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_internal_control_t, thread_limit) \ 75*fe6060f1SDimitry Andric \ 76*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_taskdata_t, ompt_task_info) \ 77*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_taskdata_t, td_flags) \ 78*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_taskdata_t, td_icvs) \ 79*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_taskdata_t, td_parent) \ 80*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_taskdata_t, td_team) \ 81*fe6060f1SDimitry Andric \ 82*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_task_t, routine) \ 83*fe6060f1SDimitry Andric \ 84*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_team_p, t) \ 85*fe6060f1SDimitry Andric \ 86*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_nested_nthreads_t, used) \ 87*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_nested_nthreads_t, nth) \ 88*fe6060f1SDimitry Andric \ 89*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_nested_proc_bind_t, used) \ 90*fe6060f1SDimitry Andric OMPD_ACCESS(kmp_nested_proc_bind_t, bind_types) \ 91*fe6060f1SDimitry Andric \ 92*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_task_info_t, frame) \ 93*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_task_info_t, scheduling_parent) \ 94*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_task_info_t, task_data) \ 95*fe6060f1SDimitry Andric \ 96*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_team_info_t, parallel_data) \ 97*fe6060f1SDimitry Andric \ 98*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_thread_info_t, state) \ 99*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_thread_info_t, wait_id) \ 100*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_thread_info_t, thread_data) \ 101*fe6060f1SDimitry Andric \ 102*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_data_t, value) \ 103*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_data_t, ptr) \ 104*fe6060f1SDimitry Andric \ 105*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_frame_t, exit_frame) \ 106*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_frame_t, enter_frame) \ 107*fe6060f1SDimitry Andric \ 108*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_lw_taskteam_t, parent) \ 109*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_lw_taskteam_t, ompt_team_info) \ 110*fe6060f1SDimitry Andric OMPD_ACCESS(ompt_lw_taskteam_t, ompt_task_info) 111*fe6060f1SDimitry Andric 112*fe6060f1SDimitry Andric #define OMPD_FOREACH_BITFIELD(OMPD_BITFIELD) \ 113*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, final) \ 114*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, tiedness) \ 115*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, tasktype) \ 116*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, task_serial) \ 117*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, tasking_ser) \ 118*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, team_serial) \ 119*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, started) \ 120*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, executing) \ 121*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, complete) \ 122*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, freed) \ 123*fe6060f1SDimitry Andric OMPD_BITFIELD(kmp_tasking_flags_t, native) 124*fe6060f1SDimitry Andric 125*fe6060f1SDimitry Andric #define OMPD_FOREACH_SIZEOF(OMPD_SIZEOF) \ 126*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_info_t) \ 127*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_taskdata_t) \ 128*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_task_t) \ 129*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_tasking_flags_t) \ 130*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_thread_t) \ 131*fe6060f1SDimitry Andric OMPD_SIZEOF(ompt_data_t) \ 132*fe6060f1SDimitry Andric OMPD_SIZEOF(ompt_id_t) \ 133*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_avail_proc) \ 134*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_max_nth) \ 135*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_stksize) \ 136*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_omp_cancellation) \ 137*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_max_task_priority) \ 138*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_display_affinity) \ 139*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_affinity_format) \ 140*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_tool_libraries) \ 141*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_tool_verbose_init) \ 142*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_tool) \ 143*fe6060f1SDimitry Andric OMPD_SIZEOF(ompd_state) \ 144*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_nested_nthreads_t) \ 145*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_nested_nth) \ 146*fe6060f1SDimitry Andric OMPD_SIZEOF(kmp_nested_proc_bind_t) \ 147*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_nested_proc_bind) \ 148*fe6060f1SDimitry Andric OMPD_SIZEOF(int) \ 149*fe6060f1SDimitry Andric OMPD_SIZEOF(char) \ 150*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_gtid) \ 151*fe6060f1SDimitry Andric OMPD_SIZEOF(__kmp_nth) 152*fe6060f1SDimitry Andric 153*fe6060f1SDimitry Andric #endif /* OMPD_SUPPORT */ 154*fe6060f1SDimitry Andric #endif 155