diff --git a/harbour/ChangeLog b/harbour/ChangeLog index c7a8ebda65..d9f29e028b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,7 +17,15 @@ past entries belonging to author(s): Viktor Szakats. */ -2010-05-20 11:21 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) +2010-05-20 11:39 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * include/hbthread.h + ! Added missing HB_EXPORT, and in some place 'extern' + qualifier to thread/atomic Harbour API declarations. + + * ChangeLog + ! Fixed entry header in previous commit (again). + +2010-05-20 11:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added hbmk2 level support for multiple input .def files. NOTE: Multiple .def files are only supported by gcc family diff --git a/harbour/include/hbthread.h b/harbour/include/hbthread.h index 9e8fad4635..b9f16b94a1 100644 --- a/harbour/include/hbthread.h +++ b/harbour/include/hbthread.h @@ -395,33 +395,33 @@ extern PHB_THREADSTATE hb_threadStateNew( void ); extern void hb_threadReleaseCPU( void ); /* atomic oprtations */ -void hb_atomic_set( volatile HB_COUNTER * pCounter, HB_COUNTER value ); -HB_COUNTER hb_atomic_get( volatile HB_COUNTER * pCounter ); -void hb_atomic_inc( volatile HB_COUNTER * pCounter ); -HB_BOOL hb_atomic_dec( volatile HB_COUNTER * pCounter ); /* returns HB_TRUE when counter reach after decrementation */ +extern HB_EXPORT void hb_atomic_set( volatile HB_COUNTER * pCounter, HB_COUNTER value ); +extern HB_EXPORT HB_COUNTER hb_atomic_get( volatile HB_COUNTER * pCounter ); +extern HB_EXPORT void hb_atomic_inc( volatile HB_COUNTER * pCounter ); +extern HB_EXPORT HB_BOOL hb_atomic_dec( volatile HB_COUNTER * pCounter ); /* returns HB_TRUE when counter reach after decrementation */ /* Critical sections or fast non recursive MUTEXes */ -extern void hb_threadEnterCriticalSection( HB_CRITICAL_T * critical ); -extern void hb_threadLeaveCriticalSection( HB_CRITICAL_T * critical ); +extern HB_EXPORT void hb_threadEnterCriticalSection( HB_CRITICAL_T * critical ); +extern HB_EXPORT void hb_threadLeaveCriticalSection( HB_CRITICAL_T * critical ); /* conditional variables */ -extern HB_BOOL hb_threadCondSignal( HB_COND_T * cond ); -extern HB_BOOL hb_threadCondBroadcast( HB_COND_T * cond ); -extern HB_BOOL hb_threadCondWait( HB_COND_T * cond, HB_CRITICAL_T * mutex ); -extern HB_BOOL hb_threadCondTimedWait( HB_COND_T * cond, HB_CRITICAL_T * mutex, HB_ULONG ulMilliSec ); +extern HB_EXPORT HB_BOOL hb_threadCondSignal( HB_COND_T * cond ); +extern HB_EXPORT HB_BOOL hb_threadCondBroadcast( HB_COND_T * cond ); +extern HB_EXPORT HB_BOOL hb_threadCondWait( HB_COND_T * cond, HB_CRITICAL_T * mutex ); +extern HB_EXPORT HB_BOOL hb_threadCondTimedWait( HB_COND_T * cond, HB_CRITICAL_T * mutex, HB_ULONG ulMilliSec ); -extern HB_THREAD_HANDLE hb_threadCreate( HB_THREAD_ID * th_id, PHB_THREAD_STARTFUNC start_func, void * Cargo ); -extern HB_BOOL hb_threadJoin( HB_THREAD_HANDLE th_h ); -extern HB_BOOL hb_threadDetach( HB_THREAD_HANDLE th_h ); +extern HB_EXPORT HB_THREAD_HANDLE hb_threadCreate( HB_THREAD_ID * th_id, PHB_THREAD_STARTFUNC start_func, void * Cargo ); +extern HB_EXPORT HB_BOOL hb_threadJoin( HB_THREAD_HANDLE th_h ); +extern HB_EXPORT HB_BOOL hb_threadDetach( HB_THREAD_HANDLE th_h ); /* used by .prg code */ -extern PHB_ITEM hb_threadMutexCreate( void ); -extern HB_BOOL hb_threadMutexLock( PHB_ITEM pItem ); -extern HB_BOOL hb_threadMutexTimedLock( PHB_ITEM pItem, HB_ULONG ulMilliSec ); -extern HB_BOOL hb_threadMutexUnlock( PHB_ITEM pItem ); -extern void hb_threadMutexNotify( PHB_ITEM pItem, PHB_ITEM pNotifier, HB_BOOL fWaiting ); -extern PHB_ITEM hb_threadMutexSubscribe( PHB_ITEM pItem, HB_BOOL fClear ); -extern PHB_ITEM hb_threadMutexTimedSubscribe( PHB_ITEM pItem, HB_ULONG ulMilliSec, HB_BOOL fClear ); +extern HB_EXPORT PHB_ITEM hb_threadMutexCreate( void ); +extern HB_EXPORT HB_BOOL hb_threadMutexLock( PHB_ITEM pItem ); +extern HB_EXPORT HB_BOOL hb_threadMutexTimedLock( PHB_ITEM pItem, HB_ULONG ulMilliSec ); +extern HB_EXPORT HB_BOOL hb_threadMutexUnlock( PHB_ITEM pItem ); +extern HB_EXPORT void hb_threadMutexNotify( PHB_ITEM pItem, PHB_ITEM pNotifier, HB_BOOL fWaiting ); +extern HB_EXPORT PHB_ITEM hb_threadMutexSubscribe( PHB_ITEM pItem, HB_BOOL fClear ); +extern HB_EXPORT PHB_ITEM hb_threadMutexTimedSubscribe( PHB_ITEM pItem, HB_ULONG ulMilliSec, HB_BOOL fClear ); #if defined( HB_MT_VM ) && defined( _HB_API_INTERNAL_ )