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
--- /dev/null
+#
+# 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))
--- /dev/null
+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;
+
--- /dev/null
+
+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
--- /dev/null
+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