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.tar.gz rockbox-05dccc355144dc717b3cb9ef0074a9ab38a520f4.zip |
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 4d4247e3bb..0f6e13ebb4 100644 --- a/apps/plugins/lib/SOURCES +++ b/apps/plugins/lib/SOURCES | |||
@@ -12,3 +12,6 @@ xlcd.c | |||
12 | #ifdef HAVE_LCD_CHARCELLS | 12 | #ifdef HAVE_LCD_CHARCELLS |
13 | playergfx.c | 13 | playergfx.c |
14 | #endif | 14 | #endif |
15 | #ifdef RB_PROFILE | ||
16 | profile_plugin.c | ||
17 | #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 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Passthrough routines for plugin profiling | ||
11 | * | ||
12 | * Copyright (C) 2006 Brandon Low | ||
13 | * | ||
14 | * All files in this archive are subject to the GNU General Public License. | ||
15 | * See the file COPYING in the source tree root for full license agreement. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #include "plugin.h" | ||
23 | |||
24 | static struct plugin_api *local_rb = NULL; /* global api struct pointer */ | ||
25 | |||
26 | void profile_init(struct plugin_api* pa) | ||
27 | { | ||
28 | local_rb = pa; | ||
29 | } | ||
30 | |||
31 | void __cyg_profile_func_enter(void *this_fn, void *call_site) { | ||
32 | (void)call_site; | ||
33 | local_rb->profile_func_enter(this_fn, __builtin_return_address(1)); | ||
34 | } | ||
35 | |||
36 | void __cyg_profile_func_exit(void *this_fn, void *call_site) { | ||
37 | local_rb->profile_func_exit(this_fn,call_site); | ||
38 | } | ||
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 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Passthrough routines for plugin profiling. | ||
11 | * | ||
12 | * Copyright (C) 2005 Brandon Low | ||
13 | * | ||
14 | * All files in this archive are subject to the GNU General Public License. | ||
15 | * See the file COPYING in the source tree root for full license agreement. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #ifndef __PROFILE_PLUGIN_H__ | ||
23 | #define __PROFILE_PLUGIN_H__ | ||
24 | |||
25 | #include "plugin.h" | ||
26 | |||
27 | void profile_init(struct plugin_api* pa); | ||
28 | |||
29 | void __cyg_profile_func_enter(void *this_fn, void *call_site) | ||
30 | NO_PROF_ATTR ICODE_ATTR; | ||
31 | void __cyg_profile_func_exit(void *this_fn, void *call_site) | ||
32 | NO_PROF_ATTR ICODE_ATTR; | ||
33 | |||
34 | #endif /* __PROFILE_PLUGIN_H__ */ | ||
35 | |||
diff --git a/apps/plugins/wav2wv.c b/apps/plugins/wav2wv.c index 20a458960f..812ed176c4 100644 --- a/apps/plugins/wav2wv.c +++ b/apps/plugins/wav2wv.c | |||
@@ -17,6 +17,9 @@ | |||
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | #include "plugin.h" | 19 | #include "plugin.h" |
20 | #ifdef RB_PROFILE | ||
21 | #include "lib/profile_plugin.h" | ||
22 | #endif | ||
20 | 23 | ||
21 | #include <codecs/libwavpack/wavpack.h> | 24 | #include <codecs/libwavpack/wavpack.h> |
22 | 25 | ||
@@ -289,6 +292,15 @@ static int wav2wv (char *filename) | |||
289 | 292 | ||
290 | enum plugin_status plugin_start(struct plugin_api* api, void *parameter) | 293 | enum plugin_status plugin_start(struct plugin_api* api, void *parameter) |
291 | { | 294 | { |
295 | #ifdef RB_PROFILE | ||
296 | /* This doesn't start profiling or anything, it just gives the | ||
297 | * profiling functions that are compiled in someplace to call, | ||
298 | * this is needed here to let this compile with profiling support | ||
299 | * since it calls code from a codec that is compiled with profiling | ||
300 | * support */ | ||
301 | profile_init(api); | ||
302 | #endif | ||
303 | |||
292 | rb = api; | 304 | rb = api; |
293 | 305 | ||
294 | if (!parameter) | 306 | if (!parameter) |