pthread_emu.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef PTHREAD_EMU_H
  2. #define PTHREAD_EMU_H
  3. #include "fixed_types.h"
  4. #include "subsecond_time.h"
  5. class Core;
  6. #include <pthread.h>
  7. namespace PthreadEmu {
  8. enum pthread_enum_t
  9. {
  10. PTHREAD_MUTEX_LOCK = 0, PTHREAD_MUTEX_TRYLOCK, PTHREAD_MUTEX_UNLOCK,
  11. PTHREAD_COND_WAIT, PTHREAD_COND_SIGNAL, PTHREAD_COND_BROADCAST,
  12. PTHREAD_BARRIER_WAIT, PTHREAD_ENUM_LAST
  13. };
  14. enum state_t {
  15. STATE_STOPPED, STATE_RUNNING, STATE_WAITING, STATE_INREGION, STATE_SEPARATOR, STATE_MAX, STATE_BY_RETURN
  16. };
  17. void init();
  18. void pthreadCount(pthread_enum_t function, Core *core, SubsecondTime delay_sync, SubsecondTime delay_mem);
  19. void updateState(Core *core, state_t state, SubsecondTime delay = SubsecondTime::Zero());
  20. IntPtr MutexInit (pthread_mutex_t *mux, pthread_mutexattr_t *attributes);
  21. IntPtr MutexLock (pthread_mutex_t *mux);
  22. IntPtr MutexTrylock (pthread_mutex_t *mux);
  23. IntPtr MutexUnlock (pthread_mutex_t *mux);
  24. IntPtr CondInit (pthread_cond_t *cond, pthread_condattr_t *attributes);
  25. IntPtr CondWait (pthread_cond_t *cond, pthread_mutex_t *mutex);
  26. IntPtr CondSignal (pthread_cond_t *cond);
  27. IntPtr CondBroadcast (pthread_cond_t *cond);
  28. IntPtr BarrierInit (pthread_barrier_t *barrier, pthread_barrierattr_t *attributes, unsigned count);
  29. IntPtr BarrierWait (pthread_barrier_t *barrier);
  30. }
  31. #endif // PTHREAD_EMU_H