libthreads: thread_join: return 'int' as status
[model-checker.git] / libthreads.h
index f8a86cdfb5f24e2c42c28955fcc52a8dd2351cb2..1ea54ea758ea895eeac0230082645fc1da9d7ce9 100644 (file)
@@ -1,26 +1,31 @@
 #ifndef __LIBTHREADS_H__
 #define __LIBTHREADS_H__
 
-#include <stdio.h>
 #include <ucontext.h>
 
-#ifdef CONFIG_DEBUG
-#define DBG() do { printf("Here: %s, L%d\n", __func__, __LINE__); } while (0)
-#define DEBUG(fmt, ...) printf(fmt, ##__VA_ARGS__)
-#else
-#define DBG()
-#define DEBUG(fmt, ...)
-#endif
+typedef enum thread_state {
+       THREAD_CREATED,
+       THREAD_RUNNING,
+       THREAD_READY,
+       THREAD_COMPLETED
+} thread_state;
+
+typedef int thread_id_t;
 
 struct thread {
-       void (*start_routine);
+       void (*start_routine)();
        void *arg;
        ucontext_t context;
        void *stack;
-       int index;
-       int completed;
+       thread_id_t id;
+       thread_state state;
 };
 
-int thread_create(struct thread *t, void (*start_routine), void *arg);
+int thread_create(struct thread *t, void (*start_routine)(), void *arg);
+int thread_join(struct thread *t);
+int thread_yield(void);
+struct thread *thread_current(void);
+
+extern void user_main(void);
 
 #endif /* __LIBTHREADS_H__ */