projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: agent port file is o+w when launching as root
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
notification-thread.cpp
diff --git
a/src/bin/lttng-sessiond/notification-thread.cpp
b/src/bin/lttng-sessiond/notification-thread.cpp
index cd95e68858f58d68521c29e2d752a15f088430dc..7d9f4ed12dd72bae638db763f757ee8ffa7021a0 100644
(file)
--- a/
src/bin/lttng-sessiond/notification-thread.cpp
+++ b/
src/bin/lttng-sessiond/notification-thread.cpp
@@
-18,6
+18,7
@@
#include <common/align.hpp>
#include <common/time.hpp>
#include <sys/stat.h>
#include <common/align.hpp>
#include <common/time.hpp>
#include <sys/stat.h>
+#include <sys/eventfd.h>
#include <time.h>
#include <signal.h>
#include <time.h>
#include <signal.h>
@@
-59,8
+60,11
@@
void notification_thread_handle_destroy(
pthread_mutex_destroy(&handle->cmd_queue.lock);
sem_destroy(&handle->ready);
pthread_mutex_destroy(&handle->cmd_queue.lock);
sem_destroy(&handle->ready);
- if (handle->cmd_queue.event_pipe) {
- lttng_pipe_destroy(handle->cmd_queue.event_pipe);
+ if (handle->cmd_queue.event_fd >= 0) {
+ ret = close(handle->cmd_queue.event_fd);
+ if (ret < 0) {
+ PERROR("Failed to close notification command queue event fd");
+ }
}
if (handle->channel_monitoring_pipes.ust32_consumer >= 0) {
ret = close(handle->channel_monitoring_pipes.ust32_consumer);
}
if (handle->channel_monitoring_pipes.ust32_consumer >= 0) {
ret = close(handle->channel_monitoring_pipes.ust32_consumer);
@@
-92,7
+96,7
@@
struct notification_thread_handle *notification_thread_handle_create(
{
int ret;
struct notification_thread_handle *handle;
{
int ret;
struct notification_thread_handle *handle;
-
struct lttng_pipe *event_pipe = NULL
;
+
int event_fd = -1
;
handle = zmalloc<notification_thread_handle>();
if (!handle) {
handle = zmalloc<notification_thread_handle>();
if (!handle) {
@@
-101,14
+105,13
@@
struct notification_thread_handle *notification_thread_handle_create(
sem_init(&handle->ready, 0, 0);
sem_init(&handle->ready, 0, 0);
- event_
pipe = lttng_pipe_open(FD_CLOEXEC
);
- if (
!event_pipe
) {
-
ERR("event_pipe
creation");
+ event_
fd = eventfd(0, EFD_CLOEXEC | EFD_SEMAPHORE
);
+ if (
event_fd < 0
) {
+
PERROR("event_fd
creation");
goto error;
}
goto error;
}
- handle->cmd_queue.event_pipe = event_pipe;
- event_pipe = NULL;
+ handle->cmd_queue.event_fd = event_fd;
CDS_INIT_LIST_HEAD(&handle->cmd_queue.list);
ret = pthread_mutex_init(&handle->cmd_queue.lock, NULL);
CDS_INIT_LIST_HEAD(&handle->cmd_queue.list);
ret = pthread_mutex_init(&handle->cmd_queue.lock, NULL);
@@
-150,7
+153,6
@@
struct notification_thread_handle *notification_thread_handle_create(
end:
return handle;
error:
end:
return handle;
error:
- lttng_pipe_destroy(event_pipe);
notification_thread_handle_destroy(handle);
return NULL;
}
notification_thread_handle_destroy(handle);
return NULL;
}
@@
-296,7
+298,7
@@
int init_poll_set(struct lttng_poll_event *poll_set,
ERR("Failed to add notification channel socket to pollset");
goto error;
}
ERR("Failed to add notification channel socket to pollset");
goto error;
}
- ret = lttng_poll_add(poll_set,
lttng_pipe_get_readfd(handle->cmd_queue.event_pipe)
,
+ ret = lttng_poll_add(poll_set,
handle->cmd_queue.event_fd
,
LPOLLIN | LPOLLERR);
if (ret < 0) {
ERR("Failed to add notification command queue event fd to pollset");
LPOLLIN | LPOLLERR);
if (ret < 0) {
ERR("Failed to add notification command queue event fd to pollset");
@@
-711,7
+713,7
@@
void *thread_notification(void *data)
ERR("Unexpected poll events %u for notification socket %i", revents, fd);
goto error;
}
ERR("Unexpected poll events %u for notification socket %i", revents, fd);
goto error;
}
- } else if (fd ==
lttng_pipe_get_readfd(handle->cmd_queue.event_pipe)
) {
+ } else if (fd ==
handle->cmd_queue.event_fd
) {
ret = handle_notification_thread_command(handle,
&state);
if (ret < 0) {
ret = handle_notification_thread_command(handle,
&state);
if (ret < 0) {
This page took
0.0264990000000001 seconds
and
4
git commands to generate.