-static void
-thread_root (void (*function) (void *aux), void *aux)
-{
- ASSERT (function != NULL);
+static void kernel_thread (thread_func *, void *aux);
+
+static void idle (void *aux UNUSED);
+static struct thread *running_thread (void);
+static struct thread *next_thread_to_run (void);
+static struct thread *new_thread (const char *name);
+static void init_thread (struct thread *, const char *name);
+static bool is_thread (struct thread *);
+static void *alloc_frame (struct thread *, size_t size);
+static void destroy_thread (struct thread *);
+static void schedule (void);
+void schedule_tail (struct thread *prev);
+static tid_t allocate_tid (void);