projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanup tracepoint.c
[lttng-ust.git]
/
liblttng-ust
/
ltt-events.c
diff --git
a/liblttng-ust/ltt-events.c
b/liblttng-ust/ltt-events.c
index 477db76f53222d149e1788d14e0b9aa81c7349dc..06d2f89714feeeaa3771361efd15bff5a003f2ad 100644
(file)
--- a/
liblttng-ust/ltt-events.c
+++ b/
liblttng-ust/ltt-events.c
@@
-14,24
+14,28
@@
#include <urcu/list.h>
#include <urcu/hlist.h>
#include <pthread.h>
#include <urcu/list.h>
#include <urcu/hlist.h>
#include <pthread.h>
-#include <urcu-bp.h>
-#include <urcu/compiler.h>
-#include <urcu/uatomic.h>
#include <uuid/uuid.h>
#include <uuid/uuid.h>
-#include <lttng/tracepoint.h>
#include <errno.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <errno.h>
#include <sys/shm.h>
#include <sys/ipc.h>
+#include <stdint.h>
+#include <stddef.h>
+
+#include <urcu-bp.h>
+#include <urcu/compiler.h>
+#include <urcu/uatomic.h>
+#include <urcu/arch.h>
+
+#include <lttng/tracepoint.h>
#include <lttng/ust-events.h>
#include <lttng/ust-events.h>
-#include <lttng/usterr-signal-safe.h>
-#include "lttng/core.h"
+
+#include <usterr-signal-safe.h>
+#include <helper.h>
+
#include "ltt-tracer.h"
#include "ltt-tracer-core.h"
#include "wait.h"
#include "../libringbuffer/shm.h"
#include "ltt-tracer.h"
#include "ltt-tracer-core.h"
#include "wait.h"
#include "../libringbuffer/shm.h"
-#include <stdint.h>
-#include <stddef.h>
-#include <urcu/arch.h>
#include "jhash.h"
/*
#include "jhash.h"
/*
@@
-39,7
+43,7
@@
* control and probe registration. All operations within this file are
* called by the communication thread, under ust_lock protection.
*/
* control and probe registration. All operations within this file are
* called by the communication thread, under ust_lock protection.
*/
-static
DEFINE_MUTEX(sessions_mutex)
;
+static
pthread_mutex_t sessions_mutex = PTHREAD_MUTEX_INITIALIZER
;
void ust_lock(void)
{
void ust_lock(void)
{
@@
-346,25
+350,33
@@
void _ltt_channel_destroy(struct ltt_channel *chan)
/*
* Supports event creation while tracing session is active.
*/
/*
* Supports event creation while tracing session is active.
*/
-struct ltt_event *ltt_event_create(struct ltt_channel *chan,
- struct lttng_ust_event *event_param,
- void *filter)
+int ltt_event_create(struct ltt_channel *chan,
+ struct lttng_ust_event *event_param,
+ void *filter,
+ struct ltt_event **_event)
{
struct ltt_event *event;
{
struct ltt_event *event;
- int ret;
+ int ret
= 0
;
- if (chan->used_event_id == -1UL)
+ if (chan->used_event_id == -1UL) {
+ ret = -ENOMEM;
goto full;
goto full;
+ }
/*
* This is O(n^2) (for each event, the loop is called at event
* creation). Might require a hash if we have lots of events.
*/
/*
* This is O(n^2) (for each event, the loop is called at event
* creation). Might require a hash if we have lots of events.
*/
- cds_list_for_each_entry(event, &chan->session->events, list)
- if (event->desc && !strcmp(event->desc->name, event_param->name))
+ cds_list_for_each_entry(event, &chan->session->events, list) {
+ if (event->desc && !strcmp(event->desc->name, event_param->name)) {
+ ret = -EEXIST;
goto exist;
goto exist;
+ }
+ }
event = zmalloc(sizeof(struct ltt_event));
event = zmalloc(sizeof(struct ltt_event));
- if (!event)
+ if (!event) {
+ ret = -ENOMEM;
goto cache_error;
goto cache_error;
+ }
event->chan = chan;
event->filter = filter;
/*
event->chan = chan;
event->filter = filter;
/*
@@
-397,6
+409,13
@@
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
goto add_pending_error;
}
break;
goto add_pending_error;
}
break;
+ case LTTNG_UST_TRACEPOINT_LOGLEVEL:
+ /*
+ * TODO: add tracepoint loglevel to hash table, with
+ * event info. Enable all events corresponding to
+ * loglevel.
+ */
+ break;
default:
WARN_ON_ONCE(1);
}
default:
WARN_ON_ONCE(1);
}
@@
-406,7
+425,8
@@
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
goto statedump_error;
}
cds_list_add(&event->list, &chan->session->events);
goto statedump_error;
}
cds_list_add(&event->list, &chan->session->events);
- return event;
+ *_event = event;
+ return 0;
statedump_error:
if (event->desc) {
statedump_error:
if (event->desc) {
@@
-421,7
+441,7
@@
register_error:
cache_error:
exist:
full:
cache_error:
exist:
full:
- return
NULL
;
+ return
ret
;
}
/*
}
/*
This page took
0.040745 seconds
and
4
git commands to generate.