635d3e3fbc65bdda94386ec1111ca92e45d01fb5
2 * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
9 #include <common/dynamic-array.h>
10 #include <common/dynamic-buffer.h>
11 #include <common/error.h>
14 void lttng_payload_init(struct lttng_payload
*payload
)
17 lttng_dynamic_buffer_init(&payload
->buffer
);
18 lttng_dynamic_array_init(&payload
->_fds
, sizeof(int), NULL
);
22 int lttng_payload_copy(const struct lttng_payload
*src_payload
,
23 struct lttng_payload
*dst_payload
)
28 lttng_payload_init(dst_payload
);
29 ret
= lttng_dynamic_buffer_append_buffer(
30 &dst_payload
->buffer
, &src_payload
->buffer
);
35 for (i
= 0; i
< lttng_dynamic_array_get_count(&src_payload
->_fds
);
38 const int src_fd
= *((int *) lttng_dynamic_array_get_element(
39 &src_payload
->_fds
, i
));
43 PERROR("Failed to duplicate file descriptor while copying a payload");
48 ret
= lttng_payload_push_fd(dst_payload
, dst_fd
);
50 const int close_ret
= close(dst_fd
);
53 PERROR("Failed to close duplicated file descriptor while copying a payload");
63 lttng_payload_reset(dst_payload
);
68 void lttng_payload_reset(struct lttng_payload
*payload
)
74 lttng_dynamic_buffer_reset(&payload
->buffer
);
75 lttng_dynamic_array_reset(&payload
->_fds
);
79 int lttng_payload_push_fd(struct lttng_payload
*payload
, int fd
)
88 ret
= lttng_dynamic_array_add_element(&payload
->_fds
, &fd
);
This page took 0.051763 seconds and 4 git commands to generate.