MI: implement all objects related to trigger machine interface
[lttng-tools.git] / include / lttng / kernel-probe-internal.h
CommitLineData
808cb744
JR
1/*
2 * Copyright (C) 2020 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-only
5 *
6 */
7
8#ifndef LTTNG_KERNEL_PROBE_INTERNAL_H
9#define LTTNG_KERNEL_PROBE_INTERNAL_H
10
11#include <common/fd-handle.h>
12#include <common/macros.h>
13#include <lttng/kernel-probe.h>
14#include <stdbool.h>
15#include <stdint.h>
16#include <sys/types.h>
17
18struct lttng_payload;
19struct lttng_payload_view;
20struct lttng_dynamic_buffer;
0f7c2963 21struct mi_writer;
808cb744
JR
22
23typedef bool (*kernel_probe_location_equal_cb)(
24 const struct lttng_kernel_probe_location *a,
25 const struct lttng_kernel_probe_location *b);
26typedef int (*kernel_probe_location_serialize_cb)(
27 const struct lttng_kernel_probe_location *kernel_probe_location,
28 struct lttng_payload *payload);
29typedef bool (*kernel_probe_location_equal_cb)(
30 const struct lttng_kernel_probe_location *a,
31 const struct lttng_kernel_probe_location *b);
32typedef ssize_t (*kernel_probe_location_create_from_payload_cb)(
33 struct lttng_payload_view *view,
34 struct lttng_kernel_probe_location **kernel_probe_location);
959e3c66
JR
35typedef unsigned long (*kernel_probe_location_hash_cb)(
36 const struct lttng_kernel_probe_location *location);
0f7c2963
JR
37typedef enum lttng_error_code (*kernel_probe_location_mi_serialize_cb)(
38 const struct lttng_kernel_probe_location *location,
39 struct mi_writer *writer);
808cb744
JR
40
41struct lttng_kernel_probe_location_comm {
42 /* enum lttng_kernel_probe_location_type */
43 int8_t type;
44 /*
45 * Payload is composed of, in that order,
46 * - type-specific payload
47 */
48 char payload[];
49} LTTNG_PACKED;
50
51struct lttng_kernel_probe_location_symbol_comm {
52 /* Includes the trailing \0. */
53 uint32_t symbol_len;
54 /* The offset from the symbol. */
55 uint64_t offset;
56 /*
57 * Payload is composed of, in that order,
58 * - symbol name (with trailing \0).
59 */
60 char payload[];
61} LTTNG_PACKED;
62
63struct lttng_kernel_probe_location_address_comm {
64 uint64_t address;
65} LTTNG_PACKED;
66
67/* Common ancestor of all kernel probe locations. */
68struct lttng_kernel_probe_location {
69 enum lttng_kernel_probe_location_type type;
70 kernel_probe_location_equal_cb equal;
71 kernel_probe_location_serialize_cb serialize;
959e3c66 72 kernel_probe_location_hash_cb hash;
0f7c2963 73 kernel_probe_location_mi_serialize_cb mi_serialize;
808cb744
JR
74};
75
76struct lttng_kernel_probe_location_symbol {
77 struct lttng_kernel_probe_location parent;
78 char *symbol_name;
79 uint64_t offset;
80};
81
82struct lttng_kernel_probe_location_address {
83 struct lttng_kernel_probe_location parent;
84 uint64_t address;
85};
86
87LTTNG_HIDDEN
88int lttng_kernel_probe_location_serialize(
89 const struct lttng_kernel_probe_location *location,
90 struct lttng_payload *payload);
91
92LTTNG_HIDDEN
93ssize_t lttng_kernel_probe_location_create_from_payload(
94 struct lttng_payload_view *view,
95 struct lttng_kernel_probe_location **probe_location);
96
97LTTNG_HIDDEN
98bool lttng_kernel_probe_location_is_equal(
99 const struct lttng_kernel_probe_location *a,
100 const struct lttng_kernel_probe_location *b);
101
077192fd
JR
102LTTNG_HIDDEN
103struct lttng_kernel_probe_location *lttng_kernel_probe_location_copy(
104 const struct lttng_kernel_probe_location *location);
105
959e3c66
JR
106LTTNG_HIDDEN
107unsigned long lttng_kernel_probe_location_hash(
108 const struct lttng_kernel_probe_location *location);
109
0f7c2963
JR
110LTTNG_HIDDEN
111enum lttng_error_code lttng_kernel_probe_location_mi_serialize(
112 const struct lttng_kernel_probe_location *location,
113 struct mi_writer *writer);
114
808cb744 115#endif /* LTTNG_KERNEL_PROBE_INTERNAL_H */
This page took 0.029944 seconds and 4 git commands to generate.