VirtualBox

儲存庫 vbox 的更動 18326


忽略:
時間撮記:
2009-3-26 下午04:23:13 (16 年 以前)
作者:
vboxsync
訊息:

crOpenGL: tabs to spaces

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/GuestHost/OpenGL/util/threads.c

    r15532 r18326  
    44 * See the file LICENSE.txt for information on redistributing this software.
    55 */
    6        
     6   
    77#include <stdio.h>
    88#include "cr_threads.h"
     
    2323{
    2424#ifdef WINDOWS
    25         tsd->key = TlsAlloc();
    26         if (tsd->key == 0xffffffff) {
    27                 crError("crInitTSD failed!");
    28         }
    29         (void) destructor;
    30 #else
    31         if (pthread_key_create(&tsd->key, destructor) != 0) {
    32                 perror(INIT_TSD_ERROR);
    33                 crError("crInitTSD failed!");
    34         }
    35 #endif
    36         tsd->initMagic = INIT_MAGIC;
     25    tsd->key = TlsAlloc();
     26    if (tsd->key == 0xffffffff) {
     27        crError("crInitTSD failed!");
     28    }
     29    (void) destructor;
     30#else
     31    if (pthread_key_create(&tsd->key, destructor) != 0) {
     32        perror(INIT_TSD_ERROR);
     33        crError("crInitTSD failed!");
     34    }
     35#endif
     36    tsd->initMagic = INIT_MAGIC;
    3737}
    3838
     
    4747{
    4848#ifdef WINDOWS
    49         /* Windows returns true on success, 0 on failure */
    50         if (TlsFree(tsd->key) == 0) {
    51                 crError("crFreeTSD failed!");
    52         }
    53 #else
    54         if (pthread_key_delete(tsd->key) != 0) {
    55                 perror(FREE_TSD_ERROR);
    56                 crError("crFreeTSD failed!");
    57         }
    58 #endif
    59         tsd->initMagic = 0x0;
     49    /* Windows returns true on success, 0 on failure */
     50    if (TlsFree(tsd->key) == 0) {
     51        crError("crFreeTSD failed!");
     52    }
     53#else
     54    if (pthread_key_delete(tsd->key) != 0) {
     55        perror(FREE_TSD_ERROR);
     56        crError("crFreeTSD failed!");
     57    }
     58#endif
     59    tsd->initMagic = 0x0;
    6060}
    6161
     
    6464void crSetTSD(CRtsd *tsd, void *ptr)
    6565{
    66         if (tsd->initMagic != (int) INIT_MAGIC) {
    67                 /* initialize this CRtsd */
    68                 crInitTSD(tsd);
    69         }
    70 #ifdef WINDOWS
    71         if (TlsSetValue(tsd->key, ptr) == 0) {
    72                 crError("crSetTSD failed!");
    73         }
    74 #else
    75         if (pthread_setspecific(tsd->key, ptr) != 0) {
    76                 crError("crSetTSD failed!");
    77         }
     66    if (tsd->initMagic != (int) INIT_MAGIC) {
     67        /* initialize this CRtsd */
     68        crInitTSD(tsd);
     69    }
     70#ifdef WINDOWS
     71    if (TlsSetValue(tsd->key, ptr) == 0) {
     72        crError("crSetTSD failed!");
     73    }
     74#else
     75    if (pthread_setspecific(tsd->key, ptr) != 0) {
     76        crError("crSetTSD failed!");
     77    }
    7878#endif
    7979}
     
    8484{
    8585#ifdef WINDOWS
    86         void * value;
    87         DWORD  err;
    88         LPVOID lpMsgBuf;
    89 #endif
    90         if (tsd->initMagic != (int) INIT_MAGIC) {
    91                 crInitTSD(tsd);
    92         }
    93 #ifdef WINDOWS
    94         value = TlsGetValue(tsd->key);
    95         if (!value) {
    96                 err = GetLastError();
    97                 if ( err != ERROR_SUCCESS ) {
    98                         FormatMessage(
    99                         FORMAT_MESSAGE_ALLOCATE_BUFFER |
    100                         FORMAT_MESSAGE_FROM_SYSTEM |
    101                         FORMAT_MESSAGE_IGNORE_INSERTS,
    102                         NULL,
    103                         err,
    104                         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    105                         (LPTSTR) &lpMsgBuf,
    106                         0, NULL );
    107                         crError("crGetTSD failed with %d: %s", err, lpMsgBuf);
    108                         LocalFree(lpMsgBuf);
    109                 }
    110         }
    111         return value;
    112 #else
    113         return pthread_getspecific(tsd->key);
     86    void * value;
     87    DWORD  err;
     88    LPVOID lpMsgBuf;
     89#endif
     90    if (tsd->initMagic != (int) INIT_MAGIC) {
     91        crInitTSD(tsd);
     92    }
     93#ifdef WINDOWS
     94    value = TlsGetValue(tsd->key);
     95    if (!value) {
     96        err = GetLastError();
     97        if ( err != ERROR_SUCCESS ) {
     98            FormatMessage(
     99                FORMAT_MESSAGE_ALLOCATE_BUFFER |
     100                FORMAT_MESSAGE_FROM_SYSTEM |
     101                FORMAT_MESSAGE_IGNORE_INSERTS,
     102                NULL,
     103                err,
     104                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
     105                (LPTSTR) &lpMsgBuf,
     106                0, NULL );
     107            crError("crGetTSD failed with %d: %s", err, lpMsgBuf);
     108            LocalFree(lpMsgBuf);
     109        }
     110    }
     111    return value;
     112#else
     113    return pthread_getspecific(tsd->key);
    114114#endif
    115115}
     
    121121{
    122122#ifdef WINDOWS
    123         return (unsigned long) GetCurrentThreadId();
    124 #else
    125         return (unsigned long) pthread_self();
     123    return (unsigned long) GetCurrentThreadId();
     124#else
     125    return (unsigned long) pthread_self();
    126126#endif
    127127}
     
    132132{
    133133#ifdef WINDOWS
    134         InitializeCriticalSection(mutex);
    135 #else
    136         pthread_mutex_init(mutex, NULL);
     134    InitializeCriticalSection(mutex);
     135#else
     136    pthread_mutex_init(mutex, NULL);
    137137#endif
    138138}
     
    142142{
    143143#ifdef WINDOWS
    144         DeleteCriticalSection(mutex);
    145 #else
    146         pthread_mutex_destroy(mutex);
     144    DeleteCriticalSection(mutex);
     145#else
     146    pthread_mutex_destroy(mutex);
    147147#endif
    148148}
     
    152152{
    153153#ifdef WINDOWS
    154         EnterCriticalSection(mutex);
    155 #else
    156         pthread_mutex_lock(mutex);
     154    EnterCriticalSection(mutex);
     155#else
     156    pthread_mutex_lock(mutex);
    157157#endif
    158158}
     
    162162{
    163163#ifdef WINDOWS
    164         LeaveCriticalSection(mutex);
    165 #else
    166         pthread_mutex_unlock(mutex);
     164    LeaveCriticalSection(mutex);
     165#else
     166    pthread_mutex_unlock(mutex);
    167167#endif
    168168}
     
    172172{
    173173#ifdef WINDOWS
    174         /* XXX fix me */
    175         (void) cond;
    176 #else
    177         int err = pthread_cond_init(cond, NULL);
    178         if (err) {
    179                 crError("crInitCondition failed");
    180         }
     174    /* XXX fix me */
     175    (void) cond;
     176#else
     177    int err = pthread_cond_init(cond, NULL);
     178    if (err) {
     179        crError("crInitCondition failed");
     180    }
    181181#endif
    182182}
     
    186186{
    187187#ifdef WINDOWS
    188         /* XXX fix me */
    189         (void) cond;
    190 #else
    191         int err = pthread_cond_destroy(cond);
    192         if (err) {
    193                 crError("crFreeCondition error (threads waiting on the condition?)");
    194         }
     188    /* XXX fix me */
     189    (void) cond;
     190#else
     191    int err = pthread_cond_destroy(cond);
     192    if (err) {
     193        crError("crFreeCondition error (threads waiting on the condition?)");
     194    }
    195195#endif
    196196}
     
    203203{
    204204#ifdef WINDOWS
    205         /* XXX fix me */
    206         (void) cond;
    207         (void) mutex;
    208 #else
    209         pthread_cond_wait(cond, mutex);
     205    /* XXX fix me */
     206    (void) cond;
     207    (void) mutex;
     208#else
     209    pthread_cond_wait(cond, mutex);
    210210#endif
    211211}
     
    215215{
    216216#ifdef WINDOWS
    217         /* XXX fix me */
    218         (void) cond;
    219 #else
    220         pthread_cond_signal(cond);
     217    /* XXX fix me */
     218    (void) cond;
     219#else
     220    pthread_cond_signal(cond);
    221221#endif
    222222}
     
    226226{
    227227#ifdef WINDOWS
    228         unsigned int i;
    229         for (i = 0; i < count; i++)
    230                 b->hEvents[i] = CreateEvent(NULL, FALSE, FALSE, NULL);
    231 #else
    232         b->count = count;
    233         b->waiting = 0;
    234         pthread_cond_init( &(b->cond), NULL );
    235         pthread_mutex_init( &(b->mutex), NULL );
     228    unsigned int i;
     229    for (i = 0; i < count; i++)
     230        b->hEvents[i] = CreateEvent(NULL, FALSE, FALSE, NULL);
     231#else
     232    b->count = count;
     233    b->waiting = 0;
     234    pthread_cond_init( &(b->cond), NULL );
     235    pthread_mutex_init( &(b->mutex), NULL );
    236236#endif
    237237}
     
    240240void crFreeBarrier(CRbarrier *b)
    241241{
    242         /* XXX anything to do? */
     242    /* XXX anything to do? */
    243243}
    244244
     
    247247{
    248248#ifdef WINDOWS
    249         DWORD dwEvent
    250                 = WaitForMultipleObjects( b->count, b->hEvents, FALSE, INFINITE );
    251 #else
    252         pthread_mutex_lock( &(b->mutex) );
    253         b->waiting++;
    254         if (b->waiting < b->count) {
    255                 pthread_cond_wait( &(b->cond), &(b->mutex) );
    256         }
    257         else {
    258                 pthread_cond_broadcast( &(b->cond) );
    259                 b->waiting = 0;
    260         }
    261         pthread_mutex_unlock( &(b->mutex) );
     249    DWORD dwEvent
     250        = WaitForMultipleObjects( b->count, b->hEvents, FALSE, INFINITE );
     251#else
     252    pthread_mutex_lock( &(b->mutex) );
     253    b->waiting++;
     254    if (b->waiting < b->count) {
     255        pthread_cond_wait( &(b->cond), &(b->mutex) );
     256    }
     257    else {
     258        pthread_cond_broadcast( &(b->cond) );
     259        b->waiting = 0;
     260    }
     261    pthread_mutex_unlock( &(b->mutex) );
    262262#endif
    263263}
     
    267267{
    268268#ifdef WINDOWS
    269         crWarning("CRsemaphore functions not implemented on Windows");
    270 #else
    271         sem_init(s, 0, count);
     269    crWarning("CRsemaphore functions not implemented on Windows");
     270#else
     271    sem_init(s, 0, count);
    272272#endif
    273273}
     
    277277{
    278278#ifdef WINDOWS
    279         /* to do */
    280 #else
    281         sem_wait(s);
     279    /* to do */
     280#else
     281    sem_wait(s);
    282282#endif
    283283}
     
    287287{
    288288#ifdef WINDOWS
    289         /* to do */
    290 #else
    291         sem_post(s);
    292 #endif
    293 }
    294 
     289    /* to do */
     290#else
     291    sem_post(s);
     292#endif
     293}
     294
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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