VirtualBox

Changeset 6951 in vbox for trunk/src/VBox/Runtime/r3/os2


Ignore:
Timestamp:
Feb 14, 2008 2:09:52 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
28116
Message:

Aligned the TLS destructor bits even more with posix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/os2/thread-os2.cpp

    r6946 r6951  
    229229
    230230
    231 RTR3DECL(int) RTTlsAllocEx(PRTTLS piTls)
    232 {
     231RTR3DECL(int) RTTlsAllocEx(PRTTLS piTls, PFNRTTLSDTOR pfnDestructor)
     232{
     233    int rc;
    233234    int iTls = __libc_TLSAlloc();
    234235    if (iTls != -1)
    235         return iTls;
    236     return RTErrConvertFromErrno(errno);
     236    {
     237        if (    !pfnDestructor
     238            ||  __libc_TLSDestructor(iTls, (void (*)(void *, int, unsigned))pfnDestructor, fFlags) != -1)
     239        {
     240            *piTls = iTls;
     241            return VINF_SUCCESS;
     242        }
     243
     244        rc = RTErrConvertFromErrno(errno);
     245        __libc_TLSFree(iTls);
     246    }
     247    else
     248        rc = RTErrConvertFromErrno(errno);
     249
     250    *piTls = NIL_RTTLS;
     251    return rc;
    237252}
    238253
     
    278293}
    279294
    280 
    281 RTR3DECL(int) RTTlsSetDestructor(RTTLS iTls, PFNRTTLSDTOR pfnDestructor)
    282 {
    283     AssertReturn(!fFlags, VERR_INVALID_PARAMETER)
    284     if (__libc_TLSDestructor(iTls, (void (*)(void *, int, unsigned))pfnDestructor, fFlags) == -1)
    285         return VINF_SUCCESS;
    286     return RTErrConvertFromErrno(errno);
    287 }
    288 
    289 
    290 PFNRTTLSDTOR RTTlsGetDestructor(RTTLS iTls, PFNRTTLSDTOR *ppfnDestructor)
    291 {
    292     unsigned fFlags;
    293     errno = 0;
    294     *ppfnDestructor = (PFNRTTLSDTOR)__libc_TLSGetDestructor(iTls, &fFlags);
    295     if (!*ppfnDestructor && errno)
    296         return RTErrConvertFromErrno(errno);
    297     return VINF_SUCCESS;
    298 }
    299 
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette