diff -r 0af9dd6c2c3a -r cd3ce1b777ef hostsupport/hostthreadadapter/inc/platformthreading.h --- a/hostsupport/hostthreadadapter/inc/platformthreading.h Thu Sep 02 16:06:36 2010 +0100 +++ b/hostsupport/hostthreadadapter/inc/platformthreading.h Fri Sep 03 11:32:22 2010 +0300 @@ -1,164 +1,164 @@ -// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// This header is to create platform independent -// threading / synchronization API types and values. - -#ifndef PSU_PLATFORMTHREADING_H -#define PSU_PLATFORMTHREADING_H - -#ifdef WIN32 -#include -#else -#include -#include -#include -#endif - -#include "platformtypes.h" - -namespace Psu -{ - -#ifdef WIN32 - - typedef HANDLE PLATFORM_THREAD_T; - typedef DWORD PLATFORM_THREADFUNC_RETTYPE; - typedef LPTHREAD_START_ROUTINE PLATFORM_THREADFUNC; - typedef CRITICAL_SECTION PLATFORM_MUTEX_T; - typedef HANDLE PLATFORM_SEMAPHORE_T; - typedef DWORD STATUS_T; - -#ifdef __GNUG__ - typedef void (*PLATFORM_INTERRUPT_HANDLER)(ULONG_PTR); -#else - typedef VOID CALLBACK PLATFORM_INTERRUPT_HANDLER (__in ULONG_PTR); -#endif - -#else // LINUX - - typedef pthread_t PLATFORM_THREAD_T; - typedef void * PLATFORM_THREADFUNC_RETTYPE; - typedef void * (*PLATFORM_THREADFUNC)(void *); - typedef pthread_mutex_t PLATFORM_MUTEX_T; - typedef sem_t PLATFORM_SEMAPHORE_T; - typedef int STATUS_T; - - typedef void (*PLATFORM_INTERRUPT_HANDLER)(int); - -#define WINAPI - -#endif - -#ifndef WIN32 - extern const int MicrosecsInMillisec; -#endif - - - /** - * Creates a thread with the default attributes. - */ - int platform_create_simple_thread(PLATFORM_THREAD_T * pThreadHandle, - PLATFORM_THREADFUNC pFunc, - void * param); - - /** - * Releases a thread (does not kill it). - */ - void platform_release_thread(PLATFORM_THREAD_T threadHandle); - - /** - * Waits for a thread to terminate. - */ - STATUS_T platform_join_thread(PLATFORM_THREAD_T threadHandle); - - /** - * Initializes a mutex (CRITICAL_SECTION on windows). - */ - void platform_mutex_init(PLATFORM_MUTEX_T * pMutex); - - /** - * Destroys a mutex (CRITICAL_SECTION on windows). - */ - void platform_mutex_destroy(PLATFORM_MUTEX_T * pMutex); - - /** - *Locks a mutex ("enters" a CRITICAL_SECTION on windows). - */ - void platform_mutex_lock(PLATFORM_MUTEX_T * pMutex); - - /** - * Unlocks a mutex ("exits" a CRITICAL_SECTION on windows). - */ - void platform_mutex_unlock(PLATFORM_MUTEX_T * pMutex); - - - /** - * Sleeps for a certain duration for given milliseconds. - */ - void platform_sleep(int millisecs); - - /** - * Creates a semaphore with the default attributes. - */ - STATUS_T platform_create_semaphore(PLATFORM_SEMAPHORE_T& semHandle, - int initialCount,int maximumCount); - - - /** - * wait for the semaphore signal - */ - STATUS_T platform_wait_for_signal(PLATFORM_SEMAPHORE_T& semHandle); - - /** - * Posts a semaphore signal so that the pending thread can continue - */ - void platform_signal_semaphore(PLATFORM_SEMAPHORE_T& semHandle); - - /** - * releases a semaphore object/handle. - */ - void platform_release_semaphore(PLATFORM_SEMAPHORE_T& semHandle); - - /** - * do an interruptable sleep - * @param length the length thread should sleep, in milliseconds - * @return 0 if the sleep expires normally, non-zero if the sleep has - * been interrupted - */ - int32_t platform_interruptable_sleep(int64_t length); - - /** - * signals a thread to interrupt a sleep - * @param handle PLATFORM_THREAD_T handle to the thread - * @return whether the interrupt succeeded or not - */ - bool platform_interrupt_sleep(PLATFORM_THREAD_T handle); - -#ifndef WIN32 - class SignalUSR1Handler - { - private: - SignalUSR1Handler(); - ~SignalUSR1Handler(); - - struct sigaction sa; - struct sigaction old; - - public: - static SignalUSR1Handler instance; - }; -#endif -} - -#endif +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This header is to create platform independent +// threading / synchronization API types and values. + +#ifndef PSU_PLATFORMTHREADING_H +#define PSU_PLATFORMTHREADING_H + +#ifdef WIN32 +#include +#else +#include +#include +#include +#endif + +#include "platformtypes.h" + +namespace Psu +{ + +#ifdef WIN32 + + typedef HANDLE PLATFORM_THREAD_T; + typedef DWORD PLATFORM_THREADFUNC_RETTYPE; + typedef LPTHREAD_START_ROUTINE PLATFORM_THREADFUNC; + typedef CRITICAL_SECTION PLATFORM_MUTEX_T; + typedef HANDLE PLATFORM_SEMAPHORE_T; + typedef DWORD STATUS_T; + +#ifdef __GNUG__ + typedef void (*PLATFORM_INTERRUPT_HANDLER)(ULONG_PTR); +#else + typedef VOID CALLBACK PLATFORM_INTERRUPT_HANDLER (__in ULONG_PTR); +#endif + +#else // LINUX + + typedef pthread_t PLATFORM_THREAD_T; + typedef void * PLATFORM_THREADFUNC_RETTYPE; + typedef void * (*PLATFORM_THREADFUNC)(void *); + typedef pthread_mutex_t PLATFORM_MUTEX_T; + typedef sem_t PLATFORM_SEMAPHORE_T; + typedef int STATUS_T; + + typedef void (*PLATFORM_INTERRUPT_HANDLER)(int); + +#define WINAPI + +#endif + +#ifndef WIN32 + extern const int MicrosecsInMillisec; +#endif + + + /** + * Creates a thread with the default attributes. + */ + int platform_create_simple_thread(PLATFORM_THREAD_T * pThreadHandle, + PLATFORM_THREADFUNC pFunc, + void * param); + + /** + * Releases a thread (does not kill it). + */ + void platform_release_thread(PLATFORM_THREAD_T threadHandle); + + /** + * Waits for a thread to terminate. + */ + STATUS_T platform_join_thread(PLATFORM_THREAD_T threadHandle); + + /** + * Initializes a mutex (CRITICAL_SECTION on windows). + */ + void platform_mutex_init(PLATFORM_MUTEX_T * pMutex); + + /** + * Destroys a mutex (CRITICAL_SECTION on windows). + */ + void platform_mutex_destroy(PLATFORM_MUTEX_T * pMutex); + + /** + *Locks a mutex ("enters" a CRITICAL_SECTION on windows). + */ + void platform_mutex_lock(PLATFORM_MUTEX_T * pMutex); + + /** + * Unlocks a mutex ("exits" a CRITICAL_SECTION on windows). + */ + void platform_mutex_unlock(PLATFORM_MUTEX_T * pMutex); + + + /** + * Sleeps for a certain duration for given milliseconds. + */ + void platform_sleep(int millisecs); + + /** + * Creates a semaphore with the default attributes. + */ + STATUS_T platform_create_semaphore(PLATFORM_SEMAPHORE_T& semHandle, + int initialCount,int maximumCount); + + + /** + * wait for the semaphore signal + */ + STATUS_T platform_wait_for_signal(PLATFORM_SEMAPHORE_T& semHandle); + + /** + * Posts a semaphore signal so that the pending thread can continue + */ + void platform_signal_semaphore(PLATFORM_SEMAPHORE_T& semHandle); + + /** + * releases a semaphore object/handle. + */ + void platform_release_semaphore(PLATFORM_SEMAPHORE_T& semHandle); + + /** + * do an interruptable sleep + * @param length the length thread should sleep, in milliseconds + * @return 0 if the sleep expires normally, non-zero if the sleep has + * been interrupted + */ + int32_t platform_interruptable_sleep(int64_t length); + + /** + * signals a thread to interrupt a sleep + * @param handle PLATFORM_THREAD_T handle to the thread + * @return whether the interrupt succeeded or not + */ + bool platform_interrupt_sleep(PLATFORM_THREAD_T handle); + +#ifndef WIN32 + class SignalUSR1Handler + { + private: + SignalUSR1Handler(); + ~SignalUSR1Handler(); + + struct sigaction sa; + struct sigaction old; + + public: + static SignalUSR1Handler instance; + }; +#endif +} + +#endif