src/xcalls/x_pthread_mutex_init.c

Go to the documentation of this file.
00001 
00007 #include <pthread.h>
00008 #include <core/tx.h>
00009 #include <core/config.h>
00010 #include <core/txdesc.h>
00011 #include <misc/debug.h>
00012 #include <misc/errno.h>
00013 #include <xcalls/xcalls.h>
00014 
00015 int 
00016 XCALL_DEF(x_pthread_mutex_init)(pthread_mutex_t *mutex,
00017                                 const pthread_mutexattr_t *attr, 
00018                                 int *result)
00019 {
00020         txc_tx_t      *txd;
00021         int           ret;
00022         int           local_result = 0;
00023 
00024         txd = txc_tx_get_txd();
00025 
00026         switch(txc_tx_get_xactstate(txd)) {
00027                 case TXC_XACTSTATE_TRANSACTIONAL_RETRYABLE:
00028                 case TXC_XACTSTATE_TRANSACTIONAL_IRREVOCABLE:
00029                 case TXC_XACTSTATE_NONTRANSACTIONAL:
00030                         if ((ret = pthread_mutex_init(mutex, attr)) != 0) { 
00031                                 local_result = ret;
00032                                 goto done;
00033                         }
00034         }
00035 done:
00036         if (result) {
00037                 *result = local_result;
00038         }
00039         return ret;
00040 }

Generated on Wed Dec 9 20:32:39 2009 for xCalls by  doxygen 1.4.7