mirror of https://github.com/flysand7/ciabatta.git
				
				
				
			Make thread handle a pointer to TCB on linux
This commit is contained in:
		
							parent
							
								
									3d761f344f
								
							
						
					
					
						commit
						00d284215c
					
				|  | @ -15,3 +15,4 @@ struct Cia_Mutex { | ||||||
| void cia_mutex_init(Cia_Mutex *mutex); | void cia_mutex_init(Cia_Mutex *mutex); | ||||||
| void cia_mutex_lock(Cia_Mutex *mutex); | void cia_mutex_lock(Cia_Mutex *mutex); | ||||||
| void cia_mutex_unlock(Cia_Mutex *mutex); | void cia_mutex_unlock(Cia_Mutex *mutex); | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -51,7 +51,6 @@ _Noreturn static void _rt_program_exit(int code); | ||||||
| // Thread API
 | // Thread API
 | ||||||
| struct _RT_Thread typedef _RT_Thread; | struct _RT_Thread typedef _RT_Thread; | ||||||
| struct _RT_Thread { | struct _RT_Thread { | ||||||
|     u64 tid; |  | ||||||
|     void *handle; |     void *handle; | ||||||
| }; | }; | ||||||
| static _RT_Status _rt_thread_current(_RT_Thread *thread); | static _RT_Status _rt_thread_current(_RT_Thread *thread); | ||||||
|  |  | ||||||
|  | @ -10,7 +10,8 @@ extern i64 _cia_start_thread( | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| static _RT_Status _rt_thread_current(_RT_Thread *thread) { | static _RT_Status _rt_thread_current(_RT_Thread *thread) { | ||||||
|     return _RT_ERROR_NOT_IMPLEMENTED; |     thread->handle = (void *)((u64)__builtin_frame_address(0) & ~(cia_stack_size - 1)); | ||||||
|  |     return _RT_STATUS_OK; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static _RT_Status _rt_thread_create(_RT_Thread *thread, int (*thread_fn)(void *ctx), void *ctx) { | static _RT_Status _rt_thread_create(_RT_Thread *thread, int (*thread_fn)(void *ctx), void *ctx) { | ||||||
|  | @ -29,6 +30,9 @@ static _RT_Status _rt_thread_create(_RT_Thread *thread, int (*thread_fn)(void *c | ||||||
|     for(int i = 0; i < cia_tls_image_size; ++i) { |     for(int i = 0; i < cia_tls_image_size; ++i) { | ||||||
|         tls_base[i] = ((u8 *)cia_tls_image_base)[i]; |         tls_base[i] = ((u8 *)cia_tls_image_base)[i]; | ||||||
|     } |     } | ||||||
|  |     // Initialize the _RT_Thread handle, which would point to
 | ||||||
|  |     // the TCB
 | ||||||
|  |     thread->handle = tcb; | ||||||
|     // Create the new thread
 |     // Create the new thread
 | ||||||
|     u64 flags = 0; |     u64 flags = 0; | ||||||
|     // flags |= CLONE_CHILD_CLEARTID;
 |     // flags |= CLONE_CHILD_CLEARTID;
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue