- Timestamp:
- Sep 18, 2009 11:52:32 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 52517
- Location:
- trunk/src/VBox/Runtime
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/misc/thread.cpp
r21337 r23124 89 89 *******************************************************************************/ 90 90 static void rtThreadDestroy(PRTTHREADINT pThread); 91 static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, const char *pszName);91 static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName); 92 92 static void rtThreadRemoveLocked(PRTTHREADINT pThread); 93 static PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, u nsignedfIntFlags, const char *pszName);93 static PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName); 94 94 95 95 … … 141 141 rc = rtThreadNativeInit(); 142 142 if (RT_SUCCESS(rc)) 143 rc = rtThreadAdopt(RTTHREADTYPE_DEFAULT, 0, "main");143 rc = rtThreadAdopt(RTTHREADTYPE_DEFAULT, 0, RTTHREADINT_FLAGS_MAIN, "main"); 144 144 if (RT_SUCCESS(rc)) 145 145 rc = rtSchedNativeCalcDefaultPriority(RTTHREADTYPE_DEFAULT); … … 236 236 * No locks are taken or released by this function. 237 237 */ 238 static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, const char *pszName)238 static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName) 239 239 { 240 240 Assert(!(fFlags & RTTHREADFLAGS_WAITABLE)); … … 255 255 { 256 256 rtThreadInsert(pThread, NativeThread); 257 ASMAtomicWriteSize(&pThread->enmState, RTTHREADSTATE_RUNNING );257 ASMAtomicWriteSize(&pThread->enmState, RTTHREADSTATE_RUNNING | fIntFlags); 258 258 rtThreadRelease(pThread); 259 259 } … … 293 293 294 294 /* try adopt it */ 295 rc = rtThreadAdopt(enmType, fFlags, pszName);295 rc = rtThreadAdopt(enmType, fFlags, 0, pszName); 296 296 Thread = RTThreadSelf(); 297 297 Log(("RTThreadAdopt: %RTthrd %RTnthrd '%s' enmType=%d fFlags=%#x rc=%Rrc\n", … … 320 320 * @param pszName Pointer to the thread name. 321 321 */ 322 PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, u nsignedfIntFlags, const char *pszName)322 PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName) 323 323 { 324 324 PRTTHREADINT pThread = (PRTTHREADINT)RTMemAllocZ(sizeof(RTTHREADINT)); … … 900 900 } 901 901 RT_EXPORT_SYMBOL(RTThreadSetName); 902 903 904 /** 905 * Checks if the specified thread is the main thread. 906 * 907 * @returns true if it is, false if it isn't. 908 * 909 * @param hThread The thread handle. 910 * 911 * @remarks This function may not return the correct value when RTR3Init was 912 * called on a thread of the than the main one. This could for 913 * instance happen when the DLL/DYLIB/SO containing IPRT is dynamically 914 * loaded at run time by a different thread. 915 */ 916 RTDECL(bool) RTThreadIsMain(RTTHREAD hThread) 917 { 918 PRTTHREADINT pThread = rtThreadGet(hThread); 919 if (pThread) 920 { 921 bool fRc = !!(pThread->fIntFlags & RTTHREADINT_FLAGS_MAIN); 922 rtThreadRelease(pThread); 923 return fRc; 924 } 925 return false; 926 } 927 RT_EXPORT_SYMBOL(RTThreadIsMain); 902 928 903 929 -
trunk/src/VBox/Runtime/include/internal/thread.h
r20374 r23124 131 131 /** @copydoc RTTHREADINT_FLAG_IN_TREE_BIT */ 132 132 #define RTTHREADINT_FLAG_IN_TREE RT_BIT(RTTHREADINT_FLAG_IN_TREE_BIT) 133 /** Set if it's the main thread. */ 134 #define RTTHREADINT_FLAGS_MAIN RT_BIT(3) 133 135 /** @} */ 134 136
Note:
See TracChangeset
for help on using the changeset viewer.