Refactoring: type description structures
[lttng-modules.git] / include / lttng / events-internal.h
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
11 #include <lttng/events.h>
12
13 static inline
14 const 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
21 static inline
22 const 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
29 static inline
30 const 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
37 static inline
38 const 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
45 static inline
46 const 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
53 static inline
54 const 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
61 static inline
62 const 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
69 static 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
87 #endif /* _LTTNG_EVENTS_INTERNAL_H */
This page took 0.030103 seconds and 4 git commands to generate.