Refactoring: type description structures
[lttng-modules.git] / include / lttng / events-internal.h
CommitLineData
92bc1e23
MD
1/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
2 *
3 * lttng/events-internal.h
4 *
5 * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 */
7
8#ifndef _LTTNG_EVENTS_INTERNAL_H
9#define _LTTNG_EVENTS_INTERNAL_H
10
437d5aa5
MD
11#include <lttng/events.h>
12
13static inline
14const struct lttng_kernel_type_integer *lttng_kernel_get_type_integer(const struct lttng_kernel_type_common *type)
15{
16 if (type->type != lttng_kernel_type_integer)
17 return NULL;
18 return container_of(type, const struct lttng_kernel_type_integer, parent);
19}
20
21static inline
22const struct lttng_kernel_type_string *lttng_kernel_get_type_string(const struct lttng_kernel_type_common *type)
23{
24 if (type->type != lttng_kernel_type_string)
25 return NULL;
26 return container_of(type, const struct lttng_kernel_type_string, parent);
27}
28
29static inline
30const struct lttng_kernel_type_enum *lttng_kernel_get_type_enum(const struct lttng_kernel_type_common *type)
31{
32 if (type->type != lttng_kernel_type_enum)
33 return NULL;
34 return container_of(type, const struct lttng_kernel_type_enum, parent);
35}
36
37static inline
38const struct lttng_kernel_type_array *lttng_kernel_get_type_array(const struct lttng_kernel_type_common *type)
39{
40 if (type->type != lttng_kernel_type_array)
41 return NULL;
42 return container_of(type, const struct lttng_kernel_type_array, parent);
43}
44
45static inline
46const struct lttng_kernel_type_sequence *lttng_kernel_get_type_sequence(const struct lttng_kernel_type_common *type)
47{
48 if (type->type != lttng_kernel_type_sequence)
49 return NULL;
50 return container_of(type, const struct lttng_kernel_type_sequence, parent);
51}
52
53static inline
54const struct lttng_kernel_type_struct *lttng_kernel_get_type_struct(const struct lttng_kernel_type_common *type)
55{
56 if (type->type != lttng_kernel_type_struct)
57 return NULL;
58 return container_of(type, const struct lttng_kernel_type_struct, parent);
59}
60
61static inline
62const struct lttng_kernel_type_variant *lttng_kernel_get_type_variant(const struct lttng_kernel_type_common *type)
63{
64 if (type->type != lttng_kernel_type_variant)
65 return NULL;
66 return container_of(type, const struct lttng_kernel_type_variant, parent);
67}
68
69static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kernel_type_common *type)
70{
71 const struct lttng_kernel_type_integer *type_integer = lttng_kernel_get_type_integer(type);
72
73 if (!type_integer)
74 return false;
75 switch (type_integer->size) {
76 case 8: /* Fall-through. */
77 case 16: /* Fall-through. */
78 case 32: /* Fall-through. */
79 case 64:
80 break;
81 default:
82 return false;
83 }
84 return true;
85}
86
92bc1e23 87#endif /* _LTTNG_EVENTS_INTERNAL_H */
This page took 0.026111 seconds and 4 git commands to generate.