{
int nesting;
struct lttng_cs *cs;
- struct field_data *fdata = field->private;
+ struct field_data *fdata = field->priv;
/*
* get_cpu() is not required, preemption is already
{
size_t size = 0;
struct stack_trace *trace;
- struct field_data *fdata = field->private;
+ struct field_data *fdata = field->priv;
/* do not write data if no space is available */
trace = stack_trace_context(field, ctx);
static
void lttng_callstack_destroy(struct lttng_ctx_field *field)
{
- struct field_data *fdata = field->private;
+ struct field_data *fdata = field->priv;
field_data_free(fdata);
}
if (!field)
return -ENOMEM;
if (lttng_find_context(*ctx, ctx_name)) {
- printk("%s lttng_find_context failed\n", ctx_name);
ret = -EEXIST;
goto error_find;
}
field->get_size_arg = lttng_callstack_get_size;
field->record = lttng_callstack_record;
- field->private = fdata;
+ field->priv = fdata;
field->destroy = lttng_callstack_destroy;
wrapper_vmalloc_sync_all();
- printk("lttng add-context %s\n", ctx_name);
return 0;
error_create:
struct lttng_perf_counter_field *perf_counter;
} u;
void (*destroy)(struct lttng_ctx_field *field);
- /* private data to keep state between get_size and record */
- void *private;
+ /*
+ * Private data to keep state between get_size and record.
+ * User must perform its own synchronization to protect against
+ * concurrent and reentrant contexts.
+ */
+ void *priv;
};
struct lttng_ctx {