123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- From 1a000636c1828eecdcec5360a51623ef4ffbff04 Mon Sep 17 00:00:00 2001
- From: Beniamin Sandu <beniaminsandu@gmail.com>
- Date: Mon, 30 Nov 2020 14:27:55 +0200
- Subject: [PATCH] trace-cmd: make it build against musl C library
- * add some missing headers and macros
- * set pthread affinity using pthread_setaffinity_np after creating the thread
- instead of pthread_attr_setaffinity_np (which seems to not be implemented
- in musl)
- Tested using https://musl.cc/x86_64-linux-musl-native.tgz
- Link: https://lore.kernel.org/linux-trace-devel/20201130122755.31000-1-beniaminsandu@gmail.com
- Reviewed-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
- Signed-off-by: Beniamin Sandu <beniaminsandu@gmail.com>
- [ Fixed a whitespace issue ]
- Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
- [Retrieved from:
- https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/commit/?id=1a000636c1828eecdcec5360a51623ef4ffbff04]
- Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
- ---
- .../include/private/trace-cmd-private.h | 1 +
- lib/trace-cmd/include/trace-cmd-local.h | 1 +
- lib/tracefs/include/tracefs-local.h | 12 ++++++++++++
- lib/tracefs/tracefs-events.c | 1 +
- tracecmd/include/trace-local.h | 1 +
- tracecmd/trace-tsync.c | 16 +++++++++++-----
- 6 files changed, 27 insertions(+), 5 deletions(-)
- diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h
- index 458760e5..a0dac5da 100644
- --- a/lib/trace-cmd/include/private/trace-cmd-private.h
- +++ b/lib/trace-cmd/include/private/trace-cmd-private.h
- @@ -6,6 +6,7 @@
- #ifndef _TRACE_CMD_PRIVATE_H
- #define _TRACE_CMD_PRIVATE_H
-
- +#include <sys/types.h>
- #include "traceevent/event-parse.h"
- #include "trace-cmd/trace-cmd.h"
-
- diff --git a/lib/trace-cmd/include/trace-cmd-local.h b/lib/trace-cmd/include/trace-cmd-local.h
- index d0a7365a..0cd27441 100644
- --- a/lib/trace-cmd/include/trace-cmd-local.h
- +++ b/lib/trace-cmd/include/trace-cmd-local.h
- @@ -6,6 +6,7 @@
- #ifndef _TRACE_CMD_LOCAL_H
- #define _TRACE_CMD_LOCAL_H
-
- +#include <byteswap.h>
- #include "trace-cmd-private.h"
-
- /* Can be overridden */
- diff --git a/lib/tracefs/include/tracefs-local.h b/lib/tracefs/include/tracefs-local.h
- index 9cc371b4..bdbf89e8 100644
- --- a/lib/tracefs/include/tracefs-local.h
- +++ b/lib/tracefs/include/tracefs-local.h
- @@ -13,4 +13,16 @@ void warning(const char *fmt, ...);
- int str_read_file(const char *file, char **buffer);
- char *trace_append_file(const char *dir, const char *name);
-
- +#ifndef ACCESSPERMS
- +#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
- +#endif
- +
- +#ifndef ALLPERMS
- +#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
- +#endif
- +
- +#ifndef DEFFILEMODE
- +#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) /* 0666*/
- +#endif
- +
- #endif /* _TRACE_FS_LOCAL_H */
- diff --git a/lib/tracefs/tracefs-events.c b/lib/tracefs/tracefs-events.c
- index 80a25ee5..a4e5215f 100644
- --- a/lib/tracefs/tracefs-events.c
- +++ b/lib/tracefs/tracefs-events.c
- @@ -13,6 +13,7 @@
- #include <errno.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- +#include <limits.h>
-
- #include "kbuffer.h"
- #include "tracefs.h"
- diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h
- index 28d1b4e0..85c7e03e 100644
- --- a/tracecmd/include/trace-local.h
- +++ b/tracecmd/include/trace-local.h
- @@ -8,6 +8,7 @@
-
- #include <sys/types.h>
- #include <dirent.h> /* for DIR */
- +#include <limits.h>
-
- #include "trace-cmd-private.h"
- #include "event-utils.h"
- diff --git a/tracecmd/trace-tsync.c b/tracecmd/trace-tsync.c
- index e639788d..8b9083ae 100644
- --- a/tracecmd/trace-tsync.c
- +++ b/tracecmd/trace-tsync.c
- @@ -104,13 +104,16 @@ int tracecmd_host_tsync(struct buffer_instance *instance,
-
- pthread_attr_init(&attrib);
- pthread_attr_setdetachstate(&attrib, PTHREAD_CREATE_JOINABLE);
- - if (!get_first_cpu(&pin_mask, &mask_size))
- - pthread_attr_setaffinity_np(&attrib, mask_size, pin_mask);
-
- ret = pthread_create(&instance->tsync_thread, &attrib,
- tsync_host_thread, &instance->tsync);
- - if (!ret)
- +
- + if (!ret) {
- + if (!get_first_cpu(&pin_mask, &mask_size))
- + pthread_setaffinity_np(instance->tsync_thread, mask_size, pin_mask);
- instance->tsync_thread_running = true;
- + }
- +
- if (pin_mask)
- CPU_FREE(pin_mask);
- pthread_attr_destroy(&attrib);
- @@ -243,11 +246,14 @@ unsigned int tracecmd_guest_tsync(char *tsync_protos,
- pthread_attr_init(&attrib);
- tsync->sync_proto = proto;
- pthread_attr_setdetachstate(&attrib, PTHREAD_CREATE_JOINABLE);
- - if (!get_first_cpu(&pin_mask, &mask_size))
- - pthread_attr_setaffinity_np(&attrib, mask_size, pin_mask);
-
- ret = pthread_create(thr_id, &attrib, tsync_agent_thread, tsync);
-
- + if (!ret) {
- + if (!get_first_cpu(&pin_mask, &mask_size))
- + pthread_setaffinity_np(*thr_id, mask_size, pin_mask);
- + }
- +
- if (pin_mask)
- CPU_FREE(pin_mask);
- pthread_attr_destroy(&attrib);
|