projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix strlen_user fault space reservation
[lttng-modules.git]
/
ltt-events.c
diff --git
a/ltt-events.c
b/ltt-events.c
index 9c4ba27bc2300012ebbfa1a631451e01d0f3db18..42299142ecf274b00ad758596b856ccf902a6186 100644
(file)
--- a/
ltt-events.c
+++ b/
ltt-events.c
@@
-66,6
+66,10
@@
void ltt_session_destroy(struct ltt_session *session)
mutex_lock(&sessions_mutex);
ACCESS_ONCE(session->active) = 0;
mutex_lock(&sessions_mutex);
ACCESS_ONCE(session->active) = 0;
+ list_for_each_entry(chan, &session->chan, list) {
+ ret = lttng_syscalls_unregister(chan);
+ WARN_ON(ret);
+ }
list_for_each_entry(event, &session->events, list) {
ret = _ltt_event_unregister(event);
WARN_ON(ret);
list_for_each_entry(event, &session->events, list) {
ret = _ltt_event_unregister(event);
WARN_ON(ret);
@@
-262,7
+266,8
@@
void _ltt_channel_destroy(struct ltt_channel *chan)
*/
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
struct lttng_kernel_event *event_param,
*/
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
struct lttng_kernel_event *event_param,
- void *filter)
+ void *filter,
+ const struct lttng_event_desc *internal_desc)
{
struct ltt_event *event;
int ret;
{
struct ltt_event *event;
int ret;
@@
-361,6
+366,11
@@
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
ret = try_module_get(event->desc->owner);
WARN_ON_ONCE(!ret);
break;
ret = try_module_get(event->desc->owner);
WARN_ON_ONCE(!ret);
break;
+ case LTTNG_KERNEL_NOOP:
+ event->desc = internal_desc;
+ if (!event->desc)
+ goto register_error;
+ break;
default:
WARN_ON_ONCE(1);
}
default:
WARN_ON_ONCE(1);
}
@@
-372,10
+382,7
@@
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
return event;
statedump_error:
return event;
statedump_error:
- WARN_ON_ONCE(tracepoint_probe_unregister(event_param->name,
- event->desc->probe_callback,
- event));
- ltt_event_put(event->desc);
+ /* If a statedump error occurs, events will not be readable. */
register_error:
kmem_cache_free(event_cache, event);
cache_error:
register_error:
kmem_cache_free(event_cache, event);
cache_error:
@@
-412,6
+419,9
@@
int _ltt_event_unregister(struct ltt_event *event)
lttng_ftrace_unregister(event);
ret = 0;
break;
lttng_ftrace_unregister(event);
ret = 0;
break;
+ case LTTNG_KERNEL_NOOP:
+ ret = 0;
+ break;
default:
WARN_ON_ONCE(1);
}
default:
WARN_ON_ONCE(1);
}
@@
-440,6
+450,8
@@
void _ltt_event_destroy(struct ltt_event *event)
module_put(event->desc->owner);
lttng_ftrace_destroy_private(event);
break;
module_put(event->desc->owner);
lttng_ftrace_destroy_private(event);
break;
+ case LTTNG_KERNEL_NOOP:
+ break;
default:
WARN_ON_ONCE(1);
}
default:
WARN_ON_ONCE(1);
}
@@
-487,7
+499,7
@@
int lttng_metadata_printf(struct ltt_session *session,
* we need to bail out after timeout or being
* interrupted.
*/
* we need to bail out after timeout or being
* interrupted.
*/
- waitret = wait_event_interruptible_timeout(*chan->ops->get_
reader_wait_queue(chan->chan
),
+ waitret = wait_event_interruptible_timeout(*chan->ops->get_
writer_buf_wait_queue(chan->chan, -1
),
({
ret = chan->ops->event_reserve(&ctx, 0);
ret != -ENOBUFS || !ret;
({
ret = chan->ops->event_reserve(&ctx, 0);
ret != -ENOBUFS || !ret;
@@
-518,7
+530,7
@@
int _ltt_field_statedump(struct ltt_session *session,
switch (field->type.atype) {
case atype_integer:
ret = lttng_metadata_printf(session,
switch (field->type.atype) {
case atype_integer:
ret = lttng_metadata_printf(session,
- " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s;\n",
+ " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s }
_
%s;\n",
field->type.u.basic.integer.size,
field->type.u.basic.integer.alignment,
field->type.u.basic.integer.signedness,
field->type.u.basic.integer.size,
field->type.u.basic.integer.alignment,
field->type.u.basic.integer.signedness,
@@
-537,7
+549,7
@@
int _ltt_field_statedump(struct ltt_session *session,
break;
case atype_enum:
ret = lttng_metadata_printf(session,
break;
case atype_enum:
ret = lttng_metadata_printf(session,
- " %s %s;\n",
+ " %s
_
%s;\n",
field->type.u.basic.enumeration.name,
field->name);
break;
field->type.u.basic.enumeration.name,
field->name);
break;
@@
-547,7
+559,7
@@
int _ltt_field_statedump(struct ltt_session *session,
elem_type = &field->type.u.array.elem_type;
ret = lttng_metadata_printf(session,
elem_type = &field->type.u.array.elem_type;
ret = lttng_metadata_printf(session,
- " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s[%u];\n",
+ " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s }
_
%s[%u];\n",
elem_type->u.basic.integer.size,
elem_type->u.basic.integer.alignment,
elem_type->u.basic.integer.signedness,
elem_type->u.basic.integer.size,
elem_type->u.basic.integer.alignment,
elem_type->u.basic.integer.signedness,
@@
-593,7
+605,7
@@
int _ltt_field_statedump(struct ltt_session *session,
return ret;
ret = lttng_metadata_printf(session,
return ret;
ret = lttng_metadata_printf(session,
- " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s[ __%s_length ];\n",
+ " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s }
_
%s[ __%s_length ];\n",
elem_type->u.basic.integer.size,
(unsigned int) elem_type->u.basic.integer.alignment,
elem_type->u.basic.integer.signedness,
elem_type->u.basic.integer.size,
(unsigned int) elem_type->u.basic.integer.alignment,
elem_type->u.basic.integer.signedness,
@@
-616,7
+628,7
@@
int _ltt_field_statedump(struct ltt_session *session,
case atype_string:
/* Default encoding is UTF8 */
ret = lttng_metadata_printf(session,
case atype_string:
/* Default encoding is UTF8 */
ret = lttng_metadata_printf(session,
- " string%s %s;\n",
+ " string%s
_
%s;\n",
field->type.u.basic.string.encoding == lttng_encode_ASCII ?
" { encoding = ASCII; }" : "",
field->name);
field->type.u.basic.string.encoding == lttng_encode_ASCII ?
" { encoding = ASCII; }" : "",
field->name);
This page took
0.025061 seconds
and
4
git commands to generate.