mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
some code cleanups
This commit is contained in:
parent
e19677dc42
commit
2aef120c8e
2 changed files with 9 additions and 7 deletions
|
@ -44,6 +44,8 @@
|
|||
extern const void tls_start;
|
||||
extern const void tls_end;
|
||||
|
||||
#define TLS_OFFSET 8
|
||||
|
||||
/*
|
||||
* HermitCore is a single address space OS
|
||||
* => we need only a lock to protect the page tables & VMA
|
||||
|
@ -196,17 +198,17 @@ int init_tls(void)
|
|||
curr_task->tls_addr = (size_t) &tls_start;
|
||||
curr_task->tls_size = (size_t) &tls_end - (size_t) &tls_start;
|
||||
|
||||
tls_addr = kmalloc(curr_task->tls_size);
|
||||
tls_addr = kmalloc(curr_task->tls_size + TLS_OFFSET);
|
||||
if (BUILTIN_EXPECT(!tls_addr, 0)) {
|
||||
kprintf("load_task: heap is missing!\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memcpy((void*) tls_addr, (void*) curr_task->tls_addr, curr_task->tls_size);
|
||||
memcpy((void*) (tls_addr+TLS_OFFSET), (void*) curr_task->tls_addr, curr_task->tls_size);
|
||||
|
||||
// set fs register to the TLS segment
|
||||
set_tls((size_t) tls_addr + curr_task->tls_size);
|
||||
kprintf("TLS of task %d starts at 0x%zx (TLS)\n", curr_task->id, tls_addr);
|
||||
set_tls((size_t) tls_addr + curr_task->tls_size + TLS_OFFSET);
|
||||
kprintf("TLS of task %d starts at 0x%zx (TLS)\n", curr_task->id, tls_addr + TLS_OFFSET);
|
||||
} else set_tls(0); // no TLS => clear fs register
|
||||
|
||||
return 0;
|
||||
|
@ -285,8 +287,8 @@ void NORETURN do_exit(int arg)
|
|||
// do we need to release the TLS?
|
||||
tls_addr = (void*)get_tls();
|
||||
if (tls_addr) {
|
||||
kprintf("Release TLS %p\n", tls_addr - curr_task->tls_size);
|
||||
kfree(tls_addr - curr_task->tls_size);
|
||||
kprintf("Release TLS at %p\n", tls_addr - curr_task->tls_size);
|
||||
kfree(tls_addr - curr_task->tls_size - TLS_OFFSET);
|
||||
}
|
||||
|
||||
curr_task->status = TASK_FINISHED;
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit a67cdd4420737374590a403ce3d5882ae6311524
|
||||
Subproject commit 25e1103b0486ea90150d17ced824eb51e4bf36fe
|
Loading…
Add table
Reference in a new issue