X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=libthreads.h;h=0c02971342d06ffa903feb01b2d4daadc08754d4;hp=f8a86cdfb5f24e2c42c28955fcc52a8dd2351cb2;hb=99ca0039c04d8c3dc000f7d3899d1d81564bc168;hpb=6ac83ab66e4c564ffd0470ad25d5554eb5d52f28 diff --git a/libthreads.h b/libthreads.h index f8a86cdf..0c029713 100644 --- a/libthreads.h +++ b/libthreads.h @@ -1,26 +1,27 @@ +/** @file libthreads.h + * @brief Basic Thread Library Functionality. + */ + #ifndef __LIBTHREADS_H__ #define __LIBTHREADS_H__ -#include -#include - -#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, ...) +#ifdef __cplusplus +extern "C" { #endif -struct thread { - void (*start_routine); - void *arg; - ucontext_t context; - void *stack; - int index; - int completed; -}; + typedef void (*thrd_start_t)(void *); + + typedef int thrd_t; -int thread_create(struct thread *t, void (*start_routine), void *arg); + 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__ */