Skip to content

Add new formatted metadata ITT API #174

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
May 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 52 additions & 1 deletion include/ittnotify.h
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,8 @@ The same ID may not be reused for different instances, unless a previous
#define ITTNOTIFY_VOID_D4(n,d,x,y,z,a) (d == NULL) ? (void)0 : (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a)
#define ITTNOTIFY_VOID_D5(n,d,x,y,z,a,b) (d == NULL) ? (void)0 : (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b)
#define ITTNOTIFY_VOID_D6(n,d,x,y,z,a,b,c) (d == NULL) ? (void)0 : (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c)
#define ITTNOTIFY_VOID_D2_VA(n,d,x,...) (d == NULL) ? (void)0 : (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,__VA_ARGS__)
#define ITTNOTIFY_VOID_D3_VA(n,d,x,y,...) (d == NULL) ? (void)0 : (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,__VA_ARGS__)
#define ITTNOTIFY_DATA_D0(n,d) (d == NULL) ? 0 : (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d)
#define ITTNOTIFY_DATA_D1(n,d,x) (d == NULL) ? 0 : (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x)
#define ITTNOTIFY_DATA_D2(n,d,x,y) (d == NULL) ? 0 : (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x,y)
Expand Down Expand Up @@ -2454,9 +2456,58 @@ typedef enum {
__itt_metadata_u16, /**< Unsigned 16-bit integer */
__itt_metadata_s16, /**< Signed 16-bit integer */
__itt_metadata_float, /**< Signed 32-bit floating-point */
__itt_metadata_double /**< SIgned 64-bit floating-point */
__itt_metadata_double /**< Signed 64-bit floating-point */
} __itt_metadata_type;

/**
* @ingroup parameters
* @brief Add metadata to an instance of a named entity.
* @param[in] domain The domain controlling the call
* @param[in] format The printf-style format of the metadata
* @param[in] ... The metadata itself as multiple arguments
*/
void ITTAPI __itt_formatted_metadata_add(const __itt_domain *domain, __itt_string_handle *format, ...);

/** @cond exclude_from_documentation */
#ifndef INTEL_NO_MACRO_BODY
#ifndef INTEL_NO_ITTNOTIFY_API
ITT_STUBV(ITTAPI, void, formatted_metadata_add, (const __itt_domain *domain, __itt_string_handle *format, ...))
#define __itt_formatted_metadata_add(d,x, ...) ITTNOTIFY_VOID_D2_VA(formatted_metadata_add,d,x,__VA_ARGS__)
#define __itt_formatted_metadata_add_ptr ITTNOTIFY_NAME(formatted_metadata_add)
#else /* INTEL_NO_ITTNOTIFY_API */
#define __itt_formatted_metadata_add(domain, format, metadata)
#define __itt_formatted_metadata_add_ptr 0
#endif /* INTEL_NO_ITTNOTIFY_API */
#else /* INTEL_NO_MACRO_BODY */
#define __itt_formatted_metadata_add_ptr 0
#endif /* INTEL_NO_MACRO_BODY */
/** @endcond */

/**
* @ingroup parameters
* @brief Add metadata to an instance of a named entity.
* @param[in] domain The domain controlling the call
* @param[in] taskid The identifier for this task instance, *cannot* be __itt_null.
* @param[in] format The printf-style format of the metadata
* @param[in] ... The metadata itself as multiple arguments
*/
void ITTAPI __itt_formatted_metadata_add_overlapped(const __itt_domain *domain, __itt_id taskid, __itt_string_handle *format, ...);

/** @cond exclude_from_documentation */
#ifndef INTEL_NO_MACRO_BODY
#ifndef INTEL_NO_ITTNOTIFY_API
ITT_STUBV(ITTAPI, void, formatted_metadata_add_overlapped, (const __itt_domain *domain, __itt_id taskid, __itt_string_handle *format, ...))
#define __itt_formatted_metadata_add_overlapped(d,x,y, ...) ITTNOTIFY_VOID_D3_VA(formatted_metadata_add_overlapped,d,x,y,__VA_ARGS__)
#define __itt_formatted_metadata_add_overlapped_ptr ITTNOTIFY_NAME(formatted_metadata_add_overlapped)
#else /* INTEL_NO_ITTNOTIFY_API */
#define __itt_formatted_metadata_add_overlapped(domain, taskid, format, metadata)
#define __itt_formatted_metadata_add_overlapped_ptr 0
#endif /* INTEL_NO_ITTNOTIFY_API */
#else /* INTEL_NO_MACRO_BODY */
#define __itt_formatted_metadata_add_overlapped_ptr 0
#endif /* INTEL_NO_MACRO_BODY */
/** @endcond */

