1 #ifndef __MTHREAD_PROTO_H__
2 #define __MTHREAD_PROTO_H__
5 mthread_tcb_t
* mthread_find_tcb(mthread_thread_t thread
);
6 void mthread_thread_reset(mthread_thread_t thread
);
9 void mthread_init_valid_attributes(void);
11 int mthread_attr_verify(void);
15 void mthread_init_valid_conditions(void);
17 int mthread_cond_verify(void);
21 void mthread_init_keys(void);
22 void mthread_cleanup_values(void);
26 #define mthread_panic(m) mthread_panic_f(__FILE__, __LINE__, (m))
27 void mthread_panic_f(const char *file
, int line
, const char *msg
);
28 #define mthread_debug(m) mthread_debug_f(__FILE__, __LINE__, (m))
29 void mthread_debug_f(const char *file
, int line
, const char *msg
);
31 void mthread_panic_s(void);
32 # define mthread_panic(m) mthread_panic_s()
33 # define mthread_debug(m)
37 void mthread_init_valid_mutexes(void);
40 int mthread_mutex_valid(mthread_mutex_t
*mutex
);
41 # define MTHREAD_CHECK_INIT() mthread_init()
43 # define mthread_mutex_valid(x) ((*x)->mm_magic == MTHREAD_INIT_MAGIC)
44 # define MTHREAD_CHECK_INIT()
48 int mthread_mutex_verify(void);
52 int mthread_getcontext(ucontext_t
*ctxt
);
53 void mthread_init_scheduler(void);
54 void mthread_schedule(void);
55 void mthread_suspend(mthread_state_t state
);
56 void mthread_unsuspend(mthread_thread_t thread
);
60 void mthread_dump_queue(mthread_queue_t
*queue
);
62 void mthread_queue_init(mthread_queue_t
*queue
);
63 void mthread_queue_add(mthread_queue_t
*queue
, mthread_thread_t thread
);
64 mthread_thread_t
mthread_queue_remove(mthread_queue_t
*queue
);
65 int mthread_queue_isempty(mthread_queue_t
*queue
);