1/*
2 * omp-debug.h
3 *
4 * Created on: Jan 14, 2015
5 * Author: Ignacio Laguna
6 * Joachim Protze
7 * Contact: ilaguna@llnl.gov
8 * protze@llnl.gov
9 */
10//===----------------------------------------------------------------------===//
11//
12// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
13// See https://llvm.org/LICENSE.txt for license information.
14// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
15//
16//===----------------------------------------------------------------------===//
17
18#ifndef SRC_OMP_DEBUG_H_
19#define SRC_OMP_DEBUG_H_
20
21#define OMPD_VERSION 201811
22
23#ifdef __cplusplus
24
25#include <cstdlib>
26
27extern "C" {
28#endif
29
30#define OMPD_IMPLEMENTS_OPENMP 5
31#define OMPD_IMPLEMENTS_OPENMP_SUBVERSION 0
32#define OMPD_TR_VERSION 6
33#define OMPD_TR_SUBVERSION 2
34#define OMPD_DLL_VERSION \
35 (OMPD_IMPLEMENTS_OPENMP << 24) + (OMPD_IMPLEMENTS_OPENMP_SUBVERSION << 16) + \
36 (OMPD_TR_VERSION << 8) + OMPD_TR_SUBVERSION
37
38#define STR_HELPER(x) #x
39#define STR(x) STR_HELPER(x)
40
41#include "omp-tools.h"
42#include "ompd-types.h"
43
44#ifdef __cplusplus
45}
46#endif
47/******************************************************************************
48 * General helper functions
49 ******************************************************************************/
50ompd_rc_t initTypeSizes(ompd_address_space_context_t *context);
51
52// NOLINTNEXTLINE "Used in below Macro:OMPD_CALLBACK."
53static const ompd_callbacks_t *callbacks = nullptr;
54
55// Invoke callback function and return if it fails
56#define OMPD_CALLBACK(fn, ...) \
57 do { \
58 ompd_rc_t _rc = callbacks->fn(__VA_ARGS__); \
59 if (_rc != ompd_rc_ok) \
60 return _rc; \
61 } while (0)
62
63// Read the memory contents located at the given symbol
64#define OMPD_GET_VALUE(context, th_context, name, size, buf) \
65 do { \
66 ompd_address_t _addr; \
67 OMPD_CALLBACK(symbol_addr_lookup, context, th_context, name, &_addr, \
68 NULL); \
69 OMPD_CALLBACK(read_memory, context, th_context, &_addr, size, buf); \
70 } while (0)
71
72typedef struct _ompd_aspace_cont ompd_address_space_context_t;
73
74typedef struct _ompd_aspace_handle {
75 ompd_address_space_context_t *context;
76 ompd_device_t kind;
77 uint64_t id;
78} ompd_address_space_handle_t;
79
80typedef struct _ompd_thread_handle {
81 ompd_address_space_handle_t *ah;
82 ompd_thread_context_t *thread_context;
83 ompd_address_t th; /* target handle */
84} ompd_thread_handle_t;
85
86typedef struct _ompd_parallel_handle {
87 ompd_address_space_handle_t *ah;
88 ompd_address_t th; /* target handle */
89 ompd_address_t lwt; /* lwt handle */
90} ompd_parallel_handle_t;
91
92typedef struct _ompd_task_handle {
93 ompd_address_space_handle_t *ah;
94 ompd_address_t th; /* target handle */
95 ompd_address_t lwt; /* lwt handle */
96 _ompd_task_handle() {
97 ah = NULL;
98 th.segment = OMPD_SEGMENT_UNSPECIFIED;
99 lwt.segment = OMPD_SEGMENT_UNSPECIFIED;
100 th.address = 0;
101 lwt.address = 0;
102 }
103} ompd_task_handle_t;
104
105void __ompd_init_icvs(const ompd_callbacks_t *table);
106void __ompd_init_states(const ompd_callbacks_t *table);
107
108#endif /* SRC_OMP_DEBUG_H_ */
109

source code of openmp/libompd/src/omp-debug.h