/**
* @ingroup parameters
* @brief Add metadata to an instance of a named entity.
Expand Down
20 changes: 19 additions & 1 deletion rust/ittapi-sys/src/linux/ittnotify_bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -796,10 +796,28 @@ pub const __itt_metadata_type___itt_metadata_u16: __itt_metadata_type = 5;
pub const __itt_metadata_type___itt_metadata_s16: __itt_metadata_type = 6;
#[doc = "< Signed 32-bit floating-point"]
pub const __itt_metadata_type___itt_metadata_float: __itt_metadata_type = 7;
#[doc = "< SIgned 64-bit floating-point"]
#[doc = "< Signed 64-bit floating-point"]
pub const __itt_metadata_type___itt_metadata_double: __itt_metadata_type = 8;
#[doc = " @ingroup parameters\n @brief describes the type of metadata"]
pub type __itt_metadata_type = ::std::os::raw::c_uint;
pub type __itt_formatted_metadata_add_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(domain: *const __itt_domain, format: *mut __itt_string_handle, ...),
>;
extern "C" {
pub static mut __itt_formatted_metadata_add_ptr__3_0: __itt_formatted_metadata_add_ptr__3_0_t;
}
pub type __itt_formatted_metadata_add_overlapped_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(
domain: *const __itt_domain,
taskid: __itt_id,
format: *mut __itt_string_handle,
...
),
>;
extern "C" {
pub static mut __itt_formatted_metadata_add_overlapped_ptr__3_0:
__itt_formatted_metadata_add_overlapped_ptr__3_0_t;
}
pub type __itt_metadata_add_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(
domain: *const __itt_domain,
Expand Down
20 changes: 19 additions & 1 deletion rust/ittapi-sys/src/macos/ittnotify_bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -796,10 +796,28 @@ pub const __itt_metadata_type___itt_metadata_u16: __itt_metadata_type = 5;
pub const __itt_metadata_type___itt_metadata_s16: __itt_metadata_type = 6;
#[doc = "< Signed 32-bit floating-point"]
pub const __itt_metadata_type___itt_metadata_float: __itt_metadata_type = 7;
#[doc = "< SIgned 64-bit floating-point"]
#[doc = "< Signed 64-bit floating-point"]
pub const __itt_metadata_type___itt_metadata_double: __itt_metadata_type = 8;
#[doc = " @ingroup parameters\n @brief describes the type of metadata"]
pub type __itt_metadata_type = ::std::os::raw::c_uint;
pub type __itt_formatted_metadata_add_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(domain: *const __itt_domain, format: *mut __itt_string_handle, ...),
>;
extern "C" {
pub static mut __itt_formatted_metadata_add_ptr__3_0: __itt_formatted_metadata_add_ptr__3_0_t;
}
pub type __itt_formatted_metadata_add_overlapped_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(
domain: *const __itt_domain,
taskid: __itt_id,
format: *mut __itt_string_handle,
...
),
>;
extern "C" {
pub static mut __itt_formatted_metadata_add_overlapped_ptr__3_0:
__itt_formatted_metadata_add_overlapped_ptr__3_0_t;
}
pub type __itt_metadata_add_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(
domain: *const __itt_domain,
Expand Down
20 changes: 19 additions & 1 deletion rust/ittapi-sys/src/windows/ittnotify_bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -855,10 +855,28 @@ pub const __itt_metadata_type___itt_metadata_u16: __itt_metadata_type = 5;
pub const __itt_metadata_type___itt_metadata_s16: __itt_metadata_type = 6;
#[doc = "< Signed 32-bit floating-point"]
pub const __itt_metadata_type___itt_metadata_float: __itt_metadata_type = 7;
#[doc = "< SIgned 64-bit floating-point"]
#[doc = "< Signed 64-bit floating-point"]
pub const __itt_metadata_type___itt_metadata_double: __itt_metadata_type = 8;
#[doc = " @ingroup parameters\n @brief describes the type of metadata"]
pub type __itt_metadata_type = ::std::os::raw::c_int;
pub type __itt_formatted_metadata_add_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(domain: *const __itt_domain, format: *mut __itt_string_handle, ...),
>;
extern "C" {
pub static mut __itt_formatted_metadata_add_ptr__3_0: __itt_formatted_metadata_add_ptr__3_0_t;
}
pub type __itt_formatted_metadata_add_overlapped_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(
domain: *const __itt_domain,
taskid: __itt_id,
format: *mut __itt_string_handle,
...
),
>;
extern "C" {
pub static mut __itt_formatted_metadata_add_overlapped_ptr__3_0:
__itt_formatted_metadata_add_overlapped_ptr__3_0_t;
}
pub type __itt_metadata_add_ptr__3_0_t = ::std::option::Option<
unsafe extern "C" fn(
domain: *const __itt_domain,
Expand Down
4 changes: 2 additions & 2 deletions src/ittnotify/ittnotify_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -208,10 +208,10 @@
#define ITT_MAGIC { 0xED, 0xAB, 0xAB, 0xEC, 0x0D, 0xEE, 0xDA, 0x30 }

/* Replace with snapshot date YYYYMMDD for promotion build. */
#define API_VERSION_BUILD 20250113
#define API_VERSION_BUILD 20250429

