| /* | |
| * omp-debug.h | |
| * | |
| * Created on: Jan 14, 2015 | |
| * Author: Ignacio Laguna | |
| * Joachim Protze | |
| * Contact: ilaguna@llnl.gov | |
| * protze@llnl.gov | |
| */ | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef SRC_OMP_DEBUG_H_ | |
| #define SRC_OMP_DEBUG_H_ | |
| #define OMPD_VERSION 201811 | |
| #ifdef __cplusplus | |
| #include <cstdlib> | |
| extern "C" { | |
| #endif | |
| #define OMPD_IMPLEMENTS_OPENMP 5 | |
| #define OMPD_IMPLEMENTS_OPENMP_SUBVERSION 0 | |
| #define OMPD_TR_VERSION 6 | |
| #define OMPD_TR_SUBVERSION 2 | |
| #define OMPD_DLL_VERSION \ | |
| (OMPD_IMPLEMENTS_OPENMP << 24) + (OMPD_IMPLEMENTS_OPENMP_SUBVERSION << 16) + \ | |
| (OMPD_TR_VERSION << 8) + OMPD_TR_SUBVERSION | |
| #define STR_HELPER(x) #x | |
| #define STR(x) STR_HELPER(x) | |
| #include "omp-tools.h" | |
| #include "ompd-types.h" | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| /****************************************************************************** | |
| * General helper functions | |
| ******************************************************************************/ | |
| ompd_rc_t initTypeSizes(ompd_address_space_context_t *context); | |
| // NOLINTNEXTLINE "Used in below Macro:OMPD_CALLBACK." | |
| static const ompd_callbacks_t *callbacks = nullptr; | |
| // Invoke callback function and return if it fails | |
| #define OMPD_CALLBACK(fn, ...) \ | |
| do { \ | |
| ompd_rc_t _rc = callbacks->fn(__VA_ARGS__); \ | |
| if (_rc != ompd_rc_ok) \ | |
| return _rc; \ | |
| } while (0) | |
| // Read the memory contents located at the given symbol | |
| #define OMPD_GET_VALUE(context, th_context, name, size, buf) \ | |
| do { \ | |
| ompd_address_t _addr; \ | |
| OMPD_CALLBACK(symbol_addr_lookup, context, th_context, name, &_addr, \ | |
| NULL); \ | |
| OMPD_CALLBACK(read_memory, context, th_context, &_addr, size, buf); \ | |
| } while (0) | |
| typedef struct _ompd_aspace_cont ompd_address_space_context_t; | |
| typedef struct _ompd_aspace_handle { | |
| ompd_address_space_context_t *context; | |
| ompd_device_t kind; | |
| uint64_t id; | |
| } ompd_address_space_handle_t; | |
| typedef struct _ompd_thread_handle { | |
| ompd_address_space_handle_t *ah; | |
| ompd_thread_context_t *thread_context; | |
| ompd_address_t th; /* target handle */ | |
| } ompd_thread_handle_t; | |
| typedef struct _ompd_parallel_handle { | |
| ompd_address_space_handle_t *ah; | |
| ompd_address_t th; /* target handle */ | |
| ompd_address_t lwt; /* lwt handle */ | |
| } ompd_parallel_handle_t; | |
| typedef struct _ompd_task_handle { | |
| ompd_address_space_handle_t *ah; | |
| ompd_address_t th; /* target handle */ | |
| ompd_address_t lwt; /* lwt handle */ | |
| _ompd_task_handle() { | |
| ah = NULL; | |
| th.segment = OMPD_SEGMENT_UNSPECIFIED; | |
| lwt.segment = OMPD_SEGMENT_UNSPECIFIED; | |
| th.address = 0; | |
| lwt.address = 0; | |
| } | |
| } ompd_task_handle_t; | |
| void __ompd_init_icvs(const ompd_callbacks_t *table); | |
| void __ompd_init_states(const ompd_callbacks_t *table); | |
| #endif /* SRC_OMP_DEBUG_H_ */ |