0002-trace-cmd-make-it-build-against-musl-C-library.patch 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. From 1a000636c1828eecdcec5360a51623ef4ffbff04 Mon Sep 17 00:00:00 2001
  2. From: Beniamin Sandu <beniaminsandu@gmail.com>
  3. Date: Mon, 30 Nov 2020 14:27:55 +0200
  4. Subject: [PATCH] trace-cmd: make it build against musl C library
  5. * add some missing headers and macros
  6. * set pthread affinity using pthread_setaffinity_np after creating the thread
  7. instead of pthread_attr_setaffinity_np (which seems to not be implemented
  8. in musl)
  9. Tested using https://musl.cc/x86_64-linux-musl-native.tgz
  10. Link: https://lore.kernel.org/linux-trace-devel/20201130122755.31000-1-beniaminsandu@gmail.com
  11. Reviewed-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
  12. Signed-off-by: Beniamin Sandu <beniaminsandu@gmail.com>
  13. [ Fixed a whitespace issue ]
  14. Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
  15. [Retrieved from:
  16. https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/commit/?id=1a000636c1828eecdcec5360a51623ef4ffbff04]
  17. Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  18. ---
  19. .../include/private/trace-cmd-private.h | 1 +
  20. lib/trace-cmd/include/trace-cmd-local.h | 1 +
  21. lib/tracefs/include/tracefs-local.h | 12 ++++++++++++
  22. lib/tracefs/tracefs-events.c | 1 +
  23. tracecmd/include/trace-local.h | 1 +
  24. tracecmd/trace-tsync.c | 16 +++++++++++-----
  25. 6 files changed, 27 insertions(+), 5 deletions(-)
  26. diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h
  27. index 458760e5..a0dac5da 100644
  28. --- a/lib/trace-cmd/include/private/trace-cmd-private.h
  29. +++ b/lib/trace-cmd/include/private/trace-cmd-private.h
  30. @@ -6,6 +6,7 @@
  31. #ifndef _TRACE_CMD_PRIVATE_H
  32. #define _TRACE_CMD_PRIVATE_H
  33. +#include <sys/types.h>
  34. #include "traceevent/event-parse.h"
  35. #include "trace-cmd/trace-cmd.h"
  36. diff --git a/lib/trace-cmd/include/trace-cmd-local.h b/lib/trace-cmd/include/trace-cmd-local.h
  37. index d0a7365a..0cd27441 100644
  38. --- a/lib/trace-cmd/include/trace-cmd-local.h
  39. +++ b/lib/trace-cmd/include/trace-cmd-local.h
  40. @@ -6,6 +6,7 @@
  41. #ifndef _TRACE_CMD_LOCAL_H
  42. #define _TRACE_CMD_LOCAL_H
  43. +#include <byteswap.h>
  44. #include "trace-cmd-private.h"
  45. /* Can be overridden */
  46. diff --git a/lib/tracefs/include/tracefs-local.h b/lib/tracefs/include/tracefs-local.h
  47. index 9cc371b4..bdbf89e8 100644
  48. --- a/lib/tracefs/include/tracefs-local.h
  49. +++ b/lib/tracefs/include/tracefs-local.h
  50. @@ -13,4 +13,16 @@ void warning(const char *fmt, ...);
  51. int str_read_file(const char *file, char **buffer);
  52. char *trace_append_file(const char *dir, const char *name);
  53. +#ifndef ACCESSPERMS
  54. +#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
  55. +#endif
  56. +
  57. +#ifndef ALLPERMS
  58. +#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
  59. +#endif
  60. +
  61. +#ifndef DEFFILEMODE
  62. +#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) /* 0666*/
  63. +#endif
  64. +
  65. #endif /* _TRACE_FS_LOCAL_H */
  66. diff --git a/lib/tracefs/tracefs-events.c b/lib/tracefs/tracefs-events.c
  67. index 80a25ee5..a4e5215f 100644
  68. --- a/lib/tracefs/tracefs-events.c
  69. +++ b/lib/tracefs/tracefs-events.c
  70. @@ -13,6 +13,7 @@
  71. #include <errno.h>
  72. #include <sys/stat.h>
  73. #include <fcntl.h>
  74. +#include <limits.h>
  75. #include "kbuffer.h"
  76. #include "tracefs.h"
  77. diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h
  78. index 28d1b4e0..85c7e03e 100644
  79. --- a/tracecmd/include/trace-local.h
  80. +++ b/tracecmd/include/trace-local.h
  81. @@ -8,6 +8,7 @@
  82. #include <sys/types.h>
  83. #include <dirent.h> /* for DIR */
  84. +#include <limits.h>
  85. #include "trace-cmd-private.h"
  86. #include "event-utils.h"
  87. diff --git a/tracecmd/trace-tsync.c b/tracecmd/trace-tsync.c
  88. index e639788d..8b9083ae 100644
  89. --- a/tracecmd/trace-tsync.c
  90. +++ b/tracecmd/trace-tsync.c
  91. @@ -104,13 +104,16 @@ int tracecmd_host_tsync(struct buffer_instance *instance,
  92. pthread_attr_init(&attrib);
  93. pthread_attr_setdetachstate(&attrib, PTHREAD_CREATE_JOINABLE);
  94. - if (!get_first_cpu(&pin_mask, &mask_size))
  95. - pthread_attr_setaffinity_np(&attrib, mask_size, pin_mask);
  96. ret = pthread_create(&instance->tsync_thread, &attrib,
  97. tsync_host_thread, &instance->tsync);
  98. - if (!ret)
  99. +
  100. + if (!ret) {
  101. + if (!get_first_cpu(&pin_mask, &mask_size))
  102. + pthread_setaffinity_np(instance->tsync_thread, mask_size, pin_mask);
  103. instance->tsync_thread_running = true;
  104. + }
  105. +
  106. if (pin_mask)
  107. CPU_FREE(pin_mask);
  108. pthread_attr_destroy(&attrib);
  109. @@ -243,11 +246,14 @@ unsigned int tracecmd_guest_tsync(char *tsync_protos,
  110. pthread_attr_init(&attrib);
  111. tsync->sync_proto = proto;
  112. pthread_attr_setdetachstate(&attrib, PTHREAD_CREATE_JOINABLE);
  113. - if (!get_first_cpu(&pin_mask, &mask_size))
  114. - pthread_attr_setaffinity_np(&attrib, mask_size, pin_mask);
  115. ret = pthread_create(thr_id, &attrib, tsync_agent_thread, tsync);
  116. + if (!ret) {
  117. + if (!get_first_cpu(&pin_mask, &mask_size))
  118. + pthread_setaffinity_np(*thr_id, mask_size, pin_mask);
  119. + }
  120. +
  121. if (pin_mask)
  122. CPU_FREE(pin_mask);
  123. pthread_attr_destroy(&attrib);