diff --git a/include/ittnotify.h b/include/ittnotify.h index 898f8bb6..b4d75be1 100644 --- a/include/ittnotify.h +++ b/include/ittnotify.h @@ -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) @@ -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. diff --git a/rust/ittapi-sys/src/linux/ittnotify_bindings.rs b/rust/ittapi-sys/src/linux/ittnotify_bindings.rs index 74a793a4..8de7b41b 100644 --- a/rust/ittapi-sys/src/linux/ittnotify_bindings.rs +++ b/rust/ittapi-sys/src/linux/ittnotify_bindings.rs @@ -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, diff --git a/rust/ittapi-sys/src/macos/ittnotify_bindings.rs b/rust/ittapi-sys/src/macos/ittnotify_bindings.rs index 36afaaef..87ceb933 100644 --- a/rust/ittapi-sys/src/macos/ittnotify_bindings.rs +++ b/rust/ittapi-sys/src/macos/ittnotify_bindings.rs @@ -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, diff --git a/rust/ittapi-sys/src/windows/ittnotify_bindings.rs b/rust/ittapi-sys/src/windows/ittnotify_bindings.rs index c9c844b4..8cd76603 100644 --- a/rust/ittapi-sys/src/windows/ittnotify_bindings.rs +++ b/rust/ittapi-sys/src/windows/ittnotify_bindings.rs @@ -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, diff --git a/src/ittnotify/ittnotify_config.h b/src/ittnotify/ittnotify_config.h index 64c91ef5..7b0d855c 100644 --- a/src/ittnotify/ittnotify_config.h +++ b/src/ittnotify/ittnotify_config.h @@ -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) \ diff --git a/src/ittnotify/ittnotify_static.h b/src/ittnotify/ittnotify_static.h index 60726872..27081cb5 100644 --- a/src/ittnotify/ittnotify_static.h +++ b/src/ittnotify/ittnotify_static.h @@ -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") diff --git a/src/ittnotify_refcol/itt_refcol_impl.c b/src/ittnotify_refcol/itt_refcol_impl.c index 875449f4..115ea57b 100644 --- a/src/ittnotify_refcol/itt_refcol_impl.c +++ b/src/ittnotify_refcol/itt_refcol_impl.c @@ -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)