Changeset fa23560 in mainline for uspace/lib/libc/generic/thread.c
- Timestamp:
- 2007-10-30T22:54:11Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4d21cf8
- Parents:
- b2a0f6dd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/generic/thread.c
rb2a0f6dd rfa23560 42 42 #include <async.h> 43 43 44 #include <stdio.h>45 46 47 44 #ifndef THREAD_INITIAL_STACK_PAGES_NO 48 45 #define THREAD_INITIAL_STACK_PAGES_NO 1 49 46 #endif 50 51 static LIST_INITIALIZE(thread_garbage);52 53 extern char _tdata_start;54 extern char _tdata_end;55 extern char _tbss_start;56 extern char _tbss_end;57 58 /** Create TLS (Thread Local Storage) data structures.59 *60 * The code requires, that sections .tdata and .tbss are adjacent. It may be61 * changed in the future.62 *63 * @return Pointer to TCB.64 */65 tcb_t *__make_tls(void)66 {67 void *data;68 tcb_t *tcb;69 size_t tls_size = &_tbss_end - &_tdata_start;70 71 tcb = __alloc_tls(&data, tls_size);72 73 /*74 * Copy thread local data from the initialization image.75 */76 memcpy(data, &_tdata_start, &_tdata_end - &_tdata_start);77 /*78 * Zero out the thread local uninitialized data.79 */80 memset(data + (&_tbss_start - &_tdata_start), 0,81 &_tbss_end - &_tbss_start);82 83 return tcb;84 }85 86 void __free_tls(tcb_t *tcb)87 {88 size_t tls_size = &_tbss_end - &_tdata_start;89 __free_tls_arch(tcb, tls_size);90 }91 47 92 48 /** Main thread function.
Note:
See TracChangeset
for help on using the changeset viewer.