From: "Yordan Karadzhov (VMware)" <y.karadz@gmail.com>
To: rostedt@goodmis.org
Cc: linux-trace-devel@vger.kernel.org,
"Yordan Karadzhov (VMware)" <y.karadz@gmail.com>
Subject: [PATCH v7 03/32] kernel-shark: Use libtraceevent and libtracefs
Date: Fri, 11 Dec 2020 17:07:27 +0200 [thread overview]
Message-ID: <20201211150756.577366-4-y.karadz@gmail.com> (raw)
In-Reply-To: <20201211150756.577366-1-y.karadz@gmail.com>
libtraceevent and libtracefs are now stand-alone libraries, independent
form trace-cmd. Start building and linking KernelShark against those
independent libraries.
Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
---
CMakeLists.txt | 8 +++-
build/FindTraceCmd.cmake | 53 ++-------------------------
build/FindTraceEvent.cmake | 75 ++++++++++++++++++++++++++++++++++++++
build/FindTraceFS.cmake | 75 ++++++++++++++++++++++++++++++++++++++
src/CMakeLists.txt | 4 +-
src/libkshark.c | 10 ++---
6 files changed, 166 insertions(+), 59 deletions(-)
create mode 100644 build/FindTraceEvent.cmake
create mode 100644 build/FindTraceFS.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e730398..007f46a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,6 +22,11 @@ if (NOT _LIBDIR)
endif (NOT _LIBDIR)
include(${KS_DIR}/build/FindTraceCmd.cmake)
+
+set(CMAKE_MODULE_PATH "${KS_DIR}/build")
+find_package(TraceEvent REQUIRED)
+find_package(TraceFS REQUIRED)
+
include(${KS_DIR}/build/FindJSONC.cmake)
find_package(Doxygen)
@@ -80,8 +85,7 @@ endif (CMAKE_BUILD_TYPE MATCHES Package)
include_directories(${KS_DIR}/src/
${KS_DIR}/build/src/
${JSONC_INCLUDE_DIR}
- ${TRACECMD_INCLUDE_DIR}
- ${TRACEFS_INCLUDE_DIR})
+ ${TRACECMD_INCLUDE_DIR})
message("")
message(STATUS "C flags : " ${CMAKE_C_FLAGS})
diff --git a/build/FindTraceCmd.cmake b/build/FindTraceCmd.cmake
index 02f4529..5df2789 100644
--- a/build/FindTraceCmd.cmake
+++ b/build/FindTraceCmd.cmake
@@ -32,30 +32,15 @@ find_path(TRACECMD_INCLUDE_DIR NAMES trace-cmd/trace-cmd.h
PATHS $ENV{TRACE_CMD}/include/
NO_DEFAULT_PATH)
-find_path(TRACEFS_INCLUDE_DIR NAMES tracefs/tracefs.h
- PATHS $ENV{TRACE_CMD}/include/
- NO_DEFAULT_PATH)
-
find_library(TRACECMD_LIBRARY NAMES trace-cmd/libtracecmd.a
PATHS $ENV{TRACE_CMD}/lib/
NO_DEFAULT_PATH)
-find_library(TRACEFS_LIBRARY NAMES tracefs/libtracefs.a
- PATHS $ENV{TRACE_CMD}/lib/
- NO_DEFAULT_PATH)
-
-find_library(TRACEEVENT_LIBRARY NAMES traceevent/libtraceevent.a
- PATHS $ENV{TRACE_CMD}/lib/
- NO_DEFAULT_PATH)
-
# If not found, search in the default system paths. Note that if the previous
# search was successful "find_path" will do nothing this time.
-find_program(TRACECMD_EXECUTABLE NAMES trace-cmd)
-find_path(TRACECMD_INCLUDE_DIR NAMES trace-cmd/trace-cmd.h)
-find_path(TRACEFS_INCLUDE_DIR NAMES tracefs/tracefs.h)
-find_library(TRACECMD_LIBRARY NAMES trace-cmd/libtracecmd.so)
-find_library(TRACEFS_LIBRARY NAMES tracefs/libtracefs.so)
-find_library(TRACEEVENT_LIBRARY NAMES traceevent/libtraceevent.so)
+find_program(TRACECMD_EXECUTABLE NAMES trace-cmd)
+find_path(TRACECMD_INCLUDE_DIR NAMES trace-cmd/trace-cmd.h)
+find_library(TRACECMD_LIBRARY NAMES trace-cmd/libtracecmd.so)
IF (TRACECMD_INCLUDE_DIR AND TRACECMD_LIBRARY)
@@ -72,35 +57,3 @@ ELSE (TRACECMD_FOUND)
MESSAGE(FATAL_ERROR "\nCould not find trace-cmd!\n")
ENDIF (TRACECMD_FOUND)
-
-IF (TRACEFS_INCLUDE_DIR AND TRACEFS_LIBRARY)
-
- SET(TRACEFS_FOUND TRUE)
-
-ENDIF (TRACEFS_INCLUDE_DIR AND TRACEFS_LIBRARY)
-
-IF (TRACEFS_FOUND)
-
- MESSAGE(STATUS "Found tracefs: ${TRACEFS_LIBRARY}")
-
-ELSE (TRACEFS_FOUND)
-
- MESSAGE(FATAL_ERROR "\nCould not find tracefs!\n")
-
-ENDIF (TRACEFS_FOUND)
-
-IF (TRACEEVENT_LIBRARY)
-
- SET(TRACEEVENT_FOUND TRUE)
-
-ENDIF (TRACEEVENT_LIBRARY)
-
-IF (TRACEEVENT_FOUND)
-
- MESSAGE(STATUS "Found traceevent: ${TRACEEVENT_LIBRARY}")
-
-ELSE (TRACEEVENT_FOUND)
-
- MESSAGE(FATAL_ERROR "\nCould not find libtraceevent!\n")
-
-ENDIF (TRACEEVENT_FOUND)
diff --git a/build/FindTraceEvent.cmake b/build/FindTraceEvent.cmake
new file mode 100644
index 0000000..8525697
--- /dev/null
+++ b/build/FindTraceEvent.cmake
@@ -0,0 +1,75 @@
+
+#[=======================================================================[.rst:
+FindTraceevent
+-------
+
+Finds the traceevent library.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the :prop_tgt:`IMPORTED` targets:
+
+``trace::event``
+ Defined if the system has libtraceevent.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``TraceEvent_FOUND``
+ True if the system has the libtraceevent library.
+``TraceEvent_VERSION``
+ The version of the libtraceevent library which was found.
+``TraceEvent_INCLUDE_DIRS``
+ Include directories needed to use libtraceevent.
+``TraceEvent_LIBRARIES``
+ Libraries needed to link to libtraceevent.
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+``TraceEvent_INCLUDE_DIR``
+ The directory containing ``event-parse.h``.
+``TraceEvent_LIBRARY``
+ The path to the traceevent library.
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_TraceEvent QUIET libtraceevent)
+
+set(TraceEvent_VERSION ${PC_TraceEvent_VERSION})
+set(TraceEvent_DEFINITIONS ${PC_TraceEvent_CFLAGS_OTHER})
+
+find_path(TraceEvent_INCLUDE_DIR NAMES traceevent/event-parse.h
+ HINTS ${PC_TraceEvent_INCLUDE_DIRS}
+ ${PC_TraceEvent_INCLUDEDIR})
+
+find_library(TraceEvent_LIBRARY NAMES traceevent libtraceevent
+ HINTS ${PC_TraceEvent_LIBDIR}
+ ${PC_TraceEventLIBRARY_DIRS})
+
+mark_as_advanced(TraceEvent_INCLUDE_DIR TraceEvent_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(TraceEvent DEFAULT_MSG
+ TraceEvent_LIBRARY TraceEvent_INCLUDE_DIR)
+
+if(TraceEvent_FOUND)
+
+ set(TraceEvent_LIBRARIES ${TraceEvent_LIBRARY})
+ set(TraceEvent_INCLUDE_DIRS ${TraceEvent_INCLUDE_DIR})
+
+ if(NOT TARGET trace::event)
+ add_library(trace::event UNKNOWN IMPORTED)
+
+ set_target_properties(trace::event
+ PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${TraceEvent_INCLUDE_DIRS}"
+ INTERFACE_COMPILE_DEFINITIONS "${TraceEvent_DEFINITIONS}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${TraceEvent_LIBRARIES}")
+ endif()
+
+endif()
diff --git a/build/FindTraceFS.cmake b/build/FindTraceFS.cmake
new file mode 100644
index 0000000..982a61d
--- /dev/null
+++ b/build/FindTraceFS.cmake
@@ -0,0 +1,75 @@
+
+#[=======================================================================[.rst:
+FindTraceFS
+-------
+
+Finds the tracefs library.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the :prop_tgt:`IMPORTED` targets:
+
+``trace::fs``
+ Defined if the system has libtracefs.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``TraceFS_FOUND``
+ True if the system has the libtracefs library.
+``TraceFS_VERSION``
+ The version of the libtracefs library which was found.
+``TraceFS_INCLUDE_DIRS``
+ Include directories needed to use libtracefs.
+``TraceFS_LIBRARIES``
+ Libraries needed to link to libtracefs.
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+``TraceFS_INCLUDE_DIR``
+ The directory containing ``tracefs.h``.
+``TraceFS_LIBRARY``
+ The path to the tracefs library.
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_TraceFS QUIET libtracefs)
+
+set(TraceFS_VERSION ${PC_TraceFS_VERSION})
+set(TraceFS_DEFINITIONS ${PC_TraceFS_CFLAGS_OTHER})
+
+find_path(TraceFS_INCLUDE_DIR NAMES tracefs/tracefs.h
+ HINTS ${PC_TraceFS_INCLUDE_DIRS}
+ ${PC_TraceFS_INCLUDEDIR})
+
+find_library(TraceFS_LIBRARY NAMES tracefs libtracefs
+ HINTS ${PC_TraceFS_LIBDIR}
+ ${PC_TraceFSLIBRARY_DIRS})
+
+mark_as_advanced(TraceFS_INCLUDE_DIR TraceFS_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(TraceFS DEFAULT_MSG
+ TraceFS_LIBRARY TraceFS_INCLUDE_DIR)
+
+if(TraceFS_FOUND)
+
+ set(TraceFS_LIBRARIES ${TraceFS_LIBRARY})
+ set(TraceFS_INCLUDE_DIRS ${TraceFS_INCLUDE_DIR})
+
+ if(NOT TARGET trace::fs)
+ add_library(trace::fs UNKNOWN IMPORTED)
+
+ set_target_properties(trace::fs
+ PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${TraceFS_INCLUDE_DIRS}"
+ INTERFACE_COMPILE_DEFINITIONS "${TraceFS_DEFINITIONS}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${TraceFS_LIBRARIES}")
+ endif()
+
+endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 457c100..7474e9d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -8,8 +8,8 @@ add_library(kshark SHARED libkshark.c
libkshark-collection.c)
target_link_libraries(kshark ${TRACECMD_LIBRARY}
- ${TRACEFS_LIBRARY}
- ${TRACEEVENT_LIBRARY}
+ trace::fs
+ trace::event
${JSONC_LIBRARY}
${CMAKE_DL_LIBS})
diff --git a/src/libkshark.c b/src/libkshark.c
index 52aacd3..a14d3c5 100644
--- a/src/libkshark.c
+++ b/src/libkshark.c
@@ -141,7 +141,7 @@ bool kshark_open(struct kshark_context *kshark_ctx, const char *file)
kshark_free_task_list(kshark_ctx);
- handle = tracecmd_open(file);
+ handle = tracecmd_open_head(file);
if (!handle)
return false;
@@ -696,7 +696,7 @@ static ssize_t get_records(struct kshark_context *kshark_ctx,
int pid;
int cpu;
- n_cpus = tracecmd_cpus(kshark_ctx->handle);
+ n_cpus = tep_get_cpus(kshark_ctx->pevent);
cpu_list = calloc(n_cpus, sizeof(*cpu_list));
if (!cpu_list)
return -ENOMEM;
@@ -867,7 +867,7 @@ ssize_t kshark_load_data_entries(struct kshark_context *kshark_ctx,
if (total < 0)
goto fail;
- n_cpus = tracecmd_cpus(kshark_ctx->handle);
+ n_cpus = tep_get_cpus(kshark_ctx->pevent);
rows = calloc(total, sizeof(struct kshark_entry *));
if (!rows)
@@ -923,7 +923,7 @@ ssize_t kshark_load_data_records(struct kshark_context *kshark_ctx,
if (total < 0)
goto fail;
- n_cpus = tracecmd_cpus(kshark_ctx->handle);
+ n_cpus = tep_get_cpus(kshark_ctx->pevent);
rows = calloc(total, sizeof(struct tep_record *));
if (!rows)
@@ -1047,7 +1047,7 @@ size_t kshark_load_data_matrix(struct kshark_context *kshark_ctx,
if (total < 0)
goto fail;
- n_cpus = tracecmd_cpus(kshark_ctx->handle);
+ n_cpus = tep_get_cpus(kshark_ctx->pevent);
status = data_matrix_alloc(total, offset_array,
cpu_array,
--
2.25.1
next prev parent reply other threads:[~2020-12-11 15:48 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-11 15:07 [PATCH v7 00/32] Start KernelShark v2 transformation Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 01/32] kernel-shark: Add license information Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 02/32] kernel-shark: Change the CMake minimum version required Yordan Karadzhov (VMware)
2020-12-11 15:07 ` Yordan Karadzhov (VMware) [this message]
2020-12-11 15:07 ` [PATCH v7 04/32] kernel-shark: Update README Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 05/32] kernel-shark: Define build target for JSONC Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 06/32] kernel-shark: Use only signed types in kshark_entry Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 07/32] kernel-shark: Add stream_id to kshark_entry Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 08/32] kernel-shark: Introduce libkshark-hash Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 09/32] kernel-shark: Introduce Data streams Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 10/32] kernel-shark: Rename static methods in libkshark Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 11/32] kernel-shark: Add basic methods for Data streams Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 12/32] kernel-shark: Housekeeping before implementing stream interface Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 13/32] kernel-shark: Add stream interface for trace-cmd data Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 14/32] kernel-shark: Start introducing KernelShark 2.0 Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 15/32] kernel-shark: Start using data streams Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 16/32] kernel-shark: Remove dead code Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 17/32] kernel-shark: Redesign the plugin interface Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 18/32] kernel-shark: Complete the stream integration Yordan Karadzhov (VMware)
2020-12-11 21:51 ` Steven Rostedt
2020-12-11 21:56 ` Steven Rostedt
2020-12-11 15:07 ` [PATCH v7 19/32] kernel-shark: Provide merging of multiple data streams Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 20/32] kernel-shark: Integrate the stream definitions with data model Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 21/32] kernel-shark: Use only signed types for model defs Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 22/32] kernel-shark: Add ksmodel_get_bin() Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 23/32] kernel-shark: Protect ksmodel_set_in_range_bining() Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 24/32] kernel-shark: Add methods for time calibration Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 25/32] kernel-shark: Integrate streams with libkshark-configio Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 26/32] kernel-shark: Add support for drawing text Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 27/32] kernel-shark: Make GLUT optional dependency Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 28/32] kernel-shark: Add ksplot_draw_polyline() Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 29/32] kernel-shark: Optimize ksplot_draw_polygon() Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 30/32] kernel-shark: Do not use the ARRAY_SIZE macro Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 31/32] kernel-shark: Add basic infrastructure for testing Yordan Karadzhov (VMware)
2020-12-11 15:07 ` [PATCH v7 32/32] kernel-shark: Add "github Actions" workflow Yordan Karadzhov (VMware)
-- strict thread matches above, loose matches on Subject: below --
2020-12-11 14:44 [PATCH v7 00/32] Start KernelShark v2 transformation Yordan Karadzhov (VMware)
2020-12-11 14:44 ` [PATCH v7 03/32] kernel-shark: Use libtraceevent and libtracefs Yordan Karadzhov (VMware)
2020-12-11 19:38 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201211150756.577366-4-y.karadz@gmail.com \
--to=y.karadz@gmail.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.