diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2014-08-08 01:39:29 -0400 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2014-08-08 01:59:59 -0400 |
| commit | 981d028c09d10ed867f2f955f58d60b753c64f29 (patch) | |
| tree | 0dab835a14c5cb3e740be4e46be93c42aec76bc5 /firmware/kernel/kernel-internal.h | |
| parent | 53d9f2e6a7564e487bdac87f6e28c662e8407458 (diff) | |
| download | rockbox-981d028c09d10ed867f2f955f58d60b753c64f29.zip rockbox-981d028c09d10ed867f2f955f58d60b753c64f29.tar.gz rockbox-981d028c09d10ed867f2f955f58d60b753c64f29.tar.bz2 rockbox-981d028c09d10ed867f2f955f58d60b753c64f29.tar.xz | |
Do some kernel cleanup
* Seal away private thread and kernel definitions and declarations
into the internal headers in order to better hide internal structure.
* Add a thread-common.c file that keeps shared functions together.
List functions aren't messed with since that's about to be changed to
different ones.
* It is necessary to modify some ARM/PP stuff since GCC was complaining
about constant pool distance and I would rather not force dump it. Just
bl the cache calls in the startup and exit code and let it use veneers
if it must.
* Clean up redundant #includes in relevant areas and reorganize them.
* Expunge useless and dangerous stuff like remove_thread().
Change-Id: I6e22932fad61a9fac30fd1363c071074ee7ab382
Diffstat (limited to 'firmware/kernel/kernel-internal.h')
| -rw-r--r-- | firmware/kernel/kernel-internal.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/firmware/kernel/kernel-internal.h b/firmware/kernel/kernel-internal.h index 51c589a..8f7e3e2 100644 --- a/firmware/kernel/kernel-internal.h +++ b/firmware/kernel/kernel-internal.h @@ -22,8 +22,8 @@ #ifndef KERNEL_INTERNAL_H #define KERNEL_INTERNAL_H -#include "config.h" -#include "debug.h" +#include "thread-internal.h" +#include "kernel.h" /* Make this nonzero to enable more elaborate checks on objects */ #if defined(DEBUG) || defined(SIMULATOR) @@ -45,5 +45,23 @@ #define KERNEL_ASSERT(exp, msg...) ({}) #endif +static inline void kernel_init(void) +{ + /* Init the threading API */ + extern void init_threads(void); + init_threads(); + + /* Other processors will not reach this point in a multicore build. + * In a single-core build with multiple cores they fall-through and + * sleep in cop_main without returning. */ + if (CURRENT_CORE == CPU) + { + init_queues(); + init_tick(); +#ifdef KDEV_INIT + kernel_device_init(); +#endif + } +} #endif /* KERNEL_INTERNAL_H */ |