X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fplugin%2Fplugin-dev.h;h=d65ccce5d07ced2f67e69d3aa4b98374b80e9ab8;hb=b6de043b9a9c465bf90cdf9dcee963be08a9e370;hp=5224d466b607d0d8e6442abbe2b4ef15efb0d05d;hpb=d3e4dcd8e7a601e0aa063455147f29fbe051582b;p=babeltrace.git diff --git a/include/babeltrace/plugin/plugin-dev.h b/include/babeltrace/plugin/plugin-dev.h index 5224d466..d65ccce5 100644 --- a/include/babeltrace/plugin/plugin-dev.h +++ b/include/babeltrace/plugin/plugin-dev.h @@ -83,6 +83,15 @@ enum __bt_plugin_descriptor_attribute_type { BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR = 2, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE = 3, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION = 4, + BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION = 5, +}; + +/* Plugin (user) version */ +struct __bt_plugin_descriptor_version { + uint32_t major; + uint32_t minor; + uint32_t patch; + const char *extra; }; /* Plugin attribute (internal use) */ @@ -112,6 +121,9 @@ struct __bt_plugin_descriptor_attribute { /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */ const char *description; + + /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION */ + struct __bt_plugin_descriptor_version version; } value; } __attribute__((packed)); @@ -309,6 +321,21 @@ struct __bt_plugin_component_class_descriptor_attribute { #define BT_PLUGIN_DESCRIPTION_WITH_ID(_id, _x) \ __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _x) +#define __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra) \ + {.major = _major, .minor = _minor, .patch = _patch, .extra = _extra,} + +/* + * Defines a version attribute attached to a specific plugin descriptor. + * + * _id: Plugin descriptor ID (C identifier). + * _major: Plugin's major version (uint32_t). + * _minor: Plugin's minor version (uint32_t). + * _patch: Plugin's patch version (uint32_t). + * _extra: Plugin's version extra information (C string). + */ +#define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \ + __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra)) + /* * Declaration of start and stop symbols of component class descriptors * section. @@ -573,6 +600,17 @@ struct __bt_plugin_component_class_descriptor_attribute { */ #define BT_PLUGIN_DESCRIPTION(_x) BT_PLUGIN_DESCRIPTION_WITH_ID(auto, _x) +/* + * Defines a version attribute attached to the automatic plugin + * descriptor. + * + * _major: Plugin's major version (uint32_t). + * _minor: Plugin's minor version (uint32_t). + * _patch: Plugin's patch version (uint32_t). + * _extra: Plugin's version extra information (C string). + */ +#define BT_PLUGIN_VERSION(_major, _minor, _patch, _extra) BT_PLUGIN_VERSION_WITH_ID(auto, _major, _minor, _patch, _extra) + /* * Defines a source component class attached to the automatic plugin * descriptor. Its ID is the same as its name, hence its name must be a