#ifndef __LIBTHREADS_H__
#define __LIBTHREADS_H__
-#include <stdio.h>
-#include <ucontext.h>
+typedef int thread_id_t;
+typedef void (*thrd_start_t)();
-//#define CONFIG_DEBUG
+typedef thread_id_t thrd_t;
-#ifdef CONFIG_DEBUG
-#define DEBUG(fmt, ...) do { printf("*** %25s(): line %-4d *** " fmt, __func__, __LINE__, ##__VA_ARGS__); } while (0)
-#define DBG() DEBUG("\n");
-#else
-#define DEBUG(fmt, ...)
-#define DBG()
-#endif
+int thrd_create(thrd_t *t, thrd_start_t start_routine, void *arg);
+int thrd_join(thrd_t);
+int thrd_yield(void);
+thrd_t thrd_current(void);
-struct thread {
- void (*start_routine);
- void *arg;
- ucontext_t context;
- void *stack;
- int index;
- int completed;
-};
-
-int thread_create(struct thread *t, void (*start_routine), void *arg);
-void thread_join(struct thread *t);
-struct thread *thread_current(void);
+extern void user_main(void);
#endif /* __LIBTHREADS_H__ */