diff options
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 | |||
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 | |||