xref: /freebsd-src/contrib/llvm-project/openmp/runtime/src/ompd-specific.h (revision fe6060f10f634930ff71b7c50291ddc610da2475)
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