diff options
Diffstat (limited to 'openmp/libompd/src/omp-debug.h')
-rw-r--r-- | openmp/libompd/src/omp-debug.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/openmp/libompd/src/omp-debug.h b/openmp/libompd/src/omp-debug.h new file mode 100644 index 0000000..68e50d5 --- /dev/null +++ b/openmp/libompd/src/omp-debug.h @@ -0,0 +1,108 @@ +/* + * 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_ */ |