X-Git-Url: https://git.lttng.org/?p=lttng-modules.git;a=blobdiff_plain;f=include%2Flttng%2Fevents-internal.h;h=0c7628483271c06c0b012444371bbaced4e100a8;hp=6749b38388ac38ce8737a5c11cac43bb63be2a4c;hb=437d5aa59380583ce1cd14d394a53b398be1275d;hpb=d96a4a7a78319be3386b57d9068817e9ffac2a24 diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h index 6749b383..0c762848 100644 --- a/include/lttng/events-internal.h +++ b/include/lttng/events-internal.h @@ -8,4 +8,80 @@ #ifndef _LTTNG_EVENTS_INTERNAL_H #define _LTTNG_EVENTS_INTERNAL_H +#include + +static inline +const struct lttng_kernel_type_integer *lttng_kernel_get_type_integer(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_integer) + return NULL; + return container_of(type, const struct lttng_kernel_type_integer, parent); +} + +static inline +const struct lttng_kernel_type_string *lttng_kernel_get_type_string(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_string) + return NULL; + return container_of(type, const struct lttng_kernel_type_string, parent); +} + +static inline +const struct lttng_kernel_type_enum *lttng_kernel_get_type_enum(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_enum) + return NULL; + return container_of(type, const struct lttng_kernel_type_enum, parent); +} + +static inline +const struct lttng_kernel_type_array *lttng_kernel_get_type_array(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_array) + return NULL; + return container_of(type, const struct lttng_kernel_type_array, parent); +} + +static inline +const struct lttng_kernel_type_sequence *lttng_kernel_get_type_sequence(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_sequence) + return NULL; + return container_of(type, const struct lttng_kernel_type_sequence, parent); +} + +static inline +const struct lttng_kernel_type_struct *lttng_kernel_get_type_struct(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_struct) + return NULL; + return container_of(type, const struct lttng_kernel_type_struct, parent); +} + +static inline +const struct lttng_kernel_type_variant *lttng_kernel_get_type_variant(const struct lttng_kernel_type_common *type) +{ + if (type->type != lttng_kernel_type_variant) + return NULL; + return container_of(type, const struct lttng_kernel_type_variant, parent); +} + +static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kernel_type_common *type) +{ + const struct lttng_kernel_type_integer *type_integer = lttng_kernel_get_type_integer(type); + + if (!type_integer) + return false; + switch (type_integer->size) { + case 8: /* Fall-through. */ + case 16: /* Fall-through. */ + case 32: /* Fall-through. */ + case 64: + break; + default: + return false; + } + return true; +} + #endif /* _LTTNG_EVENTS_INTERNAL_H */