From patchwork Thu Apr 18 15:21:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907559 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DE8EA13B5 for ; Thu, 18 Apr 2019 15:22:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C738828D1B for ; Thu, 18 Apr 2019 15:22:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C55C928D44; Thu, 18 Apr 2019 15:22:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 32D7428D1B for ; Thu, 18 Apr 2019 15:22:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389005AbfDRPWi (ORCPT ); Thu, 18 Apr 2019 11:22:38 -0400 Received: from mail-wm1-f46.google.com ([209.85.128.46]:53928 "EHLO mail-wm1-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731317AbfDRPWh (ORCPT ); Thu, 18 Apr 2019 11:22:37 -0400 Received: by mail-wm1-f46.google.com with SMTP id q16so3195644wmj.3 for ; Thu, 18 Apr 2019 08:22:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LUYxWtGb9ls6Eik3Jp8WcctqJ7Usm4mPTm+QUlvksAM=; b=KpDMocXI/uzl+DR4JTNEQKNjUHTeYZoFkNCzKNd6+VLAuQWsYVB2xxCr/Vfbs7R9ud 8a4CfpdXUoAcCtqVqu8SIRA15N8+aAJO7Gyw7wkCxCYP3h/NtjcECaPPCSB7gMFG8d6d 6Ob6SAj1Ugvo8ENXVmDMs/Ia5PIH4PJSbNnviQCDWkJ7DO8nZOGlf8NJemKd4dsMONcP RouFybhYeNYtwY1oPPP9z3jM7SGsgdoncoLPCXEWafH4KaFqoqunL4SQJPdmwPru0Xhm AXsh7eaLbJT7qdAkojdkInGbJ4pGUYKHEkx79jl63iKm0XLvae7Mqc/nPAAvlovgZVud 1UnQ== X-Gm-Message-State: APjAAAWgCahEgQ1JFfwM3e8MCg9vMH6Z4wNAwjthYtSwkTeEhI+5qg+s n5SXQPE0l4JGxhot1pHocPs= X-Google-Smtp-Source: APXvYqxBgRbGR3Q1GIgBTcevoWIsJ1Zp9sMFk/5/vqPNvGyW9Bt5Yqp91qTA/tBgGgtwQqhOfQEXWg== X-Received: by 2002:a7b:c155:: with SMTP id z21mr3500377wmi.1.1555600956158; Thu, 18 Apr 2019 08:22:36 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:35 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 1/8] kernel-shark: Configuration information in ${HOME}/.cache/kernelshark Date: Thu, 18 Apr 2019 18:21:39 +0300 Message-Id: <20190418152146.27232-2-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP By default the "Last session" configuration file will be saved in ${HOME}/.cache/kernelshark. If ${HOME}/.cache/kernelshark doesn't exist, it will be created automatically. The user can select another directory to be used to store the cached data. This can be done by setting the environment variable KS_USER_CACHE_DIR. In this case if the path (the value of KS_USER_CACHE_DIR) doesn't exist the user will be asked before create it. Suggested-by: Steven Rostedt (VMware) Signed-off-by: Yordan Karadzhov Signed-off-by: Yordan Karadzhov Reviewed-by: Slavomir Kaslev --- kernel-shark/src/KsMainWindow.cpp | 68 +++++++++++++++++++++++++++---- kernel-shark/src/KsMainWindow.hpp | 4 ++ 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp index 7afb721..cf2db74 100644 --- a/kernel-shark/src/KsMainWindow.cpp +++ b/kernel-shark/src/KsMainWindow.cpp @@ -133,13 +133,15 @@ KsMainWindow::KsMainWindow(QWidget *parent) KsMainWindow::~KsMainWindow() { kshark_context *kshark_ctx(nullptr); - QString file = KS_CONF_DIR; + QString file = lastSessionFile(); - file += "/lastsession.json"; + if (!file.isEmpty()) { + QByteArray fileBA = file.toLocal8Bit(); - _updateSession(); - kshark_save_config_file(file.toLocal8Bit().data(), - _session.getConfDocPtr()); + _updateSession(); + kshark_save_config_file(fileBA.data(), + _session.getConfDocPtr()); + } _data.clear(); @@ -368,12 +370,60 @@ void KsMainWindow::_open() loadDataFile(fileName); } -void KsMainWindow::_restoreSession() +QString KsMainWindow::_getCacheDir() +{ + QString dir; + + auto lamMakePath = [&] (bool ask) { + if (ask) { + QMessageBox::StandardButton reply; + QString err("KernelShark cache directory not found!\n"); + QString question = + QString("Do you want to create %1").arg(dir); + + reply = QMessageBox::question(this, "KernelShark", + err + question, + QMessageBox::Yes | + QMessageBox::No); + + if (reply == QMessageBox::No) { + dir.clear(); + return; + } + } + + QDir().mkpath(dir); + }; + + dir = getenv("KS_USER_CACHE_DIR"); + if (!dir.isEmpty()) { + if (!QDir(dir).exists()) + lamMakePath(true); + } else { + dir = QString(getpwuid(getuid())->pw_dir) + + "/.cache/kernelshark"; + if (!QDir(dir).exists()) + lamMakePath(false); + } + + return dir; +} + +/** Get the description file of the last session. */ +QString KsMainWindow::lastSessionFile() { - QString file = KS_CONF_DIR; - file += "/lastsession.json"; + QString file; - loadSession(file); + file = _getCacheDir(); + if (!file.isEmpty()) + file += "/lastsession.json"; + + return file; +} + +void KsMainWindow::_restoreSession() +{ + loadSession(lastSessionFile()); _graph.updateGeom(); } diff --git a/kernel-shark/src/KsMainWindow.hpp b/kernel-shark/src/KsMainWindow.hpp index 78cd442..ec6506e 100644 --- a/kernel-shark/src/KsMainWindow.hpp +++ b/kernel-shark/src/KsMainWindow.hpp @@ -37,6 +37,8 @@ public: void loadSession(const QString &fileName); + QString lastSessionFile(); + /** * @brief * @@ -230,6 +232,8 @@ private: void _filterSyncCBoxUpdate(kshark_context *kshark_ctx); + QString _getCacheDir(); + private slots: void _captureFinished(int, QProcess::ExitStatus); }; From patchwork Thu Apr 18 15:21:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907561 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CB68013B5 for ; Thu, 18 Apr 2019 15:22:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B33B728D14 for ; Thu, 18 Apr 2019 15:22:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B138B28D3A; Thu, 18 Apr 2019 15:22:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 42FE228D14 for ; Thu, 18 Apr 2019 15:22:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389160AbfDRPWm (ORCPT ); Thu, 18 Apr 2019 11:22:42 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:34060 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731317AbfDRPWm (ORCPT ); Thu, 18 Apr 2019 11:22:42 -0400 Received: by mail-wr1-f66.google.com with SMTP id w16so3477618wrl.1 for ; Thu, 18 Apr 2019 08:22:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Il9dtqM4rEE4fCxC1xW8TVogsDxVa6Mcnm6E5248sis=; b=H+Uo4U8xsOaAbtfvXe0oEnzpUzBqBWn0qkjdcB7kCkj55ajuXj69eJAVqe4UlN1qrb Ud8fAZdPi9aicr4vyeZIYbfJ43ka7Bzk4nONc5m387vCzToyD2LzFj7MQbVr8PQVj2cp 7i8Hz2eoImaE2jiZ83PLuIY0g4kuEgqk/yZlDCLKLYKsCSfcoNU1IAw9QDrVYWDI1+5d ZdG32/imBCt5MBG08EpTD2lrvfKOAC86+g2lIJlqHUpGccQ+KAmsEAXdkX5I9qxSUBW1 eZCQrtPoBC/TR2h1Gzx5DSvSjqUXKhj9vJI2IIp4dzaALaIK2IhJMT3JDyYqKxZX5F/3 NB/g== X-Gm-Message-State: APjAAAXBPTo9+J+J7PKmXiVcqOowlqLMAqSab0Ja392BBExJUGOLjWXl RV5q0pgZtzOM5xbD/v4pRWc= X-Google-Smtp-Source: APXvYqwTV8dAzZJUwizJ+4xhLtLUd963h8Atl6ufdvBfI6rCwZQI413oBGiWrmZZX+Gmbxpb2dLfxA== X-Received: by 2002:adf:f149:: with SMTP id y9mr7440513wro.273.1555600960384; Thu, 18 Apr 2019 08:22:40 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:40 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 2/8] kernel-shark: Remove the definition of KS_CONF_DIR Date: Thu, 18 Apr 2019 18:21:40 +0300 Message-Id: <20190418152146.27232-3-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP KS_CONF_DIR is no longer used, so we do not need to define it in the Cmake-generated header file. Signed-off-by: Yordan Karadzhov --- kernel-shark/CMakeLists.txt | 5 ----- kernel-shark/build/deff.h.cmake | 3 --- 2 files changed, 8 deletions(-) diff --git a/kernel-shark/CMakeLists.txt b/kernel-shark/CMakeLists.txt index 10cb696..1aee858 100644 --- a/kernel-shark/CMakeLists.txt +++ b/kernel-shark/CMakeLists.txt @@ -12,11 +12,6 @@ message("\n project: Kernel Shark: (version: ${KS_VERSION_STRING})\n") set(KS_DIR ${CMAKE_SOURCE_DIR}) -# Make a directory to hold configuration files. To change this do: -# cmake .. -DKS_CONF_DIR=/your/preferred/path -set(KS_CONF_DIR "${KS_DIR}/.ksconf" CACHE STRING "Directory for configuration files.") -file(MAKE_DIRECTORY ${KS_CONF_DIR}) - include(${KS_DIR}/build/FindTraceCmd.cmake) include(${KS_DIR}/build/FindJSONC.cmake) diff --git a/kernel-shark/build/deff.h.cmake b/kernel-shark/build/deff.h.cmake index 80d624c..8041cfc 100644 --- a/kernel-shark/build/deff.h.cmake +++ b/kernel-shark/build/deff.h.cmake @@ -14,9 +14,6 @@ /** KernelShark source code path. */ #cmakedefine KS_DIR "@KS_DIR@" -/** KernelShark configuration directory path. */ -#cmakedefine KS_CONF_DIR "@KS_CONF_DIR@" - /** Location of the trace-cmd executable. */ #cmakedefine TRACECMD_BIN_DIR "@TRACECMD_BIN_DIR@" From patchwork Thu Apr 18 15:21:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907563 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9A98217E0 for ; Thu, 18 Apr 2019 15:22:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7EE3028D42 for ; Thu, 18 Apr 2019 15:22:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7CCA228D44; Thu, 18 Apr 2019 15:22:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E75FB28D47 for ; Thu, 18 Apr 2019 15:22:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388922AbfDRPWo (ORCPT ); Thu, 18 Apr 2019 11:22:44 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:40324 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731317AbfDRPWo (ORCPT ); Thu, 18 Apr 2019 11:22:44 -0400 Received: by mail-wr1-f66.google.com with SMTP id h4so3436465wre.7 for ; Thu, 18 Apr 2019 08:22:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kfZ8wDWoDX973tsE2zKLIIfXEH4WHobMyRbLA/I4f0I=; b=jFw5tCtrVVD+wZ9AST6Ir5pAxuFLunuBZe41KJ16gfYwsH2FpOHVRYTRCblToKjBPr ix23HghQFkLrQlk/zNiNBqcX/vo9iP5BdeE7G0bwWJYQs1j1L8Yn3cS1MmDDuX3xlTO0 lSjd8EBsmvxFjYTWQdydII9uG9pJu3tR0X3Om+RVtaZG7NunsSvyHqNwzyVenqr9VM+f VVstEJLeH7ATCop+JvecBvimGMvNXM8Uq8RJN+HHBOpY6MnGtyVRKoc6DZadXGWd4WLv xQpQ76d7mYqK4Ar4uXSZHXR1BmKh5Ck1bMikXChSX4+ePQuH/d1ASqcpqb7ky/5e9nmb YmgQ== X-Gm-Message-State: APjAAAUlFkKgm/41u1gJDqG2HtJdiZmLcY3zr/NyMaT9c6eltX/cOwTb 7zuTmnnMl6G0/ICcYosSuHI= X-Google-Smtp-Source: APXvYqwI+zjs4wTFeb21AAfpxg5x7trleXyoWKKDSDYWZj6CXcEQewXxcoqPrsMlbSPU/J2SmweWEg== X-Received: by 2002:adf:f14e:: with SMTP id y14mr62482995wro.276.1555600962768; Thu, 18 Apr 2019 08:22:42 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:42 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 3/8] kernel-shark: Add logic for the initial path of Open-File dialogs Date: Thu, 18 Apr 2019 18:21:41 +0300 Message-Id: <20190418152146.27232-4-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If the application has been started from the source code directory, all OpenFile dialogs will start there. If the application has been started from its installation location, all Open File dialogs will start at ${HOME}. Suggested-by: Steven Rostedt (VMware) Signed-off-by: Yordan Karadzhov Reviewed-by: Slavomir Kaslev --- kernel-shark/src/KsCaptureDialog.cpp | 6 +++--- kernel-shark/src/KsMainWindow.cpp | 12 ++++++------ kernel-shark/src/KsUtils.hpp | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/kernel-shark/src/KsCaptureDialog.cpp b/kernel-shark/src/KsCaptureDialog.cpp index 1272c2e..57bf7c7 100644 --- a/kernel-shark/src/KsCaptureDialog.cpp +++ b/kernel-shark/src/KsCaptureDialog.cpp @@ -208,7 +208,7 @@ void KsCaptureControl::_importSettings() /* Get the configuration document. */ fileName = QFileDialog::getOpenFileName(this, "Import from Filter", - KS_DIR, + KsUtils::dialogDir(), "Kernel Shark Config files (*.json);;"); if (fileName.isEmpty()) @@ -259,7 +259,7 @@ void KsCaptureControl::_exportSettings() QString fileName = QFileDialog::getSaveFileName(this, "Export to File", - KS_DIR, + KsUtils::dialogDir(), "Kernel Shark Config files (*.json);;"); if (fileName.isEmpty()) @@ -314,7 +314,7 @@ void KsCaptureControl::_browse() QString fileName = QFileDialog::getSaveFileName(this, "Save File", - KS_DIR, + KsUtils::dialogDir(), "trace-cmd files (*.dat);;All files (*)"); if (!fileName.isEmpty()) diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp index cf2db74..80bd019 100644 --- a/kernel-shark/src/KsMainWindow.cpp +++ b/kernel-shark/src/KsMainWindow.cpp @@ -363,7 +363,7 @@ void KsMainWindow::_open() QString fileName = QFileDialog::getOpenFileName(this, "Open File", - KS_DIR, + KsUtils::dialogDir(), "trace-cmd files (*.dat);;All files (*)"); if (!fileName.isEmpty()) @@ -432,7 +432,7 @@ void KsMainWindow::_importSession() QString fileName = QFileDialog::getOpenFileName(this, "Import Session", - KS_DIR, + KsUtils::dialogDir(), "Kernel Shark Config files (*.json);;"); if (fileName.isEmpty()) @@ -463,7 +463,7 @@ void KsMainWindow::_exportSession() QString fileName = QFileDialog::getSaveFileName(this, "Export Filter", - KS_DIR, + KsUtils::dialogDir(), "Kernel Shark Config files (*.json);;"); if (fileName.isEmpty()) @@ -512,7 +512,7 @@ void KsMainWindow::_importFilter() if (!kshark_instance(&kshark_ctx)) return; - fileName = QFileDialog::getOpenFileName(this, "Import Filter", KS_DIR, + fileName = QFileDialog::getOpenFileName(this, "Import Filter", KsUtils::dialogDir(), "Kernel Shark Config files (*.json);;"); if (fileName.isEmpty()) @@ -540,7 +540,7 @@ void KsMainWindow::_exportFilter() if (!kshark_instance(&kshark_ctx)) return; - fileName = QFileDialog::getSaveFileName(this, "Export Filter", KS_DIR, + fileName = QFileDialog::getSaveFileName(this, "Export Filter", KsUtils::dialogDir(), "Kernel Shark Config files (*.json);;"); if (fileName.isEmpty()) @@ -861,7 +861,7 @@ void KsMainWindow::_pluginAdd() fileNames = QFileDialog::getOpenFileNames(this, "Add KernelShark plugins", - KS_DIR, + KsUtils::dialogDir(), "KernelShark Plugins (*.so);;"); if (fileNames.isEmpty()) diff --git a/kernel-shark/src/KsUtils.hpp b/kernel-shark/src/KsUtils.hpp index c8b5e88..877c62a 100644 --- a/kernel-shark/src/KsUtils.hpp +++ b/kernel-shark/src/KsUtils.hpp @@ -111,6 +111,21 @@ inline QString Ts2String(int64_t ts, int prec) bool matchCPUVisible(struct kshark_context *kshark_ctx, struct kshark_entry *e, int cpu); + +/** + * @brief Get the directory to be used when opening QFileDialog. If the + * application has been started from the source code directory, all + * Open File dialogs will start there. If the application has been + * started from its installation location, all Open File dialogs will + * start at ${HOME}. + */ +inline QString dialogDir() +{ + QString path = QCoreApplication::applicationFilePath(); + + return (path.contains(KS_DIR)) ? KS_DIR : QDir::homePath(); +} + }; // KsUtils /** Identifier of the Dual Marker active state. */ From patchwork Thu Apr 18 15:21:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907565 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5E3DF17E0 for ; Thu, 18 Apr 2019 15:22:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3F3E128D00 for ; Thu, 18 Apr 2019 15:22:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3D73C28D48; Thu, 18 Apr 2019 15:22:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8B38228D17 for ; Thu, 18 Apr 2019 15:22:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389056AbfDRPWr (ORCPT ); Thu, 18 Apr 2019 11:22:47 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:36255 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731317AbfDRPWr (ORCPT ); Thu, 18 Apr 2019 11:22:47 -0400 Received: by mail-wr1-f68.google.com with SMTP id y13so3464704wrd.3 for ; Thu, 18 Apr 2019 08:22:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/5rIGOhs7a/jPbr+IXa0qIZj5NDNRcRcUIxqrn/h1q8=; b=aU1Lauwhb4O/hOMxtGs2dNKcvDmD3zi/sNdKP54rbfmPIOE/Jl/mpPZRWF5wQWlhAs o5iNkC/SOTbenp+SBaWxGvDyRp7B4wafqkkjgWrnK2fsHSBk2/mVA1vhDy3P4Zg34M63 jDnXP+F1nBUBEZGmJIdqvp6tFTLyBZlYAltXKoBZmRp9R4PqQuDT/+x2LdBfihNqX+IW dFybNBi4SG9UDuwOQIDDqfnFdyJoKgCvtkjKUfA3OCFLpn8GJLZ5OCWx60N+0Mjf0PMx 7my18ekHTs2NuBDLWjiJYDlqBpwenPkU9q46MT93mDW5qQTuNxR+DXL80Hys9FVxc04M Pvpg== X-Gm-Message-State: APjAAAU3IwREDIMJuW/M6ez2EKr4RlBz1MKQgl08bE9SWx1jOPrSoB1t dHVMeOudMnd3QkKrPGq0mPTOQS65 X-Google-Smtp-Source: APXvYqxXJK8bVqJFBHCcMIMiMqMH8SL1txG0Qd557JNmw0Y4BZEuah8MFYCteKHx6mDunETIYJUiag== X-Received: by 2002:adf:ba49:: with SMTP id t9mr1934457wrg.146.1555600964871; Thu, 18 Apr 2019 08:22:44 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:44 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 4/8] kernel-shark: Add logic for the plugins search path Date: Thu, 18 Apr 2019 18:21:42 +0300 Message-Id: <20190418152146.27232-5-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If the application has been started from the source code directory, all build-in plugins will be loaded from kernel-shark/lib/ If the application has been started from its installation location, all build-in plugins will be loaded from INSTALL_PREFIX/lib/kshark/plugins/ Signed-off-by: Yordan Karadzhov Reviewed-by: Slavomir Kaslev --- kernel-shark/build/deff.h.cmake | 3 +++ kernel-shark/src/KsUtils.cpp | 35 +++++++++++++++++-------- kernel-shark/src/KsUtils.hpp | 1 + kernel-shark/src/plugins/CMakeLists.txt | 2 +- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/kernel-shark/build/deff.h.cmake b/kernel-shark/build/deff.h.cmake index 8041cfc..ba211f4 100644 --- a/kernel-shark/build/deff.h.cmake +++ b/kernel-shark/build/deff.h.cmake @@ -14,6 +14,9 @@ /** KernelShark source code path. */ #cmakedefine KS_DIR "@KS_DIR@" +/** KernelShark installation prefix path. */ +#cmakedefine _INSTALL_PREFIX "@_INSTALL_PREFIX@" + /** Location of the trace-cmd executable. */ #cmakedefine TRACECMD_BIN_DIR "@TRACECMD_BIN_DIR@" diff --git a/kernel-shark/src/KsUtils.cpp b/kernel-shark/src/KsUtils.cpp index 6af0c66..b05c0dc 100644 --- a/kernel-shark/src/KsUtils.cpp +++ b/kernel-shark/src/KsUtils.cpp @@ -423,13 +423,12 @@ void KsPluginManager::_parsePluginList() */ void KsPluginManager::registerFromList(kshark_context *kshark_ctx) { - auto lamRegBuiltIn = [&kshark_ctx](const QString &plugin) + auto lamRegBuiltIn = [&kshark_ctx, this](const QString &plugin) { char *lib; int n; - n = asprintf(&lib, "%s/lib/plugin-%s.so", - KS_DIR, plugin.toStdString().c_str()); + lib = _pluginLibFromName(plugin, n); if (n <= 0) return; @@ -458,13 +457,12 @@ void KsPluginManager::registerFromList(kshark_context *kshark_ctx) */ void KsPluginManager::unregisterFromList(kshark_context *kshark_ctx) { - auto lamUregBuiltIn = [&kshark_ctx](const QString &plugin) + auto lamUregBuiltIn = [&kshark_ctx, this](const QString &plugin) { char *lib; int n; - n = asprintf(&lib, "%s/lib/plugin-%s.so", - KS_DIR, plugin.toStdString().c_str()); + lib = _pluginLibFromName(plugin, n); if (n <= 0) return; @@ -487,6 +485,23 @@ void KsPluginManager::unregisterFromList(kshark_context *kshark_ctx) lamUregUser); } +char *KsPluginManager::_pluginLibFromName(const QString &plugin, int &n) +{ + QString path = QCoreApplication::applicationFilePath(); + std::string pluginStr = plugin.toStdString(); + char *lib; + + if (path.contains(KS_DIR)) { + n = asprintf(&lib, "%s/lib/plugin-%s.so", + KS_DIR, pluginStr.c_str()); + } else { + n = asprintf(&lib, "%s/lib/kshark/plugins/plugin-%s.so", + _INSTALL_PREFIX, pluginStr.c_str()); + } + + return lib; +} + /** * @brief Register a Plugin. * @@ -508,8 +523,7 @@ void KsPluginManager::registerPlugin(const QString &plugin) * The argument is the name of the plugin. From the * name get the library .so file. */ - n = asprintf(&lib, "%s/lib/plugin-%s.so", - KS_DIR, plugin.toStdString().c_str()); + lib = _pluginLibFromName(plugin, n); if (n > 0) { kshark_register_plugin(kshark_ctx, lib); _registeredKsPlugins[i] = true; @@ -570,8 +584,7 @@ void KsPluginManager::unregisterPlugin(const QString &plugin) * The argument is the name of the plugin. From the * name get the library .so file. */ - n = asprintf(&lib, "%s/lib/plugin-%s.so", KS_DIR, - plugin.toStdString().c_str()); + lib = _pluginLibFromName(plugin, n); if (n > 0) { kshark_unregister_plugin(kshark_ctx, lib); _registeredKsPlugins[i] = false; @@ -579,7 +592,7 @@ void KsPluginManager::unregisterPlugin(const QString &plugin) } return; - } else if (plugin.contains("/lib/plugin-" + + } else if (plugin.contains("/lib/plugin-" + _ksPluginList[i], Qt::CaseInsensitive)) { /* * The argument is the name of the library .so file. diff --git a/kernel-shark/src/KsUtils.hpp b/kernel-shark/src/KsUtils.hpp index 877c62a..85da9ae 100644 --- a/kernel-shark/src/KsUtils.hpp +++ b/kernel-shark/src/KsUtils.hpp @@ -238,6 +238,7 @@ signals: private: void _parsePluginList(); + char *_pluginLibFromName(const QString &plugin, int &n); template void _forEachInList(const QStringList &pl, diff --git a/kernel-shark/src/plugins/CMakeLists.txt b/kernel-shark/src/plugins/CMakeLists.txt index 6098275..64cf98d 100644 --- a/kernel-shark/src/plugins/CMakeLists.txt +++ b/kernel-shark/src/plugins/CMakeLists.txt @@ -29,6 +29,6 @@ BUILD_PLUGIN(NAME missed_events list(APPEND PLUGIN_LIST "missed_events default") # This plugin will be loaded by default install(TARGETS sched_events missed_events - LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/kshark/) + LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/kshark/plugins/) set(PLUGINS ${PLUGIN_LIST} PARENT_SCOPE) From patchwork Thu Apr 18 15:21:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907567 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E403613B5 for ; Thu, 18 Apr 2019 15:22:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C814428CC8 for ; Thu, 18 Apr 2019 15:22:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C5EB228D6E; Thu, 18 Apr 2019 15:22:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3286428D3E for ; Thu, 18 Apr 2019 15:22:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731317AbfDRPWt (ORCPT ); Thu, 18 Apr 2019 11:22:49 -0400 Received: from mail-wr1-f53.google.com ([209.85.221.53]:46542 "EHLO mail-wr1-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389038AbfDRPWs (ORCPT ); Thu, 18 Apr 2019 11:22:48 -0400 Received: by mail-wr1-f53.google.com with SMTP id t17so3414840wrw.13 for ; Thu, 18 Apr 2019 08:22:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y+mZou+iV60esjuLtX9pEpF4V+vOVjNaOTHcJwHzxf8=; b=V8aVSeTpSSLk40H0tAuysoeX/lbwNOglzvv/PcBX8wBjqbIrYGaar3W661LVHtQwHF KJXjbH209ToAB88XUFIbtEibJYew6fxJz+O1408NiFSPoG61Y1scGcHcgjUACNQwjCE0 cPvnJg06CHCC9v2507ra2ZaXSUtfxrMZ7wsibPkMKl+TIhgzcdVjhxMOzgo3nrOFqAwc Rkh1IFhJn5S8mWDDCzxTMKiOWqTDESK5ssG6tiaes1WK8Ov3n6kaT2jYh65sd4z3UoTA iLk2ibv7qX+RwfJ3XZlc63YtXuCq7vlE2cvQwU3/iedrlorqWeQJwDG4BNzNCipppiBZ 1HrQ== X-Gm-Message-State: APjAAAVjJ4/Zq9I2r0pRXYayhxj/3Fooda5ADVXdBiQghNAvkSd3PKw5 MHHVrJL1JWLhDDZB4qRRo9e+N06h X-Google-Smtp-Source: APXvYqyMCobdPG8OjxyM+Cs7IKZQNU75l2rJBZF7es6dCRDONXgeSJ5BXJ5RKpVKe9uE4Z4bQjFEFw== X-Received: by 2002:adf:db05:: with SMTP id s5mr64128000wri.247.1555600966603; Thu, 18 Apr 2019 08:22:46 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:46 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 5/8] kernel-shark: Rename KS_DIR to KS_SOURCE_DIR Date: Thu, 18 Apr 2019 18:21:43 +0300 Message-Id: <20190418152146.27232-6-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP KS_SOURCE_DIR is a more appropriate name since it defines the path to the KernelShark source code used to build the application. Signed-off-by: Yordan Karadzhov --- kernel-shark/CMakeLists.txt | 32 ++++++++++++++++---------------- kernel-shark/build/deff.h.cmake | 2 +- kernel-shark/src/CMakeLists.txt | 10 +++++----- kernel-shark/src/KsUtils.cpp | 4 ++-- kernel-shark/src/KsUtils.hpp | 2 +- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/kernel-shark/CMakeLists.txt b/kernel-shark/CMakeLists.txt index 1aee858..825cabd 100644 --- a/kernel-shark/CMakeLists.txt +++ b/kernel-shark/CMakeLists.txt @@ -10,10 +10,10 @@ set(KS_VERSION_PATCH 8) set(KS_VERSION_STRING ${KS_VERSION_MAJOR}.${KS_VERSION_MINOR}.${KS_VERSION_PATCH}) message("\n project: Kernel Shark: (version: ${KS_VERSION_STRING})\n") -set(KS_DIR ${CMAKE_SOURCE_DIR}) +set(KS_SOURCE_DIR ${CMAKE_SOURCE_DIR}) -include(${KS_DIR}/build/FindTraceCmd.cmake) -include(${KS_DIR}/build/FindJSONC.cmake) +include(${KS_SOURCE_DIR}/build/FindTraceCmd.cmake) +include(${KS_SOURCE_DIR}/build/FindJSONC.cmake) find_package(Doxygen) @@ -29,8 +29,8 @@ if (Qt5Widgets_FOUND) endif (Qt5Widgets_FOUND) -set(LIBRARY_OUTPUT_PATH "${KS_DIR}/lib") -set(EXECUTABLE_OUTPUT_PATH "${KS_DIR}/bin") +set(LIBRARY_OUTPUT_PATH "${KS_SOURCE_DIR}/lib") +set(EXECUTABLE_OUTPUT_PATH "${KS_SOURCE_DIR}/bin") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g -pthread") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -std=c++11 -pthread") @@ -49,8 +49,8 @@ endif (NOT _DEBUG) SET(CMAKE_INSTALL_RPATH "${_INSTALL_PREFIX}/lib/kshark/") SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -include_directories(${KS_DIR}/src/ - ${KS_DIR}/build/src/ +include_directories(${KS_SOURCE_DIR}/src/ + ${KS_SOURCE_DIR}/build/src/ ${JSONC_INCLUDE_DIR} ${TRACECMD_INCLUDE_DIR} ${TRACEEVENT_INCLUDE_DIR}) @@ -60,8 +60,8 @@ message(STATUS "C flags : " ${CMAKE_C_FLAGS}) message(STATUS "CXX flags : " ${CMAKE_CXX_FLAGS}) message(STATUS "Linker flags : " ${CMAKE_EXE_LINKER_FLAGS}) -add_subdirectory(${KS_DIR}/src) -add_subdirectory(${KS_DIR}/examples) +add_subdirectory(${KS_SOURCE_DIR}/src) +add_subdirectory(${KS_SOURCE_DIR}/examples) if (_DOXYGEN_DOC AND DOXYGEN_FOUND) @@ -72,16 +72,16 @@ if (_DOXYGEN_DOC AND DOXYGEN_FOUND) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/doc) set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES - "${KS_DIR}/doc/dox_build.log" - "${KS_DIR}/doc/html" - "${KS_DIR}/doc/latex") + "${KS_SOURCE_DIR}/doc/dox_build.log" + "${KS_SOURCE_DIR}/doc/html" + "${KS_SOURCE_DIR}/doc/latex") endif () -configure_file( ${KS_DIR}/build/ks.desktop.cmake - ${KS_DIR}/kernelshark.desktop) +configure_file(${KS_SOURCE_DIR}/build/ks.desktop.cmake + ${KS_SOURCE_DIR}/kernelshark.desktop) -configure_file( ${KS_DIR}/build/org.freedesktop.kshark-record.policy.cmake - ${KS_DIR}/org.freedesktop.kshark-record.policy) +configure_file(${KS_SOURCE_DIR}/build/org.freedesktop.kshark-record.policy.cmake + ${KS_SOURCE_DIR}/org.freedesktop.kshark-record.policy) message("") diff --git a/kernel-shark/build/deff.h.cmake b/kernel-shark/build/deff.h.cmake index ba211f4..47c9d9f 100644 --- a/kernel-shark/build/deff.h.cmake +++ b/kernel-shark/build/deff.h.cmake @@ -12,7 +12,7 @@ #cmakedefine KS_VERSION_STRING "@KS_VERSION_STRING@" /** KernelShark source code path. */ -#cmakedefine KS_DIR "@KS_DIR@" +#cmakedefine KS_SOURCE_DIR "@KS_SOURCE_DIR@" /** KernelShark installation prefix path. */ #cmakedefine _INSTALL_PREFIX "@_INSTALL_PREFIX@" diff --git a/kernel-shark/src/CMakeLists.txt b/kernel-shark/src/CMakeLists.txt index b7dbd7e..5f97916 100644 --- a/kernel-shark/src/CMakeLists.txt +++ b/kernel-shark/src/CMakeLists.txt @@ -81,13 +81,13 @@ if (Qt5Widgets_FOUND AND Qt5Network_FOUND) RUNTIME DESTINATION ${_INSTALL_PREFIX}/bin/ LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/kshark/) - install(FILES "${KS_DIR}/kernelshark.desktop" + install(FILES "${KS_SOURCE_DIR}/kernelshark.desktop" DESTINATION /usr/share/applications/) - install(FILES "${KS_DIR}/org.freedesktop.kshark-record.policy" + install(FILES "${KS_SOURCE_DIR}/org.freedesktop.kshark-record.policy" DESTINATION /usr/share/polkit-1/actions/) - install(PROGRAMS "${KS_DIR}/bin/kshark-su-record" + install(PROGRAMS "${KS_SOURCE_DIR}/bin/kshark-su-record" DESTINATION ${_INSTALL_PREFIX}/bin/) endif (Qt5Widgets_FOUND AND Qt5Network_FOUND) @@ -96,5 +96,5 @@ add_subdirectory(plugins) find_program(DO_AS_ROOT pkexec) -configure_file( ${KS_DIR}/build/deff.h.cmake - ${KS_DIR}/src/KsCmakeDef.hpp) +configure_file( ${KS_SOURCE_DIR}/build/deff.h.cmake + ${KS_SOURCE_DIR}/src/KsCmakeDef.hpp) diff --git a/kernel-shark/src/KsUtils.cpp b/kernel-shark/src/KsUtils.cpp index b05c0dc..387a1e0 100644 --- a/kernel-shark/src/KsUtils.cpp +++ b/kernel-shark/src/KsUtils.cpp @@ -491,9 +491,9 @@ char *KsPluginManager::_pluginLibFromName(const QString &plugin, int &n) std::string pluginStr = plugin.toStdString(); char *lib; - if (path.contains(KS_DIR)) { + if (path.contains(KS_SOURCE_DIR)) { n = asprintf(&lib, "%s/lib/plugin-%s.so", - KS_DIR, pluginStr.c_str()); + KS_SOURCE_DIR, pluginStr.c_str()); } else { n = asprintf(&lib, "%s/lib/kshark/plugins/plugin-%s.so", _INSTALL_PREFIX, pluginStr.c_str()); diff --git a/kernel-shark/src/KsUtils.hpp b/kernel-shark/src/KsUtils.hpp index 85da9ae..e776d62 100644 --- a/kernel-shark/src/KsUtils.hpp +++ b/kernel-shark/src/KsUtils.hpp @@ -123,7 +123,7 @@ inline QString dialogDir() { QString path = QCoreApplication::applicationFilePath(); - return (path.contains(KS_DIR)) ? KS_DIR : QDir::homePath(); + return path.contains(KS_SOURCE_DIR) ? KS_SOURCE_DIR : QDir::homePath(); } }; // KsUtils From patchwork Thu Apr 18 15:21:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907569 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 59E0F17E0 for ; Thu, 18 Apr 2019 15:22:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4216528D43 for ; Thu, 18 Apr 2019 15:22:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4033E28D28; Thu, 18 Apr 2019 15:22:51 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA17D28CCD for ; Thu, 18 Apr 2019 15:22:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389038AbfDRPWu (ORCPT ); Thu, 18 Apr 2019 11:22:50 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:54304 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388806AbfDRPWu (ORCPT ); Thu, 18 Apr 2019 11:22:50 -0400 Received: by mail-wm1-f66.google.com with SMTP id c1so3186075wml.4 for ; Thu, 18 Apr 2019 08:22:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SaAcxvLXdkIUy3oCd1hVeb66KDSze7oeTnLjclEwM08=; b=ORBVGwHRJAD92vuU8riBJ7BTWUZks0y17eG0j93BGrNN1hsku3kytWvyQeQgs1rBNh XKznEW9kHjfBQkRFFZID0SYf8RHrJ665zAGVRemURndfabtlCrIRsZkawJ6JHA5OrIsg ySgjIp9xPGgd4+X0kMkQeXA8RwRr0Z00bURlV77sOqNnTXG1Va1/N73NKzOwzhk4Q8FZ UWIBeLzt5R3yKBXrM5+j1WFgHby+b6lnAPmptUW/3yyfirarS/D13MPHWJRzhWcqgozu PigeJlkdJJ7HxfxAYnmCKQkFF86zv2O2OBx7I8Z04JyLHuiwMGTfNPDU/XrQB7Dq4pGQ OrMA== X-Gm-Message-State: APjAAAW4Li4tTkWp6OGh4L0ExBuxTRcX1G03KREFRSjQ7IMomvXc0f5C qaUBmldIsCBR69iln33v8+I= X-Google-Smtp-Source: APXvYqxCGu0DqQood8sE5csyMPm3HDMzkdYwrLsbJm46MsiUSYXRXBpUsgLqNXsqkh5fkhznuJWSUg== X-Received: by 2002:a7b:c923:: with SMTP id h3mr3527654wml.34.1555600968690; Thu, 18 Apr 2019 08:22:48 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:47 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 6/8] kernel-shark: Load Last Session from command line Date: Thu, 18 Apr 2019 18:21:44 +0300 Message-Id: <20190418152146.27232-7-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP ./kernelshark -l will load directly the Last Session Signed-off-by : Yordan Karadzhov --- kernel-shark/src/kernelshark.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel-shark/src/kernelshark.cpp b/kernel-shark/src/kernelshark.cpp index 2ec91de..1ec6678 100644 --- a/kernel-shark/src/kernelshark.cpp +++ b/kernel-shark/src/kernelshark.cpp @@ -28,6 +28,7 @@ void usage(const char *prog) printf(" -p register plugin, use plugin name, absolute or relative path\n"); printf(" -u unregister plugin, use plugin name or absolute path\n"); printf(" -s import a session\n"); + printf(" -l import the last session\n"); } int main(int argc, char **argv) @@ -40,7 +41,7 @@ int main(int argc, char **argv) int c; bool fromSession = false; - while ((c = getopt(argc, argv, "hvi:p:u:s:")) != -1) { + while ((c = getopt(argc, argv, "hvi:p:u:s:l")) != -1) { switch(c) { case 'h': usage(argv[0]); @@ -65,6 +66,12 @@ int main(int argc, char **argv) case 's': ks.loadSession(QString(optarg)); fromSession = true; + break; + + case 'l': + ks.loadSession(ks.lastSessionFile()); + fromSession = true; + break; default: break; From patchwork Thu Apr 18 15:21:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907571 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EFEC913B5 for ; Thu, 18 Apr 2019 15:22:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D49A828CBF for ; Thu, 18 Apr 2019 15:22:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D317C28D3E; Thu, 18 Apr 2019 15:22:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8496C28CBF for ; Thu, 18 Apr 2019 15:22:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389005AbfDRPWy (ORCPT ); Thu, 18 Apr 2019 11:22:54 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:33759 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388806AbfDRPWy (ORCPT ); Thu, 18 Apr 2019 11:22:54 -0400 Received: by mail-wm1-f66.google.com with SMTP id z6so7173672wmi.0 for ; Thu, 18 Apr 2019 08:22:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=218rISj39UVBKKglmwsvVZ22bsnn02SzEAgU9Z++Ucc=; b=c9duULaD2abmsr5YGN06Vq0iCZgrSqd25M5VnjI2Cv+R26P2ETxHfEbuGJ1c7QwBOX PiOY/PCWrUO5P6N4TLTJxHn03Zp/g/lLnWxrfj2AEVZu06JXDjmznI2mLKD3lhiZN7dU +o7ohPgInqwrf7qJcxWlHVvSz9sHRHJccvcr+H2LaPDPO8z0GxzzogL7AIUnqIB3Fjt3 YQgzar8Dy1nNq49ZqcJPD2HeJvZ0e2Gkb8tJbMMMQ9DlzqGcL1JgaBWibfkXx/n0U/4o nd2slH6Im2u5V0CwAe/uLHzJXgFwCeJi+QK6DzYarb+q52Z7R9YnsekqJpvnVyTDrVE7 el9Q== X-Gm-Message-State: APjAAAXbJZHwRzCXyjVbg+OqxdakH1MCg5zw1zY3JBA+Mp24GURaN33r xK7hRTQOMWjTqQZf5L91iNQ= X-Google-Smtp-Source: APXvYqzk9ZyINxyWGXcNJi1p0cKGQ1ju1A85rHf6VXDJ5kvIkWbAKXqTABs0GHpaxjtIC9QKF+mESQ== X-Received: by 2002:a7b:c14c:: with SMTP id z12mr3547230wmi.138.1555600972696; Thu, 18 Apr 2019 08:22:52 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:52 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 7/8] kernel-shark: Use proper searching condition when the dataset is small Date: Thu, 18 Apr 2019 18:21:45 +0300 Message-Id: <20190418152146.27232-8-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If the data-set is small we do not want to have the overhead added by the update of the progress bar. Because of this we bypass the state switching of the FSM. However, in this case the the search condition has to be updated by hand. Reported-by: Slavomir Kaslev Fixes: 1615b02b (kernel-shark-qt: Optimize the search in a case of a small data-set) Signed-off-by: Yordan Karadzhov --- kernel-shark/src/KsTraceViewer.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel-shark/src/KsTraceViewer.cpp b/kernel-shark/src/KsTraceViewer.cpp index 4e2c93e..04a38b8 100644 --- a/kernel-shark/src/KsTraceViewer.cpp +++ b/kernel-shark/src/KsTraceViewer.cpp @@ -596,8 +596,11 @@ size_t KsTraceViewer::_searchItems() if (_proxyModel.rowCount({}) < KS_SEARCH_SHOW_PROGRESS_MIN) { /* * This is a small data-set. Do a single-threaded search - * without showing the progress. + * without showing the progress. We will bypass the state + * switching, hence the search condition has to be updated + * by hand. */ + _searchFSM.updateCondition(); _proxyModel.search(column, searchText, _searchFSM.condition(), &_matchList, nullptr, nullptr); } else { From patchwork Thu Apr 18 15:21:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10907573 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DEF9913B5 for ; Thu, 18 Apr 2019 15:23:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C8DE128CCA for ; Thu, 18 Apr 2019 15:23:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C75DE28D3E; Thu, 18 Apr 2019 15:23:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6621A28CCA for ; Thu, 18 Apr 2019 15:23:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389160AbfDRPXA (ORCPT ); Thu, 18 Apr 2019 11:23:00 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:34995 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388806AbfDRPXA (ORCPT ); Thu, 18 Apr 2019 11:23:00 -0400 Received: by mail-wr1-f65.google.com with SMTP id o12so135581wrn.2 for ; Thu, 18 Apr 2019 08:22:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jMt/F/C22Sx4zYZaLZAVwDW0byrHT7ynGVqvNmmTXgA=; b=cHiyHdDlKNWn8MLqkhQnbrZIRY62uAkohI804/mFPp6RMRujEXkjsXtWyHvVtufi1d WYecwEtCIsH5NQeU6TE66pE0woNlm7YZSSY7oirvre2PCpJSo8HMTKqya0VGr1le+h0+ SooWpv+Gb4IC3vEQb7fa5qHw/AFacaXHPvr+qFwOtx+++2D5MrKNdbhoIjQoVcHnACY5 p7nY7OgbXLekqXO1UdQ9/vgf+lARrNTox3rrFpYG60dhJOAxq041MITEEQjGisB9qqq2 ssq6vZ09SNFMBMM8MmEkxkRfZ5Fn7zZrGcySEPap4846Yd4bSfNh04e7OH0u0uJKRWHM BLDw== X-Gm-Message-State: APjAAAUZ3hVeTCBS4a4A2lSM5/jZpf4piaIMSQhR6uY+zdoz362HmCEA vbHSeJO+r9yvrrmI6bAIKgI= X-Google-Smtp-Source: APXvYqwtLwVJ4KAzB9vVXXhqOhjcEOxYBTqKqwc1Z+qByqxUpqjf3nLwyrv8X8RSjyV1luudQL6BYQ== X-Received: by 2002:a5d:6050:: with SMTP id j16mr57027887wrt.253.1555600978514; Thu, 18 Apr 2019 08:22:58 -0700 (PDT) Received: from mamba.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id l12sm2543698wrt.31.2019.04.18.08.22.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 08:22:58 -0700 (PDT) From: Yordan Karadzhov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, y.karadz@gmail.com, Yordan Karadzhov Subject: [PATCH v2 8/8] kernel-shark: Handle the case when the marker points to a filtered entry Date: Thu, 18 Apr 2019 18:21:46 +0300 Message-Id: <20190418152146.27232-9-ykaradzhov@vmware.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190418152146.27232-1-ykaradzhov@vmware.com> References: <20190418152146.27232-1-ykaradzhov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Markers can point to entries that are filtered out. When switching the marker it may happen that new Active Marker points to an entry that is filtered. In this case no actions must be taken and a warning message for the user must be displayed. Signed-off-by: Yordan Karadzhov Reviewed-by: Slavomir Kaslev Reviewed-by: Slavomir Kaslev --- kernel-shark/src/KsTraceViewer.cpp | 27 +++++++++++++++++---------- kernel-shark/src/KsTraceViewer.hpp | 2 ++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/kernel-shark/src/KsTraceViewer.cpp b/kernel-shark/src/KsTraceViewer.cpp index 04a38b8..85da64f 100644 --- a/kernel-shark/src/KsTraceViewer.cpp +++ b/kernel-shark/src/KsTraceViewer.cpp @@ -61,7 +61,8 @@ KsTraceViewer::KsTraceViewer(QWidget *parent) _graphFollowsCheckBox(this), _graphFollows(true), _mState(nullptr), - _data(nullptr) + _data(nullptr), + _em(this) { this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); @@ -493,15 +494,21 @@ void KsTraceViewer::markSwitch() QModelIndex index = _proxyModel.mapFromSource(_model.index(row, 0)); - /* - * The row of the active marker will be colored according to - * the assigned property of the current state of the Dual - * marker. Auto-scrolling is temporarily disabled because we - * do not want to scroll to the position of the marker yet. - */ - _view.setAutoScroll(false); - _view.selectRow(index.row()); - _view.setAutoScroll(true); + if (index.isValid()) { + /* + * The row of the active marker will be colored according to + * the assigned property of the current state of the Dual + * marker. Auto-scrolling is temporarily disabled because we + * do not want to scroll to the position of the marker yet. + */ + _view.setAutoScroll(false); + _view.selectRow(index.row()); + _view.setAutoScroll(true); + } else { + _view.clearSelection(); + QString err("The marker's entry is filtered out."); + _em.showMessage(err); + } } else { _view.clearSelection(); } diff --git a/kernel-shark/src/KsTraceViewer.hpp b/kernel-shark/src/KsTraceViewer.hpp index cf529ba..15eee50 100644 --- a/kernel-shark/src/KsTraceViewer.hpp +++ b/kernel-shark/src/KsTraceViewer.hpp @@ -119,6 +119,8 @@ private: KsDataStore *_data; + QErrorMessage _em; + enum Condition { Containes = 0,