#ifndef API_VERSION_NUM
#define API_VERSION_NUM 3.25.4
#define API_VERSION_NUM 3.26.0
#endif /* API_VERSION_NUM */

#define API_VERSION "ITT-API-Version " ITT_TO_STR(API_VERSION_NUM) \
Expand Down
6 changes: 6 additions & 0 deletions src/ittnotify/ittnotify_static.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,12 @@ ITT_STUBV(ITTAPI, void, counter_dec_delta_v3, (const __itt_domain *domain, __itt

ITT_STUBV(ITTAPI, void, marker, (const __itt_domain *domain, __itt_id id, __itt_string_handle *name, __itt_scope scope), (ITT_FORMAT domain, id, name, scope), marker, __itt_group_structure, "%p, %lu, %p, %d")

ITT_STUBV(ITTAPI, void, formatted_metadata_add, (const __itt_domain *domain, __itt_string_handle *format, ...), \
(ITT_FORMAT domain, format), formatted_metadata_add, __itt_group_structure, "%p, %p")

ITT_STUBV(ITTAPI, void, formatted_metadata_add_overlapped, (const __itt_domain *domain, __itt_id id, __itt_string_handle *format, ...), \
(ITT_FORMAT domain, id, format), formatted_metadata_add_overlapped, __itt_group_structure, "%p, %lu, %p")

ITT_STUBV(ITTAPI, void, metadata_add, (const __itt_domain *domain, __itt_id id, __itt_string_handle *key, __itt_metadata_type type, size_t count, void *data), (ITT_FORMAT domain, id, key, type, count, data), metadata_add, __itt_group_structure, "%p, %lu, %p, %d, %lu, %p")
#if ITT_PLATFORM==ITT_PLATFORM_WIN
ITT_STUBV(ITTAPI, void, metadata_str_addA, (const __itt_domain *domain, __itt_id id, __itt_string_handle *key, const char* data, size_t length), (ITT_FORMAT domain, id, key, data, length), metadata_str_addA, __itt_group_structure, "%p, %lu, %p, %p, %lu")
Expand Down
20 changes: 20 additions & 0 deletions src/ittnotify_refcol/itt_refcol_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,26 @@ ITT_EXTERN_C void __itt_metadata_add(const __itt_domain *domain, __itt_id id,
}
}

ITT_EXTERN_C void __itt_formatted_metadata_add(const __itt_domain *domain, __itt_string_handle *format, ...)
{
if (domain == NULL || format == NULL)
{
LOG_FUNC_CALL_WARN("Incorrect function call");
return;
}

va_list args;
va_start(args, format);

char formatted_metadata[LOG_BUFFER_MAX_SIZE];
vsnprintf(formatted_metadata, LOG_BUFFER_MAX_SIZE, format->strA, args);

LOG_FUNC_CALL_INFO("functions args: domain=%s formatted_metadata=%s",
domain->nameA, formatted_metadata);

va_end(args);
}

ITT_EXTERN_C void __itt_histogram_submit(__itt_histogram* hist, size_t length, void* x_data, void* y_data)
{
if (hist == NULL)
Expand Down
Loading