summaryrefslogtreecommitdiff
path: root/firmware/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r--firmware/kernel.c35
1 files changed, 1 insertions, 34 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c
index d8c67e8485..fe40c35002 100644
--- a/firmware/kernel.c
+++ b/firmware/kernel.c
@@ -27,6 +27,7 @@
27#include "system.h" 27#include "system.h"
28#include "panic.h" 28#include "panic.h"
29#include "debug.h" 29#include "debug.h"
30#include "general.h"
30 31
31/* Make this nonzero to enable more elaborate checks on objects */ 32/* Make this nonzero to enable more elaborate checks on objects */
32#if defined(DEBUG) || defined(SIMULATOR) 33#if defined(DEBUG) || defined(SIMULATOR)
@@ -62,40 +63,6 @@ static struct
62} all_queues SHAREDBSS_ATTR; 63} all_queues SHAREDBSS_ATTR;
63 64
64/**************************************************************************** 65/****************************************************************************
65 * Common utilities
66 ****************************************************************************/
67
68/* Find a pointer in a pointer array. Returns the addess of the element if
69 * found or the address of the terminating NULL otherwise. */
70static void ** find_array_ptr(void **arr, void *ptr)
71{
72 void *curr;
73 for(curr = *arr; curr != NULL && curr != ptr; curr = *(++arr));
74 return arr;
75}
76
77/* Remove a pointer from a pointer array if it exists. Compacts it so that
78 * no gaps exist. Returns 0 on success and -1 if the element wasn't found. */
79static int remove_array_ptr(void **arr, void *ptr)
80{
81 void *curr;
82 arr = find_array_ptr(arr, ptr);
83
84 if(*arr == NULL)
85 return -1;
86
87 /* Found. Slide up following items. */
88 do
89 {
90 void **arr1 = arr + 1;
91 *arr++ = curr = *arr1;
92 }
93 while(curr != NULL);
94
95 return 0;
96}
97
98/****************************************************************************
99 * Standard kernel stuff 66 * Standard kernel stuff
100 ****************************************************************************/ 67 ****************************************************************************/
101void kernel_init(void) 68void kernel_init(void)