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 | |
| parent | 1060e447f83128a78dfaa8d59ba0baa642d15a4d (diff) | |
| download | rockbox-05dccc355144dc717b3cb9ef0074a9ab38a520f4.zip rockbox-05dccc355144dc717b3cb9ef0074a9ab38a520f4.tar.gz rockbox-05dccc355144dc717b3cb9ef0074a9ab38a520f4.tar.bz2 rockbox-05dccc355144dc717b3cb9ef0074a9ab38a520f4.tar.xz | |
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')
| -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 | ||||
| -rw-r--r-- | apps/plugins/wav2wv.c | 12 |
4 files changed, 88 insertions, 0 deletions
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES index 4d4247e..0f6e13e 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 0000000..3318476 --- /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 0000000..71cff37 --- /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__ */ + diff --git a/apps/plugins/wav2wv.c b/apps/plugins/wav2wv.c index 20a4589..812ed17 100644 --- a/apps/plugins/wav2wv.c +++ b/apps/plugins/wav2wv.c @@ -17,6 +17,9 @@ * ****************************************************************************/ #include "plugin.h" +#ifdef RB_PROFILE +#include "lib/profile_plugin.h" +#endif #include <codecs/libwavpack/wavpack.h> @@ -289,6 +292,15 @@ static int wav2wv (char *filename) enum plugin_status plugin_start(struct plugin_api* api, void *parameter) { +#ifdef RB_PROFILE + /* This doesn't start profiling or anything, it just gives the + * profiling functions that are compiled in someplace to call, + * this is needed here to let this compile with profiling support + * since it calls code from a codec that is compiled with profiling + * support */ + profile_init(api); +#endif + rb = api; if (!parameter) |