44 lines
831 B
C
44 lines
831 B
C
#include "elm_os.h"
|
|
#include "rtthread.h"
|
|
|
|
vg_lite_error_t elm_os_set_tls(void* tls)
|
|
{
|
|
if(tls == NULL)
|
|
return VG_LITE_INVALID_ARGUMENT;
|
|
|
|
rt_thread_t rt_TCB;
|
|
|
|
rt_TCB = rt_thread_self();
|
|
RT_ASSERT( rt_TCB != NULL );
|
|
|
|
|
|
rt_uint32_t * tls_ptr = (rt_uint32_t *)rt_TCB->user_data;
|
|
*(tls_ptr + 1) = (rt_uint32_t) tls;
|
|
return VG_LITE_SUCCESS;
|
|
}
|
|
|
|
void * elm_os_get_tls(void)
|
|
{
|
|
rt_thread_t rt_TCB;
|
|
|
|
void * pvReturn = NULL;
|
|
|
|
rt_TCB = rt_thread_self();
|
|
|
|
rt_uint32_t * tls_ptr = (rt_uint32_t *)rt_TCB->user_data;
|
|
pvReturn = (void *) *(tls_ptr + 1);
|
|
|
|
return pvReturn;
|
|
}
|
|
|
|
void elm_os_reset_tls(void)
|
|
{
|
|
rt_thread_t rt_TCB;
|
|
|
|
rt_TCB = rt_thread_self();
|
|
RT_ASSERT( rt_TCB != NULL );
|
|
|
|
rt_uint32_t * tls_ptr = (rt_uint32_t *)rt_TCB->user_data;
|
|
*(tls_ptr + 1) = NULL;
|
|
}
|