summaryrefslogtreecommitdiff
path: root/source/api_wrappers/linux/CThreadWrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/api_wrappers/linux/CThreadWrapper.h')
-rw-r--r--source/api_wrappers/linux/CThreadWrapper.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/source/api_wrappers/linux/CThreadWrapper.h b/source/api_wrappers/linux/CThreadWrapper.h
new file mode 100644
index 0000000..aabadcc
--- /dev/null
+++ b/source/api_wrappers/linux/CThreadWrapper.h
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (C) ST-Ericsson SA 2011
+ * License terms: 3-clause BSD license
+ ******************************************************************************/
+
+#ifndef _CTHREADWRAPPER_H
+#define _CTHREADWRAPPER_H
+
+#include "CWaitableObject.h"
+#include "CEventObject.h"
+#include <pthread.h>
+
+typedef void*(*StartAddress_t)(void *);
+
+class CThreadWrapper : public CWaitableObject
+{
+public:
+ CThreadWrapper(void*(* pStartAddress)(void *), void *pArgument);
+ ~CThreadWrapper();
+ void ResumeThread();
+ void SuspendThread();
+ void WaitToDie(DWORD dwMilliseconds = 1000);
+ DWORD GetThreadId();
+ DWORD Wait(DWORD dwMilliseconds = INFINITE);
+private:
+ pthread_t m_tid;
+ StartAddress_t m_pStartAddress;
+ void *m_pArgument;
+ CEventObject m_ThreadEndedEvt;
+
+protected:
+ static void *ThreadFunc(void *Arg);
+};
+
+#endif /* _CTHREADWRAPPER_H */
+