summaryrefslogtreecommitdiff
path: root/source/api_wrappers/linux/CThreadWrapper.h
blob: c7bfe011d8669b15704b1a28a7664ff8427a4339 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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 */