minix/lib/libmthread/proto.h
Thomas Veerman a7072a5e1c Revamp the mthread library and update test59
Before, the 'main thread' of a process was never taken into account anywhere in
the library, causing mutexes not to work properly (and consequently, neither
did the condition variables). For example, if the 'main thread' (that is, the
thread which is started at the beginning of a process; not a spawned thread by
the library) would lock a mutex, it wasn't actually locked.
2010-09-30 13:44:13 +00:00

50 lines
1.7 KiB
C

#ifndef __MTHREAD_PROTO_H__
#define __MTHREAD_PROTO_H__
/* allocate.c */
_PROTOTYPE( mthread_tcb_t * mthread_find_tcb, (mthread_thread_t thread) );
/* attribute.c */
_PROTOTYPE( void mthread_init_valid_attributes, (void) );
#ifdef MDEBUG
_PROTOTYPE( int mthread_attr_verify, (void) );
#endif
/* cond.c */
_PROTOTYPE( void mthread_init_valid_conditions, (void) );
#ifdef MDEBUG
_PROTOTYPE( int mthread_cond_verify, (void) );
#endif
/* misc.c */
#define mthread_panic(m) mthread_panic_f(__FILE__, __LINE__, (m))
_PROTOTYPE( void mthread_panic_f, (const char *file, int line,
const char *msg) );
#define mthread_debug(m) mthread_debug_f(__FILE__, __LINE__, (m))
_PROTOTYPE( void mthread_debug_f, (const char *file, int line,
const char *msg) );
/* mutex.c */
_PROTOTYPE( void mthread_init_valid_mutexes, (void) );
_PROTOTYPE( int mthread_mutex_valid, (mthread_mutex_t *mutex) );
#ifdef MDEBUG
_PROTOTYPE( int mthread_mutex_verify, (void) );
#endif
/* schedule.c */
_PROTOTYPE( int mthread_getcontext, (ucontext_t *ctxt) );
_PROTOTYPE( void mthread_init_scheduler, (void) );
_PROTOTYPE( void mthread_schedule, (void) );
_PROTOTYPE( void mthread_suspend, (mthread_state_t state) );
_PROTOTYPE( void mthread_unsuspend, (mthread_thread_t thread) );
/* queue.c */
_PROTOTYPE( void mthread_dump_queue, (mthread_queue_t *queue) );
_PROTOTYPE( void mthread_queue_init, (mthread_queue_t *queue) );
_PROTOTYPE( void mthread_queue_add, (mthread_queue_t *queue,
mthread_thread_t thread) );
_PROTOTYPE( mthread_thread_t mthread_queue_remove, (mthread_queue_t *queue));
_PROTOTYPE( int mthread_queue_isempty, (mthread_queue_t *queue) );
#endif