/*
- * lttng-context.c
- *
- * LTTng UST trace/channel/event context management.
+ * SPDX-License-Identifier: LGPL-2.1-only
*
* Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; only
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * LTTng UST trace/channel/event context management.
*/
#define _LGPL_SOURCE
#include <lttng/ust-events.h>
#include <lttng/ust-tracer.h>
-#include <lttng/ust-context-provider.h>
+#include <ust-context-provider.h>
#include <lttng/urcu/pointer.h>
+#include <lttng/urcu/urcu-ust.h>
#include <usterr-signal-safe.h>
-#include <helper.h>
+#include <ust-helper.h>
#include <stddef.h>
#include <string.h>
#include <assert.h>
*nf = *f;
lttng_context_update(new_ctx);
lttng_ust_rcu_assign_pointer(*ctx_p, new_ctx);
- lttng_ust_synchronize_trace();
+ lttng_ust_urcu_synchronize_rcu();
if (old_ctx) {
free(old_ctx->fields);
free(old_ctx);
case atype_integer:
field_align = type->u.integer.alignment;
break;
- case atype_array:
- {
- struct lttng_basic_type *btype;
-
- btype = &type->u.legacy.array.elem_type;
- switch (btype->atype) {
- case atype_integer:
- field_align = btype->u.basic.integer.alignment;
- break;
- case atype_string:
- break;
-
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- break;
- }
case atype_array_nestable:
{
const struct lttng_type *nested_type;
case atype_string:
break;
- case atype_array:
case atype_array_nestable:
- case atype_sequence:
case atype_sequence_nestable:
default:
WARN_ON_ONCE(1);
type->u.array_nestable.alignment);
break;
}
- case atype_sequence:
- {
- struct lttng_basic_type *btype;
-
- btype = &type->u.legacy.sequence.length_type;
- switch (btype->atype) {
- case atype_integer:
- field_align = btype->u.basic.integer.alignment;
- break;
-
- case atype_string:
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
-
- btype = &type->u.legacy.sequence.elem_type;
- switch (btype->atype) {
- case atype_integer:
- field_align = max_t(size_t,
- field_align,
- btype->u.basic.integer.alignment);
- break;
-
- case atype_string:
- break;
-
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- break;
- }
case atype_sequence_nestable:
{
const struct lttng_type *nested_type;
case atype_string:
break;
- case atype_array:
case atype_array_nestable:
- case atype_sequence:
case atype_sequence_nestable:
default:
WARN_ON_ONCE(1);
break;
case atype_dynamic:
break;
- case atype_enum:
case atype_enum_nestable:
default:
WARN_ON_ONCE(1);
}
new_ctx->fields = new_fields;
lttng_ust_rcu_assign_pointer(*_ctx, new_ctx);
- lttng_ust_synchronize_trace();
+ lttng_ust_urcu_synchronize_rcu();
free(ctx->fields);
free(ctx);
return 0;