DBG("[thread] Dispatch UST command started");
- while (!CMM_LOAD_SHARED(dispatch_thread_exit)) {
+ for (;;) {
health_code_update();
/* Atomically prepare the queue futex */
futex_nto1_prepare(&ust_cmd_queue.futex);
+ if (CMM_LOAD_SHARED(dispatch_thread_exit)) {
+ break;
+ }
+
do {
struct ust_app *app = NULL;
ust_cmd = NULL;
goto error_modules;
}
+ ret = kernel_supports_ring_buffer_snapshot_sample_positions(
+ kernel_tracer_fd);
+ if (ret < 0) {
+ goto error_modules;
+ }
+
+ if (ret < 1) {
+ WARN("Kernel tracer does not support buffer monitoring. "
+ "The monitoring timer of channels in the kernel domain "
+ "will be set to 0 (disabled).");
+ }
+
DBG("Kernel tracer fd %d", kernel_tracer_fd);
return 0;
DBG2("Creating consumer directory: %s", path);
ret = mkdir(path, S_IRWXU | S_IRGRP | S_IXGRP);
- if (ret < 0) {
- if (errno != EEXIST) {
- PERROR("mkdir");
- ERR("Failed to create %s", path);
- goto error;
- }
- ret = -1;
+ if (ret < 0 && errno != EEXIST) {
+ PERROR("mkdir");
+ ERR("Failed to create %s", path);
+ goto error;
}
if (is_root) {
ret = chown(path, 0, utils_get_group_id(tracing_group_name));