#ifndef __LIBTHREADS_H__
#define __LIBTHREADS_H__
-#include <ucontext.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
-typedef enum thread_state {
- THREAD_CREATED,
- THREAD_RUNNING,
- THREAD_READY,
- THREAD_COMPLETED
-} thread_state;
+ typedef void (*thrd_start_t)();
-struct thread {
- void (*start_routine)();
- void *arg;
- ucontext_t context;
- void *stack;
- int id;
- thread_state state;
-};
+ typedef int thrd_t;
-int thread_create(struct thread *t, void (*start_routine)(), void *arg);
-void thread_join(struct thread *t);
-int thread_yield(void);
-struct thread *thread_current(void);
+ 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);
-extern void user_main(void);
+ void user_main(void);
+
+#ifdef __cplusplus
+}
+#endif
#endif /* __LIBTHREADS_H__ */