packages: add sysprof tool

Add sysprof - preformance profiler
for Linux - to the development tools.

Patches for mips/arm are from openembedded
code.

sysprof-cli <outfile> get required events/stack frames.
Next outfile can be loaded/displayed on PC using
sysprof.

Tool using:
- PERF events
- /proc/kallsyms for kernel symbols

You should compile kernel with profiling enabled,
debug information, symbol table information.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/packages@38466 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg 2013-10-20 15:58:09 +00:00
parent d43e8c61f2
commit 8886dca03c
4 changed files with 109 additions and 0 deletions

44
devel/sysprof/Makefile Normal file
View File

@ -0,0 +1,44 @@
#
# Copyright (C) 2009-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=sysprof
PKG_VERSION:=1.2.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://sysprof.com
PKG_MD5SUM:=a81808d847732f8dafb59d26ec2eebbf
PKG_BUILD_DEPENDS:= glib2
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/kernel.mk
define Package/sysprof
SECTION:=devel
CATEGORY:=Development
TITLE:=Sysprof System Profiler
URL:=http://sysprof.com
DEPENDS:=+glib2
endef
define Package/sysprof/description
Sysprof is a statistical, system-wide profiler for Linux
endef
define Package/sysprof/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sysprof-cli $(1)/usr/bin/
endef
$(eval $(call BuildPackage,sysprof))

View File

@ -0,0 +1,22 @@
On uclibc elf.h does not have GNU extentions but we need this define
so we define it locally if its not getting it from elf.h
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: git/elfparser.h
===================================================================
--- git.orig/elfparser.h 2011-07-16 18:57:41.000000000 -0700
+++ git/elfparser.h 2011-07-16 20:28:54.733829895 -0700
@@ -17,6 +17,10 @@
*/
#include <glib.h>
+#ifndef NT_GNU_BUILD_ID
+#define NT_GNU_BUILD_ID 3
+#endif
+
typedef struct ElfSym ElfSym;
typedef struct ElfParser ElfParser;

View File

@ -0,0 +1,21 @@
Upstream-Status: Pending
Index: git/util.h
===================================================================
--- git.orig/util.h 2010-12-07 22:41:57.156243001 -0600
+++ git/util.h 2010-12-07 22:43:47.616243002 -0600
@@ -37,4 +37,13 @@
#define cpu_relax() asm volatile("" ::: "memory");
#endif
+#ifdef __arm__
+/*
+ * Use the __kuser_memory_barrier helper in the CPU helper page. See
+ * arch/arm/kernel/entry-armv.S in the kernel source for details.
+ */
+#define rmb() ((void(*)(void))0xffff0fa0)()
+#define cpu_relax() asm volatile("":::"memory")
+#endif
+
#endif

View File

@ -0,0 +1,22 @@
Upstream-Status: Pending
Index: git/util.h
===================================================================
--- git.orig/util.h 2010-12-08 01:22:44.486243001 -0600
+++ git/util.h 2010-12-08 01:23:27.836243001 -0600
@@ -37,4 +37,15 @@
#define cpu_relax() asm volatile("" ::: "memory");
#endif
+#ifdef __mips__
+#define rmb() asm volatile( \
+ ".set mips2\n\t" \
+ "sync\n\t" \
+ ".set mips0" \
+ : /* no output */ \
+ : /* no input */ \
+ : "memory")
+#define cpu_relax() asm volatile("" ::: "memory")
+#endif
+
#endif