Changeset 9 in kStuff
- Timestamp:
- Apr 20, 2008 3:47:01 AM (17 years ago)
- Location:
- trunk/kProfiler2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kProfiler2/Makefile.kmk
r5 r9 38 38 # 39 39 TEMPLATE_kPrf2 = kProfiler Template 40 if1of ($(BUILD_TARGET), win) 41 TEMPLATE_kPrf2_EXTENDS = kStuff 42 43 else # Eliminate these 40 44 TEMPLATE_kPrf2_TOOL = GCC3 41 45 TEMPLATE_kPrf2_TOOL.os2 = GCC3OMF … … 47 51 TEMPLATE_kPrf2_SDKS.win = WINPSDK 48 52 49 TEMPLATE_kPrf2_DEFS.freebsd = KPRF_OS_FREEBSD50 TEMPLATE_kPrf2_DEFS.linux = KPRF_OS_LINUX51 TEMPLATE_kPrf2_DEFS.os2 = KPRF_OS_OS252 TEMPLATE_kPrf2_DEFS.win = KPRF_OS_WINDOWS53 54 53 TEMPLATE_kPrf2_CXXFLAGS.freebsd = -g 55 54 TEMPLATE_kPrf2_CXXFLAGS.linux = -g 56 55 TEMPLATE_kPrf2_CXXFLAGS.os2 = -g 57 TEMPLATE_kPrf2_CXXFLAGS.win = -Zi -Zl - MD -W3 -GF -GR-56 TEMPLATE_kPrf2_CXXFLAGS.win = -Zi -Zl -W3 -GF -GR- 58 57 TEMPLATE_kPrf2_CXXFLAGS.win.amd64 = -GS- #-FAcs 59 58 ifneq ($(BUILD_TYPE),debug) … … 61 60 TEMPLATE_kPrf2_CXXFLAGS.linux += -O3 62 61 TEMPLATE_kPrf2_CXXFLAGS.os2 += -O3 63 TEMPLATE_kPrf2_CXXFLAGS.win += -O2 xtg -Oi -Ob262 TEMPLATE_kPrf2_CXXFLAGS.win += -O2b2 64 63 endif 65 64 … … 81 80 TEMPLATE_kPrf2_LIBS.linux = 82 81 TEMPLATE_kPrf2_LIBS.os2 = 83 TEMPLATE_kPrf2_LIBS.win = \82 TEMPLATE_kPrf2_LIBS.win = \ 84 83 $(PATH_SDK_WINPSDK_LIB)/psapi.Lib 85 84 TEMPLATE_kPrf2_LIBS.win.x86 = \ 86 $(PATH_TOOL_VCC70_LIB)/msvcrt.lib \ 87 $(PATH_TOOL_VCC70_LIB)/msvcprt.lib \ 85 $(PATH_TOOL_VCC70_LIB)/libcmt.lib \ 88 86 $(PATH_TOOL_VCC70_LIB)/oldnames.lib 87 TEMPLATE_kPrf2_LIBS.win.amd64 = \ 88 $(PATH_TOOL_VCC80AMD64_LIB)/oldnames.lib \ 89 $(PATH_TOOL_VCC80AMD64_LIB)/libcmt.lib 90 endif 89 91 90 92 … … 116 118 # kPrf2Read - The read & producer of statistics. 117 119 # 118 #kPrf2Read_TEMPLATE = kPrf2119 120 kPrf2Read_TEMPLATE = kStuffEXE 120 121 kPrf2Read_SOURCES = \ … … 132 133 tst_TOOL = VCC70 133 134 tst_SDKS = WINPSDK 134 tst_CFLAGS = -GH -Gh -Zi -Zl -GR- -GX- -GF- - MD -W3 -wd4244135 tst_CFLAGS = -GH -Gh -Zi -Zl -GR- -GX- -GF- -W3 -wd4244 135 136 tst_SOURCES = tst.c 136 137 tst.c_CFLAGS = -Od -
trunk/kProfiler2/kProfileR3.cpp
r2 r9 29 29 * Header Files * 30 30 *******************************************************************************/ 31 #if defined(KPRF_OS_WINDOWS) 31 #include <k/kDefs.h> 32 #if K_OS == K_OS_WINDOWS 32 33 # include <windows.h> 33 34 # include <psapi.h> … … 38 39 # endif 39 40 40 #elif defined(KPRF_OS_LINUX) || defined(KPRF_OS_FREEBSD)41 #elif K_OS == K_OS_LINUX || K_OS == K_OS_FREEBSD 41 42 # define KPRF_USE_PTHREAD 42 43 # include <pthread.h> … … 51 52 # endif 52 53 53 #elif defined(KPRF_OS_OS2)54 #elif K_OS == K_OS_OS2 54 55 # define INCL_BASE 55 56 # include <os2.h> … … 69 70 #define KPRF_NAME(Suffix) KPrf##Suffix 70 71 #define KPRF_TYPE(Prefix,Suffix) Prefix##KPRF##Suffix 71 #if defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)72 #if K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 72 73 # define KPRF_DECL_FUNC(type, name) extern "C" __declspec(dllexport) type __cdecl KPRF_NAME(name) 73 74 #else … … 94 95 #if defined(KPRF_USE_PTHREAD) 95 96 typedef pthread_mutex_t KPRF_TYPE(,MUTEX); 96 #elif defined(KPRF_OS_WINDOWS)97 #elif K_OS == K_OS_WINDOWS 97 98 typedef CRITICAL_SECTION KPRF_TYPE(,MUTEX); 98 #elif defined(KPRF_OS_OS2)99 #elif K_OS == K_OS_OS2 99 100 typedef struct _fmutex KPRF_TYPE(,MUTEX); 100 101 #endif … … 106 107 /** Read/Write lock type. */ 107 108 typedef pthread_rwlock_t KPRF_TYPE(,RWLOCK); 108 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)109 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 109 110 /** Read/Write lock state. */ 110 111 typedef enum KPRF_TYPE(,RWLOCKSTATE) … … 132 133 /** The current number of waiting writers. */ 133 134 KU32 cWritersWaiting; 134 # if defined(KPRF_OS_WINDOWS)135 # if K_OS == K_OS_WINDOWS 135 136 /** The handle of the event object on which the waiting readers block. (manual reset). */ 136 137 HANDLE hevReaders; 137 138 /** The handle of the event object on which the waiting writers block. (manual reset). */ 138 139 HANDLE hevWriters; 139 # elif defined(KPRF_OS_OS2)140 # elif K_OS == K_OS_OS2 140 141 /** The handle of the event semaphore on which the waiting readers block. */ 141 142 HEV hevReaders; … … 156 157 *******************************************************************************/ 157 158 /** The TLS index / key. */ 158 #if defined(KPRF_OS_WINDOWS)159 #if K_OS == K_OS_WINDOWS 159 160 static DWORD g_dwThreadTLS = TLS_OUT_OF_INDEXES; 160 161 … … 162 163 static pthread_key_t g_ThreadKey = (pthread_key_t)-1; 163 164 164 #elif defined(KPRF_OS_OS2)165 #elif K_OS == K_OS_OS2 165 166 static KPRF_TYPE(P,THREAD) *g_ppThread = NULL; 166 167 … … 211 212 212 213 /* Win32/64 */ 213 #if defined(KPRF_OS_WINDOWS)214 #if K_OS == K_OS_WINDOWS 214 215 pThread = (KPRF_TYPE(P,THREAD))TlsGetValue(g_dwThreadTLS); 215 216 … … 218 219 pThread = (KPRF_TYPE(P,THREAD))pthread_getspecific(g_ThreadKey); 219 220 220 #elif defined(KPRF_OS_OS2)221 #elif K_OS == K_OS_OS2 221 222 pThread = *g_ppThread; 222 223 … … 239 240 { 240 241 /* Win32/64 */ 241 #if defined(KPRF_OS_WINDOWS)242 #if K_OS == K_OS_WINDOWS 242 243 KUPTR ThreadId = (KUPTR)GetCurrentThreadId(); 243 244 … … 246 247 KUPTR ThreadId = (KUPTR)pthread_self(); 247 248 248 #elif defined(KPRF_OS_OS2)249 #elif K_OS == K_OS_OS2 249 250 PTIB pTib; 250 251 PPIB pPib; … … 269 270 { 270 271 /* Win32/64 */ 271 #if defined(KPRF_OS_WINDOWS)272 #if K_OS == K_OS_WINDOWS 272 273 KUPTR ThreadId = (KUPTR)GetProcessId(GetCurrentProcess()); 273 274 274 #elif defined(KPRF_OS_OS2)275 #elif K_OS == K_OS_OS2 275 276 PTIB pTib; 276 277 PPIB pPib; … … 299 300 { 300 301 /* Win32/64 */ 301 #if defined(KPRF_OS_WINDOWS)302 #if K_OS == K_OS_WINDOWS 302 303 BOOL fRc = TlsSetValue(g_dwThreadTLS, pThread); 303 304 … … 306 307 int rc = pthread_setspecific(g_ThreadKey, pThread); 307 308 308 #elif defined(KPRF_OS_OS2)309 #elif K_OS == K_OS_OS2 309 310 *g_ppThread = pThread; 310 311 … … 506 507 return -1; 507 508 508 #elif defined(KPRF_OS_WINDOWS)509 #elif K_OS == K_OS_WINDOWS 509 510 InitializeCriticalSection(pMutex); 510 511 return 0; 511 512 512 #elif defined(KPRF_OS_OS2)513 #elif K_OS == K_OS_OS2 513 514 if (!_fmutex_create(pMutex, 0)) 514 515 return 0; … … 527 528 pthread_mutex_destroy(pMutex); 528 529 529 #elif defined(KPRF_OS_WINDOWS)530 #elif K_OS == K_OS_WINDOWS 530 531 DeleteCriticalSection(pMutex); 531 532 532 #elif defined(KPRF_OS_OS2)533 #elif K_OS == K_OS_OS2 533 534 _fmutex_close(pMutex); 534 535 #endif … … 541 542 static inline void kPrfMutexAcquire(KPRF_TYPE(P,MUTEX) pMutex) 542 543 { 543 #if defined(KPRF_OS_WINDOWS)544 #if K_OS == K_OS_WINDOWS 544 545 EnterCriticalSection(pMutex); 545 546 … … 547 548 pthread_mutex_lock(pMutex); 548 549 549 #elif defined(KPRF_OS_OS2)550 #elif K_OS == K_OS_OS2 550 551 fmutex_request(pMutex); 551 552 #endif … … 559 560 static inline void kPrfMutexRelease(KPRF_TYPE(P,MUTEX) pMutex) 560 561 { 561 #if defined(KPRF_OS_WINDOWS)562 #if K_OS == K_OS_WINDOWS 562 563 LeaveCriticalSection(pMutex); 563 564 … … 565 566 pthread_mutex_lock(pMutex); 566 567 567 #elif defined(KPRF_OS_OS2)568 #elif K_OS == K_OS_OS2 568 569 fmutex_request(pMutex); 569 570 #endif … … 592 593 return -1; 593 594 594 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)595 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 595 596 if (kPrfMutexInit(&pRWLock->Mutex)) 596 597 return -1; … … 599 600 pRWLock->cWritersWaiting = 0; 600 601 pRWLock->enmState = RWLOCK_STATE_SHARED; 601 # if defined(KPRF_OS_WINDOWS)602 # if K_OS == K_OS_WINDOWS 602 603 pRWLock->hevReaders = CreateEvent(NULL, TRUE, TRUE, NULL); 603 604 pRWLock->hevWriters = CreateEvent(NULL, FALSE, FALSE, NULL); … … 608 609 CloseHandle(pRWLock->hevWriters); 609 610 610 # elif defined(KPRF_OS_OS2)611 # elif K_OS == K_OS_OS2 611 612 APIRET rc = DosCreateEventSem(NULL, &pRWLock->hevReaders, 0, TRUE); 612 613 if (!rc) … … 638 639 pthread_rwlock_destroy(pRWLock); 639 640 640 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)641 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 641 642 if (pRWLock->enmState == RWLOCK_STATE_UNINITIALIZED) 642 643 return; … … 647 648 pRWLock->cReadersWaiting = 0; 648 649 pRWLock->cWritersWaiting = 0; 649 # if defined(KPRF_OS_WINDOWS)650 # if K_OS == K_OS_WINDOWS 650 651 CloseHandle(pRWLock->hevReaders); 651 652 pRWLock->hevReaders = INVALID_HANDLE_VALUE; … … 653 654 pRWLock->hevWriters = INVALID_HANDLE_VALUE; 654 655 655 # elif defined(KPRF_OS_OS2)656 # elif K_OS == K_OS_OS2 656 657 DosCloseEventSem(pRWLock->hevReaders); 657 658 pRWLock->hevReaders = NULLHANDLE; … … 672 673 pthread_rwlock_rdlock(pRWLock); 673 674 674 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)675 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 675 676 if (pRWLock->enmState == RWLOCK_STATE_UNINITIALIZED) 676 677 return; … … 688 689 /* have to wait */ 689 690 KPRF_ATOMIC_INC32(&pRWLock->cReadersWaiting); 690 # if defined(KPRF_OS_WINDOWS)691 # if K_OS == K_OS_WINDOWS 691 692 HANDLE hev = pRWLock->hevReaders; 692 693 ResetEvent(hev); 693 694 694 # elif defined(KPRF_OS_OS2)695 # elif K_OS == K_OS_OS2 695 696 HEV hev = pRWLock->hevReaders; 696 697 ULONG cIgnored; … … 700 701 kPrfMutexRelease(&pRWLock->Mutex); 701 702 702 # if defined(KPRF_OS_WINDOWS)703 # if K_OS == K_OS_WINDOWS 703 704 switch (WaitForSingleObject(hev, INFINITE)) 704 705 { … … 712 713 } 713 714 714 # elif defined(KPRF_OS_OS2)715 # elif K_OS == K_OS_OS2 715 716 switch (DosWaitEventSem(hev, SEM_INDEFINITE_WAIT)) 716 717 { … … 747 748 pthread_rwlock_unlock(pRWLock); 748 749 749 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)750 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 750 751 if (pRWLock->enmState == RWLOCK_STATE_UNINITIALIZED) 751 752 return; … … 771 772 * Wake up one (or more on OS/2) waiting writers. 772 773 */ 773 # if defined(KPRF_OS_WINDOWS)774 # if K_OS == K_OS_WINDOWS 774 775 SetEvent(pRWLock->hevWriters); 775 # elif defined(KPRF_OS_OS2)776 # elif K_OS == K_OS_OS2 776 777 DosPostEvent(pRWLock->hevwriters); 777 778 # endif … … 791 792 pthread_rwlock_wrlock(pRWLock); 792 793 793 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)794 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 794 795 if (pRWLock->enmState == RWLOCK_STATE_UNINITIALIZED) 795 796 return; … … 814 815 for (;;) 815 816 { 816 # if defined(KPRF_OS_WINDOWS)817 # if K_OS == K_OS_WINDOWS 817 818 HANDLE hev = pRWLock->hevWriters; 818 # elif defined(KPRF_OS_OS2)819 # elif K_OS == K_OS_OS2 819 820 HEV hev = pRWLock->hevWriters; 820 821 # endif 821 822 kPrfMutexRelease(&pRWLock->Mutex); 822 # if defined(KPRF_OS_WINDOWS)823 # if K_OS == K_OS_WINDOWS 823 824 switch (WaitForSingleObject(hev, INFINITE)) 824 825 { … … 833 834 } 834 835 835 # elif defined(KPRF_OS_OS2)836 # elif K_OS == K_OS_OS2 836 837 switch (DosWaitEventSem(hev, SEM_INDEFINITE_WAIT)) 837 838 { … … 877 878 pthread_rwlock_unlock(pRWLock); 878 879 879 #elif defined(KPRF_OS_WINDOWS) || defined(KPRF_OS_OS2)880 #elif K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 880 881 if (pRWLock->enmState == RWLOCK_STATE_UNINITIALIZED) 881 882 return; … … 902 903 * Someone is waiting, wake them up as we change the state. 903 904 */ 904 # if defined(KPRF_OS_WINDOWS)905 # if K_OS == K_OS_WINDOWS 905 906 HANDLE hev = INVALID_HANDLE_VALUE; 906 # elif defined(KPRF_OS_OS2)907 # elif K_OS == K_OS_OS2 907 908 HEV hev = NULLHANDLE; 908 909 # endif … … 918 919 hev = pRWLock->hevReaders; 919 920 } 920 # if defined(KPRF_OS_WINDOWS)921 # if K_OS == K_OS_WINDOWS 921 922 SetEvent(hev); 922 # elif defined(KPRF_OS_OS2)923 # elif K_OS == K_OS_OS2 923 924 DosPostEvent(pRWLock->hevwriters); 924 925 # endif … … 943 944 KPRF_TYPE(P,UPTR) puBasePtr, KPRF_TYPE(P,UPTR) pcbSegmentMinusOne) 944 945 { 945 #if defined(KPRF_OS_WINDOWS)946 #if K_OS == K_OS_WINDOWS 946 947 /* 947 948 * Enumerate the module handles. … … 1061 1062 } 1062 1063 1063 #elif defined(KPRF_OS_OS2)1064 #elif K_OS == K_OS_OS2 1064 1065 /* 1065 1066 * Just ask the loader. … … 1142 1143 * Some limit stuff in posix / ansi also comes to mind... */ 1143 1144 1144 #elif defined(KPRF_OS_OS2)1145 #elif K_OS == K_OS_OS2 1145 1146 PTIB pTib; 1146 1147 PPIB pPib; … … 1172 1173 static char *kPrfGetEnvString(const char *pszVar, char *pszValue, KU32 cchValue, const char *pszDefault) 1173 1174 { 1174 #if defined(KPRF_OS_WINDOWS)1175 #if K_OS == K_OS_WINDOWS 1175 1176 if (GetEnvironmentVariable(pszVar, pszValue, cchValue)) 1176 1177 return pszValue; 1177 1178 1178 #elif defined(KPRF_OS_OS2)1179 #elif K_OS == K_OS_OS2 1179 1180 PSZ pszValue; 1180 1181 if ( !DosScanEnv((PCSZ)pszVar, &pszValue) … … 1211 1212 static KU32 kPrfGetEnvValue(const char *pszVar, KU32 uDefault) 1212 1213 { 1213 #if defined(KPRF_OS_WINDOWS)1214 #if K_OS == K_OS_WINDOWS 1214 1215 char szBuf[128]; 1215 1216 const char *pszValue = szBuf; … … 1217 1218 pszValue = NULL; 1218 1219 1219 #elif defined(KPRF_OS_OS2)1220 #elif K_OS == K_OS_OS2 1220 1221 PSZ pszValue; 1221 1222 if (DosScanEnv((PCSZ)pszVar, &pszValue)) … … 1300 1301 static void *kPrfAllocMem(KU32 cb) 1301 1302 { 1302 #if defined(KPRF_OS_WINDOWS)1303 #if K_OS == K_OS_WINDOWS 1303 1304 void *pv = VirtualAlloc(NULL, cb, MEM_COMMIT, PAGE_EXECUTE_READWRITE); 1304 1305 … … 1306 1307 void *pv = mmap(NULL, cb, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); 1307 1308 1308 #elif defined(KPRF_OS_OS2)1309 #elif K_OS == K_OS_OS2 1309 1310 void *pv; 1310 1311 # ifdef INCL_DOSEXAPIS … … 1329 1330 static void kPrfFreeMem(void *pv) 1330 1331 { 1331 #if defined(KPRF_OS_WINDOWS)1332 #if K_OS == K_OS_WINDOWS 1332 1333 VirtualFree(pv, 0, MEM_RELEASE); 1333 1334 … … 1335 1336 munmap(pv, 0); /** @todo check if 0 is allowed here.. */ 1336 1337 1337 #elif defined(KPRF_OS_OS2)1338 #elif K_OS == K_OS_OS2 1338 1339 # ifdef INCL_DOSEXAPIS 1339 1340 DosFreeMemEx(&pv); … … 1363 1364 static int kPrfWriteFile(const char *pszName, const void *pvData, KU32 cbData) 1364 1365 { 1365 #if defined(KPRF_OS_WINDOWS)1366 #if K_OS == K_OS_WINDOWS 1366 1367 int rc = -1; 1367 1368 HANDLE hFile = CreateFile(pszName,GENERIC_WRITE, FILE_SHARE_READ, NULL, … … 1377 1378 return rc; 1378 1379 1379 #elif defined(KPRF_OS_OS2)1380 #elif K_OS == K_OS_OS2 1380 1381 HFILE hFile; 1381 1382 ULONG ulAction = 0; … … 1462 1463 * Allocate the TLS entry. 1463 1464 */ 1464 #if defined(KPRF_OS_WINDOWS)1465 #if K_OS == K_OS_WINDOWS 1465 1466 g_dwThreadTLS = TlsAlloc(); 1466 1467 if (g_dwThreadTLS != TLS_OUT_OF_INDEXES) … … 1470 1471 if (!rc) 1471 1472 1472 #elif defined(KPRF_OS_OS2)1473 #elif K_OS == K_OS_OS2 1473 1474 int rc = DosAllocThreadLocalMemory(sizeof(void *), (PULONG*)&g_ppThread); /** @todo check if this is a count or a size. */ 1474 1475 if (!rc) … … 1481 1482 if (fAffinity) 1482 1483 { 1483 #if defined(KPRF_OS_WINDOWS)1484 #if K_OS == K_OS_WINDOWS 1484 1485 SetProcessAffinityMask(GetCurrentProcess(), fAffinity); 1485 1486 #endif … … 1525 1526 return -1; 1526 1527 1527 #if defined(KPRF_OS_WINDOWS)1528 #if K_OS == K_OS_WINDOWS 1528 1529 Sleep(10); 1529 #elif defined(KPRF_OS_OS2)1530 #elif K_OS == K_OS_OS2 1530 1531 DosSleep(10); 1531 1532 #else … … 1541 1542 * Use the stack space to fill in process details. 1542 1543 */ 1543 #if defined(KPRF_OS_WINDOWS)1544 #if K_OS == K_OS_WINDOWS 1544 1545 /* all is one single string */ 1545 1546 const char *pszCommandLine = GetCommandLine(); … … 1547 1548 KPRF_NAME(SetCommandLine)(pHdr, 1, &pszCommandLine); 1548 1549 1549 #elif defined(KPRF_OS_OS2) || defined(KPRF_OS_OS2)1550 #elif K_OS == K_OS_OS2 || K_OS == K_OS_OS2 1550 1551 PTIB pTib; 1551 1552 PPIB pPib; … … 1611 1612 */ 1612 1613 kPrfFreeMem(pHdr); 1613 #if defined(KPRF_OS_WINDOWS)1614 #if K_OS == K_OS_WINDOWS 1614 1615 TlsFree(g_dwThreadTLS); 1615 1616 g_dwThreadTLS = TLS_OUT_OF_INDEXES; … … 1619 1620 g_ThreadKey = (pthread_key_t)-1; 1620 1621 1621 #elif defined(KPRF_OS_OS2)1622 #elif K_OS == K_OS_OS2 1622 1623 DosFreeThreadLocalMemory((PULONG)g_ppThread); 1623 1624 g_ppThread = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.