/* * ompt-specific.cpp -- OMPT internal functions */ //===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// //****************************************************************************** // include files //****************************************************************************** #include "kmp.h" #include "ompt-specific.h" #if KMP_OS_UNIX #include <dlfcn.h> #endif #if KMP_OS_WINDOWS #define THREAD_LOCAL … #else #define THREAD_LOCAL … #endif #define OMPT_WEAK_ATTRIBUTE … //****************************************************************************** // macros //****************************************************************************** #define LWT_FROM_TEAM(team) … #define OMPT_THREAD_ID_BITS … //****************************************************************************** // private operations //****************************************************************************** //---------------------------------------------------------- // traverse the team and task hierarchy // note: __ompt_get_teaminfo and __ompt_get_task_info_object // traverse the hierarchy similarly and need to be // kept consistent //---------------------------------------------------------- ompt_team_info_t *__ompt_get_teaminfo(int depth, int *size) { … } ompt_task_info_t *__ompt_get_task_info_object(int depth) { … } ompt_task_info_t *__ompt_get_scheduling_taskinfo(int depth) { … } //****************************************************************************** // interface operations //****************************************************************************** //---------------------------------------------------------- // initialization support //---------------------------------------------------------- void __ompt_force_initialization() { … } //---------------------------------------------------------- // thread support //---------------------------------------------------------- ompt_data_t *__ompt_get_thread_data_internal() { … } //---------------------------------------------------------- // state support //---------------------------------------------------------- void __ompt_thread_assign_wait_id(void *variable) { … } int __ompt_get_state_internal(ompt_wait_id_t *omp_wait_id) { … } //---------------------------------------------------------- // parallel region support //---------------------------------------------------------- int __ompt_get_parallel_info_internal(int ancestor_level, ompt_data_t **parallel_data, int *team_size) { … } //---------------------------------------------------------- // lightweight task team support //---------------------------------------------------------- void __ompt_lw_taskteam_init(ompt_lw_taskteam_t *lwt, kmp_info_t *thr, int gtid, ompt_data_t *ompt_pid, void *codeptr) { … } void __ompt_lw_taskteam_link(ompt_lw_taskteam_t *lwt, kmp_info_t *thr, int on_heap, bool always) { … } void __ompt_lw_taskteam_unlink(kmp_info_t *thr) { … } //---------------------------------------------------------- // task support //---------------------------------------------------------- ompt_data_t *__ompt_get_task_data() { … } ompt_data_t *__ompt_get_target_task_data() { … } int __ompt_get_task_info_internal(int ancestor_level, int *type, ompt_data_t **task_data, ompt_frame_t **task_frame, ompt_data_t **parallel_data, int *thread_num) { … } int __ompt_get_task_memory_internal(void **addr, size_t *size, int blocknum) { … } //---------------------------------------------------------- // team support //---------------------------------------------------------- void __ompt_team_assign_id(kmp_team_t *team, ompt_data_t ompt_pid) { … } //---------------------------------------------------------- // misc //---------------------------------------------------------- static uint64_t __ompt_get_unique_id_internal() { … } ompt_sync_region_t __ompt_get_barrier_kind(enum barrier_type bt, kmp_info_t *thr) { … }