X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=libthreads.h;h=0c02971342d06ffa903feb01b2d4daadc08754d4;hb=9c42c31b487bf7319dba4d43e417e29420306977;hp=b73ab1c0cee46fc063c42d703f2b8e922d0d5210;hpb=79f227f355cd5efbcad184b20d020493f27f1c35;p=model-checker.git diff --git a/libthreads.h b/libthreads.h index b73ab1c..0c02971 100644 --- a/libthreads.h +++ b/libthreads.h @@ -1,30 +1,27 @@ +/** @file libthreads.h + * @brief Basic Thread Library Functionality. + */ + #ifndef __LIBTHREADS_H__ #define __LIBTHREADS_H__ -#include -#include +#ifdef __cplusplus +extern "C" { +#endif -//#define CONFIG_DEBUG + typedef void (*thrd_start_t)(void *); -#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 + typedef int thrd_t; -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); + 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); + + void user_main(void); + +#ifdef __cplusplus +} +#endif #endif /* __LIBTHREADS_H__ */