/* * Copyright (c) Advanced Micro Devices, Inc., or its affiliates. * * SPDX-License-Identifier: MIT */ #ifndef INC_EXT_PROF_PROTOCOL_H_ #define INC_EXT_PROF_PROTOCOL_H_ #include // Traced API domains typedef enum { ACTIVITY_DOMAIN_HSA_API = 0, // HSA API domain ACTIVITY_DOMAIN_HSA_OPS = 1, // HSA async activity domain ACTIVITY_DOMAIN_HIP_OPS = 2, // HIP async activity domain ACTIVITY_DOMAIN_HCC_OPS = ACTIVITY_DOMAIN_HIP_OPS, // HCC async activity domain ACTIVITY_DOMAIN_HIP_VDI = ACTIVITY_DOMAIN_HIP_OPS, // HIP VDI domain ACTIVITY_DOMAIN_HIP_API = 3, // HIP API domain ACTIVITY_DOMAIN_KFD_API = 4, // KFD API domain ACTIVITY_DOMAIN_EXT_API = 5, // External ID domain ACTIVITY_DOMAIN_ROCTX = 6, // ROCTX domain ACTIVITY_DOMAIN_NUMBER } activity_domain_t; // Extension API opcodes typedef enum { ACTIVITY_EXT_OP_MARK = 0, ACTIVITY_EXT_OP_EXTERN_ID = 1 } activity_ext_op_t; // API callback type typedef void (*activity_rtapi_callback_t)(uint32_t domain, uint32_t cid, const void* data, void* arg); typedef uint32_t activity_kind_t; typedef uint32_t activity_op_t; // API callback phase typedef enum { ACTIVITY_API_PHASE_ENTER = 0, ACTIVITY_API_PHASE_EXIT = 1 } activity_api_phase_t; // Trace record types // Correlation id typedef uint64_t activity_correlation_id_t; // Activity record type struct activity_record_t { uint32_t domain; // activity domain id activity_kind_t kind; // activity kind activity_op_t op; // activity op activity_correlation_id_t correlation_id; // activity ID uint64_t begin_ns; // host begin timestamp uint64_t end_ns; // host end timestamp union { struct { int device_id; // device id uint64_t queue_id; // queue id }; struct { uint32_t process_id; // device id uint32_t thread_id; // thread id }; struct { activity_correlation_id_t external_id; // external correlatino id }; }; union { size_t bytes; // data size bytes const char* kernel_name; }; }; // Activity sync calback type typedef void (*activity_sync_callback_t)(uint32_t cid, activity_record_t* record, const void* data, void* arg); // Activity async calback type typedef void (*activity_async_callback_t)(uint32_t op, activity_record_t* record, void* arg); #endif // INC_EXT_PROF_PROTOCOL_H_