Threads.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifdef SOLARIS
  2. # include <thread.h>
  3. typedef mutex_t * o_mtx_t;
  4. typedef cond_t * o_con_t;
  5. typedef thread_t o_thr_t;
  6. #else
  7. /*** Linux | Darwin ***/
  8. # include <pthread.h>
  9. typedef pthread_mutex_t * o_mtx_t;
  10. typedef pthread_cond_t * o_con_t;
  11. typedef pthread_t o_thr_t;
  12. #endif
  13. typedef void (*oberon_proc)(); /* Oberon procedure to be started as a new thread */
  14. extern o_mtx_t o_mtxInit( );
  15. extern void o_mtxDestroy( o_mtx_t mtx );
  16. extern void o_mtxLock( o_mtx_t mtx );
  17. extern void o_mtxUnlock( o_mtx_t mtx );
  18. extern o_con_t o_conInit( );
  19. extern void o_conDestroy( o_con_t con );
  20. extern void o_conWait( o_con_t con, o_mtx_t mtx );
  21. extern void o_conSignal( o_con_t con );
  22. extern o_thr_t o_thrStart( oberon_proc p, int len );
  23. extern o_thr_t o_thrThis( );
  24. extern void o_thrSleep( int ms );
  25. extern void o_thrYield( );
  26. extern void o_thrExit( );
  27. extern void o_thrSuspend( o_thr_t thr );
  28. extern void o_thrResume( o_thr_t thr );
  29. extern void o_thrSetprio( o_thr_t thr, int prio );
  30. extern int o_thrGetprio( o_thr_t thr );
  31. extern void o_thrKill( o_thr_t thr, int sig );
  32. extern int o_thrInitialize( int* low, int* high );