/* * 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 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_ */