2 * Copyright (C) 2020 Francis Deslauriers <francis.deslauriers@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
8 #ifndef LTTNG_MAP_QUERY_INTERNAL_H
9 #define LTTNG_MAP_QUERY_INTERNAL_H
13 #include <common/payload.h>
14 #include <common/payload-view.h>
16 #include <lttng/lttng.h>
17 #include <lttng/map/map-query.h>
19 struct lttng_map_query
{
20 enum lttng_map_query_config_cpu config_cpu
;
21 enum lttng_map_query_config_buffer config_buffer
;
22 enum lttng_map_query_config_app_bitness config_bitness
;
25 * Aggregate the values of all selected CPUs in a single table.
30 * Aggregate the values of all selected bitness in a single table.
32 bool sum_by_app_bitness
;
35 * Aggregate the values of all selected uid or pid in a single table.
41 struct lttng_dynamic_array cpu_array
;
42 struct lttng_dynamic_array uid_array
;
43 struct lttng_dynamic_array pid_array
;
46 struct lttng_map_query_comm
{
47 uint32_t key_filter_length
; /* Include '\0' */
50 uint8_t config_buffer
;
51 uint8_t config_app_bitness
;
54 uint8_t sum_by_app_bitness
;
63 * (cpu_count * int) + (uid_count * uid_t) + (pid_count * pid_t)
69 enum lttng_map_query_config_cpu
lttng_map_query_get_config_cpu(
70 const struct lttng_map_query
*query
);
73 enum lttng_map_query_config_buffer
lttng_map_query_get_config_buffer(
74 const struct lttng_map_query
*query
);
77 enum lttng_map_query_config_app_bitness
lttng_map_query_get_config_app_bitness(
78 const struct lttng_map_query
*query
);
81 bool lttng_map_query_get_config_sum_by_cpu(
82 const struct lttng_map_query
*query
);
85 bool lttng_map_query_get_config_sum_by_pid(
86 const struct lttng_map_query
*query
);
89 bool lttng_map_query_get_config_sum_by_uid(
90 const struct lttng_map_query
*query
);
94 enum lttng_map_query_status
lttng_map_query_set_sum_by_app_bitness(
95 struct lttng_map_query
*query
, bool sum_by_app_bitness
);
99 enum lttng_map_query_status
lttng_map_query_set_sum_by_uid(
100 struct lttng_map_query
*query
, bool sum_by_uid
);
103 bool lttng_map_query_get_config_sum_by_app_bitness(
104 const struct lttng_map_query
*query
);
107 enum lttng_map_query_status
lttng_map_query_get_cpu_count(
108 const struct lttng_map_query
*query
, unsigned int *count
);
111 enum lttng_map_query_status
lttng_map_query_get_uid_count(
112 const struct lttng_map_query
*query
, unsigned int *count
);
115 enum lttng_map_query_status
lttng_map_query_get_pid_count(
116 const struct lttng_map_query
*query
, unsigned int *count
);
119 enum lttng_map_query_status
lttng_map_query_get_cpu_at_index(
120 const struct lttng_map_query
*query
, unsigned int index
,
124 enum lttng_map_query_status
lttng_map_query_get_uid_at_index(
125 const struct lttng_map_query
*query
, unsigned int index
,
129 enum lttng_map_query_status
lttng_map_query_get_pid_at_index(
130 const struct lttng_map_query
*query
, unsigned int index
,
134 enum lttng_map_query_status
lttng_map_query_get_key_filter(
135 const struct lttng_map_query
*query
, const char **key_filter
);
138 ssize_t
lttng_map_query_create_from_payload(struct lttng_payload_view
*view
,
139 struct lttng_map_query
**query
);
142 int lttng_map_query_serialize(const struct lttng_map_query
*query
,
143 struct lttng_payload
*payload
);
145 #endif /* LTTNG_MAP_QUERY_INTERNAL_H */