Skip to content

Commit 9eb7a30

Browse files
authored
[SYCL][XPTI] Add accessor events (#5249)
- Accessor construction events using the following APIs covering all targets and modes: - sycl::buffer::get_access(); - sycl::accessor constructors; - Fixed XPTI hash generation (added previously missed dependency on source code location line number). E2E tests: intel/llvm-test-suite#700
1 parent ebf9ea8 commit 9eb7a30

File tree

11 files changed

+481
-253
lines changed

11 files changed

+481
-253
lines changed

sycl/include/CL/sycl/accessor.hpp

Lines changed: 348 additions & 213 deletions
Large diffs are not rendered by default.

sycl/include/CL/sycl/buffer.hpp

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -331,39 +331,46 @@ class buffer {
331331
template <access::mode Mode, access::target Target = access::target::device>
332332
accessor<T, dimensions, Mode, Target, access::placeholder::false_t,
333333
ext::oneapi::accessor_property_list<>>
334-
get_access(handler &CommandGroupHandler) {
334+
get_access(
335+
handler &CommandGroupHandler,
336+
const detail::code_location CodeLoc = detail::code_location::current()) {
335337
return accessor<T, dimensions, Mode, Target, access::placeholder::false_t,
336-
ext::oneapi::accessor_property_list<>>(*this,
337-
CommandGroupHandler);
338+
ext::oneapi::accessor_property_list<>>(
339+
*this, CommandGroupHandler, {}, CodeLoc);
338340
}
339341

340342
template <access::mode mode>
341343
accessor<T, dimensions, mode, access::target::host_buffer,
342344
access::placeholder::false_t, ext::oneapi::accessor_property_list<>>
343-
get_access() {
345+
get_access(
346+
const detail::code_location CodeLoc = detail::code_location::current()) {
344347
return accessor<T, dimensions, mode, access::target::host_buffer,
345348
access::placeholder::false_t,
346-
ext::oneapi::accessor_property_list<>>(*this);
349+
ext::oneapi::accessor_property_list<>>(*this, {}, CodeLoc);
347350
}
348351

349352
template <access::mode mode, access::target target = access::target::device>
350353
accessor<T, dimensions, mode, target, access::placeholder::false_t,
351354
ext::oneapi::accessor_property_list<>>
352-
get_access(handler &commandGroupHandler, range<dimensions> accessRange,
353-
id<dimensions> accessOffset = {}) {
355+
get_access(
356+
handler &commandGroupHandler, range<dimensions> accessRange,
357+
id<dimensions> accessOffset = {},
358+
const detail::code_location CodeLoc = detail::code_location::current()) {
354359
return accessor<T, dimensions, mode, target, access::placeholder::false_t,
355360
ext::oneapi::accessor_property_list<>>(
356-
*this, commandGroupHandler, accessRange, accessOffset);
361+
*this, commandGroupHandler, accessRange, accessOffset, {}, CodeLoc);
357362
}
358363

359364
template <access::mode mode>
360365
accessor<T, dimensions, mode, access::target::host_buffer,
361366
access::placeholder::false_t, ext::oneapi::accessor_property_list<>>
362-
get_access(range<dimensions> accessRange, id<dimensions> accessOffset = {}) {
367+
get_access(
368+
range<dimensions> accessRange, id<dimensions> accessOffset = {},
369+
const detail::code_location CodeLoc = detail::code_location::current()) {
363370
return accessor<T, dimensions, mode, access::target::host_buffer,
364371
access::placeholder::false_t,
365-
ext::oneapi::accessor_property_list<>>(*this, accessRange,
366-
accessOffset);
372+
ext::oneapi::accessor_property_list<>>(
373+
*this, accessRange, accessOffset, {}, CodeLoc);
367374
}
368375

369376
#if __cplusplus > 201402L

sycl/source/detail/accessor_impl.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <CL/sycl/detail/buffer_impl.hpp>
1111
#include <detail/event_impl.hpp>
1212
#include <detail/scheduler/scheduler.hpp>
13+
#include <detail/xpti_registry.hpp>
1314

1415
__SYCL_INLINE_NAMESPACE(cl) {
1516
namespace sycl {
@@ -37,6 +38,14 @@ void addHostAccessorAndWait(Requirement *Req) {
3738
detail::Scheduler::getInstance().addHostAccessor(Req);
3839
Event->wait(Event);
3940
}
41+
42+
void constructorNotification(void *BufferObj, void *AccessorObj,
43+
cl::sycl::access::target Target,
44+
cl::sycl::access::mode Mode,
45+
const detail::code_location &CodeLoc) {
46+
XPTIRegistry::bufferAccessorNotification(
47+
BufferObj, AccessorObj, (uint32_t)Target, (uint32_t)Mode, CodeLoc);
4048
}
41-
}
42-
}
49+
} // namespace detail
50+
} // namespace sycl
51+
} // __SYCL_INLINE_NAMESPACE(cl)

sycl/source/detail/buffer_impl.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ void buffer_impl::constructorNotification(const detail::code_location &CodeLoc,
3838
void buffer_impl::destructorNotification(void *UserObj) {
3939
XPTIRegistry::bufferDestructorNotification(UserObj);
4040
}
41-
4241
} // namespace detail
4342
} // namespace sycl
4443
} // __SYCL_INLINE_NAMESPACE(cl)

sycl/source/detail/xpti_registry.cpp

Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,44 +16,50 @@
1616
__SYCL_INLINE_NAMESPACE(cl) {
1717
namespace sycl {
1818
namespace detail {
19-
void XPTIRegistry::bufferConstructorNotification(
20-
void *UserObj, const detail::code_location &CodeLoc) {
21-
(void)CodeLoc;
22-
#ifdef XPTI_ENABLE_INSTRUMENTATION
23-
GlobalHandler::instance().getXPTIRegistry().initializeFrameworkOnce();
24-
if (!xptiTraceEnabled())
25-
return;
26-
27-
uint64_t IId = xptiGetUniqueId();
19+
xpti::trace_event_data_t *
20+
XPTIRegistry::createTraceEvent(void *Obj, const char *ObjName, uint64_t &IId,
21+
const detail::code_location &CodeLoc,
22+
uint16_t TraceEventType) {
2823
std::string Name;
2924
if (CodeLoc.fileName()) {
3025
Name = std::string(CodeLoc.fileName()) + ":" +
3126
std::to_string(CodeLoc.lineNumber()) + ":" +
3227
std::to_string(CodeLoc.columnNumber());
3328
} else {
34-
// We try to create a unique string for the buffer constructor call by
35-
// combining it with the the created object address
3629
xpti::utils::StringHelper NG;
37-
Name = NG.nameWithAddress<void *>("buffer", UserObj);
30+
Name = NG.nameWithAddress<void *>(ObjName, Obj);
3831
}
39-
xpti::offload_buffer_data_t BufConstr{(uintptr_t)UserObj};
40-
4132
xpti::payload_t Payload(
4233
Name.c_str(), (CodeLoc.fileName() ? CodeLoc.fileName() : ""),
43-
CodeLoc.lineNumber(), CodeLoc.columnNumber(), (void *)UserObj);
34+
CodeLoc.lineNumber(), CodeLoc.columnNumber(), (void *)Obj);
4435

45-
// Constructor calls could be at different user-code locations; We create a
46-
// new event based on the code location info and if this has been seen
47-
// before, a previously created event will be returned.
48-
xpti::trace_event_data_t *TraceEvent =
49-
xptiMakeEvent(Name.c_str(), &Payload, xpti::trace_offload_buffer_event,
50-
xpti_at::active, &IId);
36+
// Calls could be at different user-code locations; We create a new event
37+
// based on the code location info and if this has been seen before, a
38+
// previously created event will be returned.
39+
return xptiMakeEvent(Name.c_str(), &Payload, TraceEventType, xpti_at::active,
40+
&IId);
41+
}
42+
void XPTIRegistry::bufferConstructorNotification(
43+
void *UserObj, const detail::code_location &CodeLoc) {
44+
(void)UserObj;
45+
(void)CodeLoc;
46+
#ifdef XPTI_ENABLE_INSTRUMENTATION
47+
GlobalHandler::instance().getXPTIRegistry().initializeFrameworkOnce();
48+
if (!xptiTraceEnabled())
49+
return;
50+
51+
uint64_t IId;
52+
xpti::offload_buffer_data_t BufConstr{(uintptr_t)UserObj};
53+
54+
xpti::trace_event_data_t *TraceEvent = createTraceEvent(
55+
UserObj, "buffer", IId, CodeLoc, xpti::trace_offload_buffer_event);
5156
xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_construct,
5257
nullptr, TraceEvent, IId, &BufConstr);
5358
#endif
5459
}
5560

5661
void XPTIRegistry::bufferAssociateNotification(void *UserObj, void *MemObj) {
62+
(void)UserObj;
5763
(void)MemObj;
5864
#ifdef XPTI_ENABLE_INSTRUMENTATION
5965
if (!xptiTraceEnabled())
@@ -69,6 +75,7 @@ void XPTIRegistry::bufferAssociateNotification(void *UserObj, void *MemObj) {
6975
}
7076

7177
void XPTIRegistry::bufferReleaseNotification(void *UserObj, void *MemObj) {
78+
(void)UserObj;
7279
(void)MemObj;
7380
#ifdef XPTI_ENABLE_INSTRUMENTATION
7481
if (!xptiTraceEnabled())
@@ -84,6 +91,7 @@ void XPTIRegistry::bufferReleaseNotification(void *UserObj, void *MemObj) {
8491
}
8592

8693
void XPTIRegistry::bufferDestructorNotification(void *UserObj) {
94+
(void)UserObj;
8795
#ifdef XPTI_ENABLE_INSTRUMENTATION
8896
if (!xptiTraceEnabled())
8997
return;
@@ -95,6 +103,29 @@ void XPTIRegistry::bufferDestructorNotification(void *UserObj) {
95103
#endif
96104
}
97105

106+
void XPTIRegistry::bufferAccessorNotification(
107+
void *UserObj, void *AccessorObj, uint32_t Target, uint32_t Mode,
108+
const detail::code_location &CodeLoc) {
109+
(void)UserObj;
110+
(void)AccessorObj;
111+
(void)CodeLoc;
112+
(void)Target;
113+
(void)Mode;
114+
#ifdef XPTI_ENABLE_INSTRUMENTATION
115+
if (!xptiTraceEnabled())
116+
return;
117+
118+
uint64_t IId;
119+
xpti::offload_accessor_data_t AccessorConstr{
120+
(uintptr_t)UserObj, (uintptr_t)AccessorObj, Target, Mode};
121+
122+
xpti::trace_event_data_t *TraceEvent = createTraceEvent(
123+
UserObj, "accessor", IId, CodeLoc, xpti::trace_offload_accessor_event);
124+
xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_accessor,
125+
nullptr, TraceEvent, IId, &AccessorConstr);
126+
#endif
127+
}
128+
98129
} // namespace detail
99130
} // namespace sycl
100131
} // __SYCL_INLINE_NAMESPACE(cl)

sycl/source/detail/xpti_registry.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ class XPTIRegistry {
9595
static void bufferAssociateNotification(void *UserObj, void *MemObj);
9696
static void bufferReleaseNotification(void *UserObj, void *MemObj);
9797
static void bufferDestructorNotification(void *UserObj);
98+
static void bufferAccessorNotification(void *UserObj, void *AccessorObj,
99+
uint32_t Target, uint32_t Mode,
100+
const detail::code_location &CodeLoc);
101+
static xpti::trace_event_data_t *
102+
createTraceEvent(void *Obj, const char *ObjName, uint64_t &IId,
103+
const detail::code_location &CodeLoc,
104+
uint16_t TraceEventType);
98105

99106
private:
100107
std::unordered_set<std::string> MActiveStreams;

sycl/test/abi/sycl_symbols_linux.dump

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3882,6 +3882,7 @@ _ZN2cl4sycl6detail22get_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6devic
38823882
_ZN2cl4sycl6detail22get_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6deviceESaIS6_EERKS5_INS0_9kernel_idESaISB_EENS0_12bundle_stateE
38833883
_ZN2cl4sycl6detail22has_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6deviceESaIS6_EENS0_12bundle_stateE
38843884
_ZN2cl4sycl6detail22has_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6deviceESaIS6_EERKS5_INS0_9kernel_idESaISB_EENS0_12bundle_stateE
3885+
_ZN2cl4sycl6detail23constructorNotificationEPvS2_NS0_6access6targetENS3_4modeERKNS1_13code_locationE
38853886
_ZN2cl4sycl6detail23getESIMDDeviceInterfaceEv
38863887
_ZN2cl4sycl6detail24find_device_intersectionERKSt6vectorINS0_13kernel_bundleILNS0_12bundle_stateE1EEESaIS5_EE
38873888
_ZN2cl4sycl6detail27getPixelCoordLinearFiltModeENS0_3vecIfLi4EEENS0_15addressing_modeENS0_5rangeILi3EEERS3_

sycl/test/abi/sycl_symbols_windows.dump

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
??$get_info@$0BABB@@device@sycl@cl@@QEBA_KXZ
5050
??$get_info@$0BABBA@@device@sycl@cl@@QEBA_NXZ
5151
??$get_info@$0BABBB@@device@sycl@cl@@QEBA?AV?$vector@W4memory_order@sycl@cl@@V?$allocator@W4memory_order@sycl@cl@@@std@@@std@@XZ
52+
??$get_info@$0BABBC@@device@sycl@cl@@QEBAIXZ
5253
??$get_info@$0BABBC@@kernel@sycl@cl@@QEBAIAEBVdevice@12@@Z
5354
??$get_info@$0BABC@@device@sycl@cl@@QEBA_KXZ
5455
??$get_info@$0BABD@@device@sycl@cl@@QEBA_KXZ
@@ -148,7 +149,6 @@
148149
??$get_info@$0EBJD@@device@sycl@cl@@QEBA_NXZ
149150
??$get_info@$0EBJE@@device@sycl@cl@@QEBA_NXZ
150151
??$get_info@$0ECBD@@device@sycl@cl@@QEBA_NXZ
151-
??$get_info@$0BABBC@@device@sycl@cl@@QEBAIXZ
152152
??$get_info@$0JAA@@platform@sycl@cl@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
153153
??$get_info@$0JAB@@platform@sycl@cl@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
154154
??$get_info@$0JAC@@platform@sycl@cl@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
@@ -1457,6 +1457,7 @@
14571457
?compile_with_kernel_name@program@sycl@cl@@AEAAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0_J@Z
14581458
?compile_with_source@program@sycl@cl@@QEAAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z
14591459
?constructorNotification@buffer_impl@detail@sycl@cl@@QEAAXAEBUcode_location@234@PEAX@Z
1460+
?constructorNotification@detail@sycl@cl@@YAXPEAX0W4target@access@23@W4mode@523@AEBUcode_location@123@@Z
14601461
?contains_specialization_constants@kernel_bundle_plain@detail@sycl@cl@@QEBA_NXZ
14611462
?contextSetExtendedDeleter@pi@detail@sycl@cl@@YAXAEBVcontext@34@P6AXPEAX@Z1@Z
14621463
?convertChannelOrder@detail@sycl@cl@@YA?AW4_pi_image_channel_order@@W4image_channel_order@23@@Z

xpti/include/xpti/xpti_data_types.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,8 @@ enum class trace_point_type_t : uint16_t {
387387
offload_alloc_destruct = XPTI_TRACE_POINT_BEGIN(22),
388388
/// Used to notify about releasing internal handle for offload buffer
389389
offload_alloc_release = XPTI_TRACE_POINT_BEGIN(23),
390+
/// Used to notify about creation accessor for ofload buffer
391+
offload_alloc_accessor = XPTI_TRACE_POINT_BEGIN(24),
390392
/// Indicates that the trace point is user defined and only the tool defined
391393
/// for a stream will be able to handle it
392394
user_defined = 1 << 7
@@ -451,6 +453,8 @@ enum class trace_event_type_t : uint16_t {
451453
offload_write = XPTI_EVENT(8),
452454
/// Indicates that the current event is an offload buffer related
453455
offload_buffer = XPTI_EVENT(9),
456+
/// Indicates that the current event is an offload accessor related
457+
offload_accessor = XPTI_EVENT(10),
454458
/// User defined event for extensibility and will have to be registered by
455459
/// the tool/runtime
456460
user_defined = 1 << 7
@@ -517,6 +521,19 @@ struct offload_buffer_data_t {
517521
/// A pointer to user level memory offload object.
518522
uintptr_t user_object_handle = 0;
519523
};
524+
525+
/// Describes offload accessor
526+
struct offload_accessor_data_t {
527+
/// A pointer to user level buffer offload object.
528+
uintptr_t buffer_handle = 0;
529+
/// A pointer to user level accessor offload object.
530+
uintptr_t accessor_handle = 0;
531+
/// Access target
532+
uint32_t target = 0;
533+
/// Access mode
534+
uint32_t mode = 0;
535+
};
536+
520537
/// Describes association between user level and platform specific
521538
/// offload buffer object
522539
struct offload_buffer_association_data_t {
@@ -632,13 +649,17 @@ constexpr uint16_t trace_offload_alloc_destruct =
632649
static_cast<uint16_t>(xpti::trace_point_type_t::offload_alloc_destruct);
633650
constexpr uint16_t trace_offload_alloc_release =
634651
static_cast<uint16_t>(xpti::trace_point_type_t::offload_alloc_release);
652+
constexpr uint16_t trace_offload_alloc_accessor =
653+
static_cast<uint16_t>(xpti::trace_point_type_t::offload_alloc_accessor);
635654

636655
constexpr uint16_t trace_graph_event =
637656
static_cast<uint16_t>(xpti::trace_event_type_t::graph);
638657
constexpr uint16_t trace_algorithm_event =
639658
static_cast<uint16_t>(xpti::trace_event_type_t::algorithm);
640659
constexpr uint16_t trace_offload_buffer_event =
641660
static_cast<uint16_t>(xpti::trace_event_type_t::offload_buffer);
661+
constexpr uint16_t trace_offload_accessor_event =
662+
static_cast<uint16_t>(xpti::trace_event_type_t::offload_accessor);
642663
} // namespace xpti
643664

644665
using xpti_tp = xpti::trace_point_type_t;

xptifw/src/xpti_trace_framework.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ class Tracepoints {
440440
// Add source file information ot string table
441441
source_id =
442442
MStringTableRef.add(Payload->source_file, &Payload->source_file);
443+
line_no = Payload->line_no;
443444
}
444445
if ((Payload->flags &
445446
static_cast<uint64_t>(payload_flag_t::StackTraceAvailable))) {
@@ -448,15 +449,15 @@ class Tracepoints {
448449
MStringTableRef.add(Payload->stack_trace, &Payload->stack_trace);
449450
}
450451
// Pack the 1st 64-bit value with string ID from source file name and line
451-
// number; pack the 2nd 54-bit value with stack backtrace string ID and the
452+
// number; pack the 2nd 64-bit value with stack backtrace string ID and the
452453
// kernel name string ID
453454
Payload->uid.p1 = XPTI_PACK32_RET64(source_id, line_no);
454455
Payload->uid.p2 = XPTI_PACK32_RET64(stack_id, name_id);
455456
// The code pointer for the kernel is already in 64-bit format
456457
if ((Payload->flags &
457458
static_cast<uint64_t>(payload_flag_t::CodePointerAvailable)))
458459
Payload->uid.p3 = (uint64_t)Payload->code_ptr_va;
459-
// Generate the had from the information available and this will be our
460+
// Generate the hash from the information available and this will be our
460461
// unique ID for the trace point.
461462
HashValue = Payload->uid.hash();
462463
Payload->flags |= static_cast<uint64_t>(payload_flag_t::HashAvailable);
@@ -941,7 +942,7 @@ class Framework {
941942
// have 'nullptr' for both the Parent and Object only if UserData is
942943
// provided and the trace_point_type is function_begin/function_end.
943944
// This allows us to trace function calls without too much effort.
944-
std::array<trace_point_type_t, 12> AllowedTypes = {
945+
std::array<trace_point_type_t, 13> AllowedTypes = {
945946
trace_point_type_t::function_begin,
946947
trace_point_type_t::function_end,
947948
trace_point_type_t::function_with_args_begin,
@@ -953,7 +954,8 @@ class Framework {
953954
trace_point_type_t::offload_alloc_construct,
954955
trace_point_type_t::offload_alloc_associate,
955956
trace_point_type_t::offload_alloc_release,
956-
trace_point_type_t::offload_alloc_destruct};
957+
trace_point_type_t::offload_alloc_destruct,
958+
trace_point_type_t::offload_alloc_accessor};
957959
const auto Predicate = [TraceType](trace_point_type_t RHS) {
958960
return TraceType == static_cast<uint16_t>(RHS);
959961
};

xptifw/unit_test/xpti_api_tests.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,11 @@ TEST_F(xptiApiTest, xptiRegisterCallbackGoodInput) {
275275
fn_callback);
276276
EXPECT_EQ(Result, xpti::result_t::XPTI_RESULT_SUCCESS);
277277

278+
Result = xptiRegisterCallback(
279+
StreamID, (uint16_t)xpti::trace_point_type_t::offload_alloc_accessor,
280+
fn_callback);
281+
EXPECT_EQ(Result, xpti::result_t::XPTI_RESULT_SUCCESS);
282+
278283
Result = xptiRegisterCallback(
279284
StreamID, (uint16_t)xpti::trace_point_type_t::mem_alloc_begin,
280285
fn_callback);
@@ -355,6 +360,11 @@ TEST_F(xptiApiTest, xptiNotifySubscribersBadInput) {
355360
nullptr, nullptr, 0, nullptr);
356361
EXPECT_EQ(Result, xpti::result_t::XPTI_RESULT_INVALIDARG);
357362

363+
Result = xptiNotifySubscribers(
364+
StreamID, (uint16_t)xpti::trace_point_type_t::offload_alloc_accessor,
365+
nullptr, nullptr, 0, nullptr);
366+
EXPECT_EQ(Result, xpti::result_t::XPTI_RESULT_INVALIDARG);
367+
358368
Result = xptiNotifySubscribers(
359369
StreamID, (uint16_t)xpti::trace_point_type_t::mem_alloc_begin, nullptr,
360370
nullptr, 0, nullptr);
@@ -427,6 +437,7 @@ TEST_F(xptiApiTest, xptiNotifySubscribersGoodInput) {
427437
xpti::offload_buffer_data_t UserBufferData{0x01020304};
428438
xpti::offload_buffer_association_data_t AssociationData{0x01020304,
429439
0x05060708};
440+
xpti::offload_accessor_data_t UserAccessorData{0x01020304, 0x09000102, 1, 2};
430441

431442
tmp = func_callback_update;
432443
Result = xptiNotifySubscribers(
@@ -445,6 +456,10 @@ TEST_F(xptiApiTest, xptiNotifySubscribersGoodInput) {
445456
StreamID, (uint16_t)xpti::trace_point_type_t::offload_alloc_destruct,
446457
nullptr, (xpti::trace_event_data_t *)1, 0, &UserBufferData);
447458
EXPECT_EQ(Result, xpti::result_t::XPTI_RESULT_SUCCESS);
459+
Result = xptiNotifySubscribers(
460+
StreamID, (uint16_t)xpti::trace_point_type_t::offload_alloc_accessor,
461+
nullptr, (xpti::trace_event_data_t *)1, 0, &UserAccessorData);
462+
EXPECT_EQ(Result, xpti::result_t::XPTI_RESULT_SUCCESS);
448463

449464
Result = xptiRegisterCallback(
450465
StreamID, (uint16_t)xpti::trace_point_type_t::mem_alloc_begin,

0 commit comments

Comments
 (0)