88#include "bh_memory.h"
99#include <stdio.h>
1010#include <stdlib.h>
11- #include <sys/time .h>
11+ #include <sgx_thread .h>
1212
1313int _vm_thread_sys_init ()
1414{
@@ -35,15 +35,15 @@ int _vm_thread_create(korp_tid *tid, thread_start_routine_t start, void *arg,
3535
3636korp_tid _vm_self_thread ()
3737{
38- return 0 ;
38+ return sgx_thread_self () ;
3939}
4040
4141void vm_thread_exit (void * code )
4242{
4343}
4444
4545// storage for one thread
46- static void * _tls_store = NULL ;
46+ static __thread void * _tls_store = NULL ;
4747
4848void * _vm_tls_get (unsigned idx )
4949{
@@ -59,20 +59,22 @@ int _vm_tls_put(unsigned idx, void * tls)
5959
6060int _vm_mutex_init (korp_mutex * mutex )
6161{
62+ sgx_thread_mutex_t m = SGX_THREAD_MUTEX_INITIALIZER ;
63+ * mutex = m ;
6264 return BHT_OK ;
63- //return BHT_ERROR;
6465}
6566
6667int _vm_recursive_mutex_init (korp_mutex * mutex )
6768{
69+ sgx_thread_mutex_t m = SGX_THREAD_RECURSIVE_MUTEX_INITIALIZER ;
70+ * mutex = m ;
6871 return BHT_OK ;
69- //return BHT_ERROR;
7072}
7173
7274int _vm_mutex_destroy (korp_mutex * mutex )
7375{
76+ sgx_thread_mutex_destroy (mutex );
7477 return BHT_OK ;
75- //return BHT_ERROR;
7678}
7779
7880/* Returned error (EINVAL, EAGAIN and EDEADLK) from
@@ -81,12 +83,12 @@ int _vm_mutex_destroy(korp_mutex *mutex)
8183 Don't try to recover error for an existing unknown error.*/
8284void vm_mutex_lock (korp_mutex * mutex )
8385{
86+ sgx_thread_mutex_lock (mutex );
8487}
8588
8689int vm_mutex_trylock (korp_mutex * mutex )
8790{
88- return BHT_OK ;
89- //return BHT_ERROR;
91+ return (sgx_thread_mutex_trylock (mutex ) == 0 ? BHT_OK : BHT_ERROR );
9092}
9193
9294/* Returned error (EINVAL, EAGAIN and EPERM) from
@@ -95,6 +97,7 @@ int vm_mutex_trylock(korp_mutex *mutex)
9597 Don't try to recover error for an existing unknown error.*/
9698void vm_mutex_unlock (korp_mutex * mutex )
9799{
100+ sgx_thread_mutex_unlock (mutex );
98101}
99102
100103int _vm_sem_init (korp_sem * sem , unsigned int c )
0 commit comments