diff options
author | Brandon Low <lostlogic@rockbox.org> | 2006-01-18 20:54:13 +0000 |
---|---|---|
committer | Brandon Low <lostlogic@rockbox.org> | 2006-01-18 20:54:13 +0000 |
commit | 05dccc355144dc717b3cb9ef0074a9ab38a520f4 (patch) | |
tree | 0a36425cf1321817480a82ed05564a2790e2fca9 /apps/plugins/lib | |
parent | 1060e447f83128a78dfaa8d59ba0baa642d15a4d (diff) |
Profiling support, tools and documentation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8375 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r-- | apps/plugins/lib/SOURCES | 3 | ||||
-rw-r--r-- | apps/plugins/lib/profile_plugin.c | 38 | ||||
-rw-r--r-- | apps/plugins/lib/profile_plugin.h | 35 |
3 files changed, 76 insertions, 0 deletions
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES index 4d4247e3bb..0f6e13ebb4 100644 --- a/apps/plugins/lib/SOURCES +++ b/apps/plugins/lib/SOURCES @@ -12,3 +12,6 @@ xlcd.c #ifdef HAVE_LCD_CHARCELLS playergfx.c #endif +#ifdef RB_PROFILE +profile_plugin.c +#endif diff --git a/apps/plugins/lib/profile_plugin.c b/apps/plugins/lib/profile_plugin.c new file mode 100644 index 0000000000..3318476a89 --- /dev/null +++ b/apps/plugins/lib/profile_plugin.c @@ -0,0 +1,38 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Passthrough routines for plugin profiling +* +* Copyright (C) 2006 Brandon Low +* +* All files in this archive are subject to the GNU General Public License. +* See the file COPYING in the source tree root for full license agreement. +* +* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +* KIND, either express or implied. +* +****************************************************************************/ + +#include "plugin.h" + +static struct plugin_api *local_rb = NULL; /* global api struct pointer */ + +void profile_init(struct plugin_api* pa) +{ + local_rb = pa; +} + +void __cyg_profile_func_enter(void *this_fn, void *call_site) { + (void)call_site; + local_rb->profile_func_enter(this_fn, __builtin_return_address(1)); +} + +void __cyg_profile_func_exit(void *this_fn, void *call_site) { + local_rb->profile_func_exit(this_fn,call_site); +} diff --git a/apps/plugins/lib/profile_plugin.h b/apps/plugins/lib/profile_plugin.h new file mode 100644 index 0000000000..71cff37033 --- /dev/null +++ b/apps/plugins/lib/profile_plugin.h @@ -0,0 +1,35 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Passthrough routines for plugin profiling. +* +* Copyright (C) 2005 Brandon Low +* +* All files in this archive are subject to the GNU General Public License. +* See the file COPYING in the source tree root for full license agreement. +* +* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +* KIND, either express or implied. +* +****************************************************************************/ + +#ifndef __PROFILE_PLUGIN_H__ +#define __PROFILE_PLUGIN_H__ + +#include "plugin.h" + +void profile_init(struct plugin_api* pa); + +void __cyg_profile_func_enter(void *this_fn, void *call_site) + NO_PROF_ATTR ICODE_ATTR; +void __cyg_profile_func_exit(void *this_fn, void *call_site) + NO_PROF_ATTR ICODE_ATTR; + +#endif /* __PROFILE_PLUGIN_H__ */ + |