Changeset fa23560 in mainline for uspace/lib/libc/arch/amd64
- 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
- Location:
- uspace/lib/libc/arch/amd64
- Files:
-
- 1 added
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/arch/amd64/Makefile.inc
rb2a0f6dd rfa23560 35 35 ARCH_SOURCES += arch/$(ARCH)/src/syscall.S \ 36 36 arch/$(ARCH)/src/fibril.S \ 37 arch/$(ARCH)/src/t hread.c37 arch/$(ARCH)/src/tls.c 38 38 39 39 LFLAGS += -N -
uspace/lib/libc/arch/amd64/include/thread.h
rb2a0f6dd rfa23560 36 36 #define LIBC_amd64_THREAD_H_ 37 37 38 #include <libc.h>39 40 typedef struct {41 void *self;42 void *fibril_data;43 } tcb_t;44 45 static inline void __tcb_set(tcb_t *tcb)46 {47 __SYSCALL1(SYS_TLS_SET, (sysarg_t) tcb);48 }49 50 static inline tcb_t * __tcb_get(void)51 {52 void * retval;53 54 asm ("movq %%fs:0, %0" : "=r"(retval));55 return retval;56 }57 58 38 #endif 59 39 -
uspace/lib/libc/arch/amd64/src/tls.c
rb2a0f6dd rfa23560 35 35 */ 36 36 37 #include <thread.h> 38 #include <malloc.h> 39 #include <align.h> 37 #include <tls.h> 38 #include <sys/types.h> 40 39 41 /** Allocate TLS & TCB for initial module threads42 *43 * @param data Start of data section44 * @return pointer to tcb_t structure45 */46 40 tcb_t * __alloc_tls(void **data, size_t size) 47 41 { 48 tcb_t *tcb; 49 50 size = ALIGN_UP(size, &_tls_alignment); 51 *data = memalign(&_tls_alignment, sizeof(tcb_t) + size); 52 53 tcb = (tcb_t *) (*data + size); 54 tcb->self = tcb; 55 56 return tcb; 42 return tls_alloc_variant_2(data, size); 57 43 } 58 44 59 45 void __free_tls_arch(tcb_t *tcb, size_t size) 60 46 { 61 size = ALIGN_UP(size, &_tls_alignment); 62 void *start = ((void *)tcb) - size; 63 free(start); 47 tls_free_variant_2(tcb, size); 64 48 } 65 49
Note:
See TracChangeset
for help on using the changeset viewer.