* Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#include <string.h>
#include <unistd.h>
#include <lttng/lttng.h>
/*
* Return allocated channel attributes.
*/
-static struct lttng_channel *init_default_attr(int dom)
+struct lttng_channel *channel_new_default_attr(int dom)
{
struct lttng_channel *chan;
return NULL;
}
+/*
+ * Copy two ltt ust channel. Dst and src must be already allocated.
+ */
+int channel_ust_copy(struct ltt_ust_channel *dst,
+ struct ltt_ust_channel *src)
+{
+ struct ltt_ust_event *uevent, *new_uevent;
+
+ memcpy(dst, src, sizeof(struct ltt_ust_channel));
+ CDS_INIT_LIST_HEAD(&dst->events.head);
+
+ cds_list_for_each_entry(uevent, &src->events.head, list) {
+ new_uevent = malloc(sizeof(struct ltt_ust_event));
+ if (new_uevent == NULL) {
+ perror("malloc ltt_ust_event");
+ goto error;
+ }
+
+ memcpy(new_uevent, uevent, sizeof(struct ltt_ust_event));
+ cds_list_add(&new_uevent->list, &dst->events.head);
+ dst->events.count++;
+ }
+
+ return 0;
+
+error:
+ return -1;
+}
+
/*
* Disable kernel channel of the kernel session.
*/
/* Creating channel attributes if needed */
if (attr == NULL) {
- attr = init_default_attr(LTTNG_DOMAIN_KERNEL);
+ attr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL);
if (attr == NULL) {
ret = LTTCOMM_FATAL;
goto error;
/* Creating channel attributes if needed */
if (attr == NULL) {
- attr = init_default_attr(LTTNG_DOMAIN_UST_PID);
+ attr = channel_new_default_attr(LTTNG_DOMAIN_UST_PID);
if (attr == NULL) {
ret = LTTCOMM_FATAL;
goto error;