1345235Sdim// $FreeBSD: stable/11/lib/libomp/omp-tools.h 360658 2020-05-05 12:59:04Z dim $ 2345235Sdim/* 3360658Sdim * include/omp-tools.h.var 4345235Sdim */ 5345235Sdim 6345235Sdim//===----------------------------------------------------------------------===// 7345235Sdim// 8360658Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 9360658Sdim// See https://llvm.org/LICENSE.txt for license information. 10360658Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 11345235Sdim// 12345235Sdim//===----------------------------------------------------------------------===// 13345235Sdim 14345235Sdim#ifndef __OMPT__ 15345235Sdim#define __OMPT__ 16345235Sdim 17345235Sdim/***************************************************************************** 18345235Sdim * system include files 19345235Sdim *****************************************************************************/ 20345235Sdim 21345235Sdim#include <stdint.h> 22345235Sdim#include <stddef.h> 23345235Sdim 24345235Sdim/***************************************************************************** 25345235Sdim * iteration macros 26345235Sdim *****************************************************************************/ 27345235Sdim 28345235Sdim#define FOREACH_OMPT_INQUIRY_FN(macro) \ 29345235Sdim macro (ompt_enumerate_states) \ 30345235Sdim macro (ompt_enumerate_mutex_impls) \ 31345235Sdim \ 32345235Sdim macro (ompt_set_callback) \ 33345235Sdim macro (ompt_get_callback) \ 34345235Sdim \ 35345235Sdim macro (ompt_get_state) \ 36345235Sdim \ 37345235Sdim macro (ompt_get_parallel_info) \ 38345235Sdim macro (ompt_get_task_info) \ 39345235Sdim macro (ompt_get_task_memory) \ 40345235Sdim macro (ompt_get_thread_data) \ 41345235Sdim macro (ompt_get_unique_id) \ 42345235Sdim macro (ompt_finalize_tool) \ 43345235Sdim \ 44345235Sdim macro(ompt_get_num_procs) \ 45345235Sdim macro(ompt_get_num_places) \ 46345235Sdim macro(ompt_get_place_proc_ids) \ 47345235Sdim macro(ompt_get_place_num) \ 48345235Sdim macro(ompt_get_partition_place_nums) \ 49345235Sdim macro(ompt_get_proc_id) \ 50345235Sdim \ 51345235Sdim macro(ompt_get_target_info) \ 52345235Sdim macro(ompt_get_num_devices) 53345235Sdim 54345235Sdim#define FOREACH_OMPT_STATE(macro) \ 55345235Sdim \ 56345235Sdim /* first available state */ \ 57345235Sdim macro (ompt_state_undefined, 0x102) /* undefined thread state */ \ 58345235Sdim \ 59345235Sdim /* work states (0..15) */ \ 60345235Sdim macro (ompt_state_work_serial, 0x000) /* working outside parallel */ \ 61345235Sdim macro (ompt_state_work_parallel, 0x001) /* working within parallel */ \ 62345235Sdim macro (ompt_state_work_reduction, 0x002) /* performing a reduction */ \ 63345235Sdim \ 64345235Sdim /* barrier wait states (16..31) */ \ 65345235Sdim macro (ompt_state_wait_barrier, 0x010) /* waiting at a barrier */ \ 66345235Sdim macro (ompt_state_wait_barrier_implicit_parallel, 0x011) \ 67345235Sdim /* implicit barrier at the end of parallel region */\ 68345235Sdim macro (ompt_state_wait_barrier_implicit_workshare, 0x012) \ 69345235Sdim /* implicit barrier at the end of worksharing */ \ 70345235Sdim macro (ompt_state_wait_barrier_implicit, 0x013) /* implicit barrier */ \ 71345235Sdim macro (ompt_state_wait_barrier_explicit, 0x014) /* explicit barrier */ \ 72345235Sdim \ 73345235Sdim /* task wait states (32..63) */ \ 74345235Sdim macro (ompt_state_wait_taskwait, 0x020) /* waiting at a taskwait */ \ 75345235Sdim macro (ompt_state_wait_taskgroup, 0x021) /* waiting at a taskgroup */ \ 76345235Sdim \ 77345235Sdim /* mutex wait states (64..127) */ \ 78345235Sdim macro (ompt_state_wait_mutex, 0x040) \ 79345235Sdim macro (ompt_state_wait_lock, 0x041) /* waiting for lock */ \ 80345235Sdim macro (ompt_state_wait_critical, 0x042) /* waiting for critical */ \ 81345235Sdim macro (ompt_state_wait_atomic, 0x043) /* waiting for atomic */ \ 82345235Sdim macro (ompt_state_wait_ordered, 0x044) /* waiting for ordered */ \ 83345235Sdim \ 84345235Sdim /* target wait states (128..255) */ \ 85345235Sdim macro (ompt_state_wait_target, 0x080) /* waiting for target region */ \ 86345235Sdim macro (ompt_state_wait_target_map, 0x081) /* waiting for target data mapping operation */ \ 87345235Sdim macro (ompt_state_wait_target_update, 0x082) /* waiting for target update operation */ \ 88345235Sdim \ 89345235Sdim /* misc (256..511) */ \ 90345235Sdim macro (ompt_state_idle, 0x100) /* waiting for work */ \ 91345235Sdim macro (ompt_state_overhead, 0x101) /* overhead excluding wait states */ \ 92345235Sdim \ 93345235Sdim /* implementation-specific states (512..) */ 94345235Sdim 95345235Sdim 96345235Sdim#define FOREACH_KMP_MUTEX_IMPL(macro) \ 97345235Sdim macro (kmp_mutex_impl_none, 0) /* unknown implementation */ \ 98345235Sdim macro (kmp_mutex_impl_spin, 1) /* based on spin */ \ 99345235Sdim macro (kmp_mutex_impl_queuing, 2) /* based on some fair policy */ \ 100345235Sdim macro (kmp_mutex_impl_speculative, 3) /* based on HW-supported speculation */ 101345235Sdim 102345235Sdim#define FOREACH_OMPT_EVENT(macro) \ 103345235Sdim \ 104345235Sdim /*--- Mandatory Events ---*/ \ 105345235Sdim macro (ompt_callback_thread_begin, ompt_callback_thread_begin_t, 1) /* thread begin */ \ 106345235Sdim macro (ompt_callback_thread_end, ompt_callback_thread_end_t, 2) /* thread end */ \ 107345235Sdim \ 108345235Sdim macro (ompt_callback_parallel_begin, ompt_callback_parallel_begin_t, 3) /* parallel begin */ \ 109345235Sdim macro (ompt_callback_parallel_end, ompt_callback_parallel_end_t, 4) /* parallel end */ \ 110345235Sdim \ 111345235Sdim macro (ompt_callback_task_create, ompt_callback_task_create_t, 5) /* task begin */ \ 112345235Sdim macro (ompt_callback_task_schedule, ompt_callback_task_schedule_t, 6) /* task schedule */ \ 113345235Sdim macro (ompt_callback_implicit_task, ompt_callback_implicit_task_t, 7) /* implicit task */ \ 114345235Sdim \ 115345235Sdim macro (ompt_callback_target, ompt_callback_target_t, 8) /* target */ \ 116345235Sdim macro (ompt_callback_target_data_op, ompt_callback_target_data_op_t, 9) /* target data op */ \ 117345235Sdim macro (ompt_callback_target_submit, ompt_callback_target_submit_t, 10) /* target submit */ \ 118345235Sdim \ 119345235Sdim macro (ompt_callback_control_tool, ompt_callback_control_tool_t, 11) /* control tool */ \ 120345235Sdim \ 121345235Sdim macro (ompt_callback_device_initialize, ompt_callback_device_initialize_t, 12) /* device initialize */ \ 122345235Sdim macro (ompt_callback_device_finalize, ompt_callback_device_finalize_t, 13) /* device finalize */ \ 123345235Sdim \ 124345235Sdim macro (ompt_callback_device_load, ompt_callback_device_load_t, 14) /* device load */ \ 125345235Sdim macro (ompt_callback_device_unload, ompt_callback_device_unload_t, 15) /* device unload */ \ 126345235Sdim \ 127345235Sdim /* Optional Events */ \ 128345235Sdim macro (ompt_callback_sync_region_wait, ompt_callback_sync_region_t, 16) /* sync region wait begin or end */ \ 129345235Sdim \ 130345235Sdim macro (ompt_callback_mutex_released, ompt_callback_mutex_t, 17) /* mutex released */ \ 131345235Sdim \ 132345235Sdim macro (ompt_callback_dependences, ompt_callback_dependences_t, 18) /* report task dependences */ \ 133345235Sdim macro (ompt_callback_task_dependence, ompt_callback_task_dependence_t, 19) /* report task dependence */ \ 134345235Sdim \ 135345235Sdim macro (ompt_callback_work, ompt_callback_work_t, 20) /* task at work begin or end */ \ 136345235Sdim \ 137345235Sdim macro (ompt_callback_master, ompt_callback_master_t, 21) /* task at master begin or end */ \ 138345235Sdim \ 139345235Sdim macro (ompt_callback_target_map, ompt_callback_target_map_t, 22) /* target map */ \ 140345235Sdim \ 141345235Sdim macro (ompt_callback_sync_region, ompt_callback_sync_region_t, 23) /* sync region begin or end */ \ 142345235Sdim \ 143345235Sdim macro (ompt_callback_lock_init, ompt_callback_mutex_acquire_t, 24) /* lock init */ \ 144345235Sdim macro (ompt_callback_lock_destroy, ompt_callback_mutex_t, 25) /* lock destroy */ \ 145345235Sdim \ 146345235Sdim macro (ompt_callback_mutex_acquire, ompt_callback_mutex_acquire_t, 26) /* mutex acquire */ \ 147345235Sdim macro (ompt_callback_mutex_acquired, ompt_callback_mutex_t, 27) /* mutex acquired */ \ 148345235Sdim \ 149345235Sdim macro (ompt_callback_nest_lock, ompt_callback_nest_lock_t, 28) /* nest lock */ \ 150345235Sdim \ 151345235Sdim macro (ompt_callback_flush, ompt_callback_flush_t, 29) /* after executing flush */ \ 152345235Sdim \ 153345235Sdim macro (ompt_callback_cancel, ompt_callback_cancel_t, 30) /* cancel innermost binding region */ \ 154345235Sdim \ 155345235Sdim macro (ompt_callback_reduction, ompt_callback_sync_region_t, 31) /* reduction */ \ 156345235Sdim \ 157345235Sdim macro (ompt_callback_dispatch, ompt_callback_dispatch_t, 32) /* dispatch of work */ 158345235Sdim 159345235Sdim/***************************************************************************** 160345235Sdim * implementation specific types 161345235Sdim *****************************************************************************/ 162345235Sdim 163345235Sdimtypedef enum kmp_mutex_impl_t { 164345235Sdim#define kmp_mutex_impl_macro(impl, code) impl = code, 165345235Sdim FOREACH_KMP_MUTEX_IMPL(kmp_mutex_impl_macro) 166345235Sdim#undef kmp_mutex_impl_macro 167345235Sdim} kmp_mutex_impl_t; 168345235Sdim 169345235Sdim/***************************************************************************** 170345235Sdim * definitions generated from spec 171345235Sdim *****************************************************************************/ 172345235Sdim 173345235Sdimtypedef enum ompt_callbacks_t { 174345235Sdim ompt_callback_thread_begin = 1, 175345235Sdim ompt_callback_thread_end = 2, 176345235Sdim ompt_callback_parallel_begin = 3, 177345235Sdim ompt_callback_parallel_end = 4, 178345235Sdim ompt_callback_task_create = 5, 179345235Sdim ompt_callback_task_schedule = 6, 180345235Sdim ompt_callback_implicit_task = 7, 181345235Sdim ompt_callback_target = 8, 182345235Sdim ompt_callback_target_data_op = 9, 183345235Sdim ompt_callback_target_submit = 10, 184345235Sdim ompt_callback_control_tool = 11, 185345235Sdim ompt_callback_device_initialize = 12, 186345235Sdim ompt_callback_device_finalize = 13, 187345235Sdim ompt_callback_device_load = 14, 188345235Sdim ompt_callback_device_unload = 15, 189345235Sdim ompt_callback_sync_region_wait = 16, 190345235Sdim ompt_callback_mutex_released = 17, 191345235Sdim ompt_callback_dependences = 18, 192345235Sdim ompt_callback_task_dependence = 19, 193345235Sdim ompt_callback_work = 20, 194345235Sdim ompt_callback_master = 21, 195345235Sdim ompt_callback_target_map = 22, 196345235Sdim ompt_callback_sync_region = 23, 197345235Sdim ompt_callback_lock_init = 24, 198345235Sdim ompt_callback_lock_destroy = 25, 199345235Sdim ompt_callback_mutex_acquire = 26, 200345235Sdim ompt_callback_mutex_acquired = 27, 201345235Sdim ompt_callback_nest_lock = 28, 202345235Sdim ompt_callback_flush = 29, 203345235Sdim ompt_callback_cancel = 30, 204345235Sdim ompt_callback_reduction = 31, 205345235Sdim ompt_callback_dispatch = 32 206345235Sdim} ompt_callbacks_t; 207345235Sdim 208345235Sdimtypedef enum ompt_record_t { 209345235Sdim ompt_record_ompt = 1, 210345235Sdim ompt_record_native = 2, 211345235Sdim ompt_record_invalid = 3 212345235Sdim} ompt_record_t; 213345235Sdim 214345235Sdimtypedef enum ompt_record_native_t { 215345235Sdim ompt_record_native_info = 1, 216345235Sdim ompt_record_native_event = 2 217345235Sdim} ompt_record_native_t; 218345235Sdim 219345235Sdimtypedef enum ompt_set_result_t { 220345235Sdim ompt_set_error = 0, 221345235Sdim ompt_set_never = 1, 222345235Sdim ompt_set_impossible = 2, 223345235Sdim ompt_set_sometimes = 3, 224345235Sdim ompt_set_sometimes_paired = 4, 225345235Sdim ompt_set_always = 5 226345235Sdim} ompt_set_result_t; 227345235Sdim 228345235Sdimtypedef uint64_t ompt_id_t; 229345235Sdim 230345235Sdimtypedef uint64_t ompt_device_time_t; 231345235Sdim 232345235Sdimtypedef uint64_t ompt_buffer_cursor_t; 233345235Sdim 234345235Sdimtypedef enum ompt_thread_t { 235345235Sdim ompt_thread_initial = 1, 236345235Sdim ompt_thread_worker = 2, 237345235Sdim ompt_thread_other = 3, 238345235Sdim ompt_thread_unknown = 4 239345235Sdim} ompt_thread_t; 240345235Sdim 241345235Sdimtypedef enum ompt_scope_endpoint_t { 242345235Sdim ompt_scope_begin = 1, 243345235Sdim ompt_scope_end = 2 244345235Sdim} ompt_scope_endpoint_t; 245345235Sdim 246345235Sdimtypedef enum ompt_dispatch_t { 247345235Sdim ompt_dispatch_iteration = 1, 248345235Sdim ompt_dispatch_section = 2 249345235Sdim} ompt_dispatch_t; 250345235Sdim 251345235Sdimtypedef enum ompt_sync_region_t { 252345235Sdim ompt_sync_region_barrier = 1, 253345235Sdim ompt_sync_region_barrier_implicit = 2, 254345235Sdim ompt_sync_region_barrier_explicit = 3, 255345235Sdim ompt_sync_region_barrier_implementation = 4, 256345235Sdim ompt_sync_region_taskwait = 5, 257345235Sdim ompt_sync_region_taskgroup = 6, 258345235Sdim ompt_sync_region_reduction = 7 259345235Sdim} ompt_sync_region_t; 260345235Sdim 261345235Sdimtypedef enum ompt_target_data_op_t { 262345235Sdim ompt_target_data_alloc = 1, 263345235Sdim ompt_target_data_transfer_to_device = 2, 264345235Sdim ompt_target_data_transfer_from_device = 3, 265345235Sdim ompt_target_data_delete = 4, 266345235Sdim ompt_target_data_associate = 5, 267345235Sdim ompt_target_data_disassociate = 6 268345235Sdim} ompt_target_data_op_t; 269345235Sdim 270345235Sdimtypedef enum ompt_work_t { 271345235Sdim ompt_work_loop = 1, 272345235Sdim ompt_work_sections = 2, 273345235Sdim ompt_work_single_executor = 3, 274345235Sdim ompt_work_single_other = 4, 275345235Sdim ompt_work_workshare = 5, 276345235Sdim ompt_work_distribute = 6, 277345235Sdim ompt_work_taskloop = 7 278345235Sdim} ompt_work_t; 279345235Sdim 280345235Sdimtypedef enum ompt_mutex_t { 281345235Sdim ompt_mutex_lock = 1, 282345235Sdim ompt_mutex_test_lock = 2, 283345235Sdim ompt_mutex_nest_lock = 3, 284345235Sdim ompt_mutex_test_nest_lock = 4, 285345235Sdim ompt_mutex_critical = 5, 286345235Sdim ompt_mutex_atomic = 6, 287345235Sdim ompt_mutex_ordered = 7 288345235Sdim} ompt_mutex_t; 289345235Sdim 290345235Sdimtypedef enum ompt_native_mon_flag_t { 291345235Sdim ompt_native_data_motion_explicit = 0x01, 292345235Sdim ompt_native_data_motion_implicit = 0x02, 293345235Sdim ompt_native_kernel_invocation = 0x04, 294345235Sdim ompt_native_kernel_execution = 0x08, 295345235Sdim ompt_native_driver = 0x10, 296345235Sdim ompt_native_runtime = 0x20, 297345235Sdim ompt_native_overhead = 0x40, 298345235Sdim ompt_native_idleness = 0x80 299345235Sdim} ompt_native_mon_flag_t; 300345235Sdim 301345235Sdimtypedef enum ompt_task_flag_t { 302345235Sdim ompt_task_initial = 0x00000001, 303345235Sdim ompt_task_implicit = 0x00000002, 304345235Sdim ompt_task_explicit = 0x00000004, 305345235Sdim ompt_task_target = 0x00000008, 306345235Sdim ompt_task_undeferred = 0x08000000, 307345235Sdim ompt_task_untied = 0x10000000, 308345235Sdim ompt_task_final = 0x20000000, 309345235Sdim ompt_task_mergeable = 0x40000000, 310345235Sdim ompt_task_merged = 0x80000000 311345235Sdim} ompt_task_flag_t; 312345235Sdim 313345235Sdimtypedef enum ompt_task_status_t { 314345235Sdim ompt_task_complete = 1, 315345235Sdim ompt_task_yield = 2, 316345235Sdim ompt_task_cancel = 3, 317345235Sdim ompt_task_detach = 4, 318345235Sdim ompt_task_early_fulfill = 5, 319345235Sdim ompt_task_late_fulfill = 6, 320345235Sdim ompt_task_switch = 7 321345235Sdim} ompt_task_status_t; 322345235Sdim 323345235Sdimtypedef enum ompt_target_t { 324345235Sdim ompt_target = 1, 325345235Sdim ompt_target_enter_data = 2, 326345235Sdim ompt_target_exit_data = 3, 327345235Sdim ompt_target_update = 4 328345235Sdim} ompt_target_t; 329345235Sdim 330345235Sdimtypedef enum ompt_parallel_flag_t { 331345235Sdim ompt_parallel_invoker_program = 0x00000001, 332345235Sdim ompt_parallel_invoker_runtime = 0x00000002, 333345235Sdim ompt_parallel_league = 0x40000000, 334345235Sdim ompt_parallel_team = 0x80000000 335345235Sdim} ompt_parallel_flag_t; 336345235Sdim 337345235Sdimtypedef enum ompt_target_map_flag_t { 338345235Sdim ompt_target_map_flag_to = 0x01, 339345235Sdim ompt_target_map_flag_from = 0x02, 340345235Sdim ompt_target_map_flag_alloc = 0x04, 341345235Sdim ompt_target_map_flag_release = 0x08, 342345235Sdim ompt_target_map_flag_delete = 0x10, 343345235Sdim ompt_target_map_flag_implicit = 0x20 344345235Sdim} ompt_target_map_flag_t; 345345235Sdim 346345235Sdimtypedef enum ompt_dependence_type_t { 347345235Sdim ompt_dependence_type_in = 1, 348345235Sdim ompt_dependence_type_out = 2, 349345235Sdim ompt_dependence_type_inout = 3, 350345235Sdim ompt_dependence_type_mutexinoutset = 4, 351345235Sdim ompt_dependence_type_source = 5, 352345235Sdim ompt_dependence_type_sink = 6 353345235Sdim} ompt_dependence_type_t; 354345235Sdim 355345235Sdimtypedef enum ompt_cancel_flag_t { 356345235Sdim ompt_cancel_parallel = 0x01, 357345235Sdim ompt_cancel_sections = 0x02, 358345235Sdim ompt_cancel_loop = 0x04, 359345235Sdim ompt_cancel_taskgroup = 0x08, 360345235Sdim ompt_cancel_activated = 0x10, 361345235Sdim ompt_cancel_detected = 0x20, 362345235Sdim ompt_cancel_discarded_task = 0x40 363345235Sdim} ompt_cancel_flag_t; 364345235Sdim 365345235Sdimtypedef uint64_t ompt_hwid_t; 366345235Sdim 367345235Sdimtypedef uint64_t ompt_wait_id_t; 368345235Sdim 369345235Sdimtypedef enum ompt_frame_flag_t { 370345235Sdim ompt_frame_runtime = 0x00, 371345235Sdim ompt_frame_application = 0x01, 372345235Sdim ompt_frame_cfa = 0x10, 373345235Sdim ompt_frame_framepointer = 0x20, 374345235Sdim ompt_frame_stackaddress = 0x30 375360658Sdim} ompt_frame_flag_t; 376345235Sdim 377345235Sdimtypedef enum ompt_state_t { 378345235Sdim ompt_state_work_serial = 0x000, 379345235Sdim ompt_state_work_parallel = 0x001, 380345235Sdim ompt_state_work_reduction = 0x002, 381345235Sdim 382345235Sdim ompt_state_wait_barrier = 0x010, 383345235Sdim ompt_state_wait_barrier_implicit_parallel = 0x011, 384345235Sdim ompt_state_wait_barrier_implicit_workshare = 0x012, 385345235Sdim ompt_state_wait_barrier_implicit = 0x013, 386345235Sdim ompt_state_wait_barrier_explicit = 0x014, 387345235Sdim 388345235Sdim ompt_state_wait_taskwait = 0x020, 389345235Sdim ompt_state_wait_taskgroup = 0x021, 390345235Sdim 391345235Sdim ompt_state_wait_mutex = 0x040, 392345235Sdim ompt_state_wait_lock = 0x041, 393345235Sdim ompt_state_wait_critical = 0x042, 394345235Sdim ompt_state_wait_atomic = 0x043, 395345235Sdim ompt_state_wait_ordered = 0x044, 396345235Sdim 397345235Sdim ompt_state_wait_target = 0x080, 398345235Sdim ompt_state_wait_target_map = 0x081, 399345235Sdim ompt_state_wait_target_update = 0x082, 400345235Sdim 401345235Sdim ompt_state_idle = 0x100, 402345235Sdim ompt_state_overhead = 0x101, 403345235Sdim ompt_state_undefined = 0x102 404345235Sdim} ompt_state_t; 405345235Sdim 406345235Sdimtypedef uint64_t (*ompt_get_unique_id_t) (void); 407345235Sdim 408345235Sdimtypedef uint64_t ompd_size_t; 409345235Sdim 410345235Sdimtypedef uint64_t ompd_wait_id_t; 411345235Sdim 412345235Sdimtypedef uint64_t ompd_addr_t; 413345235Sdimtypedef int64_t ompd_word_t; 414345235Sdimtypedef uint64_t ompd_seg_t; 415345235Sdim 416345235Sdimtypedef uint64_t ompd_device_t; 417345235Sdim 418345235Sdimtypedef uint64_t ompd_thread_id_t; 419345235Sdim 420345235Sdimtypedef enum ompd_scope_t { 421345235Sdim ompd_scope_global = 1, 422345235Sdim ompd_scope_address_space = 2, 423345235Sdim ompd_scope_thread = 3, 424345235Sdim ompd_scope_parallel = 4, 425345235Sdim ompd_scope_implicit_task = 5, 426345235Sdim ompd_scope_task = 6 427345235Sdim} ompd_scope_t; 428345235Sdim 429345235Sdimtypedef uint64_t ompd_icv_id_t; 430345235Sdim 431345235Sdimtypedef enum ompd_rc_t { 432345235Sdim ompd_rc_ok = 0, 433345235Sdim ompd_rc_unavailable = 1, 434345235Sdim ompd_rc_stale_handle = 2, 435345235Sdim ompd_rc_bad_input = 3, 436345235Sdim ompd_rc_error = 4, 437345235Sdim ompd_rc_unsupported = 5, 438345235Sdim ompd_rc_needs_state_tracking = 6, 439345235Sdim ompd_rc_incompatible = 7, 440345235Sdim ompd_rc_device_read_error = 8, 441345235Sdim ompd_rc_device_write_error = 9, 442345235Sdim ompd_rc_nomem = 10, 443345235Sdim} ompd_rc_t; 444345235Sdim 445345235Sdimtypedef void (*ompt_interface_fn_t) (void); 446345235Sdim 447345235Sdimtypedef ompt_interface_fn_t (*ompt_function_lookup_t) ( 448345235Sdim const char *interface_function_name 449345235Sdim); 450345235Sdim 451345235Sdimtypedef union ompt_data_t { 452345235Sdim uint64_t value; 453345235Sdim void *ptr; 454345235Sdim} ompt_data_t; 455345235Sdim 456345235Sdimtypedef struct ompt_frame_t { 457345235Sdim ompt_data_t exit_frame; 458345235Sdim ompt_data_t enter_frame; 459345235Sdim int exit_frame_flags; 460345235Sdim int enter_frame_flags; 461345235Sdim} ompt_frame_t; 462345235Sdim 463345235Sdimtypedef void (*ompt_callback_t) (void); 464345235Sdim 465345235Sdimtypedef void ompt_device_t; 466345235Sdim 467345235Sdimtypedef void ompt_buffer_t; 468345235Sdim 469345235Sdimtypedef void (*ompt_callback_buffer_request_t) ( 470345235Sdim int device_num, 471345235Sdim ompt_buffer_t **buffer, 472345235Sdim size_t *bytes 473345235Sdim); 474345235Sdim 475345235Sdimtypedef void (*ompt_callback_buffer_complete_t) ( 476345235Sdim int device_num, 477345235Sdim ompt_buffer_t *buffer, 478345235Sdim size_t bytes, 479345235Sdim ompt_buffer_cursor_t begin, 480345235Sdim int buffer_owned 481345235Sdim); 482345235Sdim 483345235Sdimtypedef void (*ompt_finalize_t) ( 484345235Sdim ompt_data_t *tool_data 485345235Sdim); 486345235Sdim 487345235Sdimtypedef int (*ompt_initialize_t) ( 488345235Sdim ompt_function_lookup_t lookup, 489345235Sdim int initial_device_num, 490345235Sdim ompt_data_t *tool_data 491345235Sdim); 492345235Sdim 493345235Sdimtypedef struct ompt_start_tool_result_t { 494345235Sdim ompt_initialize_t initialize; 495345235Sdim ompt_finalize_t finalize; 496345235Sdim ompt_data_t tool_data; 497345235Sdim} ompt_start_tool_result_t; 498345235Sdim 499345235Sdimtypedef struct ompt_record_abstract_t { 500345235Sdim ompt_record_native_t rclass; 501345235Sdim const char *type; 502345235Sdim ompt_device_time_t start_time; 503345235Sdim ompt_device_time_t end_time; 504345235Sdim ompt_hwid_t hwid; 505345235Sdim} ompt_record_abstract_t; 506345235Sdim 507345235Sdimtypedef struct ompt_dependence_t { 508345235Sdim ompt_data_t variable; 509345235Sdim ompt_dependence_type_t dependence_type; 510345235Sdim} ompt_dependence_t; 511345235Sdim 512345235Sdimtypedef int (*ompt_enumerate_states_t) ( 513345235Sdim int current_state, 514345235Sdim int *next_state, 515345235Sdim const char **next_state_name 516345235Sdim); 517345235Sdim 518345235Sdimtypedef int (*ompt_enumerate_mutex_impls_t) ( 519345235Sdim int current_impl, 520345235Sdim int *next_impl, 521345235Sdim const char **next_impl_name 522345235Sdim); 523345235Sdim 524345235Sdimtypedef ompt_set_result_t (*ompt_set_callback_t) ( 525345235Sdim ompt_callbacks_t event, 526345235Sdim ompt_callback_t callback 527345235Sdim); 528345235Sdim 529345235Sdimtypedef int (*ompt_get_callback_t) ( 530345235Sdim ompt_callbacks_t event, 531345235Sdim ompt_callback_t *callback 532345235Sdim); 533345235Sdim 534345235Sdimtypedef ompt_data_t *(*ompt_get_thread_data_t) (void); 535345235Sdim 536345235Sdimtypedef int (*ompt_get_num_procs_t) (void); 537345235Sdim 538345235Sdimtypedef int (*ompt_get_num_places_t) (void); 539345235Sdim 540345235Sdimtypedef int (*ompt_get_place_proc_ids_t) ( 541345235Sdim int place_num, 542345235Sdim int ids_size, 543345235Sdim int *ids 544345235Sdim); 545345235Sdim 546345235Sdimtypedef int (*ompt_get_place_num_t) (void); 547345235Sdim 548345235Sdimtypedef int (*ompt_get_partition_place_nums_t) ( 549345235Sdim int place_nums_size, 550345235Sdim int *place_nums 551345235Sdim); 552345235Sdim 553345235Sdimtypedef int (*ompt_get_proc_id_t) (void); 554345235Sdim 555345235Sdimtypedef int (*ompt_get_state_t) ( 556345235Sdim ompt_wait_id_t *wait_id 557345235Sdim); 558345235Sdim 559345235Sdimtypedef int (*ompt_get_parallel_info_t) ( 560345235Sdim int ancestor_level, 561345235Sdim ompt_data_t **parallel_data, 562345235Sdim int *team_size 563345235Sdim); 564345235Sdim 565345235Sdimtypedef int (*ompt_get_task_info_t) ( 566345235Sdim int ancestor_level, 567345235Sdim int *flags, 568345235Sdim ompt_data_t **task_data, 569345235Sdim ompt_frame_t **task_frame, 570345235Sdim ompt_data_t **parallel_data, 571345235Sdim int *thread_num 572345235Sdim); 573345235Sdim 574345235Sdimtypedef int (*ompt_get_task_memory_t)( 575345235Sdim void **addr, 576345235Sdim size_t *size, 577345235Sdim int block 578345235Sdim); 579345235Sdim 580345235Sdimtypedef int (*ompt_get_target_info_t) ( 581345235Sdim uint64_t *device_num, 582345235Sdim ompt_id_t *target_id, 583345235Sdim ompt_id_t *host_op_id 584345235Sdim); 585345235Sdim 586345235Sdimtypedef int (*ompt_get_num_devices_t) (void); 587345235Sdim 588345235Sdimtypedef void (*ompt_finalize_tool_t) (void); 589345235Sdim 590345235Sdimtypedef int (*ompt_get_device_num_procs_t) ( 591345235Sdim ompt_device_t *device 592345235Sdim); 593345235Sdim 594345235Sdimtypedef ompt_device_time_t (*ompt_get_device_time_t) ( 595345235Sdim ompt_device_t *device 596345235Sdim); 597345235Sdim 598345235Sdimtypedef double (*ompt_translate_time_t) ( 599345235Sdim ompt_device_t *device, 600345235Sdim ompt_device_time_t time 601345235Sdim); 602345235Sdim 603345235Sdimtypedef ompt_set_result_t (*ompt_set_trace_ompt_t) ( 604345235Sdim ompt_device_t *device, 605345235Sdim unsigned int enable, 606345235Sdim unsigned int etype 607345235Sdim); 608345235Sdim 609345235Sdimtypedef ompt_set_result_t (*ompt_set_trace_native_t) ( 610345235Sdim ompt_device_t *device, 611345235Sdim int enable, 612345235Sdim int flags 613345235Sdim); 614345235Sdim 615345235Sdimtypedef int (*ompt_start_trace_t) ( 616345235Sdim ompt_device_t *device, 617345235Sdim ompt_callback_buffer_request_t request, 618345235Sdim ompt_callback_buffer_complete_t complete 619345235Sdim); 620345235Sdim 621345235Sdimtypedef int (*ompt_pause_trace_t) ( 622345235Sdim ompt_device_t *device, 623345235Sdim int begin_pause 624345235Sdim); 625345235Sdim 626345235Sdimtypedef int (*ompt_flush_trace_t) ( 627345235Sdim ompt_device_t *device 628345235Sdim); 629345235Sdim 630345235Sdimtypedef int (*ompt_stop_trace_t) ( 631345235Sdim ompt_device_t *device 632345235Sdim); 633345235Sdim 634345235Sdimtypedef int (*ompt_advance_buffer_cursor_t) ( 635345235Sdim ompt_device_t *device, 636345235Sdim ompt_buffer_t *buffer, 637345235Sdim size_t size, 638345235Sdim ompt_buffer_cursor_t current, 639345235Sdim ompt_buffer_cursor_t *next 640345235Sdim); 641345235Sdim 642345235Sdimtypedef ompt_record_t (*ompt_get_record_type_t) ( 643345235Sdim ompt_buffer_t *buffer, 644345235Sdim ompt_buffer_cursor_t current 645345235Sdim); 646345235Sdim 647345235Sdimtypedef void *(*ompt_get_record_native_t) ( 648345235Sdim ompt_buffer_t *buffer, 649345235Sdim ompt_buffer_cursor_t current, 650345235Sdim ompt_id_t *host_op_id 651345235Sdim); 652345235Sdim 653345235Sdimtypedef ompt_record_abstract_t * 654345235Sdim(*ompt_get_record_abstract_t) ( 655345235Sdim void *native_record 656345235Sdim); 657345235Sdim 658345235Sdimtypedef void (*ompt_callback_thread_begin_t) ( 659345235Sdim ompt_thread_t thread_type, 660345235Sdim ompt_data_t *thread_data 661345235Sdim); 662345235Sdim 663345235Sdimtypedef struct ompt_record_thread_begin_t { 664345235Sdim ompt_thread_t thread_type; 665345235Sdim} ompt_record_thread_begin_t; 666345235Sdim 667345235Sdimtypedef void (*ompt_callback_thread_end_t) ( 668345235Sdim ompt_data_t *thread_data 669345235Sdim); 670345235Sdim 671345235Sdimtypedef void (*ompt_callback_parallel_begin_t) ( 672345235Sdim ompt_data_t *encountering_task_data, 673345235Sdim const ompt_frame_t *encountering_task_frame, 674345235Sdim ompt_data_t *parallel_data, 675345235Sdim unsigned int requested_parallelism, 676345235Sdim int flags, 677345235Sdim const void *codeptr_ra 678345235Sdim); 679345235Sdim 680345235Sdimtypedef struct ompt_record_parallel_begin_t { 681345235Sdim ompt_id_t encountering_task_id; 682345235Sdim ompt_id_t parallel_id; 683345235Sdim unsigned int requested_parallelism; 684345235Sdim int flags; 685345235Sdim const void *codeptr_ra; 686345235Sdim} ompt_record_parallel_begin_t; 687345235Sdim 688345235Sdimtypedef void (*ompt_callback_parallel_end_t) ( 689345235Sdim ompt_data_t *parallel_data, 690345235Sdim ompt_data_t *encountering_task_data, 691345235Sdim int flags, 692345235Sdim const void *codeptr_ra 693345235Sdim); 694345235Sdim 695345235Sdimtypedef struct ompt_record_parallel_end_t { 696345235Sdim ompt_id_t parallel_id; 697345235Sdim ompt_id_t encountering_task_id; 698345235Sdim int flags; 699345235Sdim const void *codeptr_ra; 700345235Sdim} ompt_record_parallel_end_t; 701345235Sdim 702345235Sdimtypedef void (*ompt_callback_work_t) ( 703345235Sdim ompt_work_t wstype, 704345235Sdim ompt_scope_endpoint_t endpoint, 705345235Sdim ompt_data_t *parallel_data, 706345235Sdim ompt_data_t *task_data, 707345235Sdim uint64_t count, 708345235Sdim const void *codeptr_ra 709345235Sdim); 710345235Sdim 711345235Sdimtypedef struct ompt_record_work_t { 712345235Sdim ompt_work_t wstype; 713345235Sdim ompt_scope_endpoint_t endpoint; 714345235Sdim ompt_id_t parallel_id; 715345235Sdim ompt_id_t task_id; 716345235Sdim uint64_t count; 717345235Sdim const void *codeptr_ra; 718345235Sdim} ompt_record_work_t; 719345235Sdim 720345235Sdimtypedef void (*ompt_callback_dispatch_t) ( 721345235Sdim ompt_data_t *parallel_data, 722345235Sdim ompt_data_t *task_data, 723345235Sdim ompt_dispatch_t kind, 724360658Sdim ompt_data_t instance 725345235Sdim); 726345235Sdim 727345235Sdimtypedef struct ompt_record_dispatch_t { 728345235Sdim ompt_id_t parallel_id; 729345235Sdim ompt_id_t task_id; 730345235Sdim ompt_dispatch_t kind; 731360658Sdim ompt_data_t instance; 732345235Sdim} ompt_record_dispatch_t; 733345235Sdim 734345235Sdimtypedef void (*ompt_callback_task_create_t) ( 735345235Sdim ompt_data_t *encountering_task_data, 736345235Sdim const ompt_frame_t *encountering_task_frame, 737345235Sdim ompt_data_t *new_task_data, 738345235Sdim int flags, 739345235Sdim int has_dependences, 740345235Sdim const void *codeptr_ra 741345235Sdim); 742345235Sdim 743345235Sdimtypedef struct ompt_record_task_create_t { 744345235Sdim ompt_id_t encountering_task_id; 745345235Sdim ompt_id_t new_task_id; 746345235Sdim int flags; 747345235Sdim int has_dependences; 748345235Sdim const void *codeptr_ra; 749345235Sdim} ompt_record_task_create_t; 750345235Sdim 751345235Sdimtypedef void (*ompt_callback_dependences_t) ( 752345235Sdim ompt_data_t *task_data, 753345235Sdim const ompt_dependence_t *deps, 754345235Sdim int ndeps 755345235Sdim); 756345235Sdim 757345235Sdimtypedef struct ompt_record_dependences_t { 758345235Sdim ompt_id_t task_id; 759345235Sdim ompt_dependence_t dep; 760345235Sdim int ndeps; 761345235Sdim} ompt_record_dependences_t; 762345235Sdim 763345235Sdimtypedef void (*ompt_callback_task_dependence_t) ( 764345235Sdim ompt_data_t *src_task_data, 765345235Sdim ompt_data_t *sink_task_data 766345235Sdim); 767345235Sdim 768345235Sdimtypedef struct ompt_record_task_dependence_t { 769345235Sdim ompt_id_t src_task_id; 770345235Sdim ompt_id_t sink_task_id; 771345235Sdim} ompt_record_task_dependence_t; 772345235Sdim 773345235Sdimtypedef void (*ompt_callback_task_schedule_t) ( 774345235Sdim ompt_data_t *prior_task_data, 775345235Sdim ompt_task_status_t prior_task_status, 776345235Sdim ompt_data_t *next_task_data 777345235Sdim); 778345235Sdim 779345235Sdimtypedef struct ompt_record_task_schedule_t { 780345235Sdim ompt_id_t prior_task_id; 781345235Sdim ompt_task_status_t prior_task_status; 782345235Sdim ompt_id_t next_task_id; 783345235Sdim} ompt_record_task_schedule_t; 784345235Sdim 785345235Sdimtypedef void (*ompt_callback_implicit_task_t) ( 786345235Sdim ompt_scope_endpoint_t endpoint, 787345235Sdim ompt_data_t *parallel_data, 788345235Sdim ompt_data_t *task_data, 789345235Sdim unsigned int actual_parallelism, 790345235Sdim unsigned int index, 791345235Sdim int flags 792345235Sdim); 793345235Sdim 794345235Sdimtypedef struct ompt_record_implicit_task_t { 795345235Sdim ompt_scope_endpoint_t endpoint; 796345235Sdim ompt_id_t parallel_id; 797345235Sdim ompt_id_t task_id; 798345235Sdim unsigned int actual_parallelism; 799345235Sdim unsigned int index; 800345235Sdim int flags; 801345235Sdim} ompt_record_implicit_task_t; 802345235Sdim 803345235Sdimtypedef void (*ompt_callback_master_t) ( 804345235Sdim ompt_scope_endpoint_t endpoint, 805345235Sdim ompt_data_t *parallel_data, 806345235Sdim ompt_data_t *task_data, 807345235Sdim const void *codeptr_ra 808345235Sdim); 809345235Sdim 810345235Sdimtypedef struct ompt_record_master_t { 811345235Sdim ompt_scope_endpoint_t endpoint; 812345235Sdim ompt_id_t parallel_id; 813345235Sdim ompt_id_t task_id; 814345235Sdim const void *codeptr_ra; 815345235Sdim} ompt_record_master_t; 816345235Sdim 817345235Sdimtypedef void (*ompt_callback_sync_region_t) ( 818345235Sdim ompt_sync_region_t kind, 819345235Sdim ompt_scope_endpoint_t endpoint, 820345235Sdim ompt_data_t *parallel_data, 821345235Sdim ompt_data_t *task_data, 822345235Sdim const void *codeptr_ra 823345235Sdim); 824345235Sdim 825345235Sdimtypedef struct ompt_record_sync_region_t { 826345235Sdim ompt_sync_region_t kind; 827345235Sdim ompt_scope_endpoint_t endpoint; 828345235Sdim ompt_id_t parallel_id; 829345235Sdim ompt_id_t task_id; 830345235Sdim const void *codeptr_ra; 831345235Sdim} ompt_record_sync_region_t; 832345235Sdim 833345235Sdimtypedef void (*ompt_callback_mutex_acquire_t) ( 834345235Sdim ompt_mutex_t kind, 835345235Sdim unsigned int hint, 836345235Sdim unsigned int impl, 837345235Sdim ompt_wait_id_t wait_id, 838345235Sdim const void *codeptr_ra 839345235Sdim); 840345235Sdim 841345235Sdimtypedef struct ompt_record_mutex_acquire_t { 842345235Sdim ompt_mutex_t kind; 843345235Sdim unsigned int hint; 844345235Sdim unsigned int impl; 845345235Sdim ompt_wait_id_t wait_id; 846345235Sdim const void *codeptr_ra; 847345235Sdim} ompt_record_mutex_acquire_t; 848345235Sdim 849345235Sdimtypedef void (*ompt_callback_mutex_t) ( 850345235Sdim ompt_mutex_t kind, 851345235Sdim ompt_wait_id_t wait_id, 852345235Sdim const void *codeptr_ra 853345235Sdim); 854345235Sdim 855345235Sdimtypedef struct ompt_record_mutex_t { 856345235Sdim ompt_mutex_t kind; 857345235Sdim ompt_wait_id_t wait_id; 858345235Sdim const void *codeptr_ra; 859345235Sdim} ompt_record_mutex_t; 860345235Sdim 861345235Sdimtypedef void (*ompt_callback_nest_lock_t) ( 862345235Sdim ompt_scope_endpoint_t endpoint, 863345235Sdim ompt_wait_id_t wait_id, 864345235Sdim const void *codeptr_ra 865345235Sdim); 866345235Sdim 867345235Sdimtypedef struct ompt_record_nest_lock_t { 868345235Sdim ompt_scope_endpoint_t endpoint; 869345235Sdim ompt_wait_id_t wait_id; 870345235Sdim const void *codeptr_ra; 871345235Sdim} ompt_record_nest_lock_t; 872345235Sdim 873345235Sdimtypedef void (*ompt_callback_flush_t) ( 874345235Sdim ompt_data_t *thread_data, 875345235Sdim const void *codeptr_ra 876345235Sdim); 877345235Sdim 878345235Sdimtypedef struct ompt_record_flush_t { 879345235Sdim const void *codeptr_ra; 880345235Sdim} ompt_record_flush_t; 881345235Sdim 882345235Sdimtypedef void (*ompt_callback_cancel_t) ( 883345235Sdim ompt_data_t *task_data, 884345235Sdim int flags, 885345235Sdim const void *codeptr_ra 886345235Sdim); 887345235Sdim 888345235Sdimtypedef struct ompt_record_cancel_t { 889345235Sdim ompt_id_t task_id; 890345235Sdim int flags; 891345235Sdim const void *codeptr_ra; 892345235Sdim} ompt_record_cancel_t; 893345235Sdim 894345235Sdimtypedef void (*ompt_callback_device_initialize_t) ( 895345235Sdim int device_num, 896345235Sdim const char *type, 897345235Sdim ompt_device_t *device, 898345235Sdim ompt_function_lookup_t lookup, 899345235Sdim const char *documentation 900345235Sdim); 901345235Sdim 902345235Sdimtypedef void (*ompt_callback_device_finalize_t) ( 903345235Sdim int device_num 904345235Sdim); 905345235Sdim 906345235Sdimtypedef void (*ompt_callback_device_load_t) ( 907345235Sdim int device_num, 908345235Sdim const char *filename, 909345235Sdim int64_t offset_in_file, 910345235Sdim void *vma_in_file, 911345235Sdim size_t bytes, 912345235Sdim void *host_addr, 913345235Sdim void *device_addr, 914345235Sdim uint64_t module_id 915345235Sdim); 916345235Sdim 917345235Sdimtypedef void (*ompt_callback_device_unload_t) ( 918345235Sdim int device_num, 919345235Sdim uint64_t module_id 920345235Sdim); 921345235Sdim 922345235Sdimtypedef void (*ompt_callback_target_data_op_t) ( 923345235Sdim ompt_id_t target_id, 924345235Sdim ompt_id_t host_op_id, 925345235Sdim ompt_target_data_op_t optype, 926345235Sdim void *src_addr, 927345235Sdim int src_device_num, 928345235Sdim void *dest_addr, 929345235Sdim int dest_device_num, 930345235Sdim size_t bytes, 931345235Sdim const void *codeptr_ra 932345235Sdim); 933345235Sdim 934345235Sdimtypedef struct ompt_record_target_data_op_t { 935345235Sdim ompt_id_t host_op_id; 936345235Sdim ompt_target_data_op_t optype; 937345235Sdim void *src_addr; 938345235Sdim int src_device_num; 939345235Sdim void *dest_addr; 940345235Sdim int dest_device_num; 941345235Sdim size_t bytes; 942345235Sdim ompt_device_time_t end_time; 943345235Sdim const void *codeptr_ra; 944345235Sdim} ompt_record_target_data_op_t; 945345235Sdim 946345235Sdimtypedef void (*ompt_callback_target_t) ( 947345235Sdim ompt_target_t kind, 948345235Sdim ompt_scope_endpoint_t endpoint, 949345235Sdim int device_num, 950345235Sdim ompt_data_t *task_data, 951345235Sdim ompt_id_t target_id, 952345235Sdim const void *codeptr_ra 953345235Sdim); 954345235Sdim 955345235Sdimtypedef struct ompt_record_target_t { 956345235Sdim ompt_target_t kind; 957345235Sdim ompt_scope_endpoint_t endpoint; 958345235Sdim int device_num; 959345235Sdim ompt_id_t task_id; 960345235Sdim ompt_id_t target_id; 961345235Sdim const void *codeptr_ra; 962345235Sdim} ompt_record_target_t; 963345235Sdim 964345235Sdimtypedef void (*ompt_callback_target_map_t) ( 965345235Sdim ompt_id_t target_id, 966345235Sdim unsigned int nitems, 967345235Sdim void **host_addr, 968345235Sdim void **device_addr, 969345235Sdim size_t *bytes, 970345235Sdim unsigned int *mapping_flags, 971345235Sdim const void *codeptr_ra 972345235Sdim); 973345235Sdim 974345235Sdimtypedef struct ompt_record_target_map_t { 975345235Sdim ompt_id_t target_id; 976345235Sdim unsigned int nitems; 977345235Sdim void **host_addr; 978345235Sdim void **device_addr; 979345235Sdim size_t *bytes; 980345235Sdim unsigned int *mapping_flags; 981345235Sdim const void *codeptr_ra; 982345235Sdim} ompt_record_target_map_t; 983345235Sdim 984345235Sdimtypedef void (*ompt_callback_target_submit_t) ( 985345235Sdim ompt_id_t target_id, 986345235Sdim ompt_id_t host_op_id, 987345235Sdim unsigned int requested_num_teams 988345235Sdim); 989345235Sdim 990345235Sdimtypedef struct ompt_record_target_kernel_t { 991345235Sdim ompt_id_t host_op_id; 992345235Sdim unsigned int requested_num_teams; 993345235Sdim unsigned int granted_num_teams; 994345235Sdim ompt_device_time_t end_time; 995345235Sdim} ompt_record_target_kernel_t; 996345235Sdim 997345235Sdimtypedef int (*ompt_callback_control_tool_t) ( 998345235Sdim uint64_t command, 999345235Sdim uint64_t modifier, 1000345235Sdim void *arg, 1001345235Sdim const void *codeptr_ra 1002345235Sdim); 1003345235Sdim 1004345235Sdimtypedef struct ompt_record_control_tool_t { 1005345235Sdim uint64_t command; 1006345235Sdim uint64_t modifier; 1007345235Sdim const void *codeptr_ra; 1008345235Sdim} ompt_record_control_tool_t; 1009345235Sdim 1010345235Sdimtypedef struct ompd_address_t { 1011345235Sdim ompd_seg_t segment; 1012345235Sdim ompd_addr_t address; 1013345235Sdim} ompd_address_t; 1014345235Sdim 1015345235Sdimtypedef struct ompd_frame_info_t { 1016345235Sdim ompd_address_t frame_address; 1017345235Sdim ompd_word_t frame_flag; 1018345235Sdim} ompd_frame_info_t; 1019345235Sdim 1020345235Sdimtypedef struct _ompd_aspace_handle ompd_address_space_handle_t; 1021345235Sdimtypedef struct _ompd_thread_handle ompd_thread_handle_t; 1022345235Sdimtypedef struct _ompd_parallel_handle ompd_parallel_handle_t; 1023345235Sdimtypedef struct _ompd_task_handle ompd_task_handle_t; 1024345235Sdim 1025345235Sdimtypedef struct _ompd_aspace_cont ompd_address_space_context_t; 1026345235Sdimtypedef struct _ompd_thread_cont ompd_thread_context_t; 1027345235Sdim 1028345235Sdimtypedef struct ompd_device_type_sizes_t { 1029345235Sdim uint8_t sizeof_char; 1030345235Sdim uint8_t sizeof_short; 1031345235Sdim uint8_t sizeof_int; 1032345235Sdim uint8_t sizeof_long; 1033345235Sdim uint8_t sizeof_long_long; 1034345235Sdim uint8_t sizeof_pointer; 1035345235Sdim} ompd_device_type_sizes_t; 1036345235Sdim 1037345235Sdimtypedef struct ompt_record_ompt_t { 1038345235Sdim ompt_callbacks_t type; 1039345235Sdim ompt_device_time_t time; 1040345235Sdim ompt_id_t thread_id; 1041345235Sdim ompt_id_t target_id; 1042345235Sdim union { 1043345235Sdim ompt_record_thread_begin_t thread_begin; 1044345235Sdim ompt_record_parallel_begin_t parallel_begin; 1045345235Sdim ompt_record_parallel_end_t parallel_end; 1046345235Sdim ompt_record_work_t work; 1047345235Sdim ompt_record_dispatch_t dispatch; 1048345235Sdim ompt_record_task_create_t task_create; 1049345235Sdim ompt_record_dependences_t dependences; 1050345235Sdim ompt_record_task_dependence_t task_dependence; 1051345235Sdim ompt_record_task_schedule_t task_schedule; 1052345235Sdim ompt_record_implicit_task_t implicit_task; 1053345235Sdim ompt_record_master_t master; 1054345235Sdim ompt_record_sync_region_t sync_region; 1055345235Sdim ompt_record_mutex_acquire_t mutex_acquire; 1056345235Sdim ompt_record_mutex_t mutex; 1057345235Sdim ompt_record_nest_lock_t nest_lock; 1058345235Sdim ompt_record_flush_t flush; 1059345235Sdim ompt_record_cancel_t cancel; 1060345235Sdim ompt_record_target_t target; 1061345235Sdim ompt_record_target_data_op_t target_data_op; 1062345235Sdim ompt_record_target_map_t target_map; 1063345235Sdim ompt_record_target_kernel_t target_kernel; 1064345235Sdim ompt_record_control_tool_t control_tool; 1065345235Sdim } record; 1066345235Sdim} ompt_record_ompt_t; 1067345235Sdim 1068345235Sdimtypedef ompt_record_ompt_t *(*ompt_get_record_ompt_t) ( 1069345235Sdim ompt_buffer_t *buffer, 1070345235Sdim ompt_buffer_cursor_t current 1071345235Sdim); 1072345235Sdim 1073345235Sdim#define ompt_id_none 0 1074345235Sdim#define ompt_data_none {0} 1075345235Sdim#define ompt_time_none 0 1076345235Sdim#define ompt_hwid_none 0 1077345235Sdim#define ompt_addr_none ~0 1078345235Sdim#define ompt_mutex_impl_none 0 1079345235Sdim#define ompt_wait_id_none 0 1080345235Sdim 1081345235Sdim#define ompd_segment_none 0 1082345235Sdim 1083345235Sdim#endif /* __OMPT__ */ 1084