1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "tracing.h"
#include "ze_tracing_layer.h"
#include "layers/zel_tracing_api.h"
#include "layers/zel_tracing_ddi.h"
#include "loader/ze_loader.h"
namespace tracing {
ZE_APIEXPORT ze_result_t ZE_APICALL
zelTracerCreate(
const zel_tracer_desc_t *desc,
zel_tracer_handle_t *phTracer) {
return tracing_layer::createAPITracer(desc, phTracer);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zelTracerDestroy(
zel_tracer_handle_t hTracer) {
return tracing_layer::APITracer::fromHandle(hTracer)->destroyTracer(hTracer);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zelTracerSetPrologues(
zel_tracer_handle_t hTracer,
zel_core_callbacks_t *pCoreCbs) {
return tracing_layer::APITracer::fromHandle(hTracer)->setPrologues(pCoreCbs);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zelTracerSetEpilogues(
zel_tracer_handle_t hTracer,
zel_core_callbacks_t *pCoreCbs) {
return tracing_layer::APITracer::fromHandle(hTracer)->setEpilogues(pCoreCbs);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zelTracerSetEnabled(
zel_tracer_handle_t hTracer,
ze_bool_t enable) {
return tracing_layer::APITracer::fromHandle(hTracer)->enableTracer(enable);
}
}
#if defined(__cplusplus)
extern "C" {
#endif
///////////////////////////////////////////////////////////////////////////////
/// @brief Exported function for filling application's TracerExp table
/// with current process' addresses
///
/// @returns
/// - ::ZE_RESULT_SUCCESS
/// - ::ZE_RESULT_ERROR_INVALID_NULL_POINTER
/// - ::ZE_RESULT_ERROR_UNSUPPORTED_VERSION
ZE_DLLEXPORT ze_result_t ZE_APICALL
zelGetTracerApiProcAddrTable(
ze_api_version_t version, ///< [in] API version requested
zel_tracer_dditable_t* pDdiTable ///< [in,out] pointer to table of DDI function pointers
)
{
if( nullptr == pDdiTable )
return ZE_RESULT_ERROR_INVALID_NULL_POINTER;
if( tracing_layer::context.version < version )
return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnCreate = tracing::zelTracerCreate;
pDdiTable->pfnDestroy = tracing::zelTracerDestroy;
pDdiTable->pfnSetPrologues = tracing::zelTracerSetPrologues;
pDdiTable->pfnSetEpilogues = tracing::zelTracerSetEpilogues;
pDdiTable->pfnSetEnabled = tracing::zelTracerSetEnabled;
return result;
}
ZE_DLLEXPORT ze_result_t ZE_APICALL
zelLoaderGetVersion(zel_component_version_t *version)
{
if(version == nullptr)
return ZE_RESULT_ERROR_INVALID_NULL_POINTER;
string_copy_s(version->component_name, TRACING_COMP_NAME, ZEL_COMPONENT_STRING_SIZE);
version->spec_version = ZE_API_VERSION_CURRENT;
version->component_lib_version.major = LOADER_VERSION_MAJOR;
version->component_lib_version.minor = LOADER_VERSION_MINOR;
version->component_lib_version.patch = LOADER_VERSION_PATCH;
return ZE_RESULT_SUCCESS;
}
#if defined(__cplusplus)
};
#endif